在开发过程中从本地计算机访问Memorystore的最佳方法是什么?有没有像我可以用来设置隧道的Cloud SQL Proxy?
答案 0 :(得分:9)
您可以启动Compute Engine实例并使用端口转发连接到Redis计算机。
例如,如果您的Redis机器具有内部IP地址10.0.0.3,则可以执行以下操作:
gcloud compute instances create redis-forwarder --machine-type=f1-micro
gcloud compute ssh redis-forwarder -- -N -L 6379:10.0.0.3:6379
只要保持ssh隧道打开,就可以连接到localhost:6379
答案 1 :(得分:4)
我在Google云端上创建了一个虚拟机
library(tidyverse)
data.tab %>%
group_by(V2) %>%
mutate(col = paste0("V", 1:n())) %>%
spread(col, V1, fill = 0) %>%
ungroup()
## A tibble: 4 x 8
# V1 V2 V3 V4 V5 V6 V7 V8
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 644 76 78 350 45 0 0 0
#2 37 366 46 0 0 0 0 0
#3 71 28 97 30 55 65 116 30
#4 18 143 99 0 0 0 0 0
然后将其SSH并安装haproxy
gcloud compute instances create redis-forwarder --machine-type=f1-micro
然后更新配置文件
sudo su
apt-get install haproxy
重新启动haproxy
/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
然后,我能够从本地计算机连接到内存存储进行开发
答案 2 :(得分:2)
您可以启动Compute Engine实例并使用以下docker映像haproxy docker image设置haproxy,然后haproxy会将您的tcp请求转发到memorystore。
例如,我想使用IP 10.0.0.12访问memorystore实例,因此添加了以下haproxy配置:
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
因此,现在您可以使用以下命令从本地计算机访问memorystore:
redis-cli -h <your-haproxy-public-ipaddress> -p 6379
注意:用您的实际haproxy IP地址替换。
希望可以帮助您解决问题。
答案 3 :(得分:0)
Memorystore不允许从本地计算机连接,其他方式(例如从CE,GAE进行连接)非常昂贵,尤其是您的项目很小或处于开发阶段时,我建议您创建一个云函数来执行memorystore,它是无服务器服务,这意味着费用较低执行。我为此写了一个小tool,结果类似于在本地计算机上运行。您可以检查是否对您有帮助。