docker部署redis哨兵集群(主从复制/一主二从三哨兵/多服务器)

Redis主从复制+哨兵集群搭建(Docker部署)

先搭主从,再建哨兵,三个实例,一主二从三哨兵

本次搭建使用两台服务器,主节点一台10.0.0.1,两个从节点一台10.0.0.2,两个实例

master:6379/26379

slave1:6379/26379

slave2:6380/26380

一、构建主从复制

1. 前置准备

  1. 到官网下载对应版本的配置文件

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

  1. pull docker镜像(此处选择redis:6.2.4)

此版本验证时不需要指定用户名

docker pull redis:6.2.4
  1. 创建文件夹

master

mkdir /data/redis/{conf,logs,data}

slave

mkdir /data/redis/{conf,data}
mkdir /data/redis/data/{slave1,slave2}
  1. 修改三节点配置文件
  1. 主从哨兵模式cluster-enabled配置必须为no,不然会导致replicaof配置无法使用,启动报错(集群模式启动,添加从节点需要redis-cli--cluster add-node命令,并指定从节点应复制的主节点)

  2. 主节点配置requirepass后,从节点必须配置masterauth,配置值必须相同(主节点auth访问)

  3. docker run启动项使用-d时,配置文件中daemonize必须是no,不然无法启动,会冲突(以守护线程启动)

master

bind 0.0.0.0
port 6379
logfile "/data/logs/redis.log"
requirepass 123456
appendonly yes

slave-1

bind 0.0.0.0
port 6379
logfile "/data/logs/redis.log"
replicaof 10.0.0.1 6379
masterauth 123456
requirepass 123456
appendonly yes

slave-2

bind 0.0.0.0
port 6380
logfile "/data/logs/redis.log"
replicaof 10.0.0.1 6379
masterauth 123456
requirepass 123456
appendonly yes

2. docker启动运行

--privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限

-p 第一个是redis的连接端口 第二个是哨兵的连接端口,程序使用哨兵集群时需要连接哨兵的端口

redis-server /etc/redis/redis.conf 使用配置文件启动

master

docker run -p 6379:6379 -p 26379:26379  --privileged=true --name redis-master -v /data/redis/conf/redis_master.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d --restart=always redis:6.2.4 redis-server /etc/redis/redis.conf

slave1

docker run -p 6379:6379 -p 26379:26379  --privileged=true --name redis-slave1 -v /data/redis/conf/redis_slave1.conf:/etc/redis/redis.conf -v /data/redis/data/slave1:/data -d --restart=always redis:6.2.4  redis-server /etc/redis/redis.conf

slave2

docker run -p 6380:6380 -p 26380:26380  --privileged=true --name redis-slave2 -v /data/redis/conf/redis_slave2.conf:/etc/redis/redis.conf -v /data/redis/data/slave2:/data -d --restart=always redis:6.2.4  redis-server /etc/redis/redis.conf

3. 验证主从

进入master

docker exec -it redis-master bash

使用redis-cli客户端

redis-cli -a "123456"

查看主从节点状态

info replication
# Replication
role:master
connected_slaves:2
slave0:ip=10.0.0.2,port=6380,state=online,offset=19452,lag=1
slave1:ip=10.0.0.2,port=6379,state=online,offset=19452,lag=1
master_failover_state:no-failover
master_replid:4b69bd3973852fdd62dceb2423edfd26bbba0c0d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:19589
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:19589

主从构建成功

二、构建哨兵集群

1. 哨兵配置文件

配置文件解释

#哨兵端口号 一定要和启动命令映射第二个端口号一致

port 26379

#以守护线程后台启动

daemonize yes

#2为法定人数限制(quorum) 即3/2=1.5,取值为2

sentinel monitor mymaster 10.0.0.1 6379 2

#mymaster集群中master的密码,注意此行要在上面行的下面

sentinel auth-pass mymaster "123456"

master

port 26379
daemonize yes
sentinel monitor mymaster 10.0.0.1 6379 2
sentinel auth-pass mymaster 123456

slave1

port 26379
daemonize yes
sentinel monitor mymaster 10.0.0.1 6379 2
sentinel auth-pass mymaster 123456

slave2

port 26380
daemonize yes
sentinel monitor mymaster 10.0.0.1 6379 2
sentinel auth-pass mymaster 123456

2. 启动哨兵

依次三台在sentinel.conf 配置文件同一级目录执行

redis-sentinel sentinel.conf

3. 验证哨兵

进入master哨兵节点

redis-cli -p 26379 -a 123456

查看哨兵状态

info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=10.0.0.1:6379,slaves=2,sentinels=4
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在多台服务器部署Redis集群并互联,可以使用Docker进行部署。以下是大致的步骤: 1. 在每台服务器上安装DockerDocker Compose。 2. 创建一个Docker Compose文件,定义Redis容器的配置和网络。 3. 在每台服务器上运行Docker Compose,启动Redis容器。 4. 在一个服务器上运行redis-trib.rb脚本,创建Redis集群并连接所有节点。 下面是一个简单的Docker Compose文件示例: ``` version: '3' services: redis1: image: redis ports: - "6379:6379" networks: redisnet: ipv4_address: 172.20.0.2 redis2: image: redis ports: - "6380:6379" networks: redisnet: ipv4_address: 172.20.0.3 redis3: image: redis ports: - "6381:6379" networks: redisnet: ipv4_address: 172.20.0.4 networks: redisnet: driver: bridge ipam: driver: default config: - subnet: 172.20.0.0/24 ``` 在上面的示例中,我们定义了Redis容器,每个容器都映射了6379端口,并且属于redisnet网络,并分别分配了不同的IP地址。 接下来,我们在每台服务器上运行Docker Compose,启动Redis容器: ``` $ docker-compose up -d ``` 最后,在一个服务器上运行redis-trib.rb脚本,创建Redis集群并连接所有节点: ``` $ docker exec -it redis1 redis-cli --cluster create 172.20.0.2:6379 172.20.0.3:6379 172.20.0.4:6379 --cluster-replicas 0 ``` 这个命令将创建一个由个节点组成的Redis集群,并将它们连接起来。如果您有更多的Redis节点,可以添加它们到这个命令中。 希望这个简单的示例可以帮助你部署Redis集群并互联。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值