Centos Docker部署Redis集群三主三从

一、安装Docker

yum install docker-engine

二、编辑节点配置文件

  1. 创建文件夹

    cd /home
    # 节点一:6370端口
    mkdir -p redis-cluster/redis-6370/conf
    mkdir -p redis-cluster/redis-6370/data
    # 节点二:6371端口
    mkdir -p redis-cluster/redis-6371/conf
    mkdir -p redis-cluster/redis-6371/data
    # 节点三:6372端口
    mkdir -p redis-cluster/redis-6372/conf
    mkdir -p redis-cluster/redis-6372/data
    # 节点四:6373端口
    mkdir -p redis-cluster/redis-6373/conf
    mkdir -p redis-cluster/redis-6373/data
    # 节点五:6374端口
    mkdir -p redis-cluster/redis-6374/conf
    mkdir -p redis-cluster/redis-6374/data
    # 节点六:6375端口
    mkdir -p redis-cluster/redis-6375/conf
    mkdir -p redis-cluster/redis-6375/data
    
  2. 编辑配置文件

vim redis-cluster/redis-6370/conf/redis.conf

配置文件内容(6个节点及目录内的配置文件,都可以下面配置为模板,更改端口号和集群通信端口号即可):

# 端口号
port 6370# 设置客户端连接后进行任何其他指定前需要使用的密码
requirepass 123456
## 当master服务设置了密码保护时(用requirepass制定的密码)
# slav服务连接master的密码
masterauth 123456# daemonize no 将daemonize yes注释起来或者 daemonize no设置,因为该配置和docker run中-d参数冲突,会导致容器一直启动失败
daemonize no# 任何主机都可以连接到redis
bind 0.0.0.0# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。
protected-mode no# 开启AOF
appendonly yes# 集群开关,如果配置yes则开启集群功能,此redis实例作为集群的一个节点,否则,它是一个普通的单一的redis实例。
cluster-enabled yes# 集群配置文件的名称,此配置文件不能人工编辑,它是集群节点自动维护的文件,主要用于记录集群中有哪些节点、他们的状态以及一些持久化参数等,方便在重启时恢复这些状态。通常是在收到请求之后这个文件就会被更新。
cluster-config-file nodes.conf# 节点互连超时的阀值。集群节点超时毫秒数
cluster-node-timeout 15000# 以下三个配置参数静态设定节点的运行参数, 包括对外IP, 普通Redis命令端口和集群桥接端口# Redis Cluster 不支持NATted环境和IP地址或TCP端口被重映射(remapped)的环境。
# Docker使用一种名叫port mapping的技术, 运行于Docker容器内的程序实际对外使用的端口和监听的端口可不相同. 为了让Docker 兼容Redis Cluster, 需要使用Docker的host network模式。
#为了使Redis集群在这样的环境中工作,静态每个节点都知道需要其公共地址的配置
cluster-announce-ip 192.168.3.111# 客户端连接端口
cluster-announce-port 6370# 总线端口为普通端口port+10000,所谓Cluster bus, 即使用一种二进制协议(binary protocol)进行集群内点对点(node-to-node)通讯, 包括节点失效检测, 配置更新, 故障转移(failover)认证等
cluster-announce-bus-port 6370

三、启动节点

  1. 启动节点一

    docker run -d --name redis-6370 \
    --net host --privileged=true \
    -v /home/redis-cluster/redis-6370/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/redis-cluster/redis-6370/data:/data \
    redis redis-server /etc/redis/redis.conf
    
  2. 启动节点二

    docker run -d --name redis-6371 \
    --net host --privileged=true \
    -v /home/redis-cluster/redis-6371/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/redis-cluster/redis-6371/data:/data \
    redis redis-server /etc/redis/redis.conf
    
  3. 启动节点三

    docker run -d --name redis-6372 \
    --net host --privileged=true \
    -v /home/redis-cluster/redis-6372/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/redis-cluster/redis-6372/data:/data \
    redis redis-server /etc/redis/redis.conf
    
  4. 启动节点四

    docker run -d --name redis-6373 \
    --net host --privileged=true \
    -v /home/redis-cluster/redis-6373/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/redis-cluster/redis-6373/data:/data \
    redis redis-server /etc/redis/redis.conf
    
  5. 启动节点五

    docker run -d --name redis-6374 \
    --net host --privileged=true \
    -v /home/redis-cluster/redis-6374/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/redis-cluster/redis-6374/data:/data \
    redis redis-server /etc/redis/redis.conf
    
  6. 启动节点六

    docker run -d --name redis-6375 \
    --net host --privileged=true \
    -v /home/redis-cluster/redis-6375/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/redis-cluster/redis-6375/data:/data \
    redis redis-server /etc/redis/redis.conf
    

四、配置集群

  1. 进入一个节点容器

    docker exec -it redis-6370 bash

  2. 配置集群节点

    redis-cli -a 123456 --cluster create 192.168.3.111:6370 192.168.3.111:6371 192.168.3.111:6372 192.168.3.111:6373 192.168.3.111:6374 192.168.3.111:6375 --cluster-replicas 1
    

五、验证集群节点

redis-cli -h 192.168.3.111 -p 6370 -a 123456
cluster nodes

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/106058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为云云耀云服务器L实例评测|企业项目最佳实践之建议与总结(十二)

华为云云耀云服务器L实例评测|企业项目最佳实践系列: 华为云云耀云服务器L实例评测|企业项目最佳实践之云服务器介绍(一) 华为云云耀云服务器L实例评测|企业项目最佳实践之华为云介绍(二) 华为云云耀云服务器L实例评测&#xff5…

