redis 集群分为3种:主从复制、哨兵模式、cluster集群
本文使用的是cluster集群模式,优缺点可以自行查阅。
环境
3台机器 每台机器上一个master(7001)一个slave(7002) ,一共3个master 3个slave
axe1(192.168.86.101) 7001(master) 7002(slave)
axe2(192.168.86.102) 7001(master) 7002(slave)
axe3(192.168.86.103) 7001(master) 7002(slave)
redis版本:最新的redis-5.0.5
执行
在每个机器上都执行以下步骤
下载到/home/files目录下,安装到/usr/下
cd /home/files
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
cp /home/files/redis-5.0.5.tar.gz /usr/
cd /usr
tar -zxvf redis-5.0.5.tar.gz
cd redis-5.0.5
make
如果没有gcc会报错,那么此时安装gcc
yum -y install gcc gcc-c++ kernel-devel
然后重新执行 make,完毕之后
[root@axe1 redis-5.0.5]# mkdir 17001
[root@axe1 redis-5.0.5]# mkdir 17002
#创建文件夹和配置文件
[root@axe1 redis-5.0.5]# cd 17001/
[root@axe1 17001]# cp ../redis.conf ../17001/17001redis.conf
[root@axe1 17001]# mkdir logs
[root@axe1 redis-5.0.5]# cd 17002/
[root@axe1 17002]# cp ../redis.conf ../17002/17002redis.conf
[root@axe1 17002]# mkdir logs
修改配置文件17001redis.conf和17002redis.conf配置文件,稍后在文末给出。
启动各个redis服务
开启端口,如果没有设置firewall,可以不进行开启端口的操作
#systemctl status firewalld
firewall-cmd --zone=public --add-port=17001/tcp --permanent
firewall-cmd --zone=public --add-port=17002/tcp --permanent
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --zone=public --add-port=7002/tcp --permanent
firewall-cmd --reload
注意,此处使用的端口是7001和7002
那么按照官网解释,在开启7001和7002的同时,redis同时会开启17001和17002端口供集群选举通信使用(CLUSTER MEET),即使用端口的大小加上10000(端口是XXXX,那么通信窗口是1XXXX)
#循环每个节点先启动17001
/usr/redis-5.0.5/src/redis-server /usr/redis-5.0.5/17001/17001redis.conf &
#17001启动完毕后,循环每个节点再启动17002
/usr/redis-5.0.5/src/redis-server /usr/redis-5.0.5/17002/17002redis.conf &
查看运行状态
[root@axe1 ~]# ps -ef|grep redis
root 19979 1 0 19:01 ? 00:00:00 /usr/redis-5.0.5/src/redis-server 0.0.0.0:17001 [cluster]
root 19993 1 0 19:02 ? 00:00:00 /usr/redis-5.0.5/src/redis-server 0.0.0.0:17002 [cluster]
root 19999 986 0 19:02 pts/0 00:00:00 grep --color=auto redis
所有节点的master和slave启动完毕后,直接创建集群:
在5.0之前的版本,使用的是ruby的redis-trib.rb进行创建启动集群,在5.0之后就不用了,直接使用redis-cli
#有密码
/usr/redis-5.0.5/src/redis-cli -a pwd@redis --cluster create 192.168.86.101:7001 192.168.86.102:7001 192.168.86.103:7001 19