swarm部署redis-cluster
version: "3.7"
services:
redis7001:
image: redis:5.0.5
container_name: redis7001
#设置主机名
hostname: redis7001
restart: always
#privileged: true
#挂载目录,相当于 docker run -v 主机目录:容器目录
volumes:
- /home/data/redis/7001/data:/data
- /home/data/redis/7001/conf:/conf
#启动容器执行命令,相当于docker run [镜像:tag] [命令], 登录redis: redis-cli -h 192.168.0.80 -p 6379 -a Dszn@2020
command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.232 --cluster-announce-port 7001 --cluster-announce-bus-port 17001
ports:
- "7001:6379"
- "17001:16379"
#指定环境变量,相当于docker run -e 参数, 登录mysql: mysql -h192.168.3.80 -P3306 -uroot -pDs20Pwd@
environment:
- TZ=Asia/Shanghai
networks:
- dms
deploy:
placement:
constraints:
- node.hostname == master
- node.role == manager
redis7002:
image: redis:5.0.5
container_name: redis7002
#设置主机名
hostname: redis7002
restart: always
#privileged: true
#挂载目录,相当于 docker run -v 主机目录:容器目录
volumes:
- /home/data/redis/7002/data:/data
- /home/data/redis/7002/conf:/conf
#启动容器执行命令,相当于docker run [镜像:tag] [命令], 登录redis: redis-cli -h 192.168.0.80 -p 6379 -a Dszn@2020
command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.232 --cluster-announce-port 7002 --cluster-announce-bus-port 17002
ports:
- "7002:6379"
- "17002:16379"
#指定环境变量,相当于docker run -e 参数, 登录mysql: mysql -h192.168.3.80 -P3306 -uroot -pDs20Pwd@
environment:
- TZ=Asia/Shanghai
networks:
- dms
deploy:
placement:
constraints:
- node.hostname == master
- node.role == manager
redis7003:
image: redis:5.0.5
container_name: redis7003
#设置主机名
hostname: redis7003
restart: always
volumes:
- /home/data/redis/7003/data:/data
- /home/data/redis/7003/conf:/conf
command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.233 --cluster-announce-port 7003 --cluster-announce-bus-port 17003
ports:
- "7003:6379"
- "17003:16379"
environment:
- TZ=Asia/Shanghai
networks:
- dms
deploy:
placement:
constraints:
- node.hostname == node1
redis7004:
image: redis:5.0.5
container_name: redis7004
#设置主机名
hostname: redis7004
restart: always
volumes:
- /home/data/redis/7004/data:/data
- /home/data/redis/7004/conf:/conf
command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.233 --cluster-announce-port 7004 --cluster-announce-bus-port 17004
ports:
- "7004:6379"
- "17004:16379"
environment:
- TZ=Asia/Shanghai
networks:
- dms
deploy:
placement:
constraints:
- node.hostname == node1
redis7005:
image: redis:5.0.5
container_name: redis7005
#设置主机名
hostname: redis7005
restart: always
volumes:
- /home/data/redis/7005/data:/data
- /home/data/redis/7005/conf:/conf
command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.234 --cluster-announce-port 7005 --cluster-announce-bus-port 17005
ports:
- "7005:6379"
- "17005:16379"
environment:
- TZ=Asia/Shanghai
networks:
- dms
deploy:
placement:
constraints:
- node.hostname == node2
redis7006:
image: redis:5.0.5
container_name: redis7006
#设置主机名
hostname: redis7006
restart: always
volumes:
- /home/data/redis/7006/data:/data
- /home/data/redis/7006/conf:/conf
command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.234 --cluster-announce-port 7006 --cluster-announce-bus-port 17006
ports:
- "7006:6379"
- "17006:16379"
environment:
- TZ=Asia/Shanghai
networks:
- dms
deploy:
placement:
constraints:
- node.hostname == node2 #指定部署节点,不指定会随机
networks:
#定义服务网桥名称
dms:
#指定网桥驱动,有bridge/overlay,默认是bridge
driver: overlay
#false-统自动创建网桥名,格式为: 目录名_网桥名,默认为false; true-使用外部创建的网桥,需要自己手动创建
external: true
#挂载目录,声明服务使用的创建卷名
volumes:
mysqldata:
#false-系统自动创建的卷名,格式为: 目录名_卷名,默认为false; true-使用外部创建的卷面,需要自己手动创建
external: false
docker stack deploy -c redis-compose.yml redis
生成redis实例
进入管理节点pod中
redis-cli -h 172.20.69.232 -p 7001 --cluster create 172.20.69.232:7001 172.20.69.232:7002 172.20.69.233:7003 172.20.69.233:7004 172.20.69.234:7005 172.20.69.232:7006 --cluster-replicas 1 --cluster-yes
生成集群即可
redis-cli -h 172.20.69.232 -p 7001 config set requirepass sco2018cass #密码可以根据自己改
redis-cli -h 172.20.69.232 -p 7002 config set requirepass sco2018cass
redis-cli -h 172.20.69.232 -p 7003 config set requirepass sco2018cass
redis-cli -h 172.20.69.232 -p 7004 config set requirepass sco2018cass
redis-cli -h 172.20.69.232 -p 7005 config set requirepass sco2018cass
redis-cli -h 172.20.69.232 -p 7006 config set requirepass sco2018cass
redis-cli -h 172.20.69.232 -p 7001 -a sco2018cass cluster info 查询集群信息
注意如果需要,redis集群有密码要求,需要改动一个地方
command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.232 --cluster-announce-port 7001 --cluster-announce-bus-port 17001 --requirepass sco2018cass --masterauth sco2018cass
redis-server的启动命令加上参数就好了,不然会报错从库数据同步失败
浙公网安备 33010602011771号