【云计算】Openstack配置Redis服务—一主二从三哨兵模式

Redis一主二从三哨兵模式

hostnamectl set-hostname   //修改主机名

将提供的Redis安装文件下载redis-3.2.12.tar.gz到三台虚拟机中,解压到/opt目录中,并配置yum源使用本地目录,命令如下(三台虚拟机操作一致,以redis1主机为例):

[root@redis1 ~]# curl -O #下载地址
[root@redis1 ~]# tar -xf redis-3.2.12.tar.gz -C /opt/
[root@redis1 ~]# mv /etc/yum.repos.d/* /media/
[root@redis1 ~]# cat << EOF >> /etc/yum.repos.d/redis.repo
[redis]
name=redis
baseurl=file:///opt/redis
gpgcheck=0
enabled=1
EOF
[root@redis1 ~]# yum clean all && yum repolist

在三个节点使用yum命令安装Redis服务并启动。 命令如下(三台虚拟机操作一致,以redis1主机为例):

[root@redis1 ~]# yum install -y redis 
… …
Complete!
[root@redis1 ~]# systemctl start redis
[root@redis1 ~]# systemctl enable redis

按照主从Redis配置,将redis2节点和redis3节点作为redis1节点的从节点。 配置完成后的一主二从Redis集群将作为哨兵模式的基础。 命令如下:

redis1节点:

修改redis1节点的配置文件/etc/redis.conf如下:

[root@redis1 ~]# vi /etc/redis.conf
#第一处修改
# bind 127.0.0.1                     //找到bind 127.0.0.1这行并注释掉
#第二处修改
protected-mode no                //将yes修改为no,外部网络可以访问
#第三处修改
daemonize yes                       //将no修改为yes,开启守护进程
#第四处修改
requirepass "123456"                   //添加设置访问密码
#第五处修改,设定主库密码与当前库密码同步,保证从库能够提升为主库
masterauth "123456"
#第六处修改,将no修改为yes,打开AOF持久化支持
appendonly yes

至此,redis1主节点配置完毕,重启服务,命令如下:

[root@redis1 ~]# systemctl restart redis

edis2节点:

修改redis2节点的配置文件/etc/redis.conf如下:

[root@redis2 ~]# vi /etc/redis.conf
#第一处修改
# bind 127.0.0.1                     //找到bind 127.0.0.1这行并注释掉
#第二处修改
protected-mode no                    //将yes修改为no,外部网络可以访问
#第三处修改
daemonize yes                       //将no修改为yes,开启守护进程
#第四处修改
# requirepass foobared                 //找到该行
requirepass "123456"                   //在下方添加设置访问密码
#第五处修改
# slaveof <masterip> <masterport>       //找到该行
slaveof 192.168.200.21 6379          //在下方添加访问的主节点IP与端口
#第六处修改
# masterauth <master-password>        //找到该行
masterauth "123456"                   //在下方添加访问主节点密码
#第七处修改,将no修改为yes,打开AOF持久化支持
appendonly yes

至此,redis2主节点配置完毕,重启服务,命令如下:

[root@redis2 ~]# systemctl restart redis

redis2主节点和redis2主节点配置相同

scp /etc/redis.conf root@ip:/etc/

验证:

redis1主节点:

[root@redis1 ~]# redis-cli -h 192.168.200.21 -p 6379 -a 123456 info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.200.22,port=6379,state=online,offset=9383,lag=0
slave1:ip=192.168.200.23,port=6379,state=online,offset=9238,lag=1
master_repl_offset:9383
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:9382

redis2从节点:

[root@redis2 ~]# redis-cli -h 192.168.200.22 -p 6379 -a 123456 info replication
# Replication
role:slave
master_host:192.168.200.21
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:2648
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

redis3从节点:

[root@redis3 ~]# redis-cli -h 192.168.200.23 -p 6379 -a 123456 info replication
# Replication
role:slave
master_host:192.168.200.21
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:8658
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

(2)Redis哨兵模式配置

redis1节点:

修改redis1节点的/etc/redis-sentinel.conf配置文件,具体内容如下:

[root@redis1 ~]# vi /etc/redis-sentinel.conf 
# 1. 保护模式修改为否,允许远程连接
protected-mode no
# 2. 修改监控地址,为主redis库的主机ip地址
sentinel monitor mymaster 192.168.200.21 6379 2
# 3. 添加配置5秒内没有响应,就反馈服务器挂了
sentinel down-after-milliseconds mymaster 5000
# 4. 修改配置15秒内master没有活起来,就重新选举主
sentinel failover-timeout mymaster 15000
# 5. 表示如果master重新选出来后,其它slave节点能同时并行从新master同步缓存的台数有多少个,显然该值越大,所有slave节点完成同步切换的整体速度越快,但如果此时正好有人在访问这些slave,可能造成读取失败,影响面会更广。最安全的设置为1,只同一时间,只能有一台干这件事,这样其它slave还能继续服务,但是所有slave全部完成缓存更新同步的进程将变慢。这里设置为2。
sentinel parallel-syncs mymaster 2
# 6. 添加配置主数据库密码为123456
sentinel auth-pass mymaster 123456

