网络知识 娱乐 redis6.0集群三台机器配置三主三从节点

redis6.0集群三台机器配置三主三从节点

概述: 公司有redis集群的需求,但由于机器资源不足,准备就用三台机器,做三主三从节点吧,如果你有相同的需求,可以查看下面详细的配置方式,但需要注意,配置过程中:从节点对应的主节点在创建集群的时候,不要分配到同一台主机上,原因是:redis cluster集群模式的原理是当每一组主节点出现故障的时候,同组的从节点会接替工作,一组主从节点会负责管理对应的key槽的分配和负载,也就是说,同一组主从节点中可以一主多从,当然,也可以是一主一从。

说明:每台主机上将会运行6379端口一个主节点,6380端口一个从节点。

主机规划:
rediscs-01 172.11.84.249
rediscs-02 172.11.84.250
rediscs-03 172.11.84.251

redis版本: redis 6.2.1

环境和包准备(以下是三台机器都要执行):
1、创建需要的目录:
#mkdir -p /usr/local/redis6csdb/6379/{conf,data,log}
#mkdir -p /usr/local/redis6csdb/6380/{conf,data,log}
#mkdir -p /usr/local/redis6/bin

2、下载安装包编译安装(需提前安装好编译工具如gcc)
#wget https://download.redis.io/releases/redis-6.2.1.tar.gz && tar -zxvf redis-6.2.1.tar.gz
#cd redis-6.2.1 && make && make install
#cp ./src/redis-* /usr/local/redis6/bin/

3、相关配置文件案例
#cat /usr/local/redis6csdb/6379/conf/redis.conf
bind 0.0.0.0
protected-mode no
port 6379
tcp-backlog 1024
timeout 0
tcp-keepalive 300
daemonize yes
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/usr/local/redis6csdb/6379/log/redis.log"
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir "/usr/local/redis6csdb/6379/data"
maxmemory 7516192760
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
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-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
cluster-require-full-coverage no
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
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
jemalloc-bg-thread yes

#cat /usr/local/redis6csdb/6380/conf/redis.conf
bind 0.0.0.0
protected-mode no
port 6380
tcp-backlog 1024
timeout 0
tcp-keepalive 300
daemonize yes
pidfile /var/run/redis_6380.pid
loglevel notice
logfile "/usr/local/redis6csdb/6380/log/redis.log"
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir "/usr/local/redis6csdb/6380/data"
maxmemory 7516192760
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
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-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 15000
cluster-require-full-coverage no
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
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
jemalloc-bg-thread yes

4、系统参数调整(按需修改),否则日志出现错误(但可以正常启动)
#echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
#echo "net.core.somaxconn = 2048" >> /etc/sysctl.conf
#sysctl vm.overcommit_memory=1
#sysctl net.core.somaxconn=2048

5、启动redis的6个节点:
#systemctl enable redis79 && systemctl start redis79
#systemctl enable redis80 && systemctl start redis80

附上启动脚本:
#cat /usr/lib/systemd/system/redis79.service
####6379####

[Unit]
Description=redis-server6379
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/redis6/bin/redis-server /usr/local/redis6csdb/6379/conf/redis.conf
ExecStop=/usr/local/redis6/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown
PrivateTmp=true

[Install]
WantedBy=multi-user.target

#cat /usr/lib/systemd/system/redis80.service
####6380####

[Unit]
Description=redis-server6380
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/redis6/bin/redis-server /usr/local/redis6csdb/6380/conf/redis.conf
ExecStop=/usr/local/redis6/bin/redis-cli -h 127.0.0.1 -p 6380 shutdown
PrivateTmp=true

[Install]
WantedBy=multi-user.target

(截止以上,三台机器都需要执行!)

6、创建集群
说明:以上6个redis节点启动成功后,开始将6个分散的节点创建为一个集群模式,3个主节点,每个主节点对应有一个从节点。此处需要注意,执行了下面的命令后,会提示确认信息,并且还会有每个主节点对应的从节点创建信息,如果主从节点被分配到了一个机器上,我们需要退出创建操作,然后先创建3个主节点,在单独将指定的从节点加入到指定的主节点中。 如果是6个或者更多主机,每个主机只跑一个redis节点实例,该处可忽略。

#redis-cli --cluster create 172.11.84.249:6379 172.11.84.249:6380 172.11.84.250:6379 172.11.84.250:6380 172.11.84.251:6379 172.11.84.251:6380 --cluster-replicas 1


7、创建成功后的检查
#ls /usr/local/redis6csdb/6379/data/
dump.rdb nodes-6379.conf
#ls /usr/local/redis6csdb/6380/data/
dump.rdb nodes-6380.conf
#ls /usr/local/redis6csdb/6379/log/
redis.log
#ls /usr/local/redis6csdb/6380/log/
redis.log

# redis-cli -c -h 127.0.0.1 -p 6379
>info
........
........
# Replication
role:master
connected_slaves:1
slave0:ip=172.11.84.250,port=6380,state=online,offset=7324945753693,lag=1
........
........


总结: 以上就是redis 6.0下集群模式的配置全部过程了, 非常值得注意的是这是三台机器创建6个节点,需要错开对应启动和分配,另外,虽然一般这是内网访问,但还是建议redis集群开启密码的认证,进一步保证集群的安全。