redis sentinel哨兵模式集群搭建教程

摘要:
Redis是一种数据库服务。哨兵充当哨兵,彼此独立;Sentinel监控Redis服务。如果Sentinel发现参与管理的主机已停止,它将与参与管理的其他Sentinel协商,并选择从属于原始主机的一个从属主机作为新主机。如果Redis服务在停止之前是主服务,那么它在重新启动之后将不再是主服务了,而是成为每个sentinel的新当选主服务的从属服务。在实际使用中,我们使用sentinel来获得哪个是主人,哪个是奴隶。

1.环境说明

我们将使用192.168.220.128、192.168.220.129两台机器搭建sentinel交叉主从为例

当前我们已在192.168.220.128上按redis安装教程安装了redis,192.168.220.129上没有安装

2. 配置128上的slave

cd /usr/myapp/redis-2.8.17/conf   #进入配置文件所在目录
cp redis.conf redis-6379.conf     #128上的master所用配置文件
cp redis.conf redis-6380.conf     #128上的slave所用配置文件
                                  #配置128上的6380从属129的6379端口
cat >> redis-6380.conf << EOF
slaveof 192.168.220.129 6379
EOF

3. 配置128上的sentinel

2.1修改conf/redis-6379.conf和conf/redis-6380.conf,配置masterauth字段值

redis sentinel哨兵模式集群搭建教程第1张

2.2修改conf/sentinel.conf,配置以下字段的值

port 26379
sentinel announce-ip 192.168.220.128
dir /usr/myapp/redis-2.8.17/data

sentinel monitor mymaster1 192.168.220.128 6379 2
sentinel down-after-milliseconds mymaster1 30000
sentinel parallel-syncs mymaster1 2
sentinel failover-timeout mymaster1 180000
sentinel auth-pass mymaster1 yourpasswd

sentinel monitor mymaster2 192.168.220.129 6379 2
sentinel down-after-milliseconds mymaster2 30000
sentinel parallel-syncs mymaster2 2
sentinel failover-timeout mymaster2 180000
sentinel auth-pass mymaster2 yourpasswd

mymaster1和mymaster2可理解为后边master的别名,如果还有其他master类似地添加上即可。

2.3为了方便把sentinel启动脚本写到adm目录下

cd adm

cat > start_sentinel << EOF
../bin/redis-sentinel ../conf/sentinel.conf
EOF

4. 在129部署redis

3.1将128上的redis打包发送到129上

tar -cf redis.tar redis-2.8.17
scp redis.tar root@192.168.220.129:/usr/myapp

 3.2修改配置文件中的ip地址

修改conf/redis-6379.conf和conf/redis-6380.conf,将bind的IP修改为本机网卡IP:

redis sentinel哨兵模式集群搭建教程第2张

修改conf/redis-6380.conf中的slaveof,将129的6380配置为从属128的6379

修改conf/sentinel.conf,将sentinel announce-ip值修改为本机IP

redis sentinel哨兵模式集群搭建教程第3张

5. 启动集群

到128、129和130三台机器redis的adm文件夹下分别执行./start_redis和./start_sentinel,启动redis和sentinel服务即可。

redis是数据库服务,sentinel相当于哨兵作用,两者相互独立;sentinel监视redis服务如果sentinel查看到自己参与管理的master停止,则会与其他参与管理的sentinel共同商量,从原master下属的slave中选出一个来担任新的master。

如果redis服务停止之前是master,当其重新启动后不再是master而是变成各sentinel新选举出来的master的slave。

master和slave的区别是master可读写,slave只可读;其实通过配置slave也可读写,所以最为严谨的说法是master和slave的区别是,slave同步master的操作而master不会同步slave的操作slave之间也不会互相同步操作。

6. 应用连接集群

在哨兵模式中,应用应该往主里写数据但是应用是不知道哪个是主那个是从的,一个个去连接然后查看是主是从的做法也是不够合理的。

在实际使用中是通过sentinel来获取哪个是主哪个是从的。

Set sentinels = new HashSet();  
sentinels.add(new HostAndPort("192.168.220.128", 26379).toString());  
sentinels.add(new HostAndPort("192.168.220.129", 26379).toString());  
sentinels.add(new HostAndPort("192.168.220.130", 26379).toString());  
JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster", sentinels);  
Jedis master = sentinelPool.getResource();  
master.set("name","张三"); 
String value = master2.get("name");

参考:

http://blog.csdn.net/ownfire/article/details/51546543

https://segmentfault.com/a/1190000002680804

http://blog.csdn.net/xianymo/article/details/46412271

免责声明:文章转载自《redis sentinel哨兵模式集群搭建教程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HTML入门标签汇总Android Gps 定位注意事项下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【Azure Redis 缓存】Azure Cache for Redis 中如何快速查看慢指令情况(Slowlogs)

问题描述当 Azure Redis 服务器负载过高的情况下,使用时就会遇见连接超时,命令超时,IO Socket超时等异常。为了能定位是那些因素引起的,可以参考微软官方文档( 管理 Azure Cache for Redis 的服务器负载 : https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-b...

redis哨兵

Redis sentinel(哨兵)模块已经被集成在redis2.4+的版本中,尽管目前不是release,不过可以尝试去使用和了解,事实上sentinel还是有点复杂的. sentinel主要功能就是为Redis M-S(master,slaves)集群提供了1)master存活检测 2)集群中M-S服务监控 3) 自动故障转移,M-S角色转换等能力,...

Springboot21 整合redis、利用redis实现消息队列

1 前提准备   1.1 创建一个springboot项目 技巧01:本博文基于springboot2.0创建   1.2 安装redis     1.2.1 linux版本 参考博文     1.2.2 windows版本 到redis官网下载windows版本的压缩包后,解压即可   1.3 redis使用 本博文以window版本为例子,linux版...

ubuntu和centos操作命令对比

ubuntu和centos操作命令对比 1,安装软件,比如安装jdk CentOS : rpm -i jdk-XXX_linux-x64_bin.rpm 进行安装, Ubuntu : dpkg -i jdk-XXX_linux-x64_bin.deb 进行安装。 其中 -i 就是 install 的意思。 2,管理软件 查询已安装的软件 rpm -qa...

CentOS7.6搭建redis4.0.1 cluster集群(带密码)

1. 操作系统信息: $ uname -a   Linux iZbp11d57wmumnwuihb2czZ 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux $ cat /proc/version   Linux versi...

RedisTemplate-Redis的序列化方案

一、引入Redis 1、项目中集成Redis service-base模块中添加redis依赖,Spring Boot 2.0以上默认通过commons-pool2连接池连接Redis <!-- spring boot redis缓存引入 --> <dependency> <groupId>org.springf...