- 1、准备工具
- 2、部署Redis的Cluster集群
- 进入节点
- 编辑redis配置文件,修改以下配置信息:
- !/bin/bash
- #
- #
- ### redis集群启动
- #
- #
- #
- redis单机集群存放的位置
- redis集群本机设置为6373~6378,分别对应不同文件夹下
- #
- redis服务启动的数量
- 检测是否存在redis服务项
- #
- redis服务启动异常
- 服务重启无法使用可以放开所有注释代码
- ps: 删除rdb和aof,重新构建集群关系
- #
- cd ${redis_path}
- rm -rf ${redis_path}637*/appendonly.aof
- rm -rf ${redis_path}637*/dump.rdb
- rm -rf ${redis_path}637/nodes
- rm -rf ${redis_path}nodes*
- rm -rf ${redis_path}appendonly.aof
- redis服务启动
- redis服务集群启动
- #
- redis服务启动异常
- 服务重启无法使用可以放开所有注释代码
- ps: 重新构建集群关系
- #
- cd /usr/local/redis_cluster/redis-6373/bin
- ./redis-cli —cluster create 192.168.0.125:6373 192.168.0.125:6374 192.168.0.125:6375 192.168.0.125:6376 192.168.0.125:6377 192.168.0.125:6378 —cluster-replicas 1
- !/bin/bash
- #
- #
- ### redis集权关闭
- #
- #
- redis服务关闭
- redis服务集群关闭
- #
- 参考博客
1、准备工具
- Redis安装包:redis-6.0.10.tar.gz
- 下载地址 [https://download.redis.io/releases/?_ga=2.75056978.132912236.1617477720-104969907.1608520179](https://download.redis.io/releases/?_ga=2.75056978.132912236.1617477720-104969907.1608520179)
2、部署Redis的Cluster集群
2.1 安装单个redis完成后再执行2.2操作
- 选择一种安装方式 | redis安装说明 | Redis( tar包)安装 | | :—-: | :—-: | | | | | | redis(docke)安装 |
2.2 集群文件配置
【注意】:redis集群至少需要3主3从,因此需要启动6个redis实例,我是分别部署在3台服务器上,每台服务器启动两个redis实例作为一主一从
创建集群根文件夹
mkdir /usr/local/redis_clustercd /usr/local/redis_cluster
在 redis_cluster 创建6个文件夹
mkdir -p redis-6373/binmkdir -p redis-6374/binmkdir -p redis-6375/binmkdir -p redis-6376/binmkdir -p redis-6377/binmkdir -p redis-6378/bin
修改配置文件复制到每一个文件夹下
cd /usr/local/redis
拷贝redis执行文件,(redis.conf==>为每个配置文件对应端口号修改好的)
cp /usr/local/redis/redis.conf /usr/local/redis_cluster/redis-6373cp /usr/local/redis/redis.conf /usr/local/redis_cluster/redis-6374cp /usr/local/redis/redis.conf /usr/local/redis_cluster/redis-6375cp /usr/local/redis/redis.conf /usr/local/redis_cluster/redis-6376cp /usr/local/redis/redis.conf /usr/local/redis_cluster/redis-6377cp /usr/local/redis/redis.conf /usr/local/redis_cluster/redis-6378
修改 ```shell
进入节点
cd /usr/local/redis_cluster/redis-6373
编辑redis配置文件,修改以下配置信息:
vim redis.conf
**【注意】:本次展示6373修改方式,剩下5个修改方式一样,注意对应端口号修改为对应端口(共3处)即可**```shell# 后台方式运行redisdaemonize yes# redis server运行端口号,配置文件拷贝到redisCluster文件中后这里的端口号要根据实际情况修改port 6373# bind 127.0.0.1 要改成0.0.0.0,不然redis客户端无法通过ip连接服务端bind 0.0.0.0# 在 REDIS CLUSTER 配置模块下开启以下配置# 开启redis集群支持cluster-enabled yes# 集群配置文件,redis首次启动时会在redis.conf所在的文件夹下自动创建该文件,注意这里的node-6373.conf要根据实例启动的端口号自行修改cluster-config-file node-6373.conf# pidfile的端口号也需要根据实际启动的端口号自行修改pidfile /var/run/redis_6373.pid# 请求超时时间cluster-node-timeout 15000
【例如】:展示 6373 的修改后的配置文件
redis.docx
- 拷贝redis目录下的bin目录文件到redisCluster文件夹中(其中含有服务器和客户端的启动文件) ```shell cp /usr/local/redis/src/{mkreleasehdr.sh,redis-benchmark,redis-check-aof,redis-check-rdb,redis-cli,redis-server} /usr/local/redis_cluster/redis-6373/bin
cp /usr/local/redis/src/{mkreleasehdr.sh,redis-benchmark,redis-check-aof,redis-check-rdb,redis-cli,redis-server} /usr/local/redis_cluster/redis-6374/bin
cp /usr/local/redis/src/{mkreleasehdr.sh,redis-benchmark,redis-check-aof,redis-check-rdb,redis-cli,redis-server} /usr/local/redis_cluster/redis-6375/bin
cp /usr/local/redis/src/{mkreleasehdr.sh,redis-benchmark,redis-check-aof,redis-check-rdb,redis-cli,redis-server} /usr/local/redis_cluster/redis-6376/bin
cp /usr/local/redis/src/{mkreleasehdr.sh,redis-benchmark,redis-check-aof,redis-check-rdb,redis-cli,redis-server} /usr/local/redis_cluster/redis-6377/bin
cp /usr/local/redis/src/{mkreleasehdr.sh,redis-benchmark,redis-check-aof,redis-check-rdb,redis-cli,redis-server} /usr/local/redis_cluster/redis-6378/bin
---<a name="7Zj5W"></a>### 2.3 创建redis集群启动脚本1. 分别启动redis实例```shell# 将redis添加到系统变量中vim /etc/profile
redis添加到系统变量中
export REDIS_HOME=/usr/local/redisexport PATH=$PATH:$REDIS_HOME/bin
环境变量生效
# 生效环境变量source /etc/profile
vim启动脚本
# 创建redis集群启动文件vim /usr/local/redis_cluster/start.sh
编写启动脚本 ```shell
!/bin/bash
#
#
### redis集群启动
#
#
#
redis单机集群存放的位置
redis集群本机设置为6373~6378,分别对应不同文件夹下
#
redis_path=”/usr/local/redis_cluster”
#
redis服务启动的数量
检测是否存在redis服务项
#
cluster_num=ps aux | grep redis | wc -l
if [ “${cluster_num}” -le 0 ]; then
echo -e “===== Success: Has killed all cluster progress.”
else
pkill -9 redis
echo -e “=====服务剔除成功!!!! 正在准备重新启动……..”
cd /usr/local/redis/bin/
./redis-server /usr/local/redis/redis.conf
echo “启动 redis-6379 单节点服务成功….”
fi
#
redis服务启动异常
服务重启无法使用可以放开所有注释代码
ps: 删除rdb和aof,重新构建集群关系
#
cd ${redis_path}
rm -rf ${redis_path}637*/appendonly.aof
rm -rf ${redis_path}637*/dump.rdb
rm -rf ${redis_path}637/nodes
rm -rf ${redis_path}nodes*
rm -rf ${redis_path}appendonly.aof
#
redis服务启动
redis服务集群启动
#
cd ${redis_path}/redis-6373/bin/ ./redis-server ${redis_path}/redis-6373/redis.conf echo “启动 redis-6373 服务成功….”
cd ${redis_path}/redis-6374/bin/ ./redis-server ${redis_path}/redis-6374/redis.conf echo “启动 redis-6374 服务成功….”
cd ${redis_path}/redis-6375/bin/ ./redis-server ${redis_path}/redis-6375/redis.conf echo “启动 redis-6375 服务成功….”
cd ${redis_path}/redis-6376/bin/ ./redis-server ${redis_path}/redis-6376/redis.conf echo “启动 redis-6376 服务成功….”
cd ${redis_path}/redis-6377/bin/ ./redis-server ${redis_path}/redis-6377/redis.conf echo “启动redis-6377 服务成功….”
cd ${redis_path}/redis-6378/bin/ ./redis-server ${redis_path}/redis-6378/redis.conf echo “启动 redis-6378 服务成功….”
#
redis服务启动异常
服务重启无法使用可以放开所有注释代码
ps: 重新构建集群关系
#
cd /usr/local/redis_cluster/redis-6373/bin
./redis-cli —cluster create 192.168.0.125:6373 192.168.0.125:6374 192.168.0.125:6375 192.168.0.125:6376 192.168.0.125:6377 192.168.0.125:6378 —cluster-replicas 1
6. 给启动脚本赋权```shellchmod +x start.sh
#
redis服务关闭
redis服务集群关闭
#
cd /usr/local/redis_cluster ./redis-6373/bin/redis-cli -p 6373 -a lixin123 shutdown echo “关闭 redis-6373 服务成功….”
cd /usr/local/redis_cluster ./redis-6374/bin/redis-cli -p 6374 -a lixin123 shutdown echo “关闭 redis-6374 服务成功….”
cd /usr/local/redis_cluster ./redis-6375/bin/redis-cli -p 6375 -a lixin123 shutdown echo “关闭 redis-6375 服务成功….”
cd /usr/local/redis_cluster ./redis-6376/bin/redis-cli -p 6376 -a lixin123 shutdown echo “关闭 redis-6376 服务成功….”
cd /usr/local/redis_cluster ./redis-6377/bin/redis-cli -p 6377 -a lixin123 shutdown echo “关闭 redis-6377 服务成功….”
cd /usr/local/redis_cluster ./redis-6378/bin/redis-cli -p 6378 -a lixin123 shutdown echo “关闭 redis-6378 服务成功….”
9. 停止脚本赋权```shellchmod +x stop.sh
- 启动开始脚本
./start.sh
2.4 构建redis集群
【注意】:Redis的实例全部运行之后,redis新版本(5.0以上)可以直接使用redis-cli来创建集群,Redis5.0以下的版本只能通过redis-trib.rb工具来创建集群。
先进入6个redis中任意一个,比如进入redis-6373
cd /usr/local/redis_cluster/redis-6373/bin
启动redis集群
# 启动redis集群./redis-cli --cluster create 192.168.0.125:6373 192.168.0.125:6374 192.168.0.125:6375 192.168.0.125:6376 192.168.0.125:6377 192.168.0.125:6378 --cluster-replicas 1

连接redis集群,命令格式:redis-cli -h
-p -a ./redis-cli -h 192.168.0.125 -p 6373
查看当前集群信息
cluster info

查看当前集群有多少个节点
cluster nodes

2.5 设置集群密码
在所有redis服务器上执行以下命令,执行完命令之后会自动在redis.conf文件末尾添加masterauth “masterPassword”,requirepass clusterPassword 这两个密码参数配置,无需重启redis服务即可完成密码修改
【注意】:如果是redis集群要保证所有服务的密码都是一样的,否则跨服务连接会出现异常(如果对集群设置密码,requirepass和masterauth都需要设置,否则发生主从切换时,就会遇到授权问题)
**
启动客户端
./redis-cli -c -p 6373
设置一次密码即可
config set masterauth lixin123config set requirepass lixin123config rewrite

2.6 设置redis集群开机自启动
创建开启自动重启脚本
vim /lib/systemd/system/redis_cluster.service
自启脚本 ```shell [Unit] Description=The redis_cluster-server Process Manager Documentation=https://redis.io/ After=network.target
[Service] Type=forking ExecStart=/usr/local/redis_cluster/start.sh start ExecReload=/usr/local/redis_cluster/start.sh ExecStop=/usr/local/redis_cluster/stop.sh shutdown
[Install] WantedBy=multi-user.target
3. 设置开机启动(两种方式都可以,建议采用第2种)```shell# 创建软链接是为了下一步系统初始化时自动启动服务ln -s /lib/systemd/system/redis_cluster.service /etc/systemd/system/multi-user.target.wants/redis_cluster.service# 将redis_cluster服务加入到自启动中systemctl enable redis_cluster.service
【注意】设置开机不启动 systemctl disable redis_cluster.service
- 刷新配置,使得自己配置的服务让systemctl识别
systemctl daemon-reload
2.7 启动/停止服务(服务端)
启动服务
systemctl start redis_cluster.service
停止服务
systemctl stop redis_cluster.service
2.8 启动客户端(客户端)
- 启动客户端
- -c:后面跟IP
- -p:端口号
- -a:redis密码
/usr/local/redis_cluster/redis-6373/bin/redis-cli -c -p 6373 -a lixin123
2.9 安装异常
- CLUSTERDOWN Hash slot not served 错误

# 检测redis-cli --cluster check 127.0.0.1:6374# 进行修复redis-cli --cluster fix 127.0.0.1:6374
【注意】:第三部询问的时候记得输入yes,不要输入y

参考博客
- redis6.0.8集群模式搭建 https://blog.csdn.net/weixin_39338423/article/details/108663614
- Redis的Cluster集群搭建(CentOS7环境,Redis6.0.9) https://blog.csdn.net/xlyrh/article/details/110776381
- 1.CLUSTERDOWN Hash slot not served https://www.jianshu.com/p/fe64cb22aca3
- Linux:redis集群删除和重新搭建(不更换端口号) https://blog.csdn.net/doubleqinyan/article/details/82462706
- 利用systemctl启动redis集群 https://www.jb51.net/article/126948.htm
