基于docker搭建redis集群

在docker已安装完毕的情况下,拉取redis镜像

#这里拉取最新的redis镜像。当然也可以拉取指定版本的镜像 docker pull redis:5.0
docker pull redis

创建redis容器

#命令如下

docker create --name redis-node1 --net=host -v /data/redis-data/node1:/data redis --cluster-enabled yes --cluster-config-file nodes-node-1.conf --cluster-node-timeout 10000 --appendonly yes --port 6371

docker create --name redis-node2 --net=host -v /data/redis-data/node2:/data redis --cluster-enabled yes --cluster-config-file nodes-node-2.conf --cluster-node-timeout 10000 --appendonly yes --port 6372

docker create --name redis-node3 --net=host -v /data/redis-data/node3:/data redis --cluster-enabled yes --cluster-config-file nodes-node-3.conf --cluster-node-timeout 10000 --appendonly yes --port 6373

docker create --name redis-node4 --net=host -v /data/redis-data/node4:/data redis --cluster-enabled yes --cluster-config-file nodes-node-4.conf --cluster-node-timeout 10000 --appendonly yes --port 6374

docker create --name redis-node5 --net=host -v /data/redis-data/node5:/data redis --cluster-enabled yes --cluster-config-file nodes-node-5.conf --cluster-node-timeout 10000 --appendonly yes --port 6375

docker create --name redis-node6 --net=host -v /data/redis-data/node6:/data redis --cluster-enabled yes --cluster-config-file nodes-node-6.conf --cluster-node-timeout 10000 --appendonly yes --port 6376

创建redis容器参数解释:
--net=host 容器和宿主机共用网络 不需要再做端口映射
-v 创建容器数据卷
--cluster-enabled:是否启动集群,选值:yes 、no
--cluster-config-file 配置文件.conf :指定节点信息,自动生成
--cluster-node-timeout 毫秒值: 配置节点连接超时时间
--appendonly 是否开启持久化,选值:yes、no
--port 端口

启动容器

# 在这里直接启动会报错 
# Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"write /proc/self/attr/keycreate: permission denied\"": unknown
# Error: failed to start containers: redis-node
# 这里是由于linux的策略原因:“/proc/self/attr/keycreate” 这里没有写入权限,需要把“/etc/selinux/config”里面的SELINUX值修改为disabled 
# 修改以后要重启linux虚拟机,才能生效
# reboot。

# 重启完执行容器启动命令
docker start redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6

组件redis集群

#进入任意一个创建的redis容器,以redis-node1为例
docker exec -it redis-node1 /bin/bash
#执行组件集群的命令,localhos替换成实际的主机ip
redis-cli --cluster create localhos:6371 localhos:6372 localhos:6373 localhos:6374 localhos:6375 localhos:6376 --cluster-replicas 1
#参数解释
    # --cluster-replicas 1: 参数后面的数字表示的是主从比例,这里的1,表示1个主节点对应1个从节点。上面创建了6个reids容器,所以主从分配就是3个主节点,3个从节点。
    # 注意 主节点最少3个,3个才能保证集群的健壮性。
    
#组建成功,进入redis查看一下集群节点信息:
redis-cli -c -p 6371
cluster nodes
# -c 代表集群模式
# -p 代表进入6371端口

开放端口

#批量添加开放端口
firewall-cmd --permanent --add-port=6371-6376/tcp
#重启
firewall-cmd --reload

Redis Cluster主从模式

redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。

posted @ 2023-01-19 19:41  又一岁荣枯  阅读(106)  评论(0编辑  收藏  举报