哨兵模式
集群模式
1.创建YAML
cat > docker-compose-redis-cluster.yml << EOF
version: '3.1'
services:
redis_cluster_node1:
image: redis:5.0.5
container_name: redis_cluster_node1
restart: always
user: root
privileged: true
volumes:
- /etc/localtime:/etc/localtime:ro
- ./redis/node1/etc/redis.conf:/redis/etc/redis.conf
- ./redis/node1/data:/redis/data
- ./redis/node1/log:/redis/log
ports:
- 7001:7001
- 17001:17001
command: redis-server /redis/etc/redis.conf
logging:
options:
max-size: '100m'
max-file: '10'
redis_cluster_node2:
image: redis:5.0.5
container_name: redis_cluster_node2
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ./redis/node2/etc/redis.conf:/redis/etc/redis.conf
- ./redis/node2/data:/redis/data
- ./redis/node2/log:/redis/log
ports:
- 7002:7002
- 17002:17002
user: root
privileged: true
command: redis-server /redis/etc/redis.conf
logging:
options:
max-size: '100m'
max-file: '10'
redis_cluster_node3:
image: redis:5.0.5
container_name: redis_cluster_node3
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ./redis/node3/etc/redis.conf:/redis/etc/redis.conf
- ./redis/node3/data:/redis/data
- ./redis/node3/log:/redis/log
ports:
- 7003:7003
- 17003:17003
user: root
privileged: true
command: redis-server /redis/etc/redis.conf
logging:
options:
max-size: '100m'
max-file: '10'
redis_cluster_node4:
image: redis:5.0.5
container_name: redis_cluster_node4
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ./redis/node4/etc/redis.conf:/redis/etc/redis.conf
- ./redis/node4/data:/redis/data
- ./redis/node4/log:/redis/log
ports:
- 7004:7004
- 17004:17004
user: root
privileged: true
command: redis-server /redis/etc/redis.conf
logging:
options:
max-size: '100m'
max-file: '10'
redis_cluster_node5:
image: redis:5.0.5
container_name: redis_cluster_node5
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ./redis/node5/etc/redis.conf:/redis/etc/redis.conf
- ./redis/node5/data:/redis/data
- ./redis/node5/log:/redis/log
ports:
- 7005:7005
- 17005:17005
user: root
privileged: true
command: redis-server /redis/etc/redis.conf
logging:
options:
max-size: '100m'
max-file: '10'
redis_cluster_node6:
image: redis:5.0.5
container_name: redis_cluster_node6
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ./redis/node6/etc/redis.conf:/redis/etc/redis.conf
- ./redis/node6/data:/redis/data
- ./redis/node6/log:/redis/log
ports:
- 7006:7006
- 17006:17006
user: root
privileged: true
command: redis-server /redis/etc/redis.conf
logging:
options:
max-size: '100m'
max-file: '10'
EOF
2.创建集群创建脚本及配置文件
mkdir redis/{
node1.. node6} /{
etc,data,log}
cat > redis/{
node1.. node6} /etc/redis.conf << EOF
# 监听端口
port 7001
# 绑定地址
bind 0.0.0.0
# Redis密码
requirepass Pwd@123
# 开启集群功能
cluster-enabled yes
# 集群的配置文件名称,不需要我们创建,由redis自己维护
cluster-config-file nodes.conf
# 节点心跳失败的超时时间
cluster-node-timeout 5000
# 开启数据持久化(根据需求开启)
appendonly yes
# 持久化文件存放目录
dir /redis/data
# 日志文件
logfile /redis/log/redis.log
# 让redis后台运行
daemonize no
# 注册的实例ip(避免多网卡时IP冲突) #设置为本机IP
cluster-announce-ip 192.168.10.10
cluster-announce-port 7001
cluster-announce-bus-port 17001
# 关闭保护模式
protected-mode no
# 数据库数量
databases 16
# 内存限制
maxmemory 4G
masterauth Pwd@123
EOF
cat > redis/edietc.sh << EOF
localip=` ifconfig eth0| awk NR == 2 | awk '{print $2}' `
set -i 's/7001/7001/g' node1/etc/redis.conf
set -i 's/7001/7002/g' node2/etc/redis.conf
set -i 's/7001/7003/g' node3/etc/redis.conf
set -i 's/7001/7004/g' node4/etc/redis.conf
set -i 's/7001/7005/g' node5/etc/redis.conf
set -i 's/7001/7006/g' node6/etc/redis.conf
sed -i 's/192.168.10.10/${localip} /g' node1/etc/redis.conf
sed -i 's/192.168.10.10/${localip} /g' node2/etc/redis.conf
sed -i 's/192.168.10.10/${localip} /g' node3/etc/redis.conf
sed -i 's/192.168.10.10/${localip} /g' node4/etc/redis.conf
sed -i 's/192.168.10.10/${localip} /g' node5/etc/redis.conf
sed -i 's/192.168.10.10/${localip} /g' node6/etc/redis.conf
EOF
sh redis/edietc.sh
cat > redis/createcluster.sh << EOF
localip=` ifconfig eth0| awk NR == 2 | awk '{print $2}' `
docker exec -it redis_cluster_node1 redis-cli -a Weihu12345 --cluster create --cluster-replicas 1 ${localip} :7001 ${localip} :7002 ${localip} :7003 ${localip} :7004 ${localip} :7005 ${localip} :7006
EOF
3.启动服务
docker-compose -f docker-compose-redis-cluster.yml up -d
4.创建集群
sh redis/createcluster.sh