单机服务器,使用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