Redis集群实战

一、环境准备

1.1 安装gcc

yum install gcc-c++ -y
yum install glibc-devel -y

1.2 升级gcc

yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash

二、安装redis

2.1 编译安装

在3太机器上都执行:

cd /opt/
wget https://download.redis.io/releases/redis-6.0.9.tar.gz
tar -zxvf redis-6.0.9.tar.gz
cd redis-6.0.9
make

2.2 搭建redis集群

cd /opt/
mkdir redis-cluster
cd redis-cluster/
mkdir 7000 7001

在三台机器上,每台机器运行两个redis节点,分别是7000和7001

2.2.1 7000端口的节点
cd /opt/redis-cluster/7000
cp /opt/redis-6.0.9/redis.conf .
vi redis.conf

修改几个关键的点

bind 192.168.2.101 127.0.0.1 ::1
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes

bind的属于可以绑定多个IP,注意在不同的机器上修改成对应的IP

启动脚本
/opt/redis-cluster目录

vi start-7000.sh
chmod +x start-7000.sh
#!/bin/bash
redis-server ./7000/redis.conf --daemonize yes
2.2.2 7001端口的节点
cd /opt/redis-cluster/7001
cp /opt/redis-6.0.9/redis.conf .
vi redis.conf

修改几个关键的点

bind 192.168.2.101 0.0.0.0 ::1
port 7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
appendonly yes

bind的属于可以绑定多个IP,注意在不同的机器上修改成对应的IP

启动脚本
/opt/redis-cluster目录

vi start-7001.sh
chmod +x start-7001.sh
#!/bin/bash
redis-server ./7001/redis.conf --daemonize yes

上面的7000和7001在三台机上都准备好,保证一台机器上运行2个节点,一共6个节点。

2.2.3 在第一台机器上创建集群

分别启动6个节点

./start-7000.sh
./start-7001.sh

打开相应的防火墙端口

firewall-cmd --zone=public --add-port=7000-7001/tcp --permanent
firewall-cmd --reload
redis-cli --cluster create 192.168.2.101:7000 192.168.2.101:7001 \
192.168.2.102:7000 192.168.2.102:7001 192.168.2.103:7000 192.168.2.103:7001 \
--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 192.168.2.102:7001 to 192.168.2.101:7000
Adding replica 192.168.2.103:7001 to 192.168.2.102:7000
Adding replica 192.168.2.101:7001 to 192.168.2.103:7000
M: c3b4de1ad612005ac197f0e9e8705864f4ec626d 192.168.2.101:7000
   slots:[0-5460] (5461 slots) master
S: ab0460ad85a9409f1f5e7a2400daf2a5cf3d7285 192.168.2.101:7001
   replicates c24bd709a49b14c214e48819e4a09fd0f615881a
M: 9d0e185bbc4287191a976ccc8b087db6b46131b8 192.168.2.102:7000
   slots:[5461-10922] (5462 slots) master
S: fe83dc0d5583d4d14d33aa4a99c29e906e1d452d 192.168.2.102:7001
   replicates c3b4de1ad612005ac197f0e9e8705864f4ec626d
M: c24bd709a49b14c214e48819e4a09fd0f615881a 192.168.2.103:7000
   slots:[10923-16383] (5461 slots) master
S: 5798d8c69197df54224152dc11877ead9081edab 192.168.2.103:7001
   replicates 9d0e185bbc4287191a976ccc8b087db6b46131b8
Can I set the above configuration? (type 'yes' to accept): yes

根据提示输入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 192.168.2.101:7000)
M: c3b4de1ad612005ac197f0e9e8705864f4ec626d 192.168.2.101:7000
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 9d0e185bbc4287191a976ccc8b087db6b46131b8 192.168.2.102:7000
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
M: c24bd709a49b14c214e48819e4a09fd0f615881a 192.168.2.103:7000
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: fe83dc0d5583d4d14d33aa4a99c29e906e1d452d 192.168.2.102:7001
   slots: (0 slots) slave
   replicates c3b4de1ad612005ac197f0e9e8705864f4ec626d
S: ab0460ad85a9409f1f5e7a2400daf2a5cf3d7285 192.168.2.101:7001
   slots: (0 slots) slave
   replicates c24bd709a49b14c214e48819e4a09fd0f615881a
S: 5798d8c69197df54224152dc11877ead9081edab 192.168.2.103:7001
   slots: (0 slots) slave
   replicates 9d0e185bbc4287191a976ccc8b087db6b46131b8
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

redis一共16384个槽位,从上面的信息可以看到:0-5460是在192.168.2.101:7000上,5461-10922是在192.168.2.102:7000上,10923-16383是在192.168.2.103:7000上
从上面的情形可以看出,槽位的设置都是在Master节点上。

三、重新分配槽位

3.1 查看集群节点信息

redis-cli -c -p 7000
cluster nodes

3.2 模拟重新分配槽位

假设我们在第一台机上分配5000个槽位,第二台机器5000个槽位,第三台机6384

redis-cli --cluster reshard 127.0.0.1:7000

根据提示,输入想移动的槽位数量;输入接收槽位的节点ID,输入源槽位的ID,最后输入done即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值