检查sentinel配置文件:
[root@DB ~]# grep -Ev '^#|^$' /etc/sentinel_26379.conf
port 26379
daemonize yes
logfile "/var/log/sentinel.log"
dir "/tmp"
sentinel monitor mymaster 192.168.221.161 6379 1
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 6000
sentinel config-epoch mymaster 7
sentinel known-slave mymaster 192.168.221.160 6379
sentinel known-sentinel mymaster 192.168.221.161 26379 74f54a23bf06b57ce1618ee48f42a09a11522bb9
可以看到配置文件监控的master机器也变成了192.168.221.161:6379。
七、Python程序访问sentinel集群
由于很好奇连入的程序是如何访问sentinel集群的,自己用python验证了一下。
Python下需要安装redis相关的lib库,我这里使用的是redis-2.10.5版本
[root@DB ~]# python
Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from redis.sentinel import Sentinel #加载redis模块
>>> sentinel = Sentinel([('192.168.221.160', 26379),
... ('192.168.221.161', 26379)],
... socket_timeout=0.1) #连接哨兵服务器
>>> sentinel.discover_master('mymaster') #获取主redis服务器地址
('192.168.221.161', 6379)
>>> sentinel.discover_slaves('mymaster')#获取从redis服务区地址
[('192.168.221.160', 6379)]
>>> master = sentinel.master_for('mymaster', socket_timeout=0.1)
>>> master.set('foo','bar') #获取主redis服务器并进行写入
True
>>> slave = sentinel.slave_for('mymaster', socket_timeout=0.1)
>>> slave.get('foo')#获取从redis服务器进行获取
'bar'
>>>
初步认为程序通过sentinel提供的端口进行访问,获取主redis进行写入操作,读的话如果不指定方式会采取轮询的方式进行读操作。
下面关于Redis的文章您也可能喜欢,不妨参考下:
Ubuntu 14.04下Redis安装及简单测试
CentOS 7下Redis的安装与配置
Ubuntu 16.04环境中安装PHP7.0 Redis扩展
CentOS 7.0 安装Redis 3.2.1详细过程和使用常见问题