首页 > 数据库 > NoSQL > 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
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30135314/viewspace-2760922/ ,如需转载,请注明出处,否则将追究法律责任。