redis分布式集群-redis+keepalived+ haproxy

redis分布式集群架构(Redis+Keepalived+Haproxy)至少需要3台服务器、6个节点,一台服务器2个节点。

redis分布式集群架构中的每台服务器都使用六个端口来实现多路复用,最终实现主从热备、负载均衡、秒级切换的目标。

redis分布式集群架构思路为:keepalived给haproxy做高可用,当一台haproxy出现故障时,高可用会将另一台备用的haproxy作为master,继续给后端提供服务,防止单点故障。

部署redis集群

第一步,环境准备。

redis分布式集群架构至少需要3台服务器、6个节点,一台机器2个节点,创建出3个master节点、3个salve节点环境。

第一台服务器:

私网IP:x.x.x.x redis-master 6001 redis-slave 6002

第二台服务器:

私网IP:y.y.y.y redis-master 6001 redis-slave 6002

第三台服务器:

私网IP:z.z.z.z redis-master 6001 redis-slave 6002

第二步,安装redis。(每台服务器都安装)

命令:yum -y install redis

若结果显示“redis-6.0.5-1.11.al8.x86_64”,则说明成功安装了redis-6.0.5。

第三步,启动redis服务。(每台服务器都启动)

命令:systemctl start redis

若结果显示“Active: failed”,则需要把文件/usr/lib/systemd/system/redis.service中的“--daemonize no --supervised systemd”去掉,注释掉“Type=notify”,最后再次启动redis,服务状态为“Active: active (running)。

systemctl stop redis

systemctl restart redis

systemctl daemon-reload

# 设置开机自启动

命令:systemctl enable redis

# 查看服务状态是否为“Active: active (running)”

命令:systemctl status redis

ps -ef | grep redis

netstat -nap | grep  6379

# 服务端启动成功后,启动redis 客户端,查看端口号。

命令:redis-cli

set [key] [value]

get [key]

exit

ps -ef | grep redis

netstat -nap | grep 6379

第四步,在/usr/local中新建/redis/6001/conf、/redis/6001/data、/redis/6001/log、 /redis/6002/conf、/redis/6002/data和/redis/6002/log文件夹。(每台服务器都新建)

命令:mkdir -p /usr/local/redis/{6001,6002}/{conf,data,log}

第五步,将/etc/redis.conf配置文件复制粘贴到文件夹/usr/local/redis/6001/conf。(每台服务器都复制)

命令:cp /etc/redis.conf /usr/local/redis/6001/conf

cp /etc/redis.conf /usr/local/redis/6002/conf

步,配置redis.conf(每台服务器都配置)

redis主编辑配置/usr/local/redis/6001/conf/redis.conf文件,做以下几处修改:

“bind 127.0.0.1”改为“bind 0.0.0.0”,“protected-mode yes”改为“protected-mode no”,“port 6379”改为“port 6001”,“daemonize no”改为“daemonize yes”,“requirepass foobared”改为requirepass "redis123456",“dir ./”改为“dir /usr/local/redis/6001/data”,“pidfile /var/run/redis_6379.pid”改为“pidfile /usr/local/redis/6001/redis.pid”,“logfile ”改为“logfile /usr/local/redis/6001/log/redis.log”,“appendonly no”改为“appendonly yes”,“# cluster-enabled yes”改为“cluster-enabled yes”,“# cluster-config-file nodes-6379.conf”改为“cluster-config-file /usr/local/redis/6001/conf/nodes.conf”,“# cluster-node-timeout 15000”改为“cluster-node-timeout 5000”。

redis从编辑配置/usr/local/redis/6002/conf/redis.conf文件,做以下几处修改:

“bind 127.0.0.1”改为“bind 0.0.0.0”,“protected-mode yes”改为“protected-mode no”,“port 6379”改为“port 6002”,“daemonize no”改为“daemonize yes”,“requirepass foobared”改为requirepass "redis123456",“dir ./”改为“dir /usr/local/redis/6002/data”,“pidfile /var/run/redis_6379.pid”改为“pidfile /usr/local/redis/6002/redis.pid”,“logfile ”改为“logfile /usr/local/redis/6002/log/redis.log”,“appendonly no”改为“appendonly yes”,“# cluster-enabled yes”改为“cluster-enabled yes”,“# cluster-config-file nodes-6379.conf”改为“cluster-config-file /usr/local/redis/6002/conf/nodes.conf”,“# cluster-node-timeout 15000”改为“cluster-node-timeout 5000”。

第七步,重新启动redis服务。(每台服务器都重启)

