前言:
准备三台物理机,每台分别部署两个redis节点,最后使用redis-cli命令创建三主三从集群
部署:
1、安装包下载
wget http://download.redis.io/releases/redis-5.0.9.tar.gz
mv redis-5.0.9.tar.gz /usr/local/
2、依赖安装
yum -y install gcc gcc-c++ kernel-devel automake autoconf libtool make
3、编译安装redis
tar -zxvf redis-5.0.9.tar.gz && cd /usr/local/redis-5.0.9
make MALLOC=libc
make install
注意:如果单独使用make命令报错如下,重新解压压缩包覆盖/usr/local/redis-5.0.9
4、三台物理机分别启用两个实例
举例一台机器,其他两台物理机同理
mkdir -r /home/disk1/redis-cluster/redis01 /home/disk1/redis-cluster/redis02
cp /usr/local/redis-5.0.9/redis.conf /home/disk1/redis-cluster/redis01/
cp /usr/local/redis-5.0.9/redis.conf /home/disk1/redis-cluster/redis02/
分别进入redis01和redis02目录修改redis.conf
你需要修改以下几处,其他根据具体情况自行修改
requirepass redispasswd
masterauth redispasswd
#不配置这两项,redis集群master节点宕机对应slave不能切换为主
port 9001 #自定义多实例不一致即可
cluster-enabled yes #是否启用redis集群
cluster-config-file /home/disk1/redis-cluster/redis01/nodes.conf #redis02就改成02
pidfile /home/disk1/redis-cluster/redis01/redis.pid
dir /home/disk1/redis-cluster/redis01/
#数据持久化是否开启
save ""
#save 900 1
#save 300 10
#save 60 10000
#redis默认开启RDB的,AOF则是默认关闭的。如果需要关闭RDB,将Redis完全作为一个缓存使用,需要修改配置项save。
appendonly no
#指出是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失,因为redis本身同步数据文件是按上面的save条件来同步的,所以有的数据会在一段时间内只存在于内存中
启用redis多实例
redis-server /home/disk1/redis-cluster/redis01/redis.conf &
redis-server /home/disk1/redis-cluster/redis92/redis.conf &
其他两台机器同理分别启用两个实例,注意masterauth requirepass需配置一致的密码
5、建立redis-cluster集群
#这里要说明一下,网上很多文章都是用redis-trib,那是古时候的工具,还不支持redis有密码,用redis-cli来建立集群
Scaling with Redis Cluster | Redis
redis-cli -a redispasswd --cluster create IP1:PORT1 IP1:PORT2 IP2:PORT1 IP2:PORT2 IP3:PORT1 IP3:PORT2 --cluster-replicas 1
#--cluster-replicas 1 代表每个master一个副本,也就是三主三从
6、验证集群建立是否成功及满足高可用条件
redis-cli -a redispasswd -h IP1 -p PORT1 cluster info
#查看集群状态是否ok
redis-cli -a redispasswd -h IP1 -p PORT1 cluster node
#查看是否是三主三从
#注意还要观察一下
两个master是否不在一台物理机上
一对master slave是否不在一台物理机上
如果都没问题,那就构建完成了具有初步高可用的redis-cluster集群,后续如果出现物理机宕机,恢复时手动调整master slave分配到节点就可以了