centos linux 环境用docker实现的redis的哨兵集群部署及验证

Redis的哨兵集群部署


一、新建三台虚拟机模拟三台服务器

主站: 192.168.247.128 用户名:root 密码:inspur2023

从站1 :  192.168.247.129 用户名:root 密码:inspur2023

从站2: 192.168.247.130 用户名:root 密码:inspur2023

二、安装docker和redis镜像

#(1) 安装yum

​
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# (2)安装wget下载工具

yum install wget

# (3)设置docker镜像源

yum-config-manager \

    --add-repo \

    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    

sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo



yum makecache fast

# (4)安装docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 安装docker

yum install -y docker-ce

# (5)启动docker

sudo systemctl start docker

【附:docker相关命令】

systemctl status docker

启动命令:systemctl start docker

停止命令:systemctl stop docker

设置开机启动:systemctl enable docker

# (6)docker安装redis镜像:

docker pull redis:latest

三、redis配置文件创建和配置修改(redis.conf和sentinel.conf)

(1)三台虚拟机新建部署文件目录

Mkdir docker/redis/server/conf

Mkdir Docker/redis/server/data

mkdir Docker/redis/server/log

mkdir  Docker/redis/sentinel/conf

mkdir Docker/redis/sentinel/data

mkdir Docker/redis/sentinel/log

(2)配置文件redis.conf

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

--主机:(192.168.247.128:6379)

Port: 6379  --端口

#bind 0.0.0.0  --所有网都可以访问

protected-mode no  --关闭保护模式

masterauth inspur2023

requirepass inspur2023

daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败

logfile /docker/redis/server/log/redis-server.log

dir /docker/redis/server/data/

appendonly no

replica-announce-ip 192.168.247.128

replica-announce-port 6379

--从机1:(192.168.247.129:6380)

//其余和主机相同

Port: 6380

replica-read-only no

replicaof 192.168.247.128 6379

replica-announce-ip 192.168.247.129

replica-announce-port 6380



或者slaveof(redis5.0以上)

--从机2:(192.168.247.130:6381)

//其余和主机相同

Port: 6381

replica-read-only no

Replicaof 192.168.247.128 6379

replica-announce-ip 192.168.247.130

replica-announce-port 6381

或者slaveof(redis5.0以上)

(3)配置文件sentinal.conf

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

--主机:(192.168.247.128:26379)

Port: 26379  --端口

bind: 0.0.0.0

dir /docker/redis/sentinel/data/

logfile /docker/redis/sentinel/log/redis-sentinel.log

daemonize no

sentinel announce-ip 192.168.247.128

sentinel announce-port 26379

sentinel monitor redis-master 192.168.247.128  6379 2 //redis-master是主站redis的命名

sentinel auth-pass redis-master inspur2023

sentinel down-after-milliseconds local-master 5000  //判断下线时间 5s

--从机1:(192.168.247.129:26380)

Port: 26380  --端口

bind: 0.0.0.0

# logfile /docker/redis/sentinel/log/redis-sentinel.log

daemonize no

sentinel announce-ip 192.168.247.129

sentinel announce-port 26380

sentinel monitor redis-master 192.168.247.128 6379 2

sentinel auth-pass redis-master inspur2023



//其余与主机相同

--从机2:(192.168.247.130:26381)

Port: 26381  --端口

bind: 0.0.0.0

# logfile /docker/redis/sentinel/log/redis-sentinel.log  

daemonize no

sentinel announce-ip 192.168.247.130

sentinel announce-port 26381

sentinel monitor redis-master 192.168.247.128 6379 2

sentinel auth-pass redis-master inspur2023



【注意: 配置文件原默认住进名 mymaster 需更换实际命名的 redis-master】

四、启动redis容器【redis实例启动(redis容器创建)】

主机master

docker run -d 
-p 6379:6379 
--name redis-master 
-u root 
-v /docker/redis/server/conf/redis.conf:/etc/redis/redis.conf 
-v /docker/redis/server/data:/data 
-d redis redis-server /etc/redis/redis.conf 

从机slave1

