redis 用docker集群部署:三主三从
要在CentOS 7上使用Docker部署3个主Redis节点和3个从Redis节点,你可以按照以下步骤进行操作:
安装Docker:首先,确保已经安装了Docker。可以执行以下命令来检查是否已安装Docker:
docker version
如果未安装Docker,请根据Docker官方文档的指导进行安装。
创建网络:创建一个自定义的Docker网络,以便Redis容器能够相互通信。执行以下命令创建网络:
docker network create redis-net
运行Redis主节点容器:运行3个Redis主节点容器,执行以下命令:
docker run -d --name redis-master1 --network redis-net -p 6379:6379 redis
docker run -d --name redis-master2 --network redis-net -p 6380:6379 redis
docker run -d --name redis-master3 --network redis-net -p 6381:6379 redis
这将在后台运行3个Redis主节点容器,并将它们连接到redis-net网络。每个主节点容器的Redis服务将在不同的端口上监听(6379、6380、6381)。
运行Redis从节点容器:运行3个Redis从节点容器,并将它们连接到对应的Redis主节点。执行以下命令:
docker run -d --name redis-slave1 --network redis-net redis redis-server --slaveof redis-master1 6379
docker run -d --name redis-slave2 --network redis-net redis redis-server --slaveof redis-master2 6379
docker run -d --name redis-slave3 --network redis-net redis redis-server --slaveof redis-master3 6379
这将在后台运行3个Redis从节点容器,并将它们连接到redis-net网络。每个从节点容器将根据对应的主节点的IP地址和端口进行配置。
验证主从复制:使用以下命令验证Redis主从复制是否正常工作:
docker exec -it redis-master1 redis-cli
进入Redis主节点1的命令行界面后,执行以下命令:
info replication
如果输出中包含"role:slave"和"master_link_status:up",表示从节点已成功连接到主节点1。
第二种方法:
redis用docker 部署主从
docker pull redis
cd /home/soft
mkdir -p redis/config
mkdir -p redis/data/data6379 redis/data/data6380 redis/data/data6381
cd /home/soft/redis/config
vi redis6379.conf :
port 6379
vi redis6380.conf :
#节点容器端口
port 6380
#宿主机ip、master端口
replicaof 192.168.10.15 6379
#宿主机ip
slave-announce-ip 192.168.10.15
#节点宿主机端口
slave-announce-port 6380
vi redis6381.conf :
port 6381
replicaof 192.168.10.15 6379
slave-announce-ip 192.168.10.15
slave-announce-port 6381
docker run \
-p 6379:6379 \
--name master-redis \
--restart=always \
-v /home/soft/redis/data/data6379:/data \
-v /home/soft/redis/config/redis6379.conf:/etc/redis/redis.conf \
-v /etc/localtime:/etc/localtime \
-d redis redis-server /etc/redis/redis.conf
docker run \
-p 6380:6380 \
--name salve1-redis \
--restart=always \
-v /home/soft/redis/data/data6380:/data \
-v /home/soft/redis/config/redis6380.conf:/etc/redis/redis.conf \
-v /etc/localtime:/etc/localtime \
-d redis redis-server /etc/redis/redis.conf
docker run \
-p 6381:6381 \
--name salve2-redis \
--restart=always \
-v /home/soft/redis/data/data6381:/data \
-v /home/soft/redis/config/redis6381.conf:/etc/redis/redis.conf \
-v /etc/localtime:/etc/localtime \
-d redis redis-server /etc/redis/redis.conf
验证:
[root@localhost config]# docker exec -it master-redis redis-cli -p 6379
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.75.10,port=6380,state=online,offset=98,lag=1
slave1:ip=192.168.75.10,port=6381,state=online,offset=98,lag=1
master_failover_state:no-failover
master_replid:f562378b948c944b4cb6e10307cf5c5b12f349ce
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:98
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:98
127.0.0.1:6379> PING
PONG