部署Redis Cluster

263 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

如未指定,下述命令在所有节点执行!

一、系统资源规划

节点名称系统名称CPU/ 内存网卡磁盘IP 地址OS
Master1master12C/4Gens33128G192.168.0.11CentOS7
Master2master22C/4Gens33128G192.168.0.12CentOS7
Master3master32C/4Gens33128G192.168.0.13CentOS7
Slave1slave12C/4Gens33128G192.168.0.21CentOS7
Slave2slave22C/4Gens33128G192.168.0.22CentOS7
Slave3slave32C/4Gens33128G192.168.0.23CentOS7

二、系统软件安装与设置

1、安装基本软件

yum -y install vim wget epel-release

image.png

2、设置SELinux、防火墙

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

image.png

3、设置名称解析

echo 192.168.0.11 master1 >> /etc/hosts
echo 192.168.0.12 master2 >> /etc/hosts
echo 192.168.0.13 master3 >> /etc/hosts
echo 192.168.0.21 slave1 >> /etc/hosts
echo 192.168.0.22 slave2 >> /etc/hosts
echo 192.168.0.23 slave3 >> /etc/hosts

image.png

4、设置NTP

yum -y install chrony

image.png

systemctl start chronyd
systemctl enable chronyd
systemctl status chronyd

image.png

chronyc sources

image.png

三、部署Redis Cluster

1、安装Redis

yum -y install redis

image.png 修改所有节点Redis配置文件/etc/redis.conf:

# bind 127.0.0.1

image.png

protected-mode no

image.png

daemonize yes

image.png

cluster-enabled yes

image.png

cluster-config-file nodes-6379.conf

image.png

cluster-require-full-coverage no

image.png 启动Redis,并设置自启动:

systemctl start redis
systemctl enable redis
systemctl status redis

image.png

2、创建Redis Cluster

在Master1节点上meet其他Redis节点:

redis-cli cluster meet 192.168.0.12 6379
redis-cli cluster meet 192.168.0.13 6379
redis-cli cluster meet 192.168.0.21 6379
redis-cli cluster meet 192.168.0.22 6379
redis-cli cluster meet 192.168.0.23 6379

image.png

在任意节点查看Redis Cluster节点状态:

redis-cli cluster nodes

image.png 在任意节点查看Redis Cluster状态:

redis-cli cluster info

image.png

在Master1节点上创建添加槽位脚本addslots.sh

start=$1
end=$2
node=$3
for slot in `seq ${start} ${end}`
do
  redis-cli -h ${node} cluster addslots ${slot} > /dev/null
done
echo "slot${start}-slot${end} is assigned to node $3"

image.png

在Master1节点分配槽位:

bash addslots.sh 0 5461 192.168.0.11
bash addslots.sh 5462 10922 192.168.0.12
bash addslots.sh 10923 16383 192.168.0.13

image.png

在任意节点查看Redis Cluster节点状态:

redis-cli cluster nodes

image.png

在任意节点查看Redis Cluster状态:

redis-cli cluster info

image.png

在Slave节点上分别指定各自Master节点:

redis-cli cluster replicate xxxxxxxxxx

image.png

image.png

image.png 在任意节点查看Redis Cluster槽位状态:

redis-cli cluster slots

image.png