在docker中搭建一个redis主从模型

step1 : 从docker中pull redis镜像

[root@pp ~]# docker pull redis:latest 
mylatest: Pulling from library/redis
Digest: sha256:9a1a2bb9fd2bd8b2c15aaca44d8e6ba8bc448df9b7b8d7d24ba4b472e0da1b8a
Status: Image is up to date for redis:latest
docker.io/library/redis:latest

step2:下载redis.conf

[root@pp /]# mkdir -p /opt/docker-volume/redis
[root@pp /]# cd /opt/docker-volume/redis/
[root@pp redis]# wget http://download.redis.io/redis-stable/redis.conf
--2021-03-08 16:32:38--  http://download.redis.io/redis-stable/redis.conf
Resolving download.redis.io (download.redis.io)... 45.60.125.1
Connecting to download.redis.io (download.redis.io)|45.60.125.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 92222 (90K) [application/octet-stream]
Saving to: ‘redis.conf’

100%[====================================================================================================================================================================================================>] 92,222       183KB/s   in 0.5s   
2021-03-08 16:32:40 (183 KB/s) - ‘redis.conf’ saved [92222/92222]

step3:假设我们一主两从 我们需要有三个redis.conf文件 。分别命名为:redis-master.conf 、redis-slave6380.conf 、redis-slave6381.conf

首先我们配置redis-master.conf (只讲特殊配置,其他配置默认即可)

#bind 127.0.0.1 -::1  要把本机绑定ip的配置项注释掉
#默认端口
port 6379
#表示开启后台进程启动 一般都是开启的
daemonize yes
#redis主节点口令 一般集群模式下都会配置
requirepass xpp123
#表示开启aof 
appendonly yes
appendfsync everysec

接着我们配置redis-slave6380.conf

#bind 127.0.0.1 -::1  要把本机绑定ip的配置项注释掉
#默认端口
port 6380
#表示开启后台进程启动 一般都是开启的
daemonize yes
#redis6380从节点口令 一般集群模式下都会配置
requirepass xpp1234
#表示开启aof 
appendonly yes
appendfsync everysec
#配置主从关系
slaveof xx.xx.xx.xx 6379
#master的口令
masterauth xpp123

redis-slave6381.conf

#bind 127.0.0.1 -::1  要把本机绑定ip的配置项注释掉
#默认端口
port 6381
#表示开启后台进程启动 一般都是开启的
daemonize yes
#redis6380从节点口令 一般集群模式下都会配置
requirepass xpp1234
#表示开启aof 
appendonly yes
appendfsync everysec
#配置主从关系
slaveof xx.xx.xx.xx 6379
#master的口令
masterauth xpp123

step4 启动集群

[root@pp redis_docker]# docker run -it --name redis-master -v /usr/local/redis_docker/redis-master.conf:/usr/local/etc/redis/redis.conf -d -p 6379:6379 redis bin/bash
3f6eee03630e15783e00e9a804904c99d2863dcc78a391176310de7793acc5d6
[root@pp redis_docker]# docker run -it --name redis-slave -v /usr/local/redis_docker/redis-slave.conf:/usr/local/etc/redis/redis.conf -d -p 6380:6379 redis bin/bash
565cd4921da09cb7c4ec4606e3e1ebf2460b1a3d7a471e4f2834e2588f7d724b

step验证
下面我们进入docker容器,验证redis主从服务可用性。我们先启动两个容器 redis-slave-6380和redis-master-67379
docker ps 查看到两个容器状态为已启动

[root@pp /]# docker run -it --name redis-master-6379 -v /usr/local/redis_docker/redis-master.conf:/usr/local/etc/redis/redis.conf -d -p 6379:6379 redis /bin/bash
6b47084f428625fbed7b7dfb1194cd951c7b8b870ed20846afd4aca0acbe7a44
[root@pp /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                    NAMES
6b47084f4286   redis     "docker-entrypoint.s…"   5 seconds ago   Up 4 seconds   0.0.0.0:6379->6379/tcp   redis-master-6379
[root@pp /]# docker run -it --name redis-slave-6380 -v /usr/local/redis_docker/redis-slave.conf:/usr/local/etc/redis/redis.conf -d -p 6380:6379 redis /bin/bash
1d5d6cb871915551bed84c17d67fd398e2470d5aeb5585c555e62a6d3e7a1402
[root@pp /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                    NAMES
1d5d6cb87191   redis     "docker-entrypoint.s…"   3 seconds ago    Up 3 seconds    0.0.0.0:6380->6379/tcp   redis-slave-6380
6b47084f4286   redis     "docker-entrypoint.s…"   50 seconds ago   Up 50 seconds   0.0.0.0:6379->6379/tcp   redis-master-6379
[root@pp /]#

打开两个窗口 master 和 slave 看看redis服务是否完好

[root@pp /]# docker exec -it redis-master-6379 bash
root@6b47084f4286:/data# redis-server /usr/local/etc/redis/redis.conf
root@6b47084f4286:/data# redis-cli -a xpp123
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379>
[root@pp ~]# docker exec -it redis-slave-6380 bash
root@1d5d6cb87191:/data# redis-server /usr/local/etc/redis/redis.conf
root@1d5d6cb87191:/data# redis-cli -a xpp1234
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379>

看到master节点写入地方k1能在slave节点读取出来 。ok 大功告成。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。