redis–生产环境搭建–05–集群模式的安装和配置
代码位置
使用hd用户登陆
完成基础环境搭建
https://blog.csdn.net/zhou920786312/article/details/118212302
一、介绍
-
设置Redis服务访问密码,各集群节点都必须设置相同密码
-
redis以多节点分工的方式工作,数据访问分摊到不同节点,可以提高系统在重载时的处理能力,配合上从节点后可以具有高可用特性,适用于生产环境等要求较高的场合。
-
redis集群的节点个数必须为奇数,至少要有3个节点;
- 如果需要集群具有高可用功能,每个节点至少需要一个从节点, 因此在生产环境使用时,至少需要6个节点。
二、集群模式的安装和配置
以下以在同一机器机安装6个节点为例说明,其中3个为主节点,3个为主节点的从节点,6个节点的监听端口为7000-7005。
在正式环境中,Redis集群节点一般应该分散部署在不同机器上,比如,3个一组,分别部署在两台机器上
2.1、安装各节点自启动脚本
执行命令,完成6个节点(7000,7001,7002,7003,7004,7005)的安装
cd /home/hd/redis-6.2.6
sudo REDIS_PORT=7000 REDIS_CONFIG_FILE=/etc/redis/7000.conf REDIS_LOG_FILE=/var/log/redis_7000.log REDIS_DATA_DIR=/var/lib/redis/7000 REDIS_EXECUTABLE='command -v redis-server' ./utils/install_server.sh
sudo REDIS_PORT=7001 REDIS_CONFIG_FILE=/etc/redis/7001.conf REDIS_LOG_FILE=/var/log/redis_7001.log REDIS_DATA_DIR=/var/lib/redis/7001 REDIS_EXECUTABLE='command -v redis-server' ./utils/install_server.sh
sudo REDIS_PORT=7002 REDIS_CONFIG_FILE=/etc/redis/7002.conf REDIS_LOG_FILE=/var/log/redis_7002.log REDIS_DATA_DIR=/var/lib/redis/7002 REDIS_EXECUTABLE='command -v redis-server' ./utils/install_server.sh
sudo REDIS_PORT=7003 REDIS_CONFIG_FILE=/etc/redis/7003.conf REDIS_LOG_FILE=/var/log/redis_7003.log REDIS_DATA_DIR=/var/lib/redis/7003 REDIS_EXECUTABLE='command -v redis-server' ./utils/install_server.sh
sudo REDIS_PORT=7004 REDIS_CONFIG_FILE=/etc/redis/7004.conf REDIS_LOG_FILE=/var/log/redis_7004.log REDIS_DATA_DIR=/var/lib/redis/7004 REDIS_EXECUTABLE='command -v redis-server' ./utils/install_server.sh
sudo REDIS_PORT=7005 REDIS_CONFIG_FILE=/etc/redis/7005.conf REDIS_LOG_FILE=/var/log/redis_7005.log REDIS_DATA_DIR=/var/lib/redis/7005 REDIS_EXECUTABLE='command -v redis-server' ./utils/install_server.sh
Please select the redis executable path []
/usr/local/bin/redis-server
效果
ps -ef | grep redis
2.2、调整redis配置
2.2.1、逐一编辑/etc/redis目录下的7000.conf-7005.conf
sudo vim /etc/redis/7000.conf
修改内容如下
# 是否在后台执行,yes:后台以守护进程运行;no:不是后台运行(老版本默认),docker里面需要配no
daemonize yes
appendonly yes
notify-keyspace-events "Egx"
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
# 去掉本地ip绑定
#bind 127.0.0.1
# 设置redis连接密码
requirepass 123456
# 设置集群各主从节点的访问密码,其中123456假设为访问密码
masterauth 123456
注意
1. 集群节点redis服务端口及所在服务器IP需要与以下云服务应用中的redis连接配置保持一致;
2. redis服务设置了访问密码,云服务中还需要增加密码的相关配置。
2.2.2、修改启动脚本
逐一编辑/etc/init.d/目录下的redis_7000-redis_7005
如果redis服务没有设置访问密码,此步骤跳过
sudo vim /etc/init.d/redis_7000
在图示中位置添加如下一行
PASSWORD=$(cat $CONF|grep '^\s*requirepass'|awk '{print $2}'|sed 's/"//g')
在下图示中位置把以下一行注释掉
$CLIEXEC -p $REDISPORT shutdown
并添加以下行
if [ -z $PASSWORD ]
then
$CLIEXEC -p $REDISPORT shutdown
else
$CLIEXEC -a $PASSWORD -p $REDISPORT shutdown
fi
2.3、重新启动所有节点的redis服务
sudo /etc/init.d/redis_7000 restart
sudo /etc/init.d/redis_7001 restart
sudo /etc/init.d/redis_7002 restart
sudo /etc/init.d/redis_7003 restart
sudo /etc/init.d/redis_7004 restart
sudo /etc/init.d/redis_7005 restart
ps -ef | grep redis
2.3.1、建立集群(非密码方式)
要使用具体IP
redis-cli --cluster create 192.168.187.139:7000 192.168.187.139:7001 192.168.187.139:7002 192.168.187.139:7003 192.168.187.139:7004 192.168.187.139:7005 --cluster-replicas 1
2.3.2、建立集群(密码方式)
redis-cli -a 123456 --cluster create 192.168.187.139:7000 192.168.187.139:7001 192.168.187.139:7002 192.168.187.139:7003 192.168.187.139:7004 192.168.187.139:7005 --cluster-replicas 1
所有节点的密码必须设置为同一密码, 上述命令需要增加参数"-a 密码"的方式传入(以下假设密码为:123456)
2.3.3、解释
- “–cluster-replicas 1”:表示每个主节点具有1个从节点
2.3.4、效果
三、验证
3.1、7000机器(以下是正常情况)
# 使用-c参数来启动集群模式
[hd@zhoufei redis]$ redis-cli -c -p 7000
127.0.0.1:7000> auth 123456
OK
127.0.0.1:7000> set a 1
# 集群转向到7002端口
-> Redirected to slot [15495] located at 127.0.0.1:7002
(error) NOAUTH Authentication required.
127.0.0.1:7002> set a 1
(error) NOAUTH Authentication required.
# 通过密码授权
127.0.0.1:7002> auth 123456
OK
127.0.0.1:7002> set a 1
OK
127.0.0.1:7002> get a
"1"
127.0.0.1:7002>
# 查看节点信息
127.0.0.1:7002> cluster nodes
0ad3c8c2c092f0918373f37bf1a3689c8f6d2c37 127.0.0.1:7001@17001 master - 0 1619677213000 2 connected 5461-10922
c882d9eff56564d4148fa66e2a5e36f0239ae3b1 127.0.0.1:7000@17000 master - 0 1619677214575 1 connected 0-5460
48c8befd2eb224709d63570df334486ab41eee84 127.0.0.1:7004@17004 slave 0ad3c8c2c092f0918373f37bf1a3689c8f6d2c37 0 1619677214675 5 connected
0b4c5974581ffab6b592ee5d21fb3bfe15b6d358 127.0.0.1:7002@17002 myself,master - 0 1619677213000 3 connected 10923-16383
44d0347d8d586bd4120cb01517e7d2568442d763 127.0.0.1:7003@17003 slave c882d9eff56564d4148fa66e2a5e36f0239ae3b1 0 1619677214575 4 connected
5796f3f594f78bf09c38a1ae2b57376b9968532b 127.0.0.1:7005@17005 slave 0b4c5974581ffab6b592ee5d21fb3bfe15b6d358 0 1619677213673 6 connected
四、集群关闭命令
redis-cli -a 123456 -c -p 7001 shutdown
redis-cli -a 123456 -c -p 7002 shutdown
redis-cli -a 123456 -c -p 7003 shutdown
redis-cli -a 123456 -c -p 7004 shutdown
redis-cli -a 123456 -c -p 7005 shutdown
redis-cli -a 123456 -c -p 7000 shutdown