搭建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