docker安装哨兵模式

本文详细介绍了如何使用Docker构建Redis主从集群,并配置哨兵模式实现故障转移,包括创建目录、下载配置文件、修改配置、启动服务以及验证哨兵模式的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6370为主节点,6371和6372为从节点

先搭建主从

创建目录

mkdir -p /home/docker-data/redis/redis-conf

mkdir -p /home/docker-data/redis/data-6370
mkdir -p /home/docker-data/redis/data-6371
mkdir -p /home/docker-data/redis/data-6372

下载redis配置文件

GitCode - 开发者的代码家园

复制三份文件

cd /home/docker-data/redis/redis-conf

cp redis.conf redis6370.conf
cp redis.conf redis6371.conf
cp redis.conf redis6372.conf

修改3个配置文件的内容

修改 redis6370.conf

注释掉bind
#bind 127.0.0.1 -::1
保护模式关闭
protected-mode no
设置密码
requirepass 123456
开启aof日志
appendonly yes
修改自己的端口号
port 6370

修改 redis6371.conf 

注释掉bind
#bind 127.0.0.1 -::1
保护模式关闭
protected-mode no
设置密码
requirepass 123456
开启aof日志
appendonly yes
修改自己的端口号
port 6371

配置与主节点验证的密码
masterauth 123456
配置主节点的ip端口,认证主节点主从复制
replicaof 192.168.0.166 6370

修改 redis6372.conf

注释掉bind
#bind 127.0.0.1 -::1
保护模式关闭
protected-mode no
设置密码
requirepass 123456
开启aof日志
appendonly yes
修改自己的端口号
port 6372

配置与主节点验证的密码
masterauth 123456
配置主节点的ip端口,认证主节点主从复制
replicaof 192.168.0.166 6370

启动redis集群 

docker run -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:7.2.0 redis-server /etc/redis/redis.conf
 

docker run -p 6371:6371 --name redis-6371 -v /home/docker-data/redis/redis-conf/redis6371.conf:/etc/redis/redis.conf -v /home/docker-data/redis/data-6371:/data -d redis:7.2.0 redis-server /etc/redis/redis.conf
 

docker run -p 6372:6372 --name redis-6372 -v /home/docker-data/redis/redis-conf/redis6372.conf:/etc/redis/redis.conf -v /home/docker-data/redis/data-6372:/data -d redis:7.2.0 redis-server /etc/redis/redis.conf 

登陆主节点,随便set一条数据

 docker exec -it redis-6370 redis-cli -p 6370 -a password 123456> info

输入密码

auth 123456 

插入数据 

set aa 123 

 查看状态

info replication

 登陆从节点,查看是否有主节点插入的那一条数据

docker exec -it redis-6371 redis-cli -p 6371 -a password 123456> info

输入密码

auth 123456 

查看

get aa 

查看状态 

info replication

可以看到有主节点插入的数据,实现了主从复制 

配置哨兵模式

哨兵模式介绍

redis哨兵模式,就是通过哨兵节点,去监控所有主从节点
一旦主节点挂掉了,然后投票选举,自动把从节点升级为主节点
主节点恢复之后,自动变成从节点

创建目录

mkdir -p /home/docker-data/redis/master
mkdir -p /home/docker-data/redis/master/conf

mkdir -p /home/docker-data/redis/slave01
mkdir -p /home/docker-data/redis/slave01/conf

mkdir -p /home/docker-data/redis/slave02
mkdir -p /home/docker-data/redis/slave02/conf

下载sentinel.conf配置文件

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

进入主节点目录修改 sentinel.conf

cd /home/docker-data/redis/master/conf

# 修改端口
port 26379
# 设置日志存储位置
logfile "/data/sentinel.log"
# 监控主节点的配置 mymaster名字自定义;因为是三台哨兵,所以大于等于半数票数2
sentinel monitor mymaster 192.168.0.166 6370 2
# 配置主节点密码
sentinel auth-pass mymaster 123456

进入从节点1目录修改 sentinel.conf

cd /home/docker-data/redis/slave01/conf

# 修改端口
port 26380
# 设置日志存储位置
logfile "/data/sentinel.log"
# 监控主节点的配置 mymaster名字自定义;2因为是三台哨兵,所以大于等于半数票数2
sentinel monitor mymaster 192.168.0.166 6370 2
# 配置主节点密码
sentinel auth-pass mymaster 123456 

进入从节点2目录修改 sentinel.conf 

cd /home/docker-data/redis/slave02/conf

# 修改端口
port 26381
# 设置日志存储位置
logfile "/data/sentinel.log"
# 监控主节点的配置 mymaster名字自定义;2因为是三台哨兵,所以大于等于半数票数2
sentinel monitor mymaster 192.168.0.166 6370 2
# 配置主节点密码
sentinel auth-pass mymaster 123456