# 关闭redis服务

命令:systemctl stop redis

ps -ef | grep redis

或  ss -tnlp|grep redis

# 重新启动redis服务

命令:/usr/bin/redis-server /usr/local/redis/6001/conf/redis.conf

/usr/bin/redis-server /usr/local/redis/6002/conf/redis.conf

第八步,检查redis启动情况。(每台服务器都检查)

命令:ps -ef | grep redis

或    ss -tnlp|grep redis

 

 

第九步,创建redis集群。

命令:/usr/bin/redis-cli --cluster create x.x.x.x:6001 x.x.x.x:6002 y.y.y.y:6001 y.y.y.y:6002 z.z.z.z:6001 z.z.z.z:6002 --cluster-replicas 1

ps -ef|grep redis

第十步,redis集群验证。

# 连接集群

命令:redis-cli -c -p 6001 -a redis123456

部署keepalived

第一步,环境准备。

redis分布式集群架构选择任意两个节点进行配置,实现主从热备和秒级切换。

keepalived主服务器私网IP:x.x.x.x redis-master 6001 redis-slave 6002

keepalived备服务器私网IP:y.y.y.y redis-master 6001 redis-slave 6002

高可用虚拟IP:v.v.v.v

第二步,安装keepalived。(keepalived主、备服务器都安装)

命令:yum -y install keepalived

若结果显示“keepalived-2.2.4-6.al8.x86_64”,则说明成功安装了keepalived-2.2.4。

第三步,配置keepalived.conf文件。(keepalived主、备服务器都配置)

1)配置Keepalived主服务器中的/etc/keepalivedkeepalived.conf文件,代码如下:

global_defs {router_id redis-master}vrrp_script redis_check {script "/etc/keepalived/scripts/haproxy_check.sh"interval 4weight -5fall 3rise 2}vrrp_instance VI_REDIS {state MASTERinterface eth0virtual_router_id 51priority 150advert_int 1nopreemptauthentication {auth_type PASSauth_pass 1111}track_script {chk_haproxy}virtual_ipaddress {v.v.v.v}}

2)先利用命令“mkdir -p /etc/keepalived/scripts”在Keepalived主服务器创建文件夹。然后在新建文件夹中创建haproxy_check.sh脚本,在脚本中写入下面代码:

#!/bin/bashsystemctl status haproxy | grep runningif [ $? -ne 0 ];thensystemctl stop keepalivedfi

3)配置Keepalived备服务器中的/etc/keepalivedkeepalived.conf文件,代码如下:

global_defs {router_id redis-slave}vrrp_script redis_check {script "/etc/keepalived/scripts/haproxy_check.sh"interval 4weight -5fall 3rise 2}vrrp_instance VI_REDIS {state BAKCUPinterface eth0virtual_router_id 51priority 100advert_int 1nopreemptauthentication {auth_type PASSauth_pass 1111}track_script {chk_haproxy}virtual_ipaddress {v.v.v.v}}

4)先利用命令“mkdir -p /etc/keepalived/scripts”在Keepalived备服务器创建文件夹。然后在新建文件夹中创建haproxy_check.sh脚本,在脚本中写入下面代码:

#!/bin/bashsystemctl status haproxy | grep runningif [ $? -ne 0 ];thensystemctl stop keepalivedfi

