docker快速搭建redis集群(两种暴露宿主网络的方法)

本文介绍了两种在docker中搭建redis集群的方法:1)通过host网络模式,直接使用宿主机IP;2)利用桥接网络,并配置redis的cluster-announce-ip参数。详细步骤包括容器的创建、集群配置和连接操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

宿主机IP:192.168.123.181

方案一:host网络模式

1、新建6个容器节点

for port in `seq 4001 4006`; do 
  docker run -itd --name redis-${port} --network host -v ~/redis-data/${port}/data:/data redis --cluster-enabled yes --cluster-config-file nodes.conf --port ${port}; 
done

2、进入任意一节点

docker exec -it redis-4001 /bin/bash

3、集群操作(3主3从)

redis-cli --cluster create 192.168.123.181:4001  192.168.123.181:4002  192.168.123.181:4003 192.168.123.181:4004  192.168.123.181:4005  192.168.123.181:4006 --cluster-replicas 1

4、执行redis连接操作

redis-cli -c -h 192.168.123.181 -p 4001

方案二:桥接网络,redis配置cluster-announce-ip宿主机IP

1、新建基础目录

cd ~ && mkdir redis-cluster && cd ./redis-cluster 
### 在两台宿主机上使用 Docker 部署 Redis 集群 要在两台宿主机上使用 Docker 部署 Redis 集群,可以按照以下方法实现完整的分布式架构。以下是详细的说明: #### 1. 准备工作 确保每台宿主机都已安装并运行 DockerDocker Compose。此外,在两台宿主机之间建立网络连通性是非常重要的。 - 使用 `ping` 测试两台宿主机之间的通信能力[^1]。 - 确保防火墙允许 Redis 默认端口(默认为 6379 或自定义的其他端口)以及集群间用于节点发现的高范围端口(通常为指定端口号加 10,000 的偏移量)[^2]。 #### 2. 创建 Docker 网络 为了使不同宿主机上的容器能够相互通信,建议创建一个覆盖型 Docker 网络 (overlay network),这可以通过 Docker Swarm 实现。 ```bash docker swarm init docker network create --driver overlay redis-cluster-net ``` 此命令将在整个 Swarm 中创建名为 `redis-cluster-net` 的覆盖网络,以便跨多个宿主机共享同一网络环境[^3]。 #### 3. 构建 Redis 节点镜像 基于官方 Redis 镜像构建适合集群模式的定制化版本。编写一份简单的 `Dockerfile` 文件如下所示: ```Dockerfile FROM redis:6.0.8 COPY redis.conf /usr/local/etc/redis/redis.conf CMD ["redis-server", "/usr/local/etc/redis/redis.conf"] ``` 其中 `redis.conf` 是经过调整后的配置文件,启用集群支持功能,并设置持久化选项等参数[^2]。 #### 4. 启动 Redis 容器实例 在每一台宿主机上启动若干个 Redis 容器作为独立节点加入到即将形成的集群当中去。这里假设我们希望最终形成六个节点组成的三主三从结构,则可以在第一台机器上执行下面这些指令来初始化前三个节点;而在第二台服务器重复类似操作以完成剩余部分。 对于第一个宿主机: ```bash for i in {1..3}; do \ docker run -d --net redis-cluster-net \ --name redis-node$i \ -e REDIS_PORT=$((6379+i)) \ -p $((6379+i)):$(($REDIS_PORT)) \ -v $(pwd)/node-$i/data:/data \ custom_redis_image; done; ``` 第二个宿主机同样适用以上脚本逻辑只是改变起始编号即可。 #### 5. 组建实际的 Redis Cluster 当所有的单体服务都已经正常上线之后就可以着手把它们组合成真正的分布式的键值存储系统了——即所谓的“Redis Cluster”。 利用 `redis-cli --cluster` 工具来进行手动干预是最常见也是最可靠的方式之一。具体做法是从任意一台已经成功部署好的成员那里获取其内部地址列表信息,再据此调用相应的 API 接口发起请求从而正式宣告新组建成功的组员身份关系确立完毕。 例如如果知道所有参与者的 IP 地址及其监听的服务端口的话那么可以直接这样写入命令行界面之中尝试提交给程序处理: ```bash yes | redis-cli --cluster create \ <host1-ip>:<port1> <host1-ip>:<port2> ... <hostN-ip>:<portM> --cluster-replicas 1 ``` 这条语句里的 `<hostX-ip>` 应替换成为真实的物理机或者虚拟机公网可达之处的实际数值表示形式而 `<portY>` 则对应于各自所绑定使用的 TCP 连接通道号码[^1]。 --- ### 注意事项 - **数据一致性**:由于存在多副本机制因此需要特别关注同步策略的选择问题以免造成不必要的麻烦甚至灾难性的后果发生。 - **性能优化**:针对生产环境中可能遇到的各种瓶颈现象提前做好预案措施比如合理规划硬件资源配置比例等等都是很有必要的举措[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

class_c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值