windows ---> 虚拟机 Centos ---> Docker
采用 NAT 地址转换,
windows:192.168.56.1
Centos:10.0.2.15
搭建了三个 Redis 实例:
Redis1:172.17.0.2
Redis1:172.17.0.3
Redis1:172.17.0.4
搭建了三个 Redis 哨兵:
Sentinel1: 172.17.0.5
Sentinel2:172.17.0.6
Sentinel3::172.17.0.7
当我的 RedisTemplate 直接找的时候:其实是找不到什么东西的,此时我必须做 NAT 地址转换,此处是 VritualBox:虚拟机中 ---> 网络 ---> 高级 ---> 端口转发

但是这样只是能访问到哨兵,但是但是!!!
Redis 实例默认你不告诉 ip 地址的时候,它就是它当前容器的 ip,所以你得在每一个 redis.conf 配置下:重点是 replica-announce-ip 否则你是找不到的!!!
哨兵通知给 RedisClient 的 ip 地址是本地地址!!!所以如果你不告诉它,RedisTemplate 就会直接去找:172.17.0.1:7001 这肯定找不到啊,因为中间还有一层虚拟机Centos,docker还在下一层呢。所以你得配的地址是 192.168.56.1,这真的搞了我好久。。。。
- vim /var/lib/docker/volumes/redis/7001/redis.conf
- replica-announce-ip 192.168.56.1
- replica-announce-port 7001
-
- vim /var/lib/docker/volumes/redis/7002/redis.conf
- replica-announce-ip 192.168.56.1
- replica-announce-port 7002
- replicaof 192.168.56.1 7001
- :wq
-
- vim /var/lib/docker/volumes/redis/7003/redis.conf
- replica-announce-ip 192.168.56.1
- replica-announce-port 7003
- replicaof 192.168.56.1 7001
- :wq