docker-redis-集群

–先安装docker
–docker 安装
ip addr
–安装docker
yum install docker
–显示当前正在运行的容器
docker ps
–查看docker版本
docker -v
–启动docker
systemctl start docker
–开机自启
systemctl enable docker

–镜像下载
docker pull hub.c.163.com/library/redis:latest
–查看是否成功
docker images

[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hub.c.163.com/library/redis latest d4f259423416 3 years ago 106 MB

–运行redis镜像 启动3个redis
docker run --name redis-6379 -p 6379:6379 -d hub.c.163.com/library/redis
docker run --name redis-6380 -p 6380:6379 -d hub.c.163.com/library/redis
docker run --name redis-6381 -p 6381:6379 -d hub.c.163.com/library/redis

–查看是否启动成功
docker ps

[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c979989c4c88 hub.c.163.com/library/redis “docker-entrypoint…” 21 hours ago Up 21 hours 0.0.0.0:6381->6379/tcp redis-6381
d5fb2e0828fa hub.c.163.com/library/redis “docker-entrypoint…” 21 hours ago Up 21 hours 0.0.0.0:6380->6379/tcp redis-6380
1bf05864a815 hub.c.163.com/library/redis “docker-entrypoint…” 21 hours ago Up 3 seconds 0.0.0.0:6379->6379/tcp redis-6379
–redis 容器名和容器ID
redis-6379:172.17.0.2:6379 1bf05864a815
redis-6380:172.17.0.3:6379 d5fb2e0828fa
redis-6381:172.17.0.4:6379 c979989c4c88
–查看内网ip地址
docker inspect 容器_id
–进入docker容器
docker exec -ti 容器ID /bin/bash
进入容器后 redis-cli连接redis服务端,连接服务后,

使用上面的方法,分别进入 redis-6379、redis-6380、redis-6381容器内部,并连接redis服务端
分别在redis-6380和redis-6381使用
SLAVEOF 172.17.0.3 6379 命令
slaveof no one 退出复制,不在作为从节点,恢复自身master(已同步得数据不会消失)
在redis-6379 使用 info replication 命令,验证主从关系是否配置成功

–集群
docker exec -ti 1bf05864a815 /bin/bash
docker exec -ti d5fb2e0828fa /bin/bash
docker exec -ti c979989c4c88 /bin/bash

–哨兵模式
–分别进入3台Redis容器内部,执行以下操作
–首先,进入Docker容器内部使用 docker exec -ti 容器ID /bin/bash 分别进入三个Redis容器
–然后,编写Redis哨兵配置文件
–cd / 到根目录创建 sentinel.conf
touch sentinel.conf
–安装vim
apt-get update
apt-get install vim

–每个node添加一致,为master节点ip和端口
vim sentinel.conf
添加以下内容 sentinel monitor host6379 172.17.0.2 6379 1

–sentinel.conf文件配置参数解释
sentinel monitor
–第一个参数是给master起的名字,第二个参数为master IP,第三个为master端口,第四个为当该master挂了的时候,若想将该master判为失效,
–在Sentine集群中必须至少2个Sentine同意才行

docker cp /root/sentinel.conf 1bf05864a815:/
sentinel monitor host6379 172.17.0.2 6379 1
docker cp /root/sentinel.conf d5fb2e0828fa:/
sentinel monitor host6379 172.17.0.2 6379 1
docker cp /root/sentinel.conf c979989c4c88:/
sentinel monitor host6379 172.17.0.2 6379 1

–启动哨兵
redis-sentinel /sentinel.conf
–验证
ps –ef |grep redis
可以看到redis-server和redis-sentinel正在运行

–sentinel API
–登陆sentinel命令
redis-cli -h 172.17.0.3 -p 26379
ping:返回pong
sentinel masters:列出所有被监视的主服务器,以及状态。
sentinel slaves :列出给定主服务器的所有从服务器,以及状态。
sentinel get-master-addr-by-name:返回给定名字的主服务器的IP地址和端口号
sentinel failover:当主服务器失效时,在不询问其他sentinel的情况下,强制一次自动故障转移。

–备注
–vim安装不上,可以在本地更改配置文件然后放到容器
–复制 容器名或者id
docker cp 1bf05864a815:/etc/apt/sources.list /root
docker cp /root 1bf05864a815:/etc/apt/sources.list

–首先要能理解SDOWN和ODOWN这两个词的含义,上面已经详细介绍了它们俩。在此再提一下:
SDOWN:subjectively down,直接翻译的为"主观"失效,即当前sentinel实例认为某个redis服务为"不可用"状态.
ODOWN:objectively down,直接翻译为"客观"失效,即多个sentinel实例都认为master处于"SDOWN"状态,那么此时master将处于ODOWN,ODOWN可以简单理解为master已经被集群确定为"不可用",将会开启failover.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值