安装Redis Cluster

集群主机信息

此配置集群事例,将在三台服务器上各起两个redis实例,主从关系如下表:

主机名 IP地址 角色 端口
vm1 192.168.0.118 master 6379
vm2 192.168.0.120 slave 6380
vm2 192.168.0.120 master 6379
vm3 192.168.0.121 slave 6380
vm3 192.168.0.121 master 6379
vm1 192.168.0.118 slave 6380

系统初化

配置主机名与IP映射

修改所有主机/etc/hosts文件,添加主机名与IP的映射关系。如下图:  

同步系统时间与关闭防火墙

同步系统时间需要先安装ntpdate,使用命令yum install -y ntpdate。安装完成后使用命令ntpdate -q 0.cn.pool.ntp.org同步系统时间。如下图:  

然后使用命令systemctl disable firewalld && systemctl stop firewalld关闭防火墙

禁用SELinux
1
2
# setenforce 0
# sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

安装Redis

下载源码安装包并解压到安装目录和编译
1
2
3
4
# wget https://download.redis.io/releases/redis-6.2.5.tar.gz
# tar -zxf redis-6.2.5.tar.gz -C /usr/local/
# cd /usr/local/redis-6.2.5/
# make

redis-cli文件复制到/usr/local/bin/

1
cp src/redis-cli /usr/local/bin/
修改redis.conf配置文件

由于是同一主机上开启两个实例,所有需要分别为实例创建数据存放目录。

1
mkdir /usr/local/redis-6.2.5/{data-6379,data-6380}    # 数据目录

主节点配置文件主要修改如下内容,其它使用默认配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bind 0.0.0.0
port 6379
daemonize yes
protected-mode no
pidfile /var/run/redis_6379.pid
dbfilename dump-6379.rdb
dir /usr/local/redis-6.2.5/data-6379
appendonly yes
appendfilename "appendonly-6379.aof"
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 5000
cluster-replica-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage no
cluster-allow-reads-when-down yes

从节点配置在主节点的基础上修改如下内容,其它跟主节点一样:

1
2
3
4
5
6
port 6380
pidfile /var/run/redis_6380.pid
dbfilename dump-6380.rdb
dir /usr/local/redis-6.2.5/data-6380
appendfilename "appendonly-6380.aof"
cluster-config-file nodes-6380.conf
配置systemd服务

在/usr/lib/systemd/system/目录下新建redis.service文件,内容如下:  
vim /usr/lib/systemd/system/redis.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis-6.2.5/src/redis-server /usr/local/redis
-6.2.5/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
Restart=on-failure

[Install]
WantedBy=multi-user.target
启动redis服务

在每台服务器上分别启动redis服务,使用如下命令:

1
2
3
4
5
# sudo systemctl daemon-reload
# sudo systemctl enable redis.service
# sudo systemctl enable redis_slave.service
# sudo systemctl start redis
# sudo systemctl start redis_slave
查看启动状态

使用systemctl status redis查看状态,如下图状态表明redis基础服务启动成功。  

配置Redis Cluster

在集群中的一台服务器上运行如下命令创建集群:  

1
./redis-cli --cluster create 192.168.0.118:6379 192.168.0.120:6380 192.168.0.120:6379 192.168.0.121:6380 192.168.0.121:6379 192.168.118:6380 --cluster-replicas 1

结果如下图:  

查看集群主从关系

在集群中的其中一台服务器(如在6379这个实例)上运行如下命令,返回结果如下图:  

1
./redis-cli -p 6379 cluster nodes