在虚拟机上安装redis集群,redis使用版本为4.0.5,本机通过命令客户端可以连接访问,外部主机一直访问不了...
在虛擬機上安裝了redis 4 ,啟動后本機客戶端可以連接訪問,但是外部主機一直訪問不了,在使用java代碼連接redis集群時報:no reachable node in cluster,原因:在redis3.2.0版本以后redis.conf配置文件中增加了protected-mode保護模式屬性,具體解決辦法如下:
先貼代碼:
<!-- redis客戶端 -->
<dependency>
? <groupId>redis.clients</groupId>
? <artifactId>jedis</artifactId>
? <version>2.8.2</version>
</dependency>
//相關代碼如下:
JedisPoolConfig config = new JedisPoolConfig();
config =new JedisPoolConfig();
? ? ? ?config.setMaxTotal(60000);//設置最大連接數 ?
? ? ? ?config.setMaxIdle(1000); //設置最大空閑數?
? ? ? ?config.setMaxWaitMillis(3000);//設置超時時間 ?
? ? ? ?config.setTestOnBorrow(true);
// 集群結點
Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
jedisClusterNode.add(new HostAndPort("192.168.246.128", Integer.parseInt("7001")));
jedisClusterNode.add(new HostAndPort("192.168.246.128", Integer.parseInt("7002")));
jedisClusterNode.add(new HostAndPort("192.168.246.128", Integer.parseInt("7003")));
jedisClusterNode.add(new HostAndPort("192.168.246.128", Integer.parseInt("7004")));
jedisClusterNode.add(new HostAndPort("192.168.246.128", Integer.parseInt("7005")));
jedisClusterNode.add(new HostAndPort("192.168.246.128", Integer.parseInt("7006")));
JedisCluster jc = new JedisCluster(jedisClusterNode, config);
//JedisCluster jc = new JedisCluster(jedisClusterNode);
jc.set("name", "zhangsan");
String value = jc.get("name");
System.out.println(value);
?
?
糾結了兩天也是沒sei了,就這么幾行代碼,看來看去沒問題啊,甚至上github去看作者的例子,一模一樣啊,一度懷疑人生啊;
由于我的單機版用命令行和java代碼訪問都沒問題,而且集群通過命令行方式也沒問題,所以一直沒懷疑我搭建的環境的問題,我懷疑代碼,懷疑是否是工程依賴的jedis的版本的bug,換了幾個版本還是報同樣的錯誤,最后我才開始查環境,環境的話先關了防火墻,沒用,
?
?
?
到底怎么回事兒呢?
用telnet ?測試下,結果如下
查看了虛擬機的端口等情況,一切正常,網上查了一下資料都沒解決問題,不過一個大神說可能是redis服務端直接拒絕你這臺機子的連接。那redis是怎么做到的呢?查看redis.conf文件,發下有個bind配置
開啟這個配置時:redis 只接收來自于該 IP 地址列表的請求,如果不進行設置,那么將處理所有請求。
于是禁止這個配置,重啟redis。
用遠程客戶端連接
問題描述中說redis開始了保護模式,繼續查看redis.conf文件,發現3.2后新增protected-mode配置,默認是yes,即開啟。解決方法分為兩種:1、關閉protected-mode模式 ?2、配置bind或者設置密碼
嘗試方法1關閉protected-mode模式
測試連接正常,命令操作無誤。
嘗試方法22、配置bind或者設置密碼
客戶端測試
?
轉載于:https://www.cnblogs.com/jiongchen/p/9129003.html
總結
以上是生活随笔為你收集整理的在虚拟机上安装redis集群,redis使用版本为4.0.5,本机通过命令客户端可以连接访问,外部主机一直访问不了...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 1217 Arbitrage (
- 下一篇: vNext之旅(2):net451、do