多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要sentinel哨兵也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展
redis集群需要至少要三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点构成三主三从
单节点安装启动
- 单节点基本安装如下,官方文档
$ yum install -y gcc
$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar xzf redis-5.0.5.tar.gz
$ cd redis-5.0.5
$ make
- 启动,停止
$ src/redis-server
$ src/redis-cli shutdown/ kill ...
集群搭建
redis 多节点启动 使用 ./redis-server xxxx.conf 指定不同的配置文件即可
- 准备3台服务器, 每台服务器启动 6379/6380 两个节点
- 修改 /usr/local/redis/redis.conf 配置如下
daemonize yes
port 6379(分别对每个机器的端口号进行设置)
dir /usr/local/redis/(指定数据文件存放位置)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes-6379.conf(集群节点信息文件)
cluster-node-timeout 5000
bind 127.0.0.1(注释)
protected-mode no (关闭保护模式)
appendonly yes (开启aof日志)
requirepass xxx (设置redis访问密码)
masterauth xxx (设置集群节点间访问密码,跟上面一致即可)
- 复制 上面的 redis.conf 到另一个目录 如/usr/local/redis-6380 修改如下
daemonize yes
port 6380(分别对每个机器的端口号进行设置)
dir /usr/local/redis-6380/(指定数据文件存放位置)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes-6380.conf(集群节点信息文件)
cluster-node-timeout 5000
bind 127.0.0.1(注释)
protected-mode no (关闭保护模式)
appendonly yes (开启aof日志)
requirepass xxx (设置redis访问密码)
masterauth xxx (设置集群节点间访问密码,跟上面一致即可)
- 使用 ./redis-server xxx.conf 启动两个节点
./src/redis-server redis.conf
./src/redis-server ../redis-6380/redis.conf
- 如下脚本可以停止服务
#!/bin/bash
#根据进程名杀死进程
if [ $# -lt 1 ]
then
echo "缺少参数:procedure_name"
exit 1
fi
PROCESS=`ps -ef|grep $1|grep -v grep|grep -v PPID|awk '{ print $2}'`
for i in $PROCESS
do
echo "Kill the $1 process [ $i ]"
kill -9 $i
done
- 复制 redis 和 redis-6780 目录到 另外两台机器上, 然后启动
scp -r /usr/local/redis/ root@ip:/usr/local/
scp -r /usr/local/redis-6380/ root@ip:/usr/local/
使用 ps -ef|grep redis 在3台机器上测试是否全部启动成功
使用 redis-cli 进行集群 如下
./src/redis-cli -a hzhl --cluster create --cluster-replicas 1 192.168.0.150:6379 192.168.0.150:6380 192.168.0.151:6379 192.168.0.151:6380 192.168.0.152:6379 192.168.0.152:6380
如果集群失败,需要删除 每个节点 .aof/node-port.conf 等集群信息
登陆任意节点
redis-cli --cluster check ip:port -a 密码 查看集群状态
./redis-cli -c -h {IP} -p {PORT} # -c 表示连接集群节点
cluster info(查看集群信息)、cluster nodes(查看节点列表)
如图
- 新增节点
参考文献