docker-compose搭建redis集群

这里用docker-compose在一台机器搭建三主三从,生产环境肯定是在多台机器搭建,否则一旦这台宿主机挂了,redis集群全挂了,依然是单点故障。同时,受机器性能极限影响,其并发也上不去,算不上高并发。

单机存在的问题:

  • 机器故障,导致redis失效;
  • 容量瓶颈,容量不能水平扩展;
  • OPS( operation per second 每秒处理指令数),一台机器的网络带宽是有限的,如果有多台机器,这个处理能力就上来了。

主从存在的问题:

  • 主服务挂了,redis服务就无法写入

哨兵模式存在的问题:

  • 配置复杂
  • 性能和高可用表现一般,切换瞬间无法使用,只有一台主机,性能受限。

集群存在问题:

  • 自动故障切换时,集群状态fail无法对外提供服务。

技术都有优点和缺点,适合才是最好

服务器宿主机IP

192.168.123.182

创建redis集群配置基本目录

mkdir -p /root/redis-cluster

切换至redis集群配置基本目录

cd /root/redis-cluster

编写redis.conf配置模板文件redis-cluster.tmpl

# 端口号
port ${PORT}
# 绑定ip
bind 0.0.0.0
# redis-cli访问密码
requirepass 123456i
# 访问主节点密码
masterauth 123456i
# 保护模式,默认是yes,开启保护模式
protected-mode no
# 是否守护模式,docker方式不需要
daemonize no
# 是否开启AOF持久化模式
appendonly yes
# 是否开启集群模式
cluster-enabled yes
# 集群节点信息文件
cluster-config-file nodes.conf
# 集群节点连接超时时间
cluster-node-timeout 15000
# 集群节点宿主机IP
cluster-announce-ip 192.168.123.182
# 集群节点映射端口
cluster-announce-port ${PORT}
# 集群节点总线端口
cluster-announce-bus-port 1${PORT}

在这里插入图片描述

改配置模板,前面是redis.conf单机时常规配置,只是最后六条配置是redis集群配置

下面语句实现模板变量的替换:
在这里插入图片描述

下面for循环实现6个redis配置文件生成:

for port in `seq 6380 6385`
domkdir -p ${port}/{conf,data} \&& PORT=${port} envsubst < redis-cluster.tmpl > ${port}/conf/redis.conf
done

生成配置文件如下图:
在这里插入图片描述

docker-compose.yml文件编写:

version: "3.3"# 定义服务
services:redis-6380: # 服务名称image: redis # 容器镜像container_name: redis-6380 # 容器名称restart: always # 容器总是重启network_mode: "host" # host 网络模式ports: # 映射端口- 6380:6380volumes: # 目录挂载- /root/redis-cluster/6380/conf/redis.conf:/usr/local/redis/redis.conf- /root/redis-cluster/6380/data:/datacommand: redis-server /usr/local/redis/redis.conf # 服务启动命令redis-6381:image: rediscontainer_name: redis-6381network_mode: "host"ports:- 6381:6381volumes:- /root/redis-cluster/6381/conf/redis.conf:/usr/local/redis/redis.conf- /root/redis-cluster/6381/data:/datacommand: redis-server /usr/local/redis/redis.confredis-6382:image: rediscontainer_name: redis-6382network_mode: "host"ports:- 6382:6382volumes:- /root/redis-cluster/6382/conf/redis.conf:/usr/local/redis/redis.conf- /root/redis-cluster/6382/data:/datacommand: redis-server /usr/local/redis/redis.confredis-6383:image: rediscontainer_name: redis-6383network_mode: "host"ports:- 6383:6383volumes:- /root/redis-cluster/6383/conf/redis.conf:/usr/local/redis/redis.conf- /root/redis-cluster/6383/data:/datacommand: redis-server /usr/local/redis/redis.confredis-6384:image: rediscontainer_name: redis-6384network_mode: "host"ports:- 6384:6384volumes:- /root/redis-cluster/6384/conf/redis.conf:/usr/local/redis/redis.conf- /root/redis-cluster/6384/data:/datacommand: redis-server /usr/local/redis/redis.confredis-6385:image: rediscontainer_name: redis-6385network_mode: "host"ports:- 6385:6385volumes:- /root/redis-cluster/6385/conf/redis.conf:/usr/local/redis/redis.conf- /root/redis-cluster/6385/data:/datacommand: redis-server /usr/local/redis/redis.conf

