Redis won’t talk to Web Server.


The Problem: #

Thinking you’ve correctly configured everything in your shiny new cloud architecture, and having a key piece not work properly can be extremely frustrating.

For me, it was trying to get a web server (on EC2) to talk to a Redis cluster (on ElasticCache).

Trying to use redis-cli on my local machine kept getting me to this point:

Could not connect to Redis at Operation timed out

This is when I found out that Redis by default isn’t meant to be accessed from outside the sphere of AWS. Since I was running redis-cli from my laptop, this wasn’t going to work.

The next logical step was to SSH into my EC2 machine, and then run the redis-cli command to try and PING the Redis host. But this method also ran into the timed out error.

Since the machine on AWS couldn’t even produce a handshake with the Redis host, this is when I knew that there was something wrong with the security permissions which was restricting any traffic from communicating with the Redis host.

The Fix: #

First, go to your Elastic Cache Console and click on the specific Redis instance which is giving you a hard time. Take note of the Security Group ID (marked by the purple arrow):


Next, go to your VPC Management Console and head to the Security Groups section. Make sure that your Redis Group ID (purple arrow) has allowed inbound connection (custom TCP Rule on Port Range 6379) with the Source being the Group ID of the group which your EC2 instance is on (orange arrows). As for the Outbound Rules, allow ALL Traffic.

security groups.png

This finally made it so my “PING” was met with a “PONG” from the Redis host. When you observe errors like this, make sure your security groups are able to properly talk to the respective servers.


Now read this

Your javascript webapps don’t actually need javascript.

Daniel Ricciardo doesn’t have anything to do with this article. Tl;dr: I made my personal website almost twice as fast by porting it from Nuxt to Astro. I made it so that zero JavaScript is sent to the browser[1] . Some background # I... Continue →