redis6.0.5之cluster阅读笔记-搭建cluster环境3M3S


搭建cluster环境

redis的cluster模式,比较方便扩容和收缩,适合缓存键值对资源的合理利用

准备六台机器
10.100.13.81
10.100.13.88
10.100.13.160
10.100.13.109
10.100.13.111
10.100.13.113

1.修改配置
先分别启动六个不同机器上的节点
./redis-server ./cluster.conf
不同于redis.conf

修改配置
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000 
appendonly yes 


2启动集群
./redis-cli --cluster create 10.100.13.81:6379 10.100.13.88:6379 10.100.13.160:6379 10.100.13.109:6379 10.100.13.111:6379 10.100.13.113:6379 --cluster-replicas 1

注意将防火墙端口打开
centos7
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --permanent --add-port=16379/tcp
firewall-cmd --permanent --add-port=26379/tcp
centos6 修改/etc/sysconfig/iptables

[root@mysql-test1 myredis]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -s 10.100.13.0/24 -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
-A INPUT -s 10.100.13.0/24 -m state --state NEW -m tcp -p tcp --dport 16379 -j ACCEPT
-A INPUT -s 10.100.13.0/24 -m state --state NEW -m tcp -p tcp --dport 26379 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

修改后重启
service iptables restart


3成功后查看节点信息
[root@mysql-test1 myredis]# ./redis-cli 
127.0.0.1:6379> cluster info
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:1534
cluster_stats_messages_pong_sent:1673
cluster_stats_messages_meet_sent:1
cluster_stats_messages_sent:3208
cluster_stats_messages_ping_received:1673
cluster_stats_messages_pong_received:1535
cluster_stats_messages_received:3208


127.0.0.1:6379> cluster nodes
41ae2e6271a8e5e139b3d097daa1cb5075ee8a03 10.100.13.160:6379@16379 master - 0 1639427897816 3 connected 10923-16383
a9b18e0f93ee0a90901c7b4c94bee89394f44867 10.100.13.109:6379@16379 slave 41ae2e6271a8e5e139b3d097daa1cb5075ee8a03 0 1639427896811 4 connected
3bfc005b03062aec4b87d2b9fa6db246149be661 10.100.13.111:6379@16379 myself,slave a76d900cc3d3e6d026e50961b802daf9e6e3b860 0 1639427894000 5 connected
4b84fbde91ba4b50a0da0ab574ad94f739b4b68c 10.100.13.113:6379@16379 slave e3e3ff648f5924b417d434e9a4f9169a1ea2ba8c 0 1639427895810 6 connected
a76d900cc3d3e6d026e50961b802daf9e6e3b860 10.100.13.81:6379@16379 master - 0 1639427898818 1 connected 0-5460
e3e3ff648f5924b417d434e9a4f9169a1ea2ba8c 10.100.13.88:6379@16379 master - 0 1639427899000 2 connected 5461-10922



4将10.100.13.88节点退出,看是否会自动切换主从
127.0.0.1:6379> cluster nodes
3bfc005b03062aec4b87d2b9fa6db246149be661 10.100.13.111:6379@16379 slave a76d900cc3d3e6d026e50961b802daf9e6e3b860 0 1639473404231 5 connected
a76d900cc3d3e6d026e50961b802daf9e6e3b860 10.100.13.81:6379@16379 master - 0 1639473402229 1 connected 0-5460
41ae2e6271a8e5e139b3d097daa1cb5075ee8a03 10.100.13.160:6379@16379 master - 0 1639473403229 3 connected 10923-16383
a9b18e0f93ee0a90901c7b4c94bee89394f44867 10.100.13.109:6379@16379 slave 41ae2e6271a8e5e139b3d097daa1cb5075ee8a03 0 1639473405235 4 connected
e3e3ff648f5924b417d434e9a4f9169a1ea2ba8c 10.100.13.88:6379@16379 master,fail - 1639473357576 1639473350054 2 disconnected
4b84fbde91ba4b50a0da0ab574ad94f739b4b68c 10.100.13.113:6379@16379 myself,master - 0 1639473401000 7 connected 5461-10922