编写完毕,整体情况:
在这里插入图片描述
根据docker-compose.yml文件启动服务:
在这里插入图片描述
服务创建后,通过如下操作实现redis集群创建

# 进入其中一个redis容器内
docker exec -it redis-6380 /bin/bash# 用redis-cli创建整个redis集群
# -a 表示连接的密码
# --cluster create 表示需要集群的redis主机和端口
# --cluster-replicas 1 其中的1表示一主一从
redis-cli -a 123456i --cluster create 192.168.123.182:6380 192.168.123.182:6381 192.168.123.182:6382 192.168.123.182:6383 192.168.123.182:6384 192.168.123.182:6385 --cluster-replicas 1

在这里插入图片描述
在这里插入图片描述
至此,三主三从搭建完毕。

查看集群状态:

redis-cli -a 123456i --cluster check 192.168.123.182:6380

在这里插入图片描述

redis-cli -p 6380 -a 123456i# 查看集群信息
cluster info# 查看集群节点
cluster nodes

在这里插入图片描述

这里的镜像是:redis-7.2.4

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

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

相关文章

《WebKit 技术内幕》学习之十一(2):多媒体

2 视频 2.1 HTML5视频 在HTML5规范定义中&#xff0c;Web开发者可以使用“video”元素来播放视频资源。视频中有个重要的问题就是视频编码格式&#xff0c;对此&#xff0c;目前标准中包含了三种编码格式&#xff0c;它们分别是Ogg、MPEG4和WebM。其中Ogg是由Xiph.org组织开…

字符串匹配(BF KMP)详解 + 刷题

目录 &#x1f33c;前言 BF 算法 KMP 算法 &#xff08;1&#xff09;前缀函数 -- O(n^3) &#xff08;2&#xff09;前缀函数 -- O(n^2) &#xff08;3&#xff09;前缀函数 -- O(n) &#xff08;4&#xff09;辅助理解 &#x1f40b;P1308 -- 统计单词数 …

Linux:使用for+find查找文件并cp到其他目录,文件名带有空格

一、场景描述 在终端窗口中&#xff0c;用shell命令&#xff0c;批量拷贝文件到指定目录。 我是在Windows系统上&#xff0c;通过git bash终端来执行shell命令的。 二、实现过程 命令1 for filepath in find /d/LearningMaterials/数学/数学/高中/一数/偏基础&#xff08;基…

年销180万辆的特斯拉,护城河却在崩塌

文&#xff5c;刘俊宏 2023年率先开启汽车价格战的马斯克&#xff0c;伤敌一百自损八千&#xff1f; 在1月25日的特斯拉2023Q4财报电话会上&#xff0c;特斯拉CEO马斯克对中国公司的竞争力如此感叹道&#xff0c;“要是没有贸易壁垒&#xff0c;他们将摧毁&#xff08;destroy…

EXECL 单元格字符串链接 CONCAT :应用:将一行数据转为json

源&#xff1a; 目标 函数表示 CONCAT("data", CHAR(10), "{", CHAR(10), " ", "ulAlarmId : ", A5, CHAR(10), " ", "ulAlarmLevel : ", D5, CHAR(10)," ", "bBo…

《剑指 Offer》专项突破版 - 面试题 28 : 展平多级双向链表(C++ 实现)

题目连接&#xff1a;LCR 028. 扁平化多级双向链表 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 在一个多级双向链表中&#xff0c;节点除了有两个指针分别指向前后两个节点&#xff0c;还有一个指针指向它的子链表&#xff0c;并且子链表也是一个双向链表&…

怎么给wordpress网站底部页脚添加备案号和链接?

以前“WordPress后台 >> 常规”最底部是有一个ICP备案号的&#xff0c;我们只需要填写备案号并保存更改即可让WordPress自带主题底部显示ICP备案号&#xff0c;但是现在新版本的WordPress已经没有了这个ICP备案号选项&#xff0c;而且也无法直接添加公安联网备案号&#…

常见の算法

前言本文主要使用Java 什么&#xff0c;是快乐星球#&#xffe5;%……什么是算法&#xff1f; 算法是一组完成任务的指令。任何代码片段都可视为算法&#xff0c;但我们主要介绍常见算法 一、引入——二分查找 二分查找是一种算法&#xff0c;其输入是一个有序的元素列表。如…

