Accessing GCP Memorystore from local machines

前端 未结 4 1026
一整个雨季
一整个雨季 2020-12-08 07:34

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?

相关标签:
4条回答
  • 2020-12-08 07:49

    Memorystore does not allow connecting from local machines, other ways like from CE, GAE are expensive especially your project is small or in developing phase, I suggest you create a cloud function to execute memorystore, it's serverless service which means lower fee to execute. I wrote small tool for this, the result is similar to run on local machine. You can check if help to you.

    0 讨论(0)
  • 2020-12-08 07:59

    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

    0 讨论(0)
  • 2020-12-08 08:10

    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

    0 讨论(0)
  • 2020-12-08 08:12

    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.

    0 讨论(0)
提交回复
热议问题