之前公司让我负责冗余环境的搭建,平时接触linux很少,也没搭建过各种环境集群,在此记录自己的搭建的过程和遇到的问题,redis刚开始版本选用的是5.x.x的,搭建起来后,不知道什么问题,主节点切换到从节点可以,但是再次切换切不回来,这个原因没找到是什么导致的,于是换了一个版本,采用4.0.0的进行搭建,以下是搭建的步骤:

1.下载安装redis

  1. 引入安装包 进行安装
mkdir /usr/redis  # 创建 Redis 目录
cd /usr/redis  # 进入目录
# 将 Redis 安装包传输到该目录下 #
tar -zxvf redis-4.0.0.tar.gz  # 解压安装包
cd /usr/redis/redis-4.0.0  # 进入解压目录
make && make install  # 安装命令
redis-server -v  # 检查安装结果

2.服务器一(假设IP 127.0.0.1)

redis为主节点 master
redis.conf文件需要修改的内容

bind 0.0.0.0
 	port 6379
    #Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
	daemonize yes
	pidfile /usr/redis/redis.pid
	logfile "/usr/redis/redis-4.0.0/logs/redis.log"  需要创建logs文件夹 
	dir /usr/redis/data   需要创建data文件夹 注意 : 文件夹不创建会启动不起来					
	masterauth 1234  连接主节点的密码  两台服务器的密码都设为一样
	requirepass 1234  登录redis的密码  两台服务器的密码都设为一样

3.服务器二(假设IP 127.0.0.2)

redis为从节点 slaveof 5.0以后的版本为(replicaof)

bind 0.0.0.0
	port 6379
	#Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
	daemonize yes
	pidfile /usr/redis/redis.pid
	logfile "/usr/redis/redis-4.0.0/logs/redis.log"  需要创建logs文件夹 
	dir /usr/redis/data  需要创建data文件夹 注意 : 文件夹不创建会启动不起来		
	masterauth 1234 连接主节点的密码  两台服务器的密码都设为一样
	requirepass 1234 登录redis的密码 两台服务器的密码都设为一样
	slaveof 127.0.0.1 6379	代表这个节点为主节点上的从节点

4…Sentinel(哨兵配置) 哨兵是通用的配置

port 26379  端口可以修改
	daemonize yes
	pidfile /usr/redis/redis-sentinel.pid
	logfile "/usr/redis/redis-4.0.0/logs/sentinel.log"
	dir /usr/redis/sentinel-data
     # sentinel monitor <mastername> <masterIP> <masterPort> <quorum> 
     // Sentine监听的maste地址,第一个参数是给master起的名字,第二个参数为master IP,第三个为master端口,第四个为当该master挂了的时候,若想将该master判为失效,在Sentine集群中必须至少2个Sentine同意才行,只要该数量不达标,则就不会发生故障迁移。也就是说只要有2个sentinel认为master下线,就认为该master客观下线,启动failover并选举产生新的master。通常最后一个参数不能多于启动的sentinel实例数。	
	 sentinel monitor mymaster 127.0.0.1 6379 1   //建议为1 
        
      //设置sentinel连接的master和slave的密码,这个需要和redis.conf文件中设置的密码一样
	 sentinel auth-pass mymaster 1234
        
	 // 表示master被当前sentinel实例认定为失效的间隔时间。master在多长时间内一直没有给Sentine返回有效信息,则认定该master主观下线。也就是说如果多久没联系上redis-servevr,认为这个redis-server进入到失效(SDOWN)状态。 默认为 30000   改为10秒快一点
	 sentinel down-after-milliseconds mymaster 10000
        
     //这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越 多的slave因为replication而不可用。可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态
	 # sentinel parallel-syncs <master-name> <numslaves> 
	 sentinel parallel-syncs mymaster 1

5.redis启动

cd /usr/redis/redis-4.0.0/src
./redis-server /usr/redis/redis-4.0.0/redis.conf   指定配置文件
lsof -i: 6379   lsof -i:端口   查看端口使用情况
# redis客户端  -h 服务器的ip -p 连接的端口  -a redis的密码
redis-cli -h 127.0.0.1 -p 6379 -a 1234

6.Sentinel(哨兵启动)

./redis-sentinel /usr/redis/redis-4.0.0/sentinel.conf
#查看哨兵状态
redis-cli -p 26379 info sentinel

7.测试

  1. 数据同步问题
  2. 从节点仅有都的权限,没有写的权限
  3. 主从节点切换问题