docker简单部署redis集群
单机服务器,使用docker 部署redis 集群
首先获取redis镜像,docker pull redis ,我直接使用最新版本的redis,如果需要某一版本,则可以docker pull redis:4.0.1
获取成功后,可以通过docker images 查看。
下面开始部署redis集群
首先新建配置 模板:
vi redis-cluster.tmpl
port ${PORT} masterauth 123456 requirepass 123456 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 172.17.40.1 cluster-announce-port ${PORT} cluster-announce-bus-port 1${PORT} appendonly yes
参数描述
(1)port(端口号)
(2)masterauth(设置集群节点间访问密码,跟下面一致
(3)requirepass(设置redis访问密码)
(4)cluster-enabled yes(启动集群模式)
(5)cluster-config-file nodes.conf(集群节点信息文件)
(6)cluster-node-timeout 5000(redis节点宕机被发现的时间)
(7)cluster-announce-ip(集群节点的汇报ip,防止nat,预先填写为网关ip后续需要手动修改配置文件) ,单机直接使用 ifconfig 如下, 直接使用 172.17.40.1
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.40.1 netmask 255.255.255.0 broadcast 0.0.0.0 ether 02:42:a5:3e:29:d8 txqueuelen 0 (Ethernet) RX packets 291 bytes 30756 (30.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 215 bytes 13108 (12.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ......
(8)cluster-announce-port(集群节点的汇报port,防止nat)
(9)cluster-announce-bus-port(集群节点的汇报bus-port,防止nat)
(10) appendonly yes(开启aof)
然后执行如下脚本创建 配置文件:
for port in `seq 7001 7006`; do \ mkdir -p ./${port}/conf \ && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \ && mkdir -p ./${port}/data; \ done
下面启动docker redis 容器
for port in `seq 7001 7006`; do docker run -d --net=host -v /usr/local/docker/config/${port}/conf/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/config/${port}/data:/data --restart always --name=redis-${port} redis redis-server /etc/redis/redis.conf; done
创建完成可以,可以通过docker ps 查看,进入其中一个redis 容器: docker exec -it redis-7001 /bin/bash
执行如下命令建立集群:
redis-cli -a 123456 --cluster create 172.17.40.1:7001 172.17.40.1:7002 172.17.40.1:7003 172.17.40.1:7004 172.17.40.1:7005 172.17.40.1:7006 --cluster-replicas 1
如下图,创建集群成功。
可以连接某一节点,检验集群状态:
七、检查集群状态
容器内验证
执行此命令可以连接到某一个redis服务:redis-cli -c -a 123456 -h 172.17.40.1 -p 7001
进入某一容器,执行此命令,可以查看集群主从详情:redis-cli -a 123456 -c -p 7001 cluster nodes