修改redis2从节点和redis3从节点的/etc/redis-sentinel.conf配置文件,修改内容与redis1主节点的/etc/redis-sentinel.conf配置文件一致。

修改完配置文件后,哨兵模式配置就完毕了,接下来需要重启服务。 因为Redis服务已经启动,现在只需要启动Redis哨兵服务。 命令如下所示:

所有节点启动哨兵:

# systemctl restart redis-sentinel
# systemctl enable redis-sentinel

3)哨兵模式信息查看

在redis1节点,查看哨兵模式信息,命令如下:

[root@redis1 ~]# redis-cli -h 192.168.200.21 -p 26379 INFO Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.200.21:6379,slaves=2,sentinels=3

在redis2节点,查看哨兵模式信息,命令如下:

[root@redis2 ~]# redis-cli -h 192.168.200.22 -p 26379 INFO Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.200.21:6379,slaves=2,sentinels=3

在redis3节点,查看哨兵模式信息,命令如下:

[root@redis3 ~]# redis-cli -h 192.168.200.23 -p 26379 INFO Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.200.21:6379,slaves=2,sentinels=3

可以看到目前集群中有一个Redis主节点,两个Redis从节点,三个哨兵节点。

(4)哨兵模式验证

哨兵作为对Redis实例的监控,通过选举算法保证哨兵的鲁棒性和高可用,所以哨兵至少要部署3台,符合半数原则,需要5或者7,超过一半,不包含一半存活的时候,才能够选举出leader,才能进行主从的切换功能。

哨兵高可用测试:分别连接对应的Redis服务端,手动停止主Reids服务,看主从是否切换成功。

redis1节点,手动停止服务,然后查看主节点是否切换,命令如下:

[root@redis1 ~]# systemctl stop redis

切换到redis2节点,查看Redis集群的主从信息(访问reids2节点的Redis服务),命令如下(redis主节点随机切换到从节点):

[root@redis2 ~]# redis-cli -h 192.168.200.22 -p 6379 -a 123456 info replication
# Replication
role:slave
master_host:192.168.200.23
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:6591
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

可以看到,redis2节点的master_host变成了192.168.200.23,也就是说redis3节点变成了主节点。

然后切换到redis3节点,查看Redis集群的主从信息(访问reids3节点的Redis服务),命令如下:

[root@redis3 ~]# redis-cli -h 192.168.200.23 -p 6379 -a 123456 info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.200.22,port=6379,state=online,offset=7461,lag=0
master_repl_offset:7461
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:7460

redis3节点成功切换成了主节点。 可以看到,当主节点发生了宕机,其他的从节点可以自动切换成主节点。

切换到redis1节点,启动恢复Redis服务,查看redis集群的主从信息(访问reids1节点的Redis服务),命令如下:

[root@redis1 ~]# systemctl restart redis
[root@redis1 ~]# systemctl restart redis-sentinel
[root@redis1 ~]# redis-cli -h 192.168.200.21 -p 6379 -a 123456 info replication
# Replication
role:slave
master_host:192.168.200.23
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:103524
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

可以看见redis1节点变成了从节点。 Redis哨兵模式的验证成功。

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

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

相关文章

linux 组建和卸载raid1、raid0详细操作

组raid的最好是相同容量和型号的硬盘&#xff0c;否则会有木桶效应 linux下组raid有很多细节 一、安装raid软件 deb包 apt-get install mdadm或dnf包 dnf install mdadm二、组raid1-镜像&#xff0c;组raid0-并列 raid1和raid0只有在madam命令时一点点不同&#xff0c;其他…

智慧商城项目(ing)

项目概述 1.创建项目 目标&#xff1a;基于VueCli自定义创建项目架子&#xff0c;将目录调整成符合企业规范的目录 删除多余的文件 修改路由配置 和App.vue 新增两个目录 api/utils ①api接口模块:发送ajax请求的接口模块 ②utils工具模块:自己封装的一些工具方法模块 2…

Flutter组件 StatefulWidget、StatelessWidget 可继承写法

前言 学过Java的同学&#xff0c;应该都知道面向对象语言的三大特征&#xff0c;封装、继承、多态&#xff1b; Dart也是面向对象的语言&#xff0c;但是在Flutter中的很多组件都被下划线 _ 标记为私有&#xff0c;导致无法继承&#xff0c;本文将介绍一种非私有的创建组件写…

已解决org.springframework.dao.DataAccessException异常的正确解决方法,亲测有效!!!

已解决org.springframework.dao.DataAccessException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 文章目录 问题分析 报错原因 解决思路 解决方法 精确地识别异常类型 检查并优化SQL语句和数据操作 检查数据库连接和配置 升级或调整…

VUE开发记录

1、VUE模板传递参数到JS方法 <select-language :value"item.language" change"selectLanguage($event, key)"></select-language>selectLanguage(value, key){console.log(value, key) }, 2、Element框架el-form-item自定义label和内容 <…

追觅科技发布全折叠高速吹风机Pocket

