亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

撥號 TCP <遠程 IP>:6379: 連接: 連接被拒絕

撥號 TCP <遠程 IP>:6379: 連接: 連接被拒絕

Go
大話西游666 2022-10-04 17:06:28
我正在 GKE(谷歌庫伯內特斯引擎)上構建一個應用程序,以及一個使用 GCE Redis 實例的系統。當我嘗試從 GKE 上的應用程序容器連接到 GCE 上的 Redis 時,連接被拒絕了。() 應用程序是用 Go 編寫的,而重用庫是 go-redis(v8)。為什么我無法連接?dial tcp <REMOTE-IP>:6379: connect: connection refused連接部分和發生錯誤的部分的源代碼如下所示。    redisServerName = os.Getenv("REDIS_SERVER") // "sample.com:6379"    redisClient = redis.NewClient(&redis.Options{        Addr:     redisServerName,        Password: "",        DB:       0,    })    p, err := redisClient.Ping(ctx).Result()    log.Println(p, err)主機名已解析,因此它不是 DNS 問題,并且 redis-cli 命令是可執行的,因此它似乎不是防火墻問題。#  redis-cli -h <REMOTE_IP> pingPONG附言下面是在 Go 應用程序運行的情況下從 Pod 運行命令的結果/# redis-cli -h redis.sample.comredis.sample.com:6379>   // can connect/# nc redis.sample.com 6379// There is NO response.
查看完整描述

1 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

我斷言容器中的每個應用程序都將具有相同的第 4 層(對于 redis、TCP)對網絡的訪問權限。由于 Redis 不提供重要的訪問控制,這意味著如果容器上的一個應用程序具有對 redis 服務器的網絡訪問權限,則同一容器上的所有其他應用程序也將具有訪問權限。如果一個人無法聯系到redis,另一個人也不會聯系。


在同一容器上。這就是測試變得棘手的地方,因為在這里重現你的k8和gke配置是沒有幫助或可行的。


國際移徙方案平數和 tcp/6379 是不同的。僅僅因為ping工作,并不意味著Redis可以,反之亦然。不同的容器在 k8 和 gke 中將具有不同的網絡訪問權限。


在應用容器上執行此測試,以從等式中取出所有可能的內容。


apk add redis只拉入幾個包,只有8MB,并在我測試時提供,但你不需要任何客戶端應用程序來redis;它很簡單,可以用網貓來完成。您也不必發出有效的 redis cmd - 如果您收到響應,您就知道網絡工作正常:redis-cli-ERR unknown command


/ # echo "hi, redis!" |nc localhost 6379

-ERR unknown command `hi,`, with args beginning with: `redis!`,

如果它在那里工作而不是在Go中工作,那可能是因為環境變量設置不正確。因此,您可能還想在命令行中對其進行測試。REDIS_SERVER


nc $REDIS_SERVER 6379


查看完整回答
反對 回復 2022-10-04
  • 1 回答
  • 0 關注
  • 258 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號