linux redis 分片,linux环境的redis实现高可用以及使用哨兵实现高可用技术

序言

依然接着在实现上上篇redis分片技术的前提条件下

1.1 Redis分片中存在问题

说明:

1.如果分片中的一个节点宕机,将会影响整个服务.

2.采用分片技术,可能会出现数据负载不均现象.

3.Redis分片没有数据的备份

1.2 结构划分

1. 6379主机

2. 6380 6381从机

1.3 配置3台主机

1.进入安装目录复制文件

cp -r shards sentinel

6738adbff447efa1f77630ca8335dbc1.png

2.修改三个sentinel的持久化文件名称

bea75089ceded36ae60e40ad19c60abb.png

0e8f02c7775b844af0802d01859af918.png

将配置文件修改好之后,启动服务器.

3c8581b8ad21061daa9067f4e3150dfc.png

1.4 配置主从

1. 检查当前节点的状态

info replication

e4faa9cb86216b69d6ed67881ef5bc05.png

此时默认的条件下,redis节点都是主机.

2.执行挂载命令

SLAVEOF 192.168.197.132 6379

分别将6380,6381挂载到6379,当6379的从机

1caf68d5820d249aceb11ad53c5e6962.png

3.主从测试

在redis主机中set数据,检查从机中是否有同步数据.

fd626669398eccb2d97d3c78053cadde.png

2.1 哨兵实现高可用

2.2 调用原理

3aebde620e76276cb0ac70a123bf68a2.png

2.3 配置哨兵

1.复制哨兵的文件

cp sentinel.conf sentinel

3d6e7f0b94cd526f4621165ac37442c4.png

2.关闭保护模式

bc45b9ea155cfcb5d5f0d585cbf4465c.png

3.编辑监控主机的信息

sentinel monitor mymaster 127.0.0.1 6379 2

mymaster:代表当前主机信息 ip:端口

3.1 哨兵投票的票数

7e7d148907f8fdee9da2db8303c220ab.png

4.修改推选时间 改为10秒

aa9f6b9a7cc4b907f925646995ec9838.png

5. 修改推选超时时间

如果20之内没有完成推选,则重新推选

6311637320186ee2db6fe429f6dd8f7f.png

2.4 哨兵高可用测试

1.启动命令

redis-sentinel sentinel.conf

3d1705c5a7fc24439d3ca1324161ba21.png

通过日志可以看见,redis主机是6379

2.将6379宕机,检查redis哨兵是否会自动推选.

fc6af0c82319f3519a3938ff02fec05b.png

日志发现,哨兵推选了6381为主机

进入6381端口库查看

b173236c469d9a69969f86d769a1d622.png

3.1 多个哨兵实现redis高可用

3.1.1 准备多个哨兵配置文件

说明:将原有哨兵复制三份.名称分别为

sentinel-6379.conf/sentinel-6380.conf/sentinel-6381.conf

d2e2cc552c48d98b759e772c11495f8b.png

3.1.2 修改哨兵配置文件

1.修改哨兵的端口

c3d11b029e4e4117f28c0492355e2f5e.png

2.修改序列号,保证序列号不一样

8954570b7d78e17bde711472fbbf6aa8.png

3.修改选举票数

2f3c169cf75ecc0a7916e4c5b0fcbe57.png

3.1.3 多个哨兵测试

分别启动多台哨兵.检查哨兵的状态.将redis主机宕机后,检查哨兵是否自动推选.程序是否正确.

用下面命令分别启动三台哨兵

redis-sentinel sentinel-6379.conf

redis-sentinel sentinel-6380.conf

redis-sentinel sentinel-6381.conf

日志可看见宕机主机6381后以后,现在推选6380为主机了

91282f449d27dbafb5ce6d1318984c58.png

3.1.4 哨兵搭建策略

1.先配置主从结构

主从结构搭建完成后,可实现数据的自动同步,并且维护各自的持久化文件.

2.编辑单台哨兵的配置文件.

3.扩展多台哨兵.

3.1.5 哨兵的优点

1.可以实现redis的高可用

2.对应调用者可以通过哨兵链接当前主机

代码实现哨兵的测试

public class SentinelTest {

public static void main(String[] args) {

//1.定义池

JedisPoolConfig poolConfig = new JedisPoolConfig();

poolConfig.setMaxTotal(1000);

//2.将redis哨兵节点写入集合

Set sentinels = new HashSet<>();

sentinels.add("192.168.197.132:26379");

sentinels.add("192.168.197.132:26380");

sentinels.add("192.168.197.132:26381");

//3.定义连接池

JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels,poolConfig);

Jedis jedis = pool.getResource();

jedis.set("2020", "今年是鼠年");

System.out.println("输出内容是:"+jedis.get("2020"));

pool.returnResource(jedis);

}

}

输出内容

54ccd2ab57f805dc67111546e02e8049.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值