因为实现完整的集群加主从需要的服务器实在太多(最少6台,需3个主节点3个从节点),我放弃了这个完整模式的集群,只构建了主从集群(1主2从),下面对相关情况做个记录:

下载 及 编译(服务器各主从节点都一样)

wget http://download.redis.io/releases/redis-5.0.7.tar.gz
tar xvfz redis-5.0.7.tar.gz
cd redis-5.0.7
make & make install

若centos Redis安装报错error:jemalloc/jemalloc.h:No such file or directory
make distclean
make MELLOC=libc
make install
**上面做法即为:先清理一下前面报错的make,再指定使用libc再重新编译

创建一个启动的脚本以便调用服务

cd ../
vi redis.sh

#!/bin/bash
echo 2048 > /proc/sys/net/core/somaxconn
sysctl vm.overcommit_memory=1
echo never > /sys/kernel/mm/transparent_hugepage/enabled
redis-5.0.7/src/redis-server redis.conf &
redis-5.0.7/src/redis-sentinel sentinel.conf &

chomd +x redis.sh

**这个脚本里面调用redis的路径要写对哦!redis-server是redis的服务进程,redis-sentinel是redis的哨兵进程(进行主从服务监控的),两个conf文件都是在sh脚本文件同目录

在脚本目录添加redis的两个配置文件

建议从redis的安装目录中的src目录复制过来而后修改下面内容:
vi redis.conf

bind 0.0.0.0         --这是允许任意ip联入
port 16379          --修改默认端口
daemonize yes     --启用服务模式
masterauth s-19-redis         --设置主节点的访问密码,所有节点都必须设置(主节点down后再恢复就变成从节点了)
replicaof xx.xx.xx.xxx 16379    --设置主节点的IP和端口,从节点必须设置(一旦设置这个就是从节点,并指定启动时是对应哪个主节点)
requirepass "s-19-redis"       --设置本节点的访问密码,所有节点都一样
logfile "/var/log/redis.log"

vi sentinel.conf

port 26379         --哨兵服务的端口号
bind 0.0.0.0
daemonize yes
logfile "/var/log/redis-sentinel.log"
sentinel myid 8c660cb037c8bea19dc376adf2fffad3bd6c5e97    --定义本节点的uuid,需确保每个节点不同
sentinel monitor mymaster xxx.xxx.xxx.xxx 26379 2   --mymaster是集群组名,随便写但必须保持组里面所有节点都一致,后面是主节点的ip和端口,最后的2是表述有2个从节点
sentinel auth-pass mymaster s-19-redis    --主节点的访问密码

启动

注意防火墙开放相应的端口!!!

centos6:
iptables -A INPUT -p tcp --dport 16379 -j ACCEPT
iptables -A INPUT -p tcp --dport 26379 -j ACCEPT
/etc/rc.d/init.d/iptables save
service iptables restart

centos7:
firewall-cmd --permanent --zone=public --add-port=16379/tcp
firewall-cmd --permanent --zone=public --add-port=26379/tcp
firewall-cmd --reload

使用

服务启动后,哨兵服务会根据这个集群的情况自动修改前面的两个配置文件内容!!
一旦主节点不工作或出现问题,会自动根据情况选举出主节点,并自动调整其状态(从节点是只读,主节点可以读写)!
如果1主2从的服务器中,已经down了主,会自动选举出新主,但,如果这时的新主再down,仅有的从,不会自动变成主!!(因选举机制失效!)

崩溃处理

切记需同时修改两个配置文件,因为哨兵服务会自动修改两个配置文件,写上主节点的信息和同步戳记;如果整个集群崩溃,先修改主节点的配置文件,启动主节点,而后逐台修改从节点配置文件并启动从节点