Redis5 三主三从集群版搭建

一、部署Redis

六个节点部署Redis,过程略。

二、修改配置文件

172.16.254.124

bind 172.16.254.124
protected-mode yes
port 7004
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile "/var/run/redis_7004.pid"
loglevel notice
logfile "/redis/log/redis_7004.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /redis/data/
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly yes
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 no
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-7004.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
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
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

172.16.254.125

bind 172.16.254.125
protected-mode yes
port 7005
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile "/var/run/redis_7005.pid"
loglevel notice
logfile "/redis/log/redis_7005.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /redis/data/
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly yes
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 no
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-7005.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
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
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

172.16.254.126

bind 172.16.254.126
protected-mode yes
port 7006
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile "/var/run/redis_7006.pid"
loglevel notice
logfile "/redis/log/redis_7006.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /redis/data/
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly yes
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 no
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-7006.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
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
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

172.16.254.127

bind 172.16.254.127
protected-mode yes
port 7007
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile "/var/run/redis_7007.pid"
loglevel notice
logfile "/redis/log/redis_7007.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /redis/data/
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly yes
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 no
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-7007.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
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
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

172.16.254.128

bind 172.16.254.128
protected-mode yes
port 7008
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile "/var/run/redis_7008.pid"
loglevel notice
logfile "/redis/log/redis_7008.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /redis/data/
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly yes
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 no
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-7008.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
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
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

172.16.254.129

bind 172.16.254.129
protected-mode yes
port 7009
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile "/var/run/redis_7009.pid"
loglevel notice
logfile "/redis/log/redis_7009.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /redis/data/
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly yes
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 no
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-7009.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
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
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

分别启动每个节点的redis

redis-server /redis/conf/nodes-7004.conf
redis-server /redis/conf/nodes-7005.conf
redis-server /redis/conf/nodes-7006.conf
redis-server /redis/conf/nodes-7007.conf
redis-server /redis/conf/nodes-7008.conf
redis-server /redis/conf/nodes-7009.conf

在任意节点创建cluster

redis-cli --cluster create 172.16.254.124:7004 172.16.254.125:7005 172.16.254.126:7006 172.16.254.127:7007 172.16.254.128:7008 172.16.254.129:7009 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 172.16.254.128:7008 to 172.16.254.124:7004
Adding replica 172.16.254.129:7009 to 172.16.254.125:7005
Adding replica 172.16.254.127:7007 to 172.16.254.126:7006
M: dae116bae245c1d9b94643c627243f0122dec6ad 172.16.254.124:7004
   slots:[0-5460] (5461 slots) master
M: a489464dfd1321cdbe2a0f464856218a38127e19 172.16.254.125:7005
   slots:[5461-10922] (5462 slots) master
M: 5aa077444a506afad1ff796616124a0b7298c125 172.16.254.126:7006
   slots:[10923-16383] (5461 slots) master
S: 8205aa9f24882516bb8bbe0fb7d2c593271de152 172.16.254.127:7007
   replicates 5aa077444a506afad1ff796616124a0b7298c125
S: 804ecd22d3de6dc2080a8de572a320407596b6fb 172.16.254.128:7008
   replicates dae116bae245c1d9b94643c627243f0122dec6ad
S: 0600bacf8e9be9572c780090cb242e1e1e0206a2 172.16.254.129:7009
   replicates a489464dfd1321cdbe2a0f464856218a38127e19
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 172.16.254.124:7004)
M: dae116bae245c1d9b94643c627243f0122dec6ad 172.16.254.124:7004
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 0600bacf8e9be9572c780090cb242e1e1e0206a2 172.16.254.129:7009
   slots: (0 slots) slave
   replicates a489464dfd1321cdbe2a0f464856218a38127e19
S: 804ecd22d3de6dc2080a8de572a320407596b6fb 172.16.254.128:7008
   slots: (0 slots) slave
   replicates dae116bae245c1d9b94643c627243f0122dec6ad