docker run -p 6380:6380 
--name redis-slave1 
-u root 
-v /docker/redis/server/conf/redis.conf:/etc/redis/redis.conf 
-v /docker/redis/server/data:/data 
-d redis redis-server /etc/redis/redis.conf

从机slave2

docker run -p 6381:6381 
--name redis-slave2 
-u root 
-v /docker/redis/server/conf/redis.conf:/etc/redis/redis.conf 
-v /docker/redis/server/data:/data 
-d redis redis-server /etc/redis/redis.conf

对以上命令简单解释:

  • 参数-p 6370:6370,冒号前的表示宿主机端口,冒号后的表示容器实例端口,意思是将容器实例端口映射到宿主机端口。
  • 参数--name redis-6370,给容器实例命名。
  • 参数-v /home/docker-data/redis/redis-conf/redis6370.conf:/etc/redis/redis.conf,冒号前是宿主机配置文件路径,冒号后是容器的配置文件路径,意思是将容器实例的配置路径映射到宿主机的路径。
  • 参数-v /home/docker-data/redis/data-6370:/data,如上面意思相同。
  • 选项-d表示以后台形式运行实例。
  • 参数redis-server /etc/redis/redis.conf表示执行redis-server命令, /etc/redis/redis.conf表示以该配置文件启动redis实例,注意配置文件必须为redis-server命令的第一个参数

五、启动redis哨兵容器【redis实例启动(redis容器创建)】

主机master

docker run -p 26379:26379
--name sentinel-master 
-v /docker/redis/sentinel/conf/sentinel.conf:/etc/redis/sentinel.conf 
-v /docker/redis/sentinel/data:/data 
-d redis redis-sentinel /etc/redis/sentinel.conf

从机slave1

docker run -p 26380:26380 
--name sentinel-slave1 
-v /docker/redis/sentinel/conf/sentinel.conf:/etc/redis/sentinel.conf 
-v /docker/redis/sentinel/data:/data 
-d redis redis-sentinel /etc/redis/sentinel.conf

从机slave2

docker run -p 26381:26381 
--name sentinel-slave2 
-v /docker/redis/sentinel/conf/sentinel.conf:/etc/redis/sentinel.conf 
-v /docker/redis/sentinel/data:/data 
-d redis redis-sentinel /etc/redis/sentinel.conf

附:容器启动失败解决方法:

Docker logs <容器名称>

Docker ps -a   //查看创建容器id

Docker start <容器id>

docker exec -it 容器id /bin/bash  //进入docker容器

六、验证主从同步

主站服务器(192.168.247.128)设置name->”tony”

Docker exec -it redis-master redis_cli -p 6379 -a inspur2023

Set name tony

Get name

从站服务器(192.168.247.129)查看

Docker exec -it redis-master redis_cli -p 6380 -a inspur2023

Get name

 验证主从同步

从站2(192.168.247.130:6381)切换为主站

主站输入:set name tony

原主站(192.168.247.128:6379)变为从站

从站输入: get name

七、验证哨兵主从切换

(1)进入哨兵容器

docker exec -it sentinel-master redis-cli -p 26379

docker exec -it sentinel-slave1 redis-cli -p 26380

docker exec -it sentinel-slave2 redis-cli -p 26381

查看状态

info sentinel

(2)主站master

进入redis容器

docker exec -it redis-master redis-cli -p 6379

docker exec -it redis-slave1 redis-cli -p 6380

docker exec -it redis-slave2 redis-cli -p 6381

输入密码

auth inspur2023

关闭主站

shutdown

查看状态

info replication

主站(192.168.247.128:6379)

从站1(192.168.247.129:6380)

从站2(192.168.247.130:6381)

主站关停:输入shutdown;间隔5s;

主站(192.168.247.128:6379)

从站1(192.168.247.129:6380)

从站2(192.168.247.130:6381)

切换为主站

主站重新启动,主站变为从站

原主站(192.168.247.128:6379)变为从站

从站1(192.168.247.129:6380)

从站2(192.168.247.130:6381)切换为主站

从站变为2个


 

  • 27
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值