redis6 集群搭建
文档
- https://www.jianshu.com/p/7d5fbf90bcd7
- https://blog.csdn.net/qq_35937724/article/details/106906244
- https://www.cnblogs.com/riches/p/15106238.html
下载
下载地址:http://download.redis.io/releases
下载Redis 最新稳定版:http://download.redis.io/releases/redis-6.2.6.tar.gz
安装编译器
1yum groupinstall 'Development Tools' -y
编译安装
1cd /usr/local/src
2
3tar -zxf redis-6.2.6.tar.gz
4
5cd redis-6.2.6
6
7make
8
9make install
集群配置文件
1mkdir -p /app/redis/cluster/7111
2
3cp /usr/local/src/redis-6.2.6/redis.conf /app/redis/cluster/7111/redis-7111.conf
4
5
6
7mkdir -p /app/redis/cluster/7112
8
9cp /usr/local/src/redis-6.2.6/redis.conf /app/redis/cluster/7112/redis-7112.conf
10
11
12
13mkdir -p /app/redis/cluster/7113
14
15cp /usr/local/src/redis-6.2.6/redis.conf /app/redis/cluster/7113/redis-7113.conf
16
17
18
19mkdir -p /app/redis/cluster/7114
20
21cp /usr/local/src/redis-6.2.6/redis.conf /app/redis/cluster/7114/redis-7114.conf
22
23
24
25mkdir -p /app/redis/cluster/7115
26
27cp /usr/local/src/redis-6.2.6/redis.conf /app/redis/cluster/7115/redis-7115.conf
28
29
30
31mkdir -p /app/redis/cluster/7116
32
33cp /usr/local/src/redis-6.2.6/redis.conf /app/redis/cluster/7116/redis-7116.conf
配置文件内容:
1# bind 127.0.0.1 -::1 # 取消ip绑定
2
3# requirepass 123456 # 如果需要密码,请去掉注释
4
5# masterauth 123456 # 如果集群设置了 requirepass,也要设置masterauth一样的密码
6
7daemonize yes # 后台运行
8
9pidfile /var/run/redis-7111.pid # 根据端口修改
10
11port 7111 # 端口
12
13cluster-enabled yes # 启用集群模式
14
15cluster-config-file /app/redis/cluster/7111/cluster-7111.conf #节点配置文件
16
17cluster-node-timeout 15000 # 超时时间
18
19appendonly yes # 打开aof持久化
20
21dir /app/redis/cluster/7111 # 节点数据持久化存放目录
22
23protected-mode no # 非保护模式
24
25logfile /app/redis/cluster/7111/redis-7111.log # 记录日志
启动6个Redis节点。
1redis-server /app/redis/cluster/7111/redis-7111.conf
2
3redis-server /app/redis/cluster/7112/redis-7112.conf
4
5redis-server /app/redis/cluster/7113/redis-7113.conf
6
7redis-server /app/redis/cluster/7114/redis-7114.conf
8
9redis-server /app/redis/cluster/7115/redis-7115.conf
10
11redis-server /app/redis/cluster/7116/redis-7116.conf
启动集群
注意:如果有密码,需要加 -a 参数
1redis-cli --cluster create 192.168.76.129:7111 192.168.76.129:7112 192.168.76.129:7113 192.168.76.130:7114 192.168.76.130:7115 192.168.76.130:7116 --cluster-replicas 1
输入 yes 并按下回车确认之后,集群就会将配置应用到各个节点,并连接起(join)各个节点,也就是让各个节点开始互相通讯
如果遇到CLUSTERDOWN Hash slot not served 错误
此时,执行下面步骤来修复:
检测
1redis-cli --cluster check 127.0.0.1:7111
检测结果
1[ERR] Not all 16384 slots are covered by nodes
输入如下命令进行修复:
1redis-cli --cluster fix 192.168.76.129:7111
2
3redis-cli --cluster fix 192.168.76.129:7112
4
5redis-cli --cluster fix 192.168.76.129:7113
6
7redis-cli --cluster fix 192.168.76.130:7114
8
9redis-cli --cluster fix 192.168.76.130:7115
10
11redis-cli --cluster fix 192.168.76.130:7116
查看集群主从关系(如果有密码,需要加 -a 参数):
redis-cli -h 192.168.76.129 -p 7111 cluster nodes
redis集群的开机启动
创建脚本
1vim /etc/init.d/redis-cluster
内容如下:
1#!/bin/sh
2# chkconfig: 2345 90 10
3# description: Redis is a persistent key-value database
4
5# 相关配置项,应该根据实际环境信息进行改动,包括for循环中的PIDFILE和CONF
6REDISPORT=(7001 7002 7003 7004 7005 7006)
7EXEC=/usr/local/bin/redis-server
8CLIEXEC=/usr/local/bin/redis-cli
9# redis 集群密码
10# PASSWD=admin123456
11
12for((i=0;i<${#REDISPORT[@]};i++)) do
13 PIDFILE=/var/run/redis-${REDISPORT[i]}.pid # 进程守护文件
14 CONF=/app/redis/cluster/${REDISPORT[i]}/redis-${REDISPORT[i]}.conf # redis节点配置文件
15
16 case "$1" in
17 start)
18 if [ -f $PIDFILE ]
19 then
20 echo "$PIDFILE exists, process is already running or crashed"
21 else
22 echo "Starting Redis cluster server ${REDISPORT[i]} ..."
23 # 启动 redis 服务
24 nohup $EXEC $CONF > /dev/null 2>&1 &
25 sleep 1s
26 if [ -f $PIDFILE ]
27 then
28 echo "Redis cluster ${REDISPORT[i]} startup succeeded!"
29 else
30 echo "ERROR: Redis cluster ${REDISPORT[i]} startup failed!"
31 fi
32 fi
33 ;;
34 stop)
35 if [ ! -f $PIDFILE ]
36 then
37 echo "$PIDFILE does not exist, process is not running"
38 else
39 PID=$(cat $PIDFILE)
40 echo "Stopping Redis cluster ${REDISPORT[i]} ..."
41 # 如果redis集群有设置密码,下面的命令改为:$CLIEXEC -p ${REDISPORT[i]} -a $PASSWD shutdown
42 $CLIEXEC -p ${REDISPORT[i]} shutdown
43 while [ -x /proc/${PID} ]
44 do
45 echo "Waiting for Redis cluster ${REDISPORT[i]} to shutdown ..."
46 sleep 1s
47 done
48 echo "Redis cluster ${REDISPORT[i]} stopped!"
49 fi
50 ;;
51 *)
52 echo "Please use start or stop as first argument"
53 ;;
54 esac
55
56done
更改脚本可执行权限
1chmod +x /etc/init.d/redis-cluster
添加 redis cluster 开机服务
1chkconfig --add redis-cluster
开启 redis cluster 服务
1chkconfig redis-cluster on
启动 redis cluster 服务
1service redis-cluster start
停止 redis cluster 服务
1service redis-cluster stop
评论