电光石火电光石火

陌晴博客
ilkhome.cn

docker搭建redis集群

运行redis镜像
首先使用docker启动3个redis容器服务,分别使用到6379、6380、6381端口
docker run --name redis-6379 -p 6379:6379 -d docker.io/redis redis-server
docker run --name redis-6380 -p 6380:6379 -d docker.io/redis redis-server
docker run --name redis-6381 -p 6381:6379 -d docker.io/redis redis-server
查看运行
docker ps -a

使用如下命令查看容器内网的ip地址等信息
docker inspect containerid(容器id)
3个redis的内网ip地址为:
redis-6379:172.17.0.2:6379
redis-6380:172.17.0.3:6379
redis-6381:172.17.0.4:6379

进入docker容器内部,查看当前redis角色(主还是从)
docker exec -ti 4934df3626d0 /bin/bash
root@4934df3626d0:/data# redis-cli
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:e7a53b1a1c968d28f0950feed7d630406283f612
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
可以看到当前3台redis都是master角色,使用redis-cli命令修改redis-6380、redis-6381的主机为redis-6379
127.0.0.1:6379> SLAVEOF 172.17.0.2 6379
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:172.17.0.2
master_port:6379
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:28
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:abbae95bc3fbe0c85832f8701f0daf15cd7f060e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:28
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:28
6380 6381都这样做
至此,redis下的主从配置就ok了。

配置Sentinel哨兵
Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
具体介绍可参考:http://redisdoc.com/topic/sentinel.html

接下来直接进入3台redis容器内部进行配置
docker exec -ti 容器id /bin/bash
进入根目录创建sentinel.conf文件
cd / && touch sentinel.conf
apt-get update
安装vim
apt-get install -y vim
修改文件内容为:
sentinel monitor mymaster 172.17.0.2 6379 1
最后,启动Redis哨兵:
使用 redis-sentinel /sentinel.conf 启动Redis哨兵监控
使用 ps –ef |grep redis 命令,可以看到redis-server和redis-sentinel正在运行
至此,Sentinel哨兵配置完毕。


测试验证
首先查看哨兵监控情况

sentinel.png

然后尝试关闭主机

sentinel222.png

再查看剩余2个从机,这里会自动选举产生新的主机

sentinel333.png

然后,我们再次将刚才停止的主机启动起来,发现启动后其自动成为从机

redis2222.png

至此,redis的主从高可用模式已经全部配置完毕,持久化下次研究了再过来记录吧,over...


出处:https://www.cnblogs.com/vipzhou 


本博客所有文章如无特别注明均为原创。作者:似水的流年
版权所有:《电光石火》 => docker搭建redis集群
本文地址:http://www.ilkhome.cn/index.php/archives/406/
欢迎转载!复制或转载请以超链接形式注明,文章为 似水的流年 原创,并注明原文地址 docker搭建redis集群,谢谢。

评论