docker安装redis集群
拉取镜像
1 | docker pull redis:5.0.5 |
创建redis容器
创建三个 redis 容器:
- redis-node1:6380
- redis-node2:6381
- redis-node3:6382
1 | docker create --name redis-node1 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-1.conf --port 6380 |
启动容器
1 | docker start redis-node1 redis-node2 redis-node3 |
执行完运行命令后检查一下容器的启动情况:
如上提示的是权限问题,我们尝试修改一下权限:
1 | chmod -R 777 /data |
启动成功后如下图所示:
组建群组
--net
网络类型为 host
Docker在使用host模式
下创建的容器是没有自己独立的网络命名空间的,是跟物理机共享一个网络空间,进而可以共享物理机的所有端口与IP,这样就可以让公共网络直接访问容器了
1 | 组建集群,10.211.55.4为当前物理机的ip地址 |
出现问题
Waiting for the cluster to join
到这一步后一直在等待,无法进行到下一步
解决
我在搭建的时候用的阿里云,启动有端口限制,redis集群在通讯的时候还需要开始一个通讯端口,通讯端口地址:reids端口号+10000
例如:redis端口号为6380,那么不仅要开启6380端口,还有开启16380端口
所以在阿里云控制台安全组中开启16380/16381
后,没有在一直等待
查看集群信息
1 | root@CentOS7:/data# redis-cli |
打印不了集群信息
在查看cluster的时候显示没有权限
使用下面的命令
1 | redis-cli -h 10.211.55.4 -p 6381 |
1 | root@CentOS7:/data# redis-cli -h 10.211.55.4 -p 6381 |
外部连接访问不到或者连接上一会就报错断开
发现原因
因为我发现,操作的时候总有一个redsi的主节点,显示的是非外网的ip地址,而是本地的物理ip地址
查看ip地址
1 | ifconfig |
docker0 开头的 docker ip 地址
eth0 开头的宿主机ip
我发现总有一个是用的宿主机的ip,但是阿里云服务器提供的ip地址又不是这个
解决
1 | vim /data/redis-data/node1/nodes-node-1.conf |
然后把ip地址全部改成外网的ip地址
成功
参考文章:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 吕小医's BLOG!