Java基础面试-接口和抽象类的区别

抽象类 详细描述 类和类之间具有共同特征,将这些共同特征抽取出来,形成的就是抽象类。如果一个类没有足够的信息来描述一个具体的对象,这个类就是抽象类。因为类本身就是不存在的,所以抽象类无法创建对象,也就是无法…

2021年12月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python编程(1~6级)全部真题・点这里 C/C编程(1~8级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 执行以下程序 a[33,55,22,77] a.sort() for i in a:print(i)运行…

Nginx:反向代理(示意图+配置)

示意图: 反向代理 反向代理(Reverse Proxy)是代理服务器的一种,它代表服务器接收客户端的请求,并将这些请求转发到适当的服务器。当请求在后端服务器完成之后,反向代理搜集请求的响应并将其传输给客户端。…

MFC-对话框

目录 1、模态和非模态对话框: (1)、对话框的创建 (2)、更改默认的对话框名称 (3)、创建模态对话框 1)、创建按钮跳转的界面 2)、在跳转的窗口添加类 3&#xff0…

java_方法引用和构造器引用

文章目录 一、方法引用1.1、方法引用的理解1.2、格式1.3、举例 二、构造器引用2.1、格式2.2、例子2.3、数组引用 一、方法引用 1.1、方法引用的理解 方法引用,可以看做是基于lambda表达式的进一步刻画当需要提供一个函数式接口的实例时,可以使用lambda…

牛客周赛 Round 15_B

题目描述 对于一个小写字母而言,游游可以通过一次操作把这个字母变成相邻的字母。a和b邻,b和c相邻,以此类推。特殊的,a和z也是相邻的。可以认为,小写字母的相邻规则为一个环。 游游拿到了一个仅包含小写字母的字符串…

了解油封对汽车安全的影响?

油封也称为轴封或径向轴封,是车辆发动机、变速箱和其他各种机械系统中的重要部件。它们的主要功能是阻止重要发动机部件的液体(例如油或冷却剂)泄漏,同时防止污染物进入。这些看似简单的任务,但对汽车的安全性和可靠性有着深远的影响。 油封…

docker安装nessus

注册地址:https://zh-tw.tenable.com/products/nessus/nessus-essentials 临时邮箱:http://24mail.chacuo.net/ 帮助文档:https://docs.tenable.com/nessus/Content/DeployNessusDocker.htmdocker pull tenableofficial/nessusdocker run --name "my-nessus" -d -p 8…

vscode用密钥文件连接ssh:如果一直要输密码怎么办

commandshiftP:打开ssh配置文件 加上这么一段,host就是你给主机起的名字 对IdentityFile进行更改,改成相应的密钥文件 然后commandshiftP链接到主机就可以了 但是有时候它会让输入密码 这是由于你给这个IdentityFile的权限太多了&#xf…

npm 常用指令总结

1. 初始化包 一个存放了代码的文件夹,如果里面有 package.json 文件,则可以把这个文件夹称之为包。 npm init -y 注意: 由于包名不能有中文,不能有大写,不能和未来要下载的包重名. 所以我们快速初始化包时,我们的文件夹也不能违反前面说的规则.(因为默认会将文件夹的名称,作…

数据结构 - 2(顺序表10000字详解)

一:List 1.1 什么是List 在集合框架中,List是一个接口,继承自Collection。 Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示: Iterable也是一个接口,Iterabl…

【Vue面试题二十三】、你了解vue的diff算法吗?说说看

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:你了解vue的diff算法吗&…

Vue-3.1缓存组件keep-alive

问题:从首页卡片点到详情页,又点返回,数据重新加载了->希望回到原来的位置 原因:路由跳转后,组件被销毁了,返回回来组件又被重建了,所以数据重新被加载了 解决:利用keep-alive将…

【Vue面试题二十一】、Vue中的过滤器了解吗?过滤器的应用场景有哪些?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:Vue中的过滤器了解吗&am…

Java字符串String

【char】类型代表字符类型,【String】类型代表字符串类型; 1.String类 1.1 声明字符串 在Java中字符串必须包含在一对双引号(“ ")之内。双引号包含的都是字符串。 声明字符串语法: String str; //声明字符串语…

卡尔曼家族从零解剖-(02)贝叶斯滤波-知其所以然

讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的 卡尔曼家族从零解剖 链接 :卡尔曼家族从零解剖-(00)目录最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/133846882 文末正下方中心提供了本人 联系…

排序算法-选择排序法(SelectionSort)

排序算法-选择排序法(SelectionSort) 1、说明 选择排序法也是枚举法的应用,就是反复从未排序的数列中取出最小的元素,加入另一个数列中,最后的结果即为已排序的数列。选择排序法可使用两种方式排序,即在所…

【Java集合中各种数据结构的方法汇总】

文章目录 Java集合中各种数据结构的方法汇总数组 ArrayList 、LinkedList链表 LinkedList栈 Stack队列 ArrayQueue、LinkedList哈希表 HashMap堆 PriorityQueue Java集合中各种数据结构的方法汇总 获取大小:fun.size(); 判断是否为空:fun.isEmpty(); …

苍穹外卖(七) Spring Task 完成订单状态定时处理

Spring Task 完成订单状态定时处理, 如处理支付超时订单 Spring Task介绍 Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 应用场景: 信用卡每月还款提醒 火车票售票系统处理未支付订单 入职纪念日为用户发送通知 点外…