S: 8205aa9f24882516bb8bbe0fb7d2c593271de152 172.16.254.127:7007
   slots: (0 slots) slave
   replicates 5aa077444a506afad1ff796616124a0b7298c125
M: a489464dfd1321cdbe2a0f464856218a38127e19 172.16.254.125:7005
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
M: 5aa077444a506afad1ff796616124a0b7298c125 172.16.254.126:7006
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

从日志可以看出,cluster创建成功。

172.16.254.124(slots:[0-5460])、

172.16.254.125(slots:[5461-10922])、

172.16.254.126(slots:[10923-16383])为master

172.16.254.127、172.16.254.128、172.16.254.129为slave

并且

三、集群验证

172.16.254.124

redis-cli -c -h 172.16.254.124 -p 7004
172.16.254.124:7004> 
172.16.254.124:7004> set handong dongge1
-> Redirected to slot [15462] located at 172.16.254.126:7006
OK
172.16.254.126:7006>

可以看到会话被分到172.16.254.126:7006,数据被存在15462。

172.16.254.125

redis-cli -c -h 172.16.254.125 -p 7005
172.16.254.125:7005> get handong
-> Redirected to slot [15462] located at 172.16.254.126:7006
"dongge1"
172.16.254.126:7006>

可以看到会话被分到172.16.254.126:7006,数据被存在15462。

172.16.254.127(slave)

redis-cli -c -h 172.16.254.127 -p 7007
172.16.254.127:7007> get handong
-> Redirected to slot [15462] located at 172.16.254.126:7006
"dongge1"
172.16.254.126:7006>

可以看到会话被分到172.16.254.126:7006,数据被存在15462。

如果在slave节点进行写操作会怎么样呢?

[redis@redis7 conf]$ redis-cli -c -h 172.16.254.127 -p 7007
172.16.254.127:7007> set city1 hangzhou
-> Redirected to slot [3536] located at 172.16.254.124:7004
OK
172.16.254.124:7004> exit
[redis@redis7 conf]$ redis-cli -c -h 172.16.254.127 -p 7007
172.16.254.127:7007> set city2 beijing
-> Redirected to slot [15795] located at 172.16.254.126:7006
OK
172.16.254.126:7006> exit
[redis@redis7 conf]$ redis-cli -c -h 172.16.254.127 -p 7007
172.16.254.127:7007> set city3 shanghai
-> Redirected to slot [11666] located at 172.16.254.126:7006
OK
172.16.254.126:7006> exit
[redis@redis7 conf]$ redis-cli -c -h 172.16.254.127 -p 7007
172.16.254.127:7007> set city4 shengzhou
-> Redirected to slot [7541] located at 172.16.254.125:7005
OK
172.16.254.125:7005> exit
[redis@redis7 conf]$ redis-cli -c -h 172.16.254.127 -p 7007
172.16.254.127:7007> set city5 tianjin
-> Redirected to slot [3412] located at 172.16.254.124:7004
OK
172.16.254.124:7004> exit
[redis@redis7 conf]$ redis-cli -c -h 172.16.254.127 -p 7007
172.16.254.127:7007> set city6 wuhan
-> Redirected to slot [15671] located at 172.16.254.126:7006
OK
172.16.254.126:7006> exit
[redis@redis7 conf]$ redis-cli -c -h 172.16.254.127 -p 7007
172.16.254.127:7007> set city7 nanchang
-> Redirected to slot [11542] located at 172.16.254.126:7006
OK
172.16.254.126:7006> exit
[redis@redis7 conf]$ redis-cli -c -h 172.16.254.127 -p 7007
172.16.254.127:7007> set city8 xianggang
-> Redirected to slot [7417] located at 172.16.254.125:7005
OK
172.16.254.125:7005>

可以看到每次set都被分到了172.16.254.124、172.16.254.125或172.16.254.126三个节点其中的一个。

四、配置开机启动

每个节点都修改 rc.local,如172.16.254.124:

vi /etc/rc.local

redis-server /redis/conf/nodes-7004.conf
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值