企业级——Redis的哨兵机制
1.配置哨兵
(1)在server1上(master)编辑配置文件:
vim /etc/redis/sentinel.conf
17 protected-mode no ##关闭保护模式
121 sentinel monitor mymaster 172.25.0.1 6379 2 ##配置master信息,后面的2表示投票机制,至少有2个节点认为master挂了,才会切换
146 sentinel down-after-milliseconds mymaster 10000 ##改为10s,表示master挂后10s会切换
此时一定要先scp到slave节点上再启动!!!
scp sentinel.conf server2:/etc/redis/
scp sentinel.conf server3:/etc/redis/
(2)哨兵机制
[root@server1 ~]# redis-server /etc/redis/sentinel.conf --sentinel ##开启哨兵
[root@server2 ~]# redis-server /etc/redis/sentinel.conf --sentinel
[root@server3 ~]# redis-server /etc/redis/sentinel.conf --sentinel
在server1上查看:
redis-cli
127.0.0.1:6379> info
# Replication
role:master
connected_slaves:2
slave0:ip=172.25.0.2,port=6379,state=online,offset=95268,lag=0
slave1:ip=172.25.0.3,port=6379,state=online,offset=95133,lag=0
看到上面信息说明配置成功
在server1上可以看到sentinel信息:
redis-cli -p 26379
127.0.0.1:26379> info
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.25.0.1:6379,slaves=2,sentinels=3
挂掉server1的redis:
[root@server1 ~]# redis-cli
127.0.0.1:6379> SHUTDOWN
not connected> #可以看到server1的6379端口挂掉
sentinel哨兵也能看到信息:
1036:X 31 Mar 2019 17:49:21.927 # +odown master mymaster 172.25.66.1 6379 #quorum 3/2
1036:X 31 Mar 2019 17:49:22.546 # +switch-master mymaster 172.25.66.1 6379 172.25.66.2 6379 #现在server2是master
启动之后会看到两个WARNING,在server1上修改此参数的值:
sysctl -w vm.overcommit_memory=1 #表示内核允许分配所有的物理内存,而不管当前的内存状态如何,0表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程