Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing GCP Memorystore from local machines

Whats the best way to access Memorystore from Local Machines during development? Is there something like Cloud SQL Proxy that I can use to set up a tunnel?

like image 364
Dhaval Avatar asked May 10 '18 21:05

Dhaval


People also ask

How do I access Redis instance?

To start Redis client, open the terminal and type the command redis-cli. This will connect to your local server and now you can run any command. In the above example, we connect to Redis server running on the local machine and execute a command PING, that checks whether the server is running or not.

What is GCP Memorystore?

Memorystore automates complex tasks for open source Redis and Memcached like enabling high availability, failover, patching, and monitoring so you can spend more time coding.


3 Answers

You can spin up a Compute Engine instance and use port forwarding to connect to your Redis machine.

For example if your Redis machine has internal IP address 10.0.0.3 you'd do:

gcloud compute instances create redis-forwarder --machine-type=f1-micro
gcloud compute ssh redis-forwarder -- -N -L 6379:10.0.0.3:6379

As long as you keep the ssh tunnel open you can connect to localhost:6379

Update: this is now officially documented: https://cloud.google.com/memorystore/docs/redis/connecting-redis-instance#connecting_from_a_local_machine_with_port_forwarding

like image 127
Christiaan Avatar answered Oct 17 '22 15:10

Christiaan


I created a vm on google cloud

gcloud compute instances create redis-forwarder --machine-type=f1-micro

then ssh into it and installed haproxy

sudo su
apt-get install haproxy

then updated the config file

/etc/haproxy/haproxy.cfg

....existing file contents
frontend redis_frontend
  bind *:6379
  mode tcp
  option tcplog
  timeout client  1m
  default_backend redis_backend

 backend redis_backend
   mode tcp
   option tcplog
   option log-health-checks
   option redispatch
   log global
   balance roundrobin
   timeout connect 10s
   timeout server 1m
   server redis_server [MEMORYSTORE IP]:6379 check

restart haproxy

/etc/init.d/haproxy restart

I was then able to connect to memory store from my local machine for development

like image 14
Nath Avatar answered Oct 17 '22 17:10

Nath


You can spin up a Compute Engine instance and setup an haproxy using the following docker image haproxy docker image then haproxy will forward your tcp requests to memorystore.

For example i want to access memorystore instance with ip 10.0.0.12 so added the following haproxy configs:

frontend redis_frontend
   bind *:6379
   mode tcp
   option tcplog
   timeout client  1m
   default_backend redis_backend

backend redis_backend
   mode tcp
   option tcplog
   option log-health-checks
   option redispatch
   log global
   balance roundrobin
   timeout connect 10s
   timeout server 1m
   server redis_server 10.0.0.12:6379 check

So now you can access memorystore from your local machine using the following command:

redis-cli -h <your-haproxy-public-ipaddress> -p 6379

Note: replace with you actual haproxy ip address.

Hope that can help you to solve your problem.

like image 7
amohamed Avatar answered Oct 17 '22 15:10

amohamed