日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

外网访问redis cluster的大坑

發布時間:2023/12/8 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 外网访问redis cluster的大坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

昨天下午3-4點開始一直到夜里12點半,在加上今天上午的兩個半小時算是勉強搞定了。真鬧心啊
首先我用的是oracle oci(云端的計算實例)搭建了一個三臺機器(3主,3從,每一對主從在一臺機器)的redis cluster 集群,redis版本是最新的5…0.7

接下來我描述一下問題的細節
三臺機器A(port: 7001,7002)B(port: 7003,7004), C(port: 7005,7006),在云端要把security list對應的端口7000-7006,17000-17006(redis集群后臺通信用,)打開。
集群創建完畢后,顯示成功。

因為我想在本地測試,所以需要外網訪問redis集群

此處為止注意點
1 redis 配置文件中 把bind取消,然后把保護模式關閉

2 創建集群的時候用外網ip
redis-cli --cluster create 外網Ip:7001 外網Ip:7002 外網Ip:7003 外網Ip:7004 外網Ip:7005

外網Ip:7006 --cluster-replicas
上面是從網上查到的,照做肯定沒問題,如果不做的話是否可以我沒試過(太累了,不試驗了)
奇怪的問題發生了,我在jedis中連接的時候一直報錯 No more cluster attempts left

Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>(); jedisClusterNodes.add(new HostAndPort("外網ip", Integer.valueOf(7006))); jedisClusterNodes.add(new HostAndPort("外網ip", Integer.valueOf(7002))); jedisClusterNodes.add(new HostAndPort("外網ip", Integer.valueOf(7004))); jedisClusterNodes.add(new HostAndPort("外網ip", Integer.valueOf(7005))); jedisClusterNodes.add(new HostAndPort("外網ip", Integer.valueOf(7001))); jedisClusterNodes.add(new HostAndPort("外網ip", Integer.valueOf(7003)));JedisCluster jedisCluster = new JedisCluster(jedisClusterNodes, 10000); jedisCluster.set("abcde","1123"); return jedisCluster.get("abcde");

換了幾次jedis驅動3.1和3.2就是 No more cluster attempts left
這個錯誤,網上也找不到對策,換了2.9的驅動就是time out。后來反復各種調試,無意中發現是7005(master)
連不上,只要在jedis中剔除掉7005 就可以了
繼續調試,把7005停掉,它對應的slave7002(在另一臺機器上)變成了新的master,在啟動7005,7005變成了slave,然后一切都正常了,7005也能連上了。好神奇
繼續調查,把7001(也是一臺master)的reds配置文件和7005對比,發現除了端口號不同,完全一致。其實當時做集群的時候都是按照7001改的,最后無奈又復制了一份7001的配置文件到7005那臺機器。
把端口號改成7000,停掉7005,把7000加入集群,作為7002的slave。一切正常了,停掉7002,7000變成了master。依然正常。
實在是找不到原因了,暫時先記錄下 最后我有兩點疑問 1 我不知道這個問題是不是和外網訪問redis 有關
(等有時間的時候把代碼考到云上去運行下試試)
2 當然redis一般來說肯定是內網訪問,但是如果像我這樣搭建redis
cluster,是不是redis集群間的通信全是走外網?那速度豈不是很慢了,而且會浪費很多帶寬流量

總結

以上是生活随笔為你收集整理的外网访问redis cluster的大坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。