本次部署为三台服务器,部署三主集群和三主三从集群
规划IP | 主机名 |
---|---|
192.168.2.57 | master |
192.168.2.197 | slaves1 |
192.168.2.43 | slaves2 |
三个主节点分别是:192.168.2.57:6379、192.168.2.197:6379、192.168.2.43:6379
三个从节点分别是:192.168.2.57:6380、192.168.2.197:6380、192.168.2.43:6380
将redis安装包上传进master节点的/apps/scripts目录下,实例为:redis-6.0.13.tar.gz
[root@master /]# mkdir -p /apps/scripts
[root@master /]# chmod +x -R /apps/
# 将redis安装包上传到/apps/scripts/目录下
[root@master scripts]# yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc
[root@master ~]# cd /apps/scripts/
[root@master scripts]# tar -zxf redis-6.0.13.tar.gz -C ./
[root@master scripts]# cd redis-6.0.13
[root@master redis-6.0.13]# make
# 部署redis 6版本依赖与gcc 5.3以上,若gcc版本太低,在编译过程中会报错
# 升级gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutilse
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable">> /etc/profile
[root@master redis-6.0.13]# make
安装
[root@master redis-6.0.13]# make install
安装成功
默认安装路径为:/usr/local/bin/
复制安装之后的redis相关文件(master节点)
[root@master redis-6.0.13]# cp /usr/local/bin/redis-* /data/redis-cluster/redis_6379/
编辑redis配置文件(master节点)
[root@master redis-6.0.13]# cp /apps/scripts/redis-6.0.13/redis.conf /data/redis-cluster/redis_6379/
[root@master redis-6.0.13]# cd /data/redis-cluster/redis_6379/
[root@master redis_6379]# vi redis.conf
修改内容如下:
bind 127.0.0.1 -> bind 192.168.2.57(改为实际内网IP或0.0.0.0)
port 6379保持不变(监听端口)
daemonize no -> daemonize yes(以独立进程打开)
appendonly no 保持不变(关闭持久化)
取消以下配置文件注释
#cluster-enabled yes
#cluster-config-file nodes-6379.conf
#cluster-node-timeout 15000
取消注释后如下:
cluster-enabled yes (开启集群模式)
cluster-config-file nodes-6379.conf (生成集群配置文件)
cluster-node-timeout 15000(集群超时时间)
注释以下配置:
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
注释后如下:
#save 900 1
#save 300 10
#save 60 10000
#dbfilename dump.rdb
设置密码:
#requirepass foobared
#masterauth
设置为:
requirepass apps123(redis密码)
masterauth apps123(主节点密码,各个实例密码要求一致)
启动redis实例
[root@master redis_6379]# nohup ./redis-server redis.conf >> /dev/null &
[root@master redis_6379]# nohup ./redis-server redis.conf > /dev/null 2>&1 &
停止redis实例
[root@master redis_6379]# ps -ef | grep redis
root 6272 1 0 16:30 ? 00:00:00 ./redis-server 192.168.2.57:6379 [cluster]
root 6280 5723 0 16:30 pts/0 00:00:00 grep --color=auto redis
[root@master redis_6379]# kill -9 6272
到此,主节点部署完毕,剩余两个节点方法一致
创建redis集群目录(三台服务器都需要创建)
[root@master redis-6.0.13]# mkdir -p /data/redis-cluster/redis_6379
将master节点配置好的redis复制进两个从节点
# 复制前,先将master节点的redis进程结束,删除生成的nodes-6379.conf配置文件
[root@master redis_6379]# rm -rf nodes-6379.conf
[root@master redis_6379]# scp -r ./* [email protected]:/data/redis-cluster/redis_6379/
[root@master redis_6379]# scp -r ./* [email protected]://data/redis-cluster/redis_6379/
修改两个从节点配置,只需将bind后边的IP为实际的IP
[root@slaves1 ~]# cd /data/redis-cluster/redis_6379/
[root@master redis_6379]# vi redis.conf
# 修改bind 192.168.2.57后边的IP为实际IP
将三个节点的redis都启动之后,进入任意节点,创建三主集群:
# 三个实例全部启动成功之后,选择任意节点执行
[root@slaves1 ~]# cd /data/redis-cluster/redis_6379/
[root@slaves1 ~]# ./redis-cli --cluster create 192.168.2.57:6379 192.168.2.197:6379 192.168.2.43:6379 -a apps123
# 注意,三台实例的redis必须全部启动完成,且服务器之间端口需要能访问(关闭防火墙)
集群状态检查
[root@slavers2 redis_6379]# ./redis-cli --cluster check 192.168.2.57:6379 -a apps123
[root@slavers2 redis_6379]# ./redis-cli --cluster check 172.10.34.20:6379 -a apps123
至此,redis三主集群配置完成。
停止三个节点的redis进程,删除各节点生成的配置文件。 (以下操作三个节点均需要进行调整)
[root@master redis_6379]# pkill redis
[root@master redis_6379]# rm -rf nodes-6379.conf
复制配置完成的redis_6379文件,将其复制,且修改文件夹名称为:redis_6380
[root@master redis-cluster]# cp -rp redis_6379 redis_6380
切换进redis_6380文件夹,修改redis.conf配置文件中的6379为6380
[root@master redis-cluster]# cd redis_6380/
[root@master redis_6380]# vi redis.conf
注:可使用命令对整个文件进行替换
# 用法详解:
# sed -i 's/str1/str2/g' filename
# str1: 旧字符 str2: 新字符
[root@master scripts]# sed -i 's/6379/6380/g' redis.conf
启动6个实例,并创建三主三从集群
[root@master ~]# cd /data/redis-cluster/redis_6379/
[root@master redis_6379]# nohup ./redis-server redis.conf >> /dev/null &
[root@master redis_6379]# cd ../redis_6380/
[root@master redis_6380]# nohup ./redis-server redis.conf >> /dev/null &
# 六个实例全部启动成功之后,创建三主三从集群(任意节点的任意服务下执行即可)
[root@master redis_6380]# ./redis-cli --cluster create 192.168.2.57:6379 192.168.2.197:6379 192.168.2.43:6379 192.168.2.57:6380 192.168.2.197:6380 192.168.2.43:6380 --cluster-replicas 1 -a apps123
集群状态检查
[root@slavers2 redis_6380]# ./redis-cli --cluster check 192.168.2.57:6379 -a apps123
至此,redis三主三从集群搭建完成,在同时存在三个redis服务时,整体集群不受影响。
切换为主库
# 将新从库重新切换为主库
[root@redis-1 ~]# ./redis-cli -h 192.168.2.57 -p 6379 -a apps123
192.168.2.57:6379> CLUSTER FAILOVER
OK
实例将redis-6.0-13升级为6.0.17
上传6.0.17安装包至/apps/scripts/,解压、编译、安装(redis集群路径为:/data/redis-cluster/)
1.备份集群路径下的老版本安装文件;
2.在/usr/local/bin/路径下,找到新版本的安装文件,移动进集群目录;
3.将/apps/scripts/redis-6.0.17文件夹下的redis.conf文件复制进/data/redis-cluster/xxxx/文件夹下,并按5中修改redis.conf;
4.停止所有节点的所有redis服务,删除节点下生成的dump.rdb及nodes-xxx.conf;
5.启动redis各个节点的各个进程,使用命令创建三主或三主三从。
# 启动
nohup ./redis-server redis.conf > /dev/null 2>&1 &
# 创建三主集群
./redis-cli --cluster create 192.168.2.57:6379 192.168.2.197:6379 192.168.2.43:6379 -a apps123
# 创建三主三从集群
./redis-cli --cluster create 192.168.2.57:6379 192.168.2.197:6379 192.168.2.43:6379 192.168.2.57:6380 192.168.2.197:6380 192.168.2.43:6380 --cluster-replicas 1 -a apps123
# 测试集群状态
./redis-cli --cluster check 192.168.2.57:6379 -a apps123
./redis-cli --cluster check 192.168.2.57:6380 -a apps123