启动sentinel集群

docker run -itd -v /home/docker-data/redis/master/data:/data -v /home/docker-data/redis/master/conf:/etc/redis -p 26379:26379 --name redis_sentinel redis:7.2.0 redis-sentinel /etc/redis/sentinel.conf


docker run -itd -v  /home/docker-data/redis/slave01/data:/data -v  /home/docker-data/redis/slave01/conf:/etc/redis -p 26380:26380 --name redis_sentinel01 redis:7.2.0 redis-sentinel /etc/redis/sentinel.conf


docker run -itd  -v  /home/docker-data/redis/slave02/data:/data -v  /home/docker-data/redis/slave02/conf:/etc/redis -p 26381:26381 --name redis_sentinel02 redis:7.2.0 redis-sentinel /etc/redis/sentinel.conf 

验证哨兵模式 

进入容器

查看状态

docker exec -it redis_sentinel redis-cli -p 26379

info sentinel

现在的主节点是6370的端口 

停掉6370的主节点 

docker stop redis-6370

再次查看状态 

info sentinel

主节点变成了6371,这样就实现了主从自动切换,故障转移 

哨兵模式的心跳检测

 redis哨兵模式,心跳检测默认是30秒,如果超过这个时间,没有收到主节点的消息,则吧主节点下线,从节点通过选举变成主节点,主节点恢复之后,变为从节点

可以通过sentinel.conf的配置文件进行修改

sentinel down-after-milliseconds mymaster 30000

当使用Docker配置Redis哨兵模式时,可以按照以下步骤进行操作: 1. 首先,确保已经安装DockerDocker Compose。 2. 创建一个新的目录,用于存放Redis配置文件Docker Compose文件。 3. 在该目录下创建一个名为`docker-compose.yml`的文件,并在其中编写以下内容: ```yaml version: '3' services: redis-master: image: redis container_name: redis-master ports: - "6379:6379" volumes: - ./redis-master.conf:/usr/local/etc/redis/redis.conf command: redis-server /usr/local/etc/redis/redis.conf redis-slave1: image: redis container_name: redis-slave1 ports: - "6380:6379" volumes: - ./redis-slave1.conf:/usr/local/etc/redis/redis.conf command: redis-server /usr/local/etc/redis/redis.conf redis-slave2: image: redis container_name: redis-slave2 ports: - "6381:6379" volumes: - ./redis-slave2.conf:/usr/local/etc/redis/redis.conf command: redis-server /usr/local/etc/redis/redis.conf redis-sentinel1: image: redis container_name: redis-sentinel1 ports: - "26379:26379" volumes: - ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf command: redis-sentinel /usr/local/etc/redis/sentinel.conf --sentinel redis-sentinel2: image: redis container_name: redis-sentinel2 ports: - "26380:26379" volumes: - ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf command: redis-sentinel /usr/local/etc/redis/sentinel.conf --sentinel redis-sentinel3: image: redis container_name: redis-sentinel3 ports: - "26381:26379" volumes: - ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf command: redis-sentinel /usr/local/etc/redis/sentinel.conf --sentinel ``` 4. 在同一目录下创建以下配置文件: - `redis-master.conf`:Redis主节点的配置文件,内容如下: ``` bind 0.0.0.0 port 6379 daemonize yes ``` - `redis-slave1.conf`:Redis从节点1的配置文件,内容如下: ``` bind 0.0.0.0 port 6379 daemonize yes slaveof redis-master 6379 ``` - `redis-slave2.conf`:Redis从节点2的配置文件,内容如下: ``` bind 0.0.0.0 port 6379 daemonize yes slaveof redis-master 6379 ``` - `sentinel1.conf`:Redis哨兵1的配置文件,内容如下: ``` bind 0.0.0.0 port 26379 sentinel monitor mymaster redis-master 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 10000 sentinel parallel-syncs mymaster 1 ``` - `sentinel2.conf`:Redis哨兵2的配置文件,内容如下: ``` bind 0.0.0.0 port 26379 sentinel monitor mymaster redis-master 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 10000 sentinel parallel-syncs mymaster 1 ``` - `sentinel3.conf`:Redis哨兵3的配置文件,内容如下: ``` bind 0.0.0.0 port 26379 sentinel monitor mymaster redis-master 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 10000 sentinel parallel-syncs mymaster 1 ``` 5. 打开终端,进入到该目录,并执行以下命令启动Redis容器: ``` docker-compose up -d ``` 这将启动一个包含Redis主节点、两个从节点和三个哨兵节点的Docker容器。 现在,你已经成功配置了Redis哨兵模式。你可以通过访问`localhost:6379`来访问Redis主节点,`localhost:6380`和`localhost:6381`来访问两个从节点,以及`localhost:26379`、`localhost:26380`和`localhost:26381`来访问三个哨兵节点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值