一、关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
二、修改配置文件
[root@rabbit2 redis]# cat docker-compose.yaml
version: '3.3'
services:
redis6001:
image: redis:6.2.6
container_name: redis6001
restart: always
command:
["redis-server", "/usr/local/etc/redis/redis.conf"]
volumes:
- ./6001/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./6001/data:/data
ports:
- "6001:6001"
- "16001:16001"
environment:
# 设置时区为上海,否则时间会有问题
- TZ=Asia/Shanghai
logging:
options:
max-size: '100m'
max-file: '10'
redis6002:
image: redis:6.2.6
container_name: redis6002
restart: always
command:
["redis-server", "/usr/local/etc/redis/redis.conf"]
volumes:
- ./6002/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./6002/data:/data
ports:
- "6002:6002"
- "16002:16002"
environment:
# 设置时区为上海,否则时间会有问题
- TZ=Asia/Shanghai
logging:
options:
max-size: '100m'
max-file: '10'
redis6003:
image: redis:6.2.6
container_name: redis6003
restart: always
command:
["redis-server", "/usr/local/etc/redis/redis.conf"]
volumes:
- ./6003/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./6003/data:/data
ports:
- "6003:6003"
- "16003:16003"
environment:
# 设置时区为上海,否则时间会有问题
- TZ=Asia/Shanghai
logging:
options:
max-size: '100m'
max-file: '10'
redis6004:
image: redis:6.2.6
container_name: redis6004
restart: always
command:
["redis-server", "/usr/local/etc/redis/redis.conf"]
volumes:
- ./6004/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./6004/data:/data
ports:
- "6004:6004"
- "16004:16004"
environment:
# 设置时区为上海,否则时间会有问题
- TZ=Asia/Shanghai
logging:
options:
max-size: '100m'
max-file: '10'
redis6005:
image: redis:6.2.6
container_name: redis6005
restart: always
command:
["redis-server", "/usr/local/etc/redis/redis.conf"]
volumes:
- ./6005/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./6005/data:/data
ports:
- "6005:6005"
- "16005:16005"
environment:
# 设置时区为上海,否则时间会有问题
- TZ=Asia/Shanghai
logging:
options:
max-size: '100m'
max-file: '10'
redis6006:
image: redis:6.2.6
container_name: redis6006
restart: always
command:
["redis-server", "/usr/local/etc/redis/redis.conf"]
volumes:
- ./6006/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./6006/data:/data
ports:
- "6006:6006"
- "16006:16006"
environment:
# 设置时区为上海,否则时间会有问题
- TZ=Asia/Shanghai
logging:
options:
max-size: '100m'
max-file: '10'
networks:
app_net:
external: true
[root@rabbit2 redis]# cat redis-cluster.tmpl
# redis端口
port ${PORT}
#redis 访问密码
requirepass 7hGtW#eCx5#Pu#FXRf#gFHSo
#redis 访问Master节点密码
masterauth 7hGtW#eCx5#Pu#FXRf#gFHSo
# 关闭保护模式
protected-mode no
# 开启集群
cluster-enabled yes
# 集群节点配置
cluster-config-file nodes.conf
# 超时
cluster-node-timeout 5000
# 集群节点IP host模式为宿主机IP
cluster-announce-ip 192.168.30.25
# 集群节点端口,bus-port比port大1000
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
# 开启 appendonly 备份模式
appendonly yes
# 每秒钟备份
appendfsync everysec
# 对aof文件进行压缩时,是否执行同步操作
no-appendfsync-on-rewrite no
# 当目前aof文件大小超过上一次重写时的aof文件大小的100%时会再次进行重写
auto-aof-rewrite-percentage 100
# 重写前AOF文件的大小最小值 默认 64mb
auto-aof-rewrite-min-size 64mb
# 日志配置
# debug:会打印生成大量信息,适用于开发/测试阶段
# verbose:包含很多不太有用的信息,但是不像debug级别那么混乱
# notice:适度冗长,适用于生产环境
# warning:仅记录非常重要、关键的警告消息
loglevel notice
# 日志文件路径
logfile "/data/redis.log"
[root@rabbit2 redis]# cat redis-cluster-config.sh
for port in `seq $1 $2`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
三、加入集群
[root@rabbit2 redis]# bash ./redis-cluster-config.sh 6001 6006
[root@rabbit2 redis]# ls
6001 6002 6003 6004 6005 6006 docker-compose.yaml redis-cluster-config.sh redis-cluster.tmpl
[root@rabbit2 redis]# chmod -R +777 ./6001
[root@rabbit2 redis]# chmod -R +777 ./6002
[root@rabbit2 redis]# chmod -R +777 ./6003
[root@rabbit2 redis]# chmod -R +777 ./6004
[root@rabbit2 redis]# chmod -R +777 ./6005
[root@rabbit2 redis]# chmod -R +777 ./6006
[root@rabbit2 redis]# ls
6001 6002 6003 6004 6005 6006 docker-compose.yaml redis-cluster-config.sh redis-cluster.tmpl
[root@rabbit2 redis]# vi redis-cluster.tmpl
[root@rabbit2 redis]# port ${PORT}
-bash: port: command not found
[root@rabbit2 redis]# vi docker-compose.yaml
[root@rabbit2 redis]# vi redis-cluster.tmpl
[root@rabbit2 redis]# docker-compose down
[root@rabbit2 redis]# docker-compose up -d
[+] Running 6/7
⠋ Network redis_default Created 1.1s
✔ Container redis6001 Started 0.8s
✔ Container redis6003 Started 1.0s
✔ Container redis6002 Started 1.0s
✔ Container redis6005 Started 0.5s
✔ Container redis6004 Started 0.9s
✔ Container redis6006 Started 0.8s
[root@rabbit2 redis]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5b8722bbcb37 redis:6.2.6 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6004->6004/tcp, [::]:6004->6004/tcp, 0.0.0.0:16004->16004/tcp, [::]:16004->16004/tcp, 6379/tcp redis6004
e1e91fded2ad redis:6.2.6 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6005->6005/tcp, [::]:6005->6005/tcp, 0.0.0.0:16005->16005/tcp, [::]:16005->16005/tcp, 6379/tcp redis6005
f9010b959cd1 redis:6.2.6 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6001->6001/tcp, [::]:6001->6001/tcp, 0.0.0.0:16001->16001/tcp, [::]:16001->16001/tcp, 6379/tcp redis6001
258f08b79453 redis:6.2.6 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6003->6003/tcp, [::]:6003->6003/tcp, 0.0.0.0:16003->16003/tcp, [::]:16003->16003/tcp, 6379/tcp redis6003
04d79831176e redis:6.2.6 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6006->6006/tcp, [::]:6006->6006/tcp, 0.0.0.0:16006->16006/tcp, [::]:16006->16006/tcp, 6379/tcp redis6006
ef30d93d3223 redis:6.2.6 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6002->6002/tcp, [::]:6002->6002/tcp, 0.0.0.0:16002->16002/tcp, [::]:16002->16002/tcp, 6379/tcp redis6002
f1bdda1a4069 redis:6.2.6 "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 6379/tcp relaxed_mayer
b4dab98879a6 rabbitmq:3.9.0-management "docker-entrypoint.s…" About an hour ago Up 59 minutes rabbitmq
[root@rabbit2 redis]# docker run -it --rm --network host redis:6.2.6 \
redis-cli -a '7hGtW#eCx5#Pu#FXRf#gFHSo' --cluster create \
192.168.30.25:6001 192.168.30.25:6002 192.168.30.25:6003 \
192.168.30.25:6004 192.168.30.25:6005 192.168.30.25:6006 \
--cluster-replicas 1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.30.25:6005 to 192.168.30.25:6001
Adding replica 192.168.30.25:6006 to 192.168.30.25:6002
Adding replica 192.168.30.25:6004 to 192.168.30.25:6003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 50654b9d91a28d7ed8e9327cbd218b40d05e0135 192.168.30.25:6001
slots:[0-5460] (5461 slots) master
M: ee12edf412044f81ce55b93b686505c300e121f7 192.168.30.25:6002
slots:[5461-10922] (5462 slots) master
M: 1fe3b80e312eea1fec18c41712295f5d623debd7 192.168.30.25:6003
slots:[10923-16383] (5461 slots) master
S: 95301b0852b5239991119c10dd06b1bf0d96268f 192.168.30.25:6004
replicates ee12edf412044f81ce55b93b686505c300e121f7
S: d0d9ebbddd63acc4675634f67358ee0e214598dc 192.168.30.25:6005
replicates 1fe3b80e312eea1fec18c41712295f5d623debd7
S: 8a62664439a5be16439d3b293f5a9ca2b7be09a7 192.168.30.25:6006
replicates 50654b9d91a28d7ed8e9327cbd218b40d05e0135
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.
>>> Performing Cluster Check (using node 192.168.30.25:6001)
M: 50654b9d91a28d7ed8e9327cbd218b40d05e0135 192.168.30.25:6001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 8a62664439a5be16439d3b293f5a9ca2b7be09a7 192.168.30.25:6006
slots: (0 slots) slave
replicates 50654b9d91a28d7ed8e9327cbd218b40d05e0135
M: ee12edf412044f81ce55b93b686505c300e121f7 192.168.30.25:6002
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
M: 1fe3b80e312eea1fec18c41712295f5d623debd7 192.168.30.25:6003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: d0d9ebbddd63acc4675634f67358ee0e214598dc 192.168.30.25:6005
slots: (0 slots) slave
replicates 1fe3b80e312eea1fec18c41712295f5d623debd7
S: 95301b0852b5239991119c10dd06b1bf0d96268f 192.168.30.25:6004
slots: (0 slots) slave
replicates ee12edf412044f81ce55b93b686505c300e121f7
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@rabbit2 redis]#
[root@rabbit2 redis]#
[root@rabbit2 redis]# docker run -it --rm redis:6.2.6 redis-cli -a '7hGtW#eCx5#Pu#FXRf#gFHSo' -h 192.168.30.25 -p 6001 cluster info
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:539
cluster_stats_messages_pong_sent:531
cluster_stats_messages_sent:1070
cluster_stats_messages_ping_received:526
cluster_stats_messages_pong_received:539
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:1070
评论 (0)