步,给新建的脚本加上可执行权限。(keepalived主、备服务器都加上

命令:chmod +x /etc/keepalived/scripts/*.sh

第五步,开启服务验证

关掉Keepalived主服务器的keepalived服务之后,VIP可以漂移Keepalived备服务器。

部署haproxy

第一步,环境准备。

redis分布式集群架构选择安装keepalived的两个服务器来部署haproxy,haproxy访问6379端口时,轮询访问六个节点。

keepalived主服务器私网IP:x.x.x.x redis-master 6001 redis-slave 6002

keepalived备服务器私网IP:y.y.y.y redis-master 6001 redis-slave 6002

高可用虚拟IP:v.v.v.v

第二步,安装haproxy。

命令:yum -y install haproxy

第三步,配置haproxy.cfg文件。

配置/etc/haproxy/haproxy.cfg文件,在文件中写入下面代码:

globallog                     127.0.0.1 local0chroot                  /var/lib/haproxypidfile                 /var/run/haproxy.pidmaxconn                 4000user                    nobodygroup                   nobodydaemondefaultsmode                     httplog                      globaloption                   dontlognullretries                  3maxconn                  3000contimeout               50000clitimeout               50000srvtimeout               50000listen statsbind                    *:8888stats                   enablestats                   hide-versionstats uri               /haproxystats realm             Haproxy\ statsstats auth              admin:adminstats admin             if TRUElisten  redisbind *:6379mode tcpbalance roundrobinserver redis1 x.x.x.x:6001 checkserver redis2 x.x.x.x:6002 checkserver redis3 y.y.y.y:6001 checkserver redis4 y.y.y.y:6002 checkserver redis5 z.z.z.z:6001 checkserver redis6 z.z.z.z:6002 check

第四步,配置haproxy rsyslog.conf文件。

vim /etc/rsyslog.conf

在/etc/rsyslog.conf文件中做出如下修改:

“# Provides UDP syslog reception# for parameters see http://www.rsyslog.com/doc/imudp.html#module(load="imudp") # needs to be done just once#input(type="imudp" port="514")”修改为“# Provides UDP syslog reception$ModLoad imudp$UDPServerRun 514”;“# Provides TCP syslog reception# for parameters see http://www.rsyslog.com/doc/imtcp.html#module(load="imtcp") # needs to be done just once#input(type="imtcp" port="514")”修改为“# Provides TCP syslog reception$ModLoad imtcp$InputTCPServerRun 514”;添加“# haproxy loglocal0.*                 /var/log/haproxy.log”。

第五步,haproxy访问6379端口时,轮询访问六个节点

命令:redis-cli -c -p 6379 -h v.v.v.v -a redis123456

测试

经测试,keepalived优先级最高的服务器(私网:x.x.x.x keepalived主+haproxy)中的两个redis节点不能同时被杀死,否则集群会马上停止,但是重启该服务器,集群就会马上恢复。

另两台服务器中的任何一台服务器发生宕机(或者两个redis节点挂掉)都不会影响redis集群的使用。

redis集群负载比较低。

需要注意redis集群缺点:

redis集群模式下只能选择db0,选择其他库会出现类似“(error) ERR SELECT is not allowed in cluster mode”的异常。

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

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

相关文章

使用Edge和chrom扩展工具(GoFullPage)实现整页面截图或生成PDF文件

插件GoFullPage下载:点击免费下载 如果在浏览网页时,有需要整个页面截图或导出PDF文件的需求,这里分享一个Edge浏览器的扩展插件:GoFullPage。 这个工具可以一键实现页面从上到下滚动并截取。 一、打开“管理扩展”(…

网络设备(防火墙、路由器、交换机)日志分析监控

外围网络设备(如防火墙、路由器、交换机等)是关键组件,因为它们控制进出公司网络的流量。因此,监视这些设备的活动有助于 IT 管理员解决操作问题,并保护网络免受攻击者的攻击。通过收集和分析这些设备的日志来监控这些…

Python 3 使用Hadoop 3之MapReduce总结

MapReduce 运行原理 MapReduce简介 MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题。 MapReduce分成两个部分:Map(映射)和Reduce(归纳)。…

tauri-react:快速开发跨平台软件的架子,支持自定义头部和窗口阴影效果

tauri-react 一个使用 taurireacttsantd 开发跨平台软件的模板,支持窗口头部自定义和窗口阴影,不用再自己做适配了,拿来即用,非常 nice。 开原地址:GitHub - Sjj1024/tauri-react: 一个最基础的使用tauri和react开发…

生成式 AI 在泛娱乐行业的应用场景实践 – 助力风格化视频内容创作

感谢大家阅读《生成式 AI 行业解决方案指南》系列博客,全系列分为 4 篇,将为大家系统地介绍生成式 AI 解决方案指南及其在电商、游戏、泛娱乐行业中的典型场景及应用实践。目录如下: 《生成式 AI 行业解决方案指南与部署指南》《生成式 AI 在…

一个概率论例题引发的思考

浙江大学版《概率论与数理统计》一书,第13章第1节例2: 这个解释和模型比较简单易懂。 接下来,第13章第2节的例2也跟此模型相关: 在我自己的理解中,此题的解法跟上一个题目一样,其概率如下面的二维矩阵&a…

聊聊计算机技术

目录 1.计算机的概念 2.计算机的发展过程 3.计算机的作用 4.计算机给人类带来的福利 1.计算机的概念 计算机是一种用于处理和存储数据的电子设备。它能够执行各种操作,比如计算、逻辑操作、数据存储和检索等。计算机由硬件和软件两部分组成。 计算机的硬件包括中…

Go 语言并发编程 及 进阶与依赖管理

1.0 从并发编程本质了解Go高性能的本质 1.1 Goroutine 协程可以理解为轻量级线程; Go更适合高并发场景原因之一:Go语言一次可以创建上万协成; “快速”:开多个协成 打印。 go func(): 在函数前加 go 代表 创建协程; time.Sleep():…

基于深度信念网络的西储大学轴承故障分类识别,基于EMD+DBN的西储大学轴承故障识别,LCD+DBN,LMD+DBN

目录 背影 DBN神经网络的原理 DBN神经网络的定义 受限玻尔兹曼机(RBM) (EMD,LCD,LMD)+DBN的深度信念网络的西储大学轴承故障分类识别 基本结构 主要参数 数据 MATALB代码 结果图 展望 背影 DBN是一种深度学习神经网络,拥有提取特征,非监督学习的能力,是一种非常好的分类…

Nacos使用SpringCloudAlibaba+Dubbo实现

Nacos简介 Nacos是阿里的一个开源产品,它是针对微服务架构中的服务发现、服务治理、配置管理的综合型解决方案。 官方介绍是这样的: Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、…

CSDN编程题-每日一练(2023-08-14)

CSDN编程题-每日一练(2023-08-14) 一、题目名称:小股炒股二、题目名称:王子闯闸门三、题目名称:圆小艺 一、题目名称:小股炒股 时间限制:1000ms内存限制:256M 题目描述: …

ISIS技术(第三十七课)

1 分享一下华为官网上的一张地图 官网地址:https://support.huawei.com/hedex/hdx.do?docid=EDOC1000105967&id=ZH-CN_CONCEPT_0000001501534705 2 路由的分类 -直连路由 直接连接的路由,且配置了IP地址之后(在同一网段内),就是直连路由。 -非直连路由 -静态路由…

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

第1题:数字放大 给定一个整数序列以及放大倍数x,将序列中每个整数放大x倍后输出。 时间限制:1000 内存限制:65536 输入 包含三行: 第一行为N,表示整数序列的长度(N ≤ 100); 第二行为N个整数(不超过整型范围…

(css)点击前隐藏icon图表 点击后显示

(css)点击前隐藏icon图表 点击后显示 效果 html <liv-for"(item,index) in sessionList":key"index"class"liClass":class"{ active: change2 index }"tabindex"2">...<el-tooltip class"item" effec…

分布式监控平台——Zabbix

市场上常用的监控软件&#xff1a; 传统运维&#xff1a;zabbix、 Nagios 一、zabbix概述 作为一个运维&#xff0c;需要会使用监控系统查看服务器状态以及网站流量指标&#xff0c;利用监控系统的数据去了解上线发布的结果&#xff0c;和网站的健康状态。 利用一个优秀的监…

Dedecms V110最新版RCE---Tricks

前言 刚发现Dedecms更新了发布版本&#xff0c;顺便测试一下之前的day有没有修复&#xff0c;突然想到了新的tricks去实现RCE。 文章发布的时候估计比较晚了&#xff0c;一直没时间写了。 利用 /uploads/dede/article_string_mix.php /uploads/dede/article_template_rand.…

Blender增强现实3D模型制作指南【AR】

推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 将静态和动画 3D 内容集成到移动增强现实 (AR) 体验中是增强用户沉浸感和参与度的高效方法。 然而&#xff0c;为 AR 创建 3D 对象可能相当艰巨&#xff0c;尤其是对于那些缺乏 3D 建模经验的人来说。 与添加视频或照片 AR…

THUDM/chatglm2-6b-int4体验

在gpu下 gpu&#xff1a; Telsa T4 资源消耗&#xff1a;RAM大概4G&#xff0c;GPU显存大概6G # 安装transformers等包 !pip install protobuf transformers4.30.2 cpm_kernels torch>2.0 gradio mdtex2html sentencepiece accelerate# 导入AutoTokenizer, AutoModel from…

CSAPP Lec01

1. CMU 15213_15513 CSAPP 深入理解计算机系统 Lecture 01 Course Overview 中英字幕_哔哩哔哩_bilibili 从这个课程中可以学到什么&#xff1f;&#xff08;为什么要学这门课&#xff09; Great Reality #1&#xff08;数字类型&#xff09;: Ints are not Integers, Floats…

idea打jar包

目录 1、打包设置 2、打包介绍 3、开始打包 1、打包设置 先设置要打包的模块信息&#xff0c;即打包进去的内容。如下图所示&#xff1a;File --> Project Structure --> Artifacts&#xff0c;点击&#xff0b;号完成模块创建&#xff0c;其中有两种方式&#xff1a;…