使用docker初步实现redis master-slave模式

本教程详细介绍了如何使用Docker拉取Redis镜像并启动3个容器,配置Redis主从复制。首先拉取Redis镜像,然后启动3个不同端口的容器作为master和两个slave。接着,通过容器内部IP地址设置master-slave关系,并在每个容器内验证复制配置。最后,通过检查replication信息及数据同步验证主从复制是否成功。

第一步:拉取redis镜像

命令:

docker pull redis

第二步:启动3个redis容器

redis容器1:

 docker run -p 6379:6379 --name redis-6379 -d redis

redis容器2:

 docker run -p 6380:6379 --name redis-6380 -d redis

redis容器3:

 docker run -p 6381:6379 --name redis-6381 -d redis

第三步:执行master-slave复制命令

将容器名为 redis-6379为master,此时需要使用该容器的ip地址,通过以下命令获取

 docker inspect redis-6379 | grep IPAddress

获取到ip地址后,新打开俩个命令行页面,分别执行以下命令

 docker exec -it redis-6380 bash  
 docker exec -it redis-6381 bash

此时,已经进入容器内部,这个时候分别在俩个命令行页面执行以下命令进入redis客户端

 redis-cli

在redis客户端内执行(核心命令

 slaveof   (redis-6379ip地址)   6379

至此。实现redis master-slave复制模式完成。

第四步:验证是否已实现

方案一:
在redis客户端执行以下命令,可以看到redis的角色是master还是slave

info replication

方案二:
在redis-6379容器 redis客户端中设置key和value

set master-slave 1

在redis-6380、redis-6381容器中读取设置的key

get master-slave
^C[root@k8smaster 2]# kubectl -n redis-server get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES redis-master-966f8c49b-cfk65 0/1 Running 2 5m1s 10.244.0.13 k8smaster <none> <none> redis-slave1-547f7f4df5-7llz8 0/1 Running 2 5m1s 10.244.1.44 k8snode1 <none> <none> redis-slave2-88d55ddb9-n2mlj 0/1 Running 0 5m1s 10.244.2.26 k8snode2 <none> <none> [root@k8smaster 2]# kubectl -n redis-server get pv,pvc NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE persistentvolume/mysql-master-pv 10Gi RWO Retain Bound mysql-server/mysql-master-pvc 3h7m persistentvolume/mysql-slave1-pv 10Gi RWO Retain Bound mysql-server/mysql-slave1-pvc 3h7m persistentvolume/mysql-slave2-pv 10Gi RWO Retain Bound mysql-server/mysql-slave2-pvc 3h7m persistentvolume/redis-master-pv 1Gi RWO Retain Bound redis-server/redis-master-pvc 5m13s persistentvolume/redis-slave1-pv 1Gi RWO Retain Bound redis-server/redis-slave1-pvc 5m13s persistentvolume/redis-slave2-pv 1Gi RWO Retain Bound redis-server/redis-slave2-pvc 5m13s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/redis-master-pvc Bound redis-master-pv 1Gi RWO 5m13s persistentvolumeclaim/redis-slave1-pvc Bound redis-slave1-pv 1Gi RWO 5m13s persistentvolumeclaim/redis-slave2-pvc Bound redis-slave2-pv 1Gi RWO 5m13s [root@k8smaster 2]# kubectl -n redis-server exec -it redis-master-7d5f8d5f76-2xq4z -- redis-cli -a redispass Error from server (NotFound): pods "redis-master-7d5f8d5f76-2xq4z" not found [root@k8smaster 2]# kubectl -n redis-server exec -it redis-master-966f8c49b-cfk65 -- redis-cli -a redispass Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. AUTH failed: ERR AUTH <password> called without any password configured for the default user. Are you sure your configuration is correct? 127.0.0.1:6379> SET testkey "hello redis" OK 127.0.0.1:6379> exit [root@k8smaster 2]# kubectl -n redis-server exec -it redis-slave1-547f7f4df5-7llz8 -- redis-cli -a redispass GET testkey Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. Could not connect to Redis at 127.0.0.1:6379: Connection refused command terminated with exit code 1
最新发布
10-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值