docker创建redis集群并从rdm连接虚拟机中redis

拉取docker镜像,默认最新版本

docker pull redis

创建网卡

docker network create redis --subnet 172.28.0.0/16

脚本创建6个redis配置

复制代码
for port in $(seq 1 6); \
do \
mkdir -p ~/redis/node-${port}/conf
touch ~/redis/node-${port}/conf/redis.conf
cat << EOF > ~/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.28.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
复制代码

运行容器

复制代码
# 容器1
docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v ~/redis/node-1/data:/data \
-v ~/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.28.0.11 redis redis-server /etc/redis/redis.conf

# 容器2
docker run -p 6372:6379 -p 16372:16379 --name redis-2 \
-v ~/redis/node-2/data:/data \
-v ~/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.28.0.12 redis redis-server /etc/redis/redis.conf

# 容器3
docker run -p 6373:6379 -p 16373:16379 --name redis-3 \
-v ~/redis/node-3/data:/data \
-v ~/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.28.0.13 redis redis-server /etc/redis/redis.conf

# 容器4
docker run -p 6374:6379 -p 16374:16379 --name redis-4 \
-v ~/redis/node-4/data:/data \
-v ~/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.28.0.14 redis redis-server /etc/redis/redis.conf

# 容器5
docker run -p 6375:6379 -p 16375:16379 --name redis-5 \
-v ~/redis/node-5/data:/data \
-v ~/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.28.0.15 redis redis-server /etc/redis/redis.conf

# 容器6
docker run -p 6376:6379 -p 16376:16379 --name redis-6 \
-v ~/redis/node-6/data:/data \
-v ~/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.28.0.16 redis redis-server /etc/redis/redis.conf
复制代码

创建集群

复制代码
#进入redis容器1
docker exec -it redis-1 bash
# 进入容器后,在容器中创建集群(这里会提示Can I set the above configuration(type)输入yes)
redis-cli --cluster create 172.28.0.11:6379 172.28.0.12:6379 172.28.0.13:6379 172.28.0.14:6379 172.28.0.15:6379 172.28.0.16:6379 --cluster-replicas 1

# 启动redis集群客户端(-c表示集群)
redis-cli -c
#查看集群信息
cluster info
# 集群创建好之后,11,12,13为主节点,其余为从节点
cluster nodes
复制代码

运行测试

#添加redis缓存
set name Stephen
#停止刚添加缓存的对应的redis节点
docker stop redis-2
#当主节点断开之后,自动从节点切换为主节点
cluster nodes

 进入redis查看节点

docker exec -it redis-1 redis-cli -c

 进入redis后设置密码

config set requirepass root
#查看密码是否正确并生效
auth root

为每个节点创建密码

redis-cli -c -h redis-2
#复制设置密码命令并粘贴执行
config set requirepass root
#ctrl+c退出当前节点
#⬆️ 修改为redis-3
#粘贴设置密码命令都执行ok即可

建立主机与虚拟机中doker通讯(redis为镜像容器)

docker run -tid --net=host --name docker_host1 redis

打开rdm进行连接

 

 

 

退出redis查看虚拟机是否关闭防火墙(非必要)

apt-get install ufw
#查看状态
ufw status
#关闭
ufw disable
#打开
ufw enable

 

原文链接:https://cloud.tencent.com/developer/article/1838120

posted @   白玉神驹  阅读(797)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2019-07-04 8.3-构造器调用顺序
点击右上角即可分享
微信分享提示