赞
踩
搭建三主三从,所以需要6个端口
server_ip=192.168.217.136(自己的主机的ip地址)
master1:6391
master2:6392
master3:6393
slave1:6394
slave2:6395
slave3:6396
创建数据存放目录
mkdir /mnt/redis
cd /mnt/redis
#data 数据目录,config 配置文件目录
mkdir -p {redis-master1/data,redis-master2/data,redis-master3/data,redis-slave1/data,redis-slave2/data,redis-slave3/data,redis-master1/config,redis-master2/config,redis-master3/config,redis-slave1/config,redis-slave2/config,redis-slave3/config}
配置5.0版本redis.conf文件,对redis.conf内如下配置内容进行修改:
#修改 可以接受连接的网卡地址,0.0.0.0 接受所有
bind 0.0.0.0
#端口
port 6391
#节点超时时间,毫秒
cluster-node-timeout 15000
#集群内部配置文件
cluster-config-file "nodes-6379.conf"
##设置密码
###1、如果对集群设置密码,那么requirepass和masterauth都需要设置,否则发生主从切换时,就会遇到授权问题,可以模拟并观察日志
###2、各个节点的密码都必须一致,否则Redirected就会失败
###3、设置密码后,操作redis-cli需(redis-cli -c -p 端口)通过auth password进行密码验证
###-c集群方式登陆客户端程序
masterauth 123456
requirepass 123456
vi /mnt/redis/redis-slave1/config/redis.conf
#
#
#
#
################################## INCLUDES ###################################
#
#
#
################################## MODULES #####################################
#
################################## NETWORK #####################################
#
#
bind 192.168.217.136
#
#
#bind 127.0.0.1
#
#
#
#
protected-mode yes
port 6396
#
tcp-backlog 511
#
#
timeout 0
#
#
#
#
tcp-keepalive 300
################################# GENERAL #####################################
daemonize no
supervised no
#
#
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
#
always-show-logo yes
################################ SNAPSHOTTING ################################
#
#
#
#
#
#
#
save 900 1
save 300 10
save 60 10000
#
#
stop-writes-on-bgsave-error yes
rdbcompression yes
#
rdbchecksum yes
dbfilename dump.rdb
#
#
#
dir ./
################################# REPLICATION #################################
#
#
#
#
#
#
#
replica-serve-stale-data yes
#
#
replica-read-only yes
#
#
#
#
#
#
repl-diskless-sync no
#
#
repl-diskless-sync-delay 5
#
#
#
#
#
#
#
repl-disable-tcp-nodelay no
#
#
#
#
#
#
#
#
#
replica-priority 100
#
#
#
#
#
#
#
#
#
#
#
#
#
################################## SECURITY ###################################
#
#
#
#
#
#
#
#
#
################################### CLIENTS ####################################
#
#
############################## MEMORY MANAGEMENT ################################
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
############################# LAZY FREEING ####################################
#
#
#
#
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
############################## APPEND ONLY MODE ###############################
#
#
#
appendonly no
appendfilename "appendonly.aof"
#
#
#
#
#
appendfsync everysec
#
#
#
no-appendfsync-on-rewrite no
#
#
#
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
#
#
#
aof-load-truncated yes
#
#
aof-use-rdb-preamble yes
################################ LUA SCRIPTING ###############################
#
#
#
lua-time-limit 5000
################################ REDIS CLUSTER ###############################
#
cluster-enabled yes
#
cluster-config-file nodes-6396.conf
#
cluster-node-timeout 15000
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
########################## CLUSTER DOCKER/NAT support ########################
#
#
#
#
#
#
#
################################## SLOW LOG ###################################
#
slowlog-log-slower-than 10000
slowlog-max-len 128
################################ LATENCY MONITOR ##############################
#
#
#
latency-monitor-threshold 0
############################# EVENT NOTIFICATION ##############################
#
#
#
#
#
#
#
#
#
#
notify-keyspace-events ""
############################### ADVANCED CONFIG ###############################
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
#
#
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
#
#
#
activerehashing yes
#
#
#
#
#
#
#
#
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
#
#
#
#
#
hz 10
#
#
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
#
#
#
#
#
#
#
#
#
#
#
########################### ACTIVE DEFRAGMENTATION #######################
#
#
#
#
#
#
#
#
#
#
将redis.conf复制6份到对应的config文件夹下:
echo redis-master1 redis-master2 redis-master3 redis-slave1 redis-slave2 redis-slave3 | xargs -n 1 cp -v redis.sh
修改redis.conf端口号以及文件名
sed -i 's/port 6391/port 6392/' redis-master2/redis.conf && \
sed -i 's/port 6391/port 6393/' redis-master3/redis.conf && \
sed -i 's/port 6391/port 6394/' redis-slave1/redis.conf && \
sed -i 's/port 6391/port 6395/' redis-slave2/redis.conf && \
sed -i 's/port 6391/port 6396/' redis-slave3/redis.conf
mv redis-master1/redis.conf redis-master1/nodes-3691.conf && \
mv redis-master2/redis.conf redis-master2/nodes-3692.conf && \
mv redis-master3/redis.conf redis-master3/nodes-3693.conf && \
mv redis-slave1/redis.conf redis-slave1/nodes-3694.conf && \
mv redis-slave2/redis.conf redis-slave2/nodes-3695.conf && \
mv redis-slave3/redis.conf redis-slave3/nodes-3696.conf
vi docker-compose.yaml
version: '3'
services:
master-1:
container_name: master1
image: redis:5.0.8
command: redis-server /etc/usr/local/redis.conf
network_mode: "host"
restart: always
volumes:
/mnt/redis/redis-master1/data:/data
master-2:
container_name: master2
command: redis-server /etc/usr/local/redis.conf
image: redis:5.0.8
network_mode: "host"
restart: always
volumes:
/mnt/redis/redis-master2/data:/data
master-3:
container_name: master3
image: redis:5.0.8
command: redis-server /etc/usr/local/redis.conf
network_mode: "host"
restart: always
volumes:
/mnt/redis/redis-master3/data:/data
slave-1:
container_name: slave1
image: redis:5.0.8
command: redis-server /etc/usr/local/redis.conf
network_mode: "host"
restart: always
volumes:
/mnt/redis/redis-slave1/data:/data
slave-2:
container_name: slave2
image: redis:5.0.8
command: redis-server /etc/usr/local/redis.conf
network_mode: "host"
restart: always
volumes:
/mnt/redis/redis-slave2/data:/data
slave-3:
container_name: slave3
image: redis:5.0.8
command: redis-server /etc/usr/local/redis.conf
network_mode: "host"
restart: always
volumes:
/mnt/redis/redis-slave3/data:/data
上面的配置文件注意一下几点:
1、网络模式使用host模式
2、需要在指定的宿主机创建文件,如redis.conf、redis.log,上面的volumes上面已经指定好了创建在宿主机的路径,每个redis实例都需要创建,所以需要创建6个(三主三从)
其中redis.conf的可以从其他的redis中copy一份过来,在上面只需要修改如下几项即可
port 16379 #这里填每台redis的端口号
bind 0.0.0.0 #绑定ip 0.0.0.0 指可以外网访问
cluster-enabled yes #开启集群
logfile "/usr/local/redis/logs/redis-server.log" #指定日志文件
requirepass htl123456 #密码(如果没有就不需要配置)
docker-compose -f docker-compose.yml up -d
构建集群
docker exec -it master1 bash
redis-cli --cluster create 192.168.217.136:6391 192.168.217.136:6392 192.168.217.136:6393 192.168.217.136:6394 192.168.217.136:6395 192.168.217.136:6396 --cluster-replicas 1
查看集群状态
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。