Docker 部署redis cluster集群、哨兵模式心得

Docker 部署redis集群心得

最近工作是撰写部署redis的相关文档,为了验证文档有效性,使用了docker来进行安装验证

具体安装步骤与linux环境下安装差异不大,请看他的博文 最爱喝酸奶
这里只介绍docker下的一些心得:

1. 公用文件夹 化繁为简

在linux上安装redis 需要编译和安装,这些步骤与普通linux没有差异,但是docker可以在主机和container里共享文件夹,当多个container共享一个文件夹时候这个文件夹就可以将编译完成的文件共享给其他机器,大大减少安装部署时间。
使用命令: -v 主机地址:container地址来创建共享文件夹

docker run -it --name mongos1 -p 27017:27017 -v /home/bf/dockershared:/home/hostfile centos:6.6 /bin/bash

2. 端口映射还是不映射?

在集群内部,互相使用的端口其实是可以不用映射到主机的:比如我打算部署哨兵模式的redis 有结构(主 从 从),每台机器都会用到 6379 和 26379 这两个端口(倒不是固定这两个 举个例子而已)

在创建端口时候其实没必要都映射到主机,可以考虑只映射 主 从机的6379 到主机 其他因为是内部沟通 容器内的端口默认是互相联通的(除非开了防火墙)

3. cluster模式需要从机么?

可以不需要的,在创建集群的命令时候,replicas 设置为0 就可以不用添加从机即可以完成集群的创建

4. 启动服务的顺序很重要

这里我遇到一个问题 当我第一次创建好哨兵模式redis后第二次启动变成了两个master 这是因为我没有先启动redis服务 而是一台机器 一台机器启动服务和哨兵进程,导致 一个哨兵节点认为其他节点已经下线了自己做了主节点,另外两个节点因为没达到所需要的阀值时间,而保持了原结构

这里要注意 哨兵进程会不断改写redis.conf,二次启动时需要注意看情况修改。

5. bind ip 别忘记

不仅是在dockers里部署cluster 而是说部署正经用的redis都有机会踩这个坑,这里redis.conf里面的bind 可以注释掉,还有一个protemode 要为no 才能让非本地用户访问,同时别忘记 requirepass 一定要设置密码 不然就是裸奔了…

6. 复制要好过做两遍,做两遍好过做N遍

有时候很多配置文件是可以复制使用的,但是要注意,不同机器如果使用了共享文件夹,其要么是配置的位置跟共享文件夹无关,要么是每台机器单独配置文件。通常来讲 复制更不容易出错,尤其是各种配置问题。

很多时候会遇到一些配置不对,或者各种缺东少西的问题,先部署一个主从节点先试过OK了再添加其他节点 省着做一堆无用功。

7. 认真看.conf模板文件内的内容

一开始我有个疑问,如果我主从机器的密码不同,那么哨兵是怎么搞其他的从机的密码呢?结果搞了一圈发现,.conf文件里明确写了,哨兵模式下,从机的密码要跟主机一致,不然哨兵就无法连接从机了…
说明看模板文档真的很重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Docker中集成Redis Cluster集群,可以按照以下步骤操作: 1. 创建一个Docker Compose文件,定义Redis Cluster集群的服务和配置。例如: ``` version: '3' services: redis-1: image: redis:latest command: redis-server /redis-conf/redis-1.conf ports: - 6381:6381 volumes: - ./conf/redis-1.conf:/redis-conf/redis-1.conf - ./data/redis-1:/data redis-2: image: redis:latest command: redis-server /redis-conf/redis-2.conf ports: - 6382:6382 volumes: - ./conf/redis-2.conf:/redis-conf/redis-2.conf - ./data/redis-2:/data redis-3: image: redis:latest command: redis-server /redis-conf/redis-3.conf ports: - 6383:6383 volumes: - ./conf/redis-3.conf:/redis-conf/redis-3.conf - ./data/redis-3:/data redis-4: image: redis:latest command: redis-server /redis-conf/redis-4.conf ports: - 6384:6384 volumes: - ./conf/redis-4.conf:/redis-conf/redis-4.conf - ./data/redis-4:/data redis-5: image: redis:latest command: redis-server /redis-conf/redis-5.conf ports: - 6385:6385 volumes: - ./conf/redis-5.conf:/redis-conf/redis-5.conf - ./data/redis-5:/data redis-6: image: redis:latest command: redis-server /redis-conf/redis-6.conf ports: - 6386:6386 volumes: - ./conf/redis-6.conf:/redis-conf/redis-6.conf - ./data/redis-6:/data networks: redis-cluster: driver: bridge ``` 2. 在同一目录下创建一个conf文件夹,用于存储每个Redis节点的配置文件。例如,创建一个redis-1.conf文件: ``` port 6381 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes ``` 3. 启动Redis Cluster集群服务: ``` docker-compose up -d ``` 4. 将节点加入Redis Cluster集群。可以使用redis-cli命令行工具连接到每个节点,并使用CLUSTER MEET命令将节点加入集群。例如: ``` redis-cli -h 127.0.0.1 -p 6381 > CLUSTER MEET 127.0.0.1 6382 > CLUSTER MEET 127.0.0.1 6383 > CLUSTER MEET 127.0.0.1 6384 > CLUSTER MEET 127.0.0.1 6385 > CLUSTER MEET 127.0.0.1 6386 ``` 5. 创建一个Redis Cluster集群。可以使用redis-cli命令行工具连接到任何一个节点,并使用CLUSTER CREATE命令来创建集群。例如: ``` redis-cli --cluster create 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1 ``` 6. 现在,您已经成功地在Docker中集成了Redis Cluster集群。可以使用redis-cli命令行工具连接到任何一个节点,并开始使用集群
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值