docker redis动态的主从挂载(没有设置密码)和哨兵高可用配置

1.主从挂载

mkdir -p /usr/local/src/redis/{conf ,data0,data1,data2,data3}
配置文件参考博客园
将配置文件redis.conf放到conf目录下

[root@localhost redis3]# docker run --name redis -d -it -p 6379:6379 -v $PWD/data0:/data -v $PWD/conf/redis.conf:/etc/redis.conf redis:5.0.4
####外部端口为6379的不能作为主库
[root@localhost redis3]# docker run --name redis0 -d -it -p 6380:6379 -v $PWD/data1:/data -v $PWD/conf/redis.conf:/etc/redis.conf redis:5.0.4
[root@localhost redis3]# docker run --name redis1 -d -it -p 6381:6379 -v $PWD/data2:/data -v $PWD/conf/redis.conf:/etc/redis.conf redis:5.0.4
[root@localhost redis3]# docker run --name redis2 -d -it -p 6382:6379 -v $PWD/data3:/data -v $PWD/conf/redis.conf:/etc/redis.conf redis:5.0.4

进入容器

docker exec -it redis /bin/bash
redis-cli

试一下是否可用

set A A 
keys *

查看状态

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:deca3cfc33b51a66839d52f5e9f8d9adf0aaa791
master_replid2:95a848e568886c112e96d6a9dddd2f648612450a
master_repl_offset:2128
second_repl_offset:2129
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:183
repl_backlog_histlen:1946
127.0.0.1:6379> 

默认自己是主库
动态设置主从

salveof masterip masterport 
例如:
salveof 192.168.126.129 6380

配置完再检查状态

127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.126.129
master_port:6380
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:2072
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:95a848e568886c112e96d6a9dddd2f648612450a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2072
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:253
repl_backlog_histlen:1820
127.0.0.1:6379>

连接状态为up则连接上了

master_link_status:up

配置完到主库查询状态

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=172.17.0.1,port=6379,state=online,offset=2254,lag=1
slave1:ip=172.17.0.1,port=6379,state=online,offset=2254,lag=1
master_replid:95a848e568886c112e96d6a9dddd2f648612450a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2254
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2254
127.0.0.1:6379> 

2.哨兵配置

下载跑配置文件

wget  http://download.redis.io/redis-stable/sentinel.conf

修改配置文件

##绑定ip,0.0.0.0为都可以访问
bind 0.0.0.0
##关闭保护模式,默认开启
protected-mode no
##开启后台运行
daemonize yes
##填写主机的ip和端口 最后的1是投票确定数(三个哨兵就填2)
sentinel monitor mymaster 172.0.0.1 6379 1
# master宕机后重新投票选择master所需要的时间.
sentinel down-after-milliseconds mymaster 10000
## 切换master的时间,超过时间未完成切换,将重新选择新的master
sentinel failover-timeout mymaster 30000

启动哨兵

redis-sentinel sentinel.conf

测试:

@Test
	public void Test06(){
		Set<String> set = new HashSet<>();
		//set集合用于存储哨兵的ip和端口
		set.add("192.168.126.129:26379");
		//mymaster是
		JedisSentinelPool jedisSentinelPool =new JedisSentinelPool("mymaster",set);
		 Jedis jedis= jedisSentinelPool.getResource();
		jedis.set("aaa","sdsdsa");
		System.out.println(jedis.get("aaa"));
	
	}

说明:
1).分片可以实现Redis内存数据的扩容.可以存储海量的内存数据. Redis分片机制没有实现高可用.如果分片中一个节点宕机,则直接影响整个服务的运行.
2).哨兵可以实现Redis节点的高可用.但是Redis中的数据不能实现内存的扩容.
哨兵服务本身没有实现高可用.如果哨兵发生了异常则直接影响用户使用

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值