web安全学习笔记【09】——算法2

基础[1] 入门-算法逆向&散列对称非对称&JS源码逆向&AES&DES&RSA&SHA #知识点&#xff1a; 1、Web常规-系统&中间件&数据库&源码等 2、Web其他-前后端&软件&Docker&分配站等 3、Web拓展-CDN&WAF&OSS&反向&负载…

socket以及字节序

1. socket 介绍&#xff1a; 简介&#xff1a; 所谓 socket&#xff08; 套接字&#xff09;&#xff0c;就是对网络中不同主机上的应用进程之间进行双向通信的 端点的抽象。 一个套接字就是网络上进程通信的一端&#xff0c;提供了应用层进程利用网络协议交换数据的机制。从所…

字符金字塔(C语言刷题)

个人博客主页&#xff1a;https://blog.csdn.net/2301_79293429?typeblog 专栏&#xff1a;https://blog.csdn.net/2301_79293429/category_12545690.html 题目描述 请打印输出一个字符金字塔&#xff0c;字符金字塔的特征请参考样例 输入描述: 输入一个字母&#xff0c;保…

[BSidesCF 2020]Had a bad day

先看url&#xff0c;发现可能有注入 http://655c742e-b427-485c-9e15-20a1e7ef1717.node5.buuoj.cn:81/index.php?categorywoofers 试试能不能查看index.php直接?categoryindex.php不行&#xff0c;试试伪协议 把.php去掉试试 base64解码 <?php$file $_GET[category];…

Kali如何启动SSH服务并实现无公网ip环境远程连接

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh 远程连接kali! …

Termux结合内网穿透实现无公网ip远程SFTP传输文件

目录 前言 1. 安装openSSH 2. 安装cpolar 3. 远程SFTP连接配置 4. 远程SFTP访问 4. 配置固定远程连接地址 结语 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 今天给大家聊聊Termux结合内网穿透实现无公网ip远程SFTP传输文件&#xff0c;希望大家能…

模拟队列

输入样例&#xff1a; 10 push 6 empty query pop empty push 3 push 4 pop query push 6输出样例&#xff1a; NO 6 YES 4 import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc new Scanner(System.in);int m sc.nextInt();…

nodejs学习计划--(六)包管理工具

包管理工具 1. 介绍 包是什么 『包』英文单词是 package &#xff0c;代表了一组特定功能的源码集合包管理工具 管理『包』的应用软件&#xff0c;可以对「包」进行 下载安装 &#xff0c; 更新 &#xff0c; 删除 &#xff0c; 上传 等操作 借助包管理工具&#xff0c;可以快…

蓝桥杯备赛 week 3 —— 高精度(C/C++,零基础,配图)

目录 &#x1f308;前言&#xff1a; &#x1f4c1; 高精度的概念 &#x1f4c1; 高精度加法和其模板 &#x1f4c1; 高精度减法和其模板 &#x1f4c1; 高精度乘法和其模板 &#x1f4c1; 高精度除法和其模板 &#x1f4c1; 总结 &#x1f308;前言&#xff1a; 这篇文…

不合格机器人工程讲师再读《悉达多》-2024-

一次又一次失败的经历&#xff0c;让我对经典书籍的认同感越来越多&#xff0c;越来越觉得原来的自己是多么多么的无知和愚昧。 ----zhangrelay 唯物也好&#xff0c;唯心也罢&#xff0c;我们都要先热爱这个世界&#xff0c;然后才能在其中找到自己所热爱的事业。 ----zh…

Find My卡片正成为消费电子香饽饽,伦茨科技ST17H6x可以帮到您

今年CES许多公司发布支持苹果Find My的卡片产品&#xff0c;这种产品轻薄可充电&#xff0c;放在钱包、背包或者手提包可以防丢查找&#xff0c;在智能化加持下&#xff0c;防丢卡片使得人们日益关心自行车的去向。最新的防丢卡片与苹果Find My结合&#xff0c;智能防丢&#x…

【MIdjourney】一些材质相关的关键词

1.多维剪纸(Multidimensional papercut) "Multidimensional papercut"&#xff08;多维剪纸&#xff09;是一种剪纸艺术形式&#xff0c;通过多层次的剪纸技巧和设计来创造出立体感和深度感。这种艺术形式通常涉及在不同的纸层上剪裁不同的图案&#xff0c;并将它们…