5.重启10.100.13.88节点
127.0.0.1:6379> cluster nodes
a76d900cc3d3e6d026e50961b802daf9e6e3b860 10.100.13.81:6379@16379 master - 0 1639447089233 1 connected 0-5460
3bfc005b03062aec4b87d2b9fa6db246149be661 10.100.13.111:6379@16379 slave a76d900cc3d3e6d026e50961b802daf9e6e3b860 0 1639447092241 5 connected
4b84fbde91ba4b50a0da0ab574ad94f739b4b68c 10.100.13.113:6379@16379 master - 0 1639447090236 7 connected 5461-10922
a9b18e0f93ee0a90901c7b4c94bee89394f44867 10.100.13.109:6379@16379 slave 41ae2e6271a8e5e139b3d097daa1cb5075ee8a03 0 1639447087224 4 connected
41ae2e6271a8e5e139b3d097daa1cb5075ee8a03 10.100.13.160:6379@16379 master - 0 1639447091238 3 connected 10923-16383
e3e3ff648f5924b417d434e9a4f9169a1ea2ba8c 10.100.13.88:6379@16379 myself,slave 4b84fbde91ba4b50a0da0ab574ad94f739b4b68c 0 1639446981835 2 connected


6查看帮助
redis-cli --cluster help
[root@mysql-test1 myredis]# ./redis-cli --cluster help
Cluster Manager Commands:
  create         host1:port1 ... hostN:portN
                 --cluster-replicas 
  check          host:port
                 --cluster-search-multiple-owners
  info           host:port
  fix            host:port
                 --cluster-search-multiple-owners
                 --cluster-fix-with-unreachable-masters
  reshard        host:port
                 --cluster-from 
                 --cluster-to 
                 --cluster-slots 
                 --cluster-yes
                 --cluster-timeout 
                 --cluster-pipeline 
                 --cluster-replace
  rebalance      host:port
                 --cluster-weight 
                 --cluster-use-empty-masters
                 --cluster-timeout 
                 --cluster-simulate
                 --cluster-pipeline 
                 --cluster-threshold 
                 --cluster-replace
  add-node       new_host:new_port existing_host:existing_port
                 --cluster-slave
                 --cluster-master-id 
  del-node       host:port node_id
  call           host:port command arg arg .. arg
  set-timeout    host:port milliseconds
  import         host:port
                 --cluster-from 
                 --cluster-copy
                 --cluster-replace
  backup         host:port backup_directory
  help           

For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.


7添加节点,用于扩容,应付峰值
再准备两台机器10.100.13.115  10.100.13.117

./redis-cli --cluster add-node 10.100.13.115:6379  10.100.13.109:6379  默认是主节点
./redis-cli --cluster add-node 10.100.13.117:6379 10.100.13.109:6379 --cluster-slave  添加从节点

8删除节点,用于收缩,平时节约资源
先删除从节点,再删除主节点,如果主节点有数据,可以先转移到其他主节点

转移slot数据
./redis-cli --cluster reshard 10.100.13.81:6379 --cluster-from a76d900cc3d3e6d026e50961b802daf9e6e3b860 --cluster-to a9b18e0f93ee0a90901c7b4c94bee89394f44867 --cluster-slots 5461 --cluster-yes --cluster-timeout 15000 --cluster-pipeline 10 --cluster-replace
./redis-cli --cluster reshard 10.100.13.109:6379 --cluster-from 4b84fbde91ba4b50a0da0ab574ad94f739b4b68c --cluster-to a9b18e0f93ee0a90901c7b4c94bee89394f44867 --cluster-slots 5461 --cluster-yes --cluster-timeout 15000 --cluster-pipeline 10 --cluster-replace
转移节点的时候,如果有从节点,从节点会变成新主节点的从节点

删除节点,从节点先,主节点后
./redis-cli --cluster del-node 10.100.13.111:6379  3bfc005b03062aec4b87d2b9fa6db246149be661
./redis-cli --cluster del-node 10.100.13.81:6379  a76d900cc3d3e6d026e50961b802daf9e6e3b860
./redis-cli --cluster del-node 10.100.13.109:6379  4b84fbde91ba4b50a0da0ab574ad94f739b4b68c
./redis-cli --cluster del-node 10.100.13.109:6379  e3e3ff648f5924b417d434e9a4f9169a1ea2ba8c
./redis-cli --cluster del-node 10.100.13.109:6379  3bfc005b03062aec4b87d2b9fa6db246149be661 
./redis-cli --cluster del-node 10.100.13.109:6379  41ae2e6271a8e5e139b3d097daa1cb5075ee8a03