2月2日&#xff0c;追觅科技召开2024新品发布会&#xff0c;一系列年度新品亮相。现场&#xff0c;追觅科技发布了个护重磅新品——追觅Pocket折叠高速吹风机&#xff0c;这也是行业首个全折叠高速吹风机。 创新柔性折叠技术&#xff0c;直卷吹一机全能 追觅Pocket折叠高速吹风…

07 SB3之@HttpExchange(TBD)

HttpExchange是SpringBoot3的新特性. Spring Boot3 提供了新的 HTTP 的访问能力&#xff0c;封装了Http底层细节. 通过接口简化 HTTP远程访问&#xff0c;类似 Feign 功能。 SpringBoot 中定义接口提供 HTTP 服务 --> 框架生成的代理对象实现此接口 --> 框架生成的代理…

java处理ppt方案详解

需求 需要系统中展示的ppt案例有一个动态展示的效果&#xff0c;也就是要有动画的交互&#xff0c;要求支持浏览器直接打开预览 背景 目前已经实现了前端上传pptx文件&#xff0c;后端解析为png的图片&#xff0c;前端掉接口返回对应的图片&#xff0c;模拟播放ppt的效果 各种尝…

uniapp实现自定义底部tab栏

1、自定义底部导航组件接收一个tabs数组作为参数&#xff0c;每个数组项包含icon和text字段&#xff0c;用于表示每个底部标签的图标和文本。通过遍历tabs数组&#xff0c;渲染每个底部标签项的图标和文本。activeIndex表示当前选中的底部标签的索引。点击底部标签时&#xff0…

树莓派Pico W无线开发板蓝牙通信MicroPython编程

内容提要:2023年6月14日,树莓派官方发布了对树莓派Pico W无线开发板(简称Pico W)MicroPython蓝牙功能的支持。本文首先介绍Pico W接口信号及蓝牙通信协议,然后通过Pico W接口信号扩展连接一只LED和一个按键,并给出Pico W蓝牙通信MicroPython编程示例。 一、Pico W接口信号…

日期函数

目录 显示当前日期 显示当前的时间戳 计算若干天之后的日期 计算每一位员工到今天为止的雇佣天数 计算两个日期间所经历的月数总和 计算每一位员工到今天为止的雇佣总月数 计算每一位员工到今天为止所雇佣的年限 增加若干月之后的日期 测试 add_months() 函数 查询所…

华为数通方向HCIP-DataCom H12-821题库(单选题:401-420)

第401题 R1的配置如图所示,此时在R1查看FIB表时,关于目的网段192.168.1.0/24的下跳是以下哪一项? A、10.0.23.3 B、10.0.12.2 C、10.0.23.2 D、10.0.12.1 【答案】A 【答案解析】 该题目考查的是路由的递归查询和 RIB 以及 FIB 的关系。在 RIB 中,静态路由写的是什么,下…

时间序列预测 —— TCN模型

时间序列预测 —— TCN模型 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;在图像处理等领域取得了显著的成就&#xff0c;一般认为在处理时序数据上不如RNN模型&#xff0c;而TCN&#xff08;Temporal Convolutional Network&#xff09;…

十分钟上手vue!

Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0c;Vue 都可以胜任。 一 vue.js的导入及使用 vue安装…

微服务框架go-zero集成swagger在线接口文档

go-zero(收录于 CNCF 云原生技术全景图:CNCF Landscape)是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。 go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android…

PostgreSQL从小白到高手教程 - 第44讲:pg流复制部署

PostgreSQL从小白到专家&#xff0c;是从入门逐渐能力提升的一个系列教程&#xff0c;内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容&#xff0c;希望对热爱PG、学习PG的同学们有帮助&#xff0c;欢迎持续关注CUUG PG技术大讲堂。 第44讲&#…

AJAX-入门

定义 概念&#xff1a;AJAX是浏览器与服务器进行数据通信的技术 使用 1.先使用axios库&#xff0c;与服务器进行数据通信 1&#xff09;基于XMLHttpRequest封装、代码简单、月下载量在14亿次 2&#xff09;Vue、React项目中都会用到axios 2.再学习XMLHttpRequest对象的使用…

高宇辰:打造“π”型人才 | 提升之路系列(七)

导读 为了发挥清华大学多学科优势&#xff0c;搭建跨学科交叉融合平台&#xff0c;创新跨学科交叉培养模式&#xff0c;培养具有大数据思维和应用创新的“π”型人才&#xff0c;由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

ElementUI Form:Upload 上传

ElementUI安装与使用指南 Upload 上传 点击下载learnelementuispringboot项目源码 效果图 el-upload.vue&#xff08;Upload上传&#xff09;页面效果图 el-upload.vue代码 import Vue from vue import VueRouter from vue-router import HomeView from ../views/HomeV…

【论文阅读笔记】Taming Transformers for High-Resolution Image Synthesis

Taming Transformers for High-Resolution Image Synthesis 记录前置知识AbstractIntroductionRelated WorkMethodLearning an Effective Codebook of Image Constituents for Use in TransformersLearning the Composition of Images with Transformers条件合成合成高分辨率图…