Docker搭建Redis主从复制

docker搭建redis主从复制,首先我们应该先拉取redis镜像

docker pull  redis

 默认拉取最新版本就行,当我们把redis镜像拉取下来之后,就可以进行生成容器。

我们先在linux上面创建一个redis目录,用于存储redis的配置文件,这里我们创建三个不同端口的配置文件目录分别是:6396,6397,6398,

[root@VM-4-6-centos 6396]# ls
conf  data

这块是我们端口里面的目录

[root@VM-4-6-centos conf]# ls
redis.conf

然后我们在conf里面创建一个redis.conf的配置文件

 

protected-mode no

#这下面的端口根据不同的目录进行修改这里拿6398做示例

port 6398

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize no

supervised no

#这里也需要改

pidfile /var/run/redis_6398.pid

loglevel notice

logfile ""

databases 30

always-show-logo yes

save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir ./

replica-serve-stale-data yes

replica-read-only yes

repl-diskless-sync no

repl-disable-tcp-nodelay no

replica-priority 100

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

appendonly yes

appendfilename "appendonly.aof"

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes

lua-time-limit 5000

slowlog-max-len 128

notify-keyspace-events ""

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

stream-node-max-bytes 4096
stream-node-max-entries 100

activerehashing yes

hz 10

dynamic-hz yes

aof-rewrite-incremental-fsync yes

rdb-save-incremental-fsync yes
 

 当我们给三个端口配完配置之后,我们开始分别给三个端口生成容器,下面是生成容器的命令

#这里的6397指的是你自己的三个端口

docker run -p 6397:6397 --name redis6397 --sysctl net.core.somaxconn=1024 -v /redis/6398/data:/data -v /redis/6396/conf:/usr/local/etc/redis/redis.conf  -e TIME_ZONE="Asia/Shanghai" -e TZ="Asia/Shanghai" -d redis redis-server /usr/local/etc/redis/redis.conf/redis.conf --appendonly yes

 

 --docker run (启动并创建容器容器)

-- -p 指定映射的端口 左边的是本地,右边是docker内

-- --name 指定容器的名字

-- --sysctl 指定给他分配的大小

-- 第一个-v 是指定他的数据文件指定挂载到我们的哪个目录下(就是我们上边自己手动建立的文件夹)

-- 第二个 -v 是指定他的配置文件挂载到我们本地的哪个文件夹。

-- 后边俩个-e 是指定他的时区

-- -d 是 指定他在后台运行 

-- redis-sever 指定启动哪个目录下的redis文件

--  --appendonly yes  开启持久化

这里是我的创建好的三个容器

[root@VM-4-6-centos conf]# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED       STATUS             PORTS                                                  NAMES
3f2acbeb71c7   redis         "docker-entrypoint.s…"   3 hours ago   Up 3 hours         6379/tcp, 0.0.0.0:6398->6398/tcp, :::6398->6398/tcp    redis6398
6bffb35dd4b1   redis         "docker-entrypoint.s…"   3 hours ago   Up About an hour   6379/tcp, 0.0.0.0:6397->6397/tcp, :::6397->6397/tcp    redis6397
33cdf7599ffb   redis         "docker-entrypoint.s…"   3 hours ago   Up 3 hours         6379/tcp, 0.0.0.0:6396->6396/tcp, :::6396->6396/tcp    redis6396
 

 容器创建好之后进行主从复制的配置

docker exec -it   容器id   bash

#进入容器之后运行redis

[root@VM-4-6-centos conf]# docker exec -it 3f2 bash
root@3f2acbeb71c7:/data# redis-cli -h 服务器ip -p 6398
服务器ip:6398> slaveof 服务器ip 6396

OK

-h 指的是自己服务器的ip 因为我用的linux下的docker所以直接使用服务器ip 如果是本地可以使用127.0.0.1

-p 指的是你自己刚刚配置的端口

 

docker exec -it   容器id   bash

#进入容器之后运行redis

[root@VM-4-6-centos conf]# docker exec -it 3f2 bash
root@3f2acbeb71c7:/data# redis-cli -h 服务器ip -p 6397
服务器ip:6397> slaveof 服务器ip 6396

OK

-h 指的是自己服务器的ip 因为我用的linux下的docker所以直接使用服务器ip 如果是本地可以使用127.0.0.1

-p 指的是你自己刚刚配置的端口

 将两个redis从容器进行配置到主容器上,这里我们进入主容器里面看可以看见配置的两个从库

121.4.33.132:6396> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=121.4.33.132,port=6398,state=online,offset=14112,lag=1
slave1:ip=121.4.33.132,port=6397,state=online,offset=14126,lag=0
master_failover_state:no-failover
master_replid:c9e3b92b4adfbf1f52ad55c779ece1c64263186a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14126
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14126
121.4.33.132:6396> 
 

 然后我们进行存数据

[root@VM-4-6-centos conf]# docker exec -it 33c bash
root@33cdf7599ffb:/data# redis-cli -h 121.4.33.132 -p 6396
121.4.33.132:6396> set 22 hello
OK

 然后从库进行取,可以看见我们已经将数据取出来,这样的话主从复制就配置成功了

root@3f2acbeb71c7:/data# redis-cli -h 121.4.33.132 -p 6398
121.4.33.132:6398> get 11
(nil)
121.4.33.132:6398> get 22
"hello"
121.4.33.132:6398> 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要使用Docker搭建Redis主从复制,你需要按照以下步骤进行操作: 1. 首先,确保你已经安装了Docker。如果没有,请先安装Docker。 2. 创建一个用于主节点的Redis容器。在终端中运行以下命令: ``` docker run -d --name redis-master -p 6379:6379 redis ``` 这将在后台运行一个名为redis-master的Redis容器,并将其映射到本地的6379端口。 3. 创建两个用于从节点的Redis容器。在终端中运行以下命令: ``` docker run -d --name redis-slave1 redis docker run -d --name redis-slave2 redis ``` 这将在后台分别运行两个名为redis-slave1和redis-slave2的Redis容器。 4. 获取主节点的IP地址。运行以下命令以获取主节点容器的IP地址: ``` docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-master ``` 记下这个IP地址,稍后将在配置从节点时使用。 5. 配置从节点连接到主节点。首先,进入第一个从节点容器: ``` docker exec -it redis-slave1 redis-cli ``` 然后,运行以下命令设置从节点连接到主节点: ``` slaveof <主节点IP地址> 6379 ``` 将`<主节点IP地址>`替换为步骤4中获取的主节点IP地址。 6. 重复步骤5,配置第二个从节点连接到主节点: ``` docker exec -it redis-slave2 redis-cli slaveof <主节点IP地址> 6379 ``` 7. 现在,你已经成功配置了Redis主从复制。你可以通过连接到任何一个从节点,并在其中执行命令来验证复制是否正常工作。例如,可以在从节点上运行`INFO replication`命令来检查复制状态。 请注意,这只是一个基本的设置示例。在实际生产环境中,你可能还需要进行更多的配置和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值