Redis Cluster Linux安装手册
大白菜
简介
本手册指导如何在Linux上安装redis,基于最新redis-5.0.7,操作系统环境为RedHat 7.4 64bit
1.1 下载及安装redis
下载地址:http://redis.io/download,下载最新稳定版本。
操作步骤
$ wget http://download.redis.io/releases/redis-5.0.7.tar.gz
$ tar xzf redis-5.0.7.tar.gz
$ cd redis-5.0.7
$ make
src目录中现在提供了已编译的二进制文件。使用以下命令运行Redis:
$ src/redis-server
测试是否可用:
$ src/redis-cli
redis> set foo gundam
OK
redis> get foo
"gundam"
停止服务:
src/redis-cli [-h hostname -p port] shutdown
或
kill -9 [pid]
# 停止集群所有应用
cd /home/redis-cluster/redis-5.0.7
src/redis-cli -h 10.1.1.183 -p 7001 -a [yourpassword] shutdown
src/redis-cli -h 10.1.1.183 -p 7002 -a [yourpassword] shutdown
src/redis-cli -h 10.1.1.183 -p 7003 -a [yourpassword] shutdown
src/redis-cli -h 10.1.1.183 -p 7004 -a [yourpassword] shutdown
src/redis-cli -h 10.1.1.183 -p 7005 -a [yourpassword] shutdown
src/redis-cli -h 10.1.1.183 -p 7006 -a [yourpassword] shutdown
或
cd /home/redis-cluster/redis-5.0.7
src/redis-cli -h 192.168.1.102 -p 7001 -a [yourpassword] shutdown
src/redis-cli -h 192.168.1.102 -p 7002 -a [yourpassword] shutdown
src/redis-cli -h 192.168.1.102 -p 7003 -a [yourpassword] shutdown
src/redis-cli -h 192.168.1.102 -p 7004 -a [yourpassword] shutdown
src/redis-cli -h 192.168.1.102 -p 7005 -a [yourpassword] shutdown
src/redis-cli -h 192.168.1.102 -p 7006 -a [yourpassword] shutdown
1.2 Redis-Cluster集群搭建
- Redis集群至少需要3个节点(master*3),因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2
个节点无法构成集群。 - 要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器(master*3 + Slave*3)。
操作步骤
- 创建集群路径
mkdir -p /home/redis-cluster
cd /home/redis-cluster
- 执行1.1中下载步骤,然后拷贝为n个节点
mkdir /home/redis-cluster/redis-01
mkdir /home/redis-cluster/redis-02
mkdir /home/redis-cluster/redis-03
mkdir /home/redis-cluster/redis-04
mkdir /home/redis-cluster/redis-05
mkdir /home/redis-cluster/redis-06
- 拷贝配置文件
cp /home/redis-cluster/redis-5.0.7/redis.conf /home/redis-cluster/redis-01
cp /home/redis-cluster/redis-5.0.7/redis.conf /home/redis-cluster/redis-02
cp /home/redis-cluster/redis-5.0.7/redis.conf /home/redis-cluster/redis-03
cp /home/redis-cluster/redis-5.0.7/redis.conf /home/redis-cluster/redis-04
cp /home/redis-cluster/redis-5.0.7/redis.conf /home/redis-cluster/redis-05
cp /home/redis-cluster/redis-5.0.7/redis.conf /home/redis-cluster/redis-06
- 逐一修改配置文件(7001-7006)
daemonize yes # redis后台运行
pidfile /var/run/redis_7001.pid # 需要修改为 reids_{port}.pid 的形式
port 7001 # 端口
cluster-enabled yes # 开启集群
cluster-config-file nodes_7001.conf # 集群的配置文件 nodes_{port}.conf的形式
cluster-node-timeout 5000 # 超时时间,5s够了
appendonly yes # 开启AOF日志
dir /home/redis-cluster/redis-01 # 将基目录修改为具体的子目录
# 修改可访问地址
bind 10.1.1.183 10.1.1.243 # 设置可访问IP
- 启动各节点
cd /home/redis-cluster/redis-5.0.7
src/redis-server /home/redis-cluster/redis-01/redis.conf
src/redis-server /home/redis-cluster/redis-02/redis.conf
src/redis-server /home/redis-cluster/redis-03/redis.conf
src/redis-server /home/redis-cluster/redis-04/redis.conf
src/redis-server /home/redis-cluster/redis-05/redis.conf
src/redis-server /home/redis-cluster/redis-06/redis.conf
查看启动状态
ps -ef|grep redis
应该看到类似如下输出:
[root@localhost redis-5.0.7]# ps -ef|grep redis
root 104316 1 0 04:25 ? 00:00:00 src/redis-server 127.0.0.1:7001 [cluster]
root 104324 1 0 04:26 ? 00:00:00 src/redis-server 127.0.0.1:7002 [cluster]
root 104326 1 0 04:26 ? 00:00:00 src/redis-server 127.0.0.1:7003 [cluster]
root 104331 1 0 04:26 ? 00:00:00 src/redis-server 127.0.0.1:7004 [cluster]
root 104336 1 0 04:26 ? 00:00:00 src/redis-server 127.0.0.1:7005 [cluster]
root 104344 1 0 04:26 ? 00:00:00 src/redis-server 127.0.0.1:7006 [cluster]
root 104349 103920 0 04:26 pts/0 00:00:00 grep --color=auto redis
- 外部服务器要访问,注意要打开如下防火墙策略
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --zone=public --add-port=7002/tcp --permanent
firewall-cmd --zone=public --add-port=7003/tcp --permanent
firewall-cmd --zone=public --add-port=7004/tcp --permanent
firewall-cmd --zone=public --add-port=7005/tcp --permanent
firewall-cmd --zone=public --add-port=7006/tcp --permanent
# 修改后需重启防火墙:
systemctl restart firewalld
- 使用reids-cli搭建Redis集群
# --cluster-replicas 1:一主一从配置,六个节点就是三主三从
src/redis-cli -a [yourpassword] --cluster create 10.1.1.183:7001 10.1.1.183:7002 10.1.1.183:7003 10.1.1.183:7004 10.1.1.183:7005 10.1.1.183:7006 --cluster-replicas 1
# 查看操作集群的命令帮助
redis-cli --cluster help
或
src/redis-cli -a [yourpassword] --cluster create 192.168.1.102:7001 192.168.1.102:7002 192.168.1.102:7003 192.168.1.102:7004 192.168.1.102:7005 192.168.1.102:7006 --cluster-replicas 1
执行结果:
# 输入yes进行确认
Can I set the above configuration? (type 'yes' to accept): yes
M: a6b2aed29bed73f7ce97cee1fe6046ef89e1485c 10.1.1.183:7001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 7ab6e59396a2a7ee059ce3319ef227ed830ba6b0 127.0.0.1:7004
slots: (0 slots) slave
replicates f154a18f96d99cc13ccb38efde52e971b66ae79c
S: 8a213e5ea235298d60df8a5cf212afffaca69f7b 127.0.0.1:7006
slots: (0 slots) slave
replicates 7f366164bdda894125101b797ae565e0e42f74c3
M: f154a18f96d99cc13ccb38efde52e971b66ae79c 127.0.0.1:7003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: ff0bd001af82a1da18cb7e228dce2660f21407a6 127.0.0.1:7005
slots: (0 slots) slave
replicates a6b2aed29bed73f7ce97cee1fe6046ef89e1485c
M: 7f366164bdda894125101b797ae565e0e42f74c3 127.0.0.1:7002
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
- 一些其他节点操作
# 查看状态:填写任意节点即可,会带出所有的
src/redis-cli -a [yourpassword] --cluster check 10.1.1.183:7001
# 新增节点
# 添加为主节点
redis-cli -a [yourpassword] --cluster add-node {新节点IP}:{新节点端口} {任意集群节点IP}:{对应端口}
# 在上一条命令后面加上此行命令将新节点添加为对应主节点的从节点
--cluster-slave --cluster-master-id {对应的主节点ID}
# 若是添加从节点则立即可用了,添加的是主节点的话,还需要reshard分配slots
redis-cli --cluster reshard {新主节点IP}:{新主节点PORT}
# 之后按照提示操作即可
1.3 Redis-Cluster操作
远程连接
# -c:通过集群方式连接
# --raw:避免中文乱码
cd /home/redis-cluster/redis-5.0.7
src/redis-cli -a [yourpassword] -h 10.1.1.183 -p 7001 -c --raw
# 测试set
10.1.1.183:7001> set t_01 1
-> Redirected to slot [6556] located at 10.1.1.183:7002
OK
10.1.1.183:7002> set t_02 2
OK
10.1.1.183:7002> set t_03 3
-> Redirected to slot [14814] located at 10.1.1.183:7003
OK
10.1.1.183:7003> set t_04 4
-> Redirected to slot [2361] located at 10.1.1.183:7001
OK
10.1.1.183:7001> quit
~/Documents/CodeEnv/redis-5.0.7 pwd
/Users/bobo_rb/Documents/CodeEnv/redis-5.0.7
~/Documents/CodeEnv/redis-5.0.7 src/redis-cli -h 10.1.1.183 -p 7001 -c --raw
10.1.1.183:7001> get t_04
"4"
10.1.1.183:7001> get t_03
-> Redirected to slot [14814] located at 10.1.1.183:7003
"3"
10.1.1.183:7003> get t_02
-> Redirected to slot [10751] located at 10.1.1.183:7002
"2"
1.4 Redis-Cluster安全设置
设置密码访问
修改集群中所有节点的redis.conf,并确保密码一致,执行该步后上述所有步骤中都需带上-a [passowrd]参数
masterauth [password]
requirepass [password]
# 重启各节点服务
使用如下命令带密码访问:
redis-cli -c -h 10.1.1.183 -p 7000 -a [password]