TongRDS2.2 Center 哨兵配置

本TongRDS配置由中心节点管理 2 个服务节点,这 2 个服务节点工作在主备模式,并 由 Center 中心节点提供哨兵功能。

1.1 样例环境

本次测试采用 2 台主机,分别为服务器 1(192.168.0.86)和服务器 2(192.168.0.87),服务器 1 主机上运行中心(Center)节点和服务节点 1,服务 器 2 主机上运行服务节点 2。

两台主机采用相同的 ntp 服务器同步时钟。 java 版本为 OpenJdk 1.8(openjdk version "1.8.0_302")。 验证用 Jedis

1.2 软件安装

将 TongRDS-2.2.1.2.MC.tar.gz 中 心 节 点 程 序 包 和 TongRDS-2.2.1.2.Node.tar.gz 上 传 到 服 务 器 1 , 将 TongRDS-2.2.1.2.Node.tar.gz 上传到服务器 2。

分别解 tar 包,生成 pmemdb 目录和 pcenter 目录。其中 pmemdb 目录为服务 节点程序,pcenter 目录下为中心节点程序

1.3 服务节点配置

首先,检查一下 cfg.xml 中的 Server.Service 的配置为 WebSession。该服务名 必须和 Center 节点中的配置对应,无法对应则节点不允许接入。 然后修改 dynamic.xml 配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<Server><Center><Password>454d51192b1704c60e19734ce6b38203</Password><EndPoint><Host>192.168.0.86</Host><Port>6300</Port></EndPoint></Center>
</Server>

其中Server.Center.Password为连接Center时的认证密码,测试时可不用修改。 Sever.Center.EndPoint 配置修改 IP 地址为 192.168.0.86,端口为 6300。如果 有多台 Center 节点,EndPoint 可配置多条,只需要更改IP地址

<?xml version="1.0" encoding="UTF-8"?>
<Server><Center><Password>454d51192b1704c60e19734ce6b38203</Password><EndPoint><Host>192.168.0.86</Host><Port>6300</Port></EndPoint><EndPoint><Host>192.168.0.87</Host><Port>6300</Port></EndPoint></Center>
</Server>

1.4 中心节点配置

1.4.1config. properteis

首先检查config.properteis文件中的service.port=6300(Center的主服务端口), sentinel.port=26379(Redis 哨兵的仿真接口,26379 为哨兵的缺省端口), server.password=454d51192b1704c60e19734ce6b38203(节点接入时的认证密码, 采用 SM4 加密)

1.4.2cluster.properties

然后修改 cluster.properties(该文件用于定义服务节点的工作状态,如集群状 态、哨兵状态等),cluster.properties 配置修改如下(哨兵模式):

WebSession.type=sentinel
WebSession.nodes=2
WebSession.node0=192.168.0.86:6200
WebSession.node1=192.168.0.87:6200

其中 WebSession.type 定义名为 WebSessio(n 对应服务节点中的 Server.Service) 的服务状态为哨兵模式。 WebSession.nodes 定义 2 个服务节点的地址和端口(此处配置需要和节点的 实际的运行配置对应)

1.4.3active.properties

检查 active.properties 文件中是否有 WebSession 的定义,例如:

acioweor_483kja03np4h8238G = WebSession, AuthService

其中的“acioweor_483kja03np4h8238G”是激活码,对应哨兵接入时的密码,等号后面的内容是该激活码对应的服务名称,多个名称用“,”分隔。

1.4.4sync.properties

如果有多台中心节点集群,可修改此配置文件。例如配置 2 台 Center 集群

sync.servers=2
sync.server1.host=192.168.0.86
sync.server1.port=6300
sync.server2.host=192.168.0.87
sync.server2.port=6300

本例可不配置此文件。

1.5 启动服务

分别启动中心节点和两个服务节点。 启动成功后,服务节点的 dynamic.xml 文件将被修改为类似如下

<?xml version="1.0" encoding="UTF-8"?><Server><Center><Password>454d51192b1704c60e19734ce6b38203</Password><EndPoint><Host>node1</Host><Port>6300</Port></EndPoint></Center><Synchronize><EndPoint><Host>192.168.0.86</Host><Port>6200</Port></EndPoint><EndPoint><Host>192.168.0.87</Host><Port>6200</Port></EndPoint></Synchronize>
</Server>

其中的 Synchronize 部分是从 Center 节点的 cluster.properties 配置中同步来

1.6 测试

1.6.1测试目的

使用 jedis 客户端的哨兵模式接入,验证 RDS 中心节点模拟哨兵的功能;采 用 jedis 多次接入,验证 RDS 模拟主节点功能。

本例使用 jedis 3.7.0(group: 'redis.clients', name: 'jedis', version: '3.7.0') 测试通过。

注:jedis 不同版本存在连接哨兵的 bug,例如 3.6.x 版本,无法采用有密码 方式连接哨兵。如果测试不成功请首先检查 jedis 版

1.6.2Jedis 接入(jedis 版本 3.7.0)

创建一个 java 类,输入如下代

public static void main(String args[]) {JedisSentinelPool pool = new JedisSentinelPool("WebSession",new HashSet<String>() {{this.add("192.168.0.86:26379");}}, (String) null, "acioweor_483kja03np4h8238G");Jedis jedis = pool.getResource();jedis.set("aaa", "ddd")System.out.println("aaa = " + jedis.get("aaa"));jedis.close();pool.close();
}

其中:“WebSession”是服务名,需要与中心节点、服务节点的配置一致;

“ 192.168.0.86:26379 ” 为 Center 节 点 仿 真 哨 兵 的 端 口 位 置 ; “acioweor_483kja03np4h8238G”是哨兵接入的密码,对应 Center 的 active.properties 中的配置。

运行程序,在服务器 1(192.168.0.86)上观察到如下日志:
 

CacheServer::set() Set aaa<> = ddd ok
CacheServer::process_get() Get aaa = 'ddd' ok.

在服务器 2(192.168.0.87)上观察到如下日志:

CacheServer::sync() Sync aaa<> = ddd at 1629777554660 ok(0).

日志分析可知,jedis 从哨兵端口获得了主节点的访问端口,并成功完成读写 操作,节点 2 获得同步数据。 注:Center 的哨兵功能不允许无密码接入,较低版本的 jedis

1.6.3验证主节点保持

继续上例测试,多次运行程序,观察读写操作均出现在节点 1 的日志中,节 点 2 中始终是同步日志,说明正常情况下每次接入的操作均发生在一个节点上, 另外的节点只负责备份。

1.6.4备份节点异常测试

将备份节点杀掉。再次运行上述程序,观察主节点日志有正常的读写记录, 说明服务正常。 将备份节点恢复,再次运行程序,读写仍然发生在主节点,说明备份节点的 启动停止不会引起主备切换。

1.6.5主节点异常测试

将主节点杀掉,再次运行程序,程序可正常完成。观察 2 节点日志发现,set 和 get 的操作日志出现在备份节点,说明中心节点做了主备切换。 将主节点恢复(等待其启动完成),再次运行程序,程序可正常完成。观察 节点日志,set 和 get 操作的日志出现在主节点(节点 1),节点 2 上仍然是同步 日志,说明 Center 将主节点切换回了节点 1。

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

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

相关文章

华为云Stack 8.X 流量模型分析(二)

二、流量模型分析相关知识 1.vNIC ​ 虚拟网络接口卡(vNIC)是基于主机物理 NIC 的虚拟网络接口。每个主机可以有多个 NIC&#xff0c;每个 NIC 可以是多个 vNIC 的基础。 ​ 将 vNIC 附加到虚拟机时&#xff0c;Red Hat Virtualization Manager 会在虚拟机之间创建多个关联的…

七:爬虫-数据解析之正则表达式

七&#xff1a;正则表达式概述 正则表达式&#xff0c;又称规则表达式,&#xff08;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;&#xff0c;是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xf…

如何下载知网论文、专利的PDF格式

知网的论文格式有其特有的格式&#xff1a;CAJ。将CAJ格式转化为Word或者PDF非常麻烦&#xff0c;且会出现乱码的情况&#xff0c;直接用知网官方的CAJ浏览器也不太方便。为此&#xff0c;困扰了许久。 其实&#xff0c;知网可以直接下载PDF格式&#xff0c;只需在浏览器上安装…

Python启动提示ERROR: [WinError 10013] ��һ�ַ���Ȩ�޲�����ķ�ʽ����һ�������׽��ֵij��ԡ�

启动项目后&#xff1a; 其实就是默认的5000端口号被占用&#xff0c;端口号冲突 &#xff0c;改下端口即可。 点击&#xff1a;编辑配置 空格加 --port5001 启动成功&#xff0c;点击下图标记位置

【STM32工具篇】使用CLion开发STM32

本文主要记录使用CLion开发STM32&#xff0c;并调试相关功能 使用的CLion版本&#xff1a;2023.3.1 CLion嵌入式配置教程&#xff1a;STM32CubeMX项目 |CLion 文档 (jetbrains.com) OpenOCD官网下载&#xff1a;Download OpenOCD for Windows (gnutoolchains.com) GNU ARM工…

【C++】理解string类的核心理念(实现一个自己的string类)

目录 一、引言 二、自我实现 1.成员变量的读写 2.构造与析构 3.迭代器 4.插入字符或字符串 尾插 中间插入 5.删除字符或子字符串 6.查找字符或子串 7.获取子串 三、补充 一、引言 实现自己的 string 类是学习 C 语言和面向对象编程的一个好方法。通过编写一个简单的…

浅析 ArrayList

ArrayList是一个使用List接口实现的Java类。顾名思义&#xff0c;Java ArrayList提供了动态数组的功能&#xff0c;其中数组的大小不是固定的。它实现了所有可选的列表操作&#xff0c;并允许所有元素&#xff0c;包括null。 ArrayList 继承于 AbstractList &#xff0c;实现了…

ECharts封装及配置整理

1 认识ECharts ECharts&#xff0c;一个基于 JavaScript 的开源可视化图表库 ECharts官网 国内Echarts使用手册网站&#xff1a; https://www.w3cschool.cn/echarts_tutorial/echarts_tutorial-d5b128yu.html 示例网站&#xff1a; https://www.isqqw.com/ http://chart.ma…

【Docker】以service形式离线安装卸载的docker、compose服务

CentOS7离线卸载Docker步骤 移除开机自启 [rootCenOS-1 system]# systemctl disable docker移除注册文件 rm -rf /etc/systemd/system/docker.service删除相关安装目录 rm -rf $(find / -name docker)CentOS7离线安装Docker、Compose步骤 资源地址&#xff1a;docker_20.10…

《数据结构、算法与应用C++语言描述》- 最小输者树模板的C++实现

输者树 完整可编译运行代码见&#xff1a;Github::Data-Structures-Algorithms-and-Applications/_31loserTree 输者树&#xff1a;每一个内部节点所记录的都是比赛的输者&#xff0c;晋级的节点记录在边上。本文中&#xff0c;赢者是分数较低的那个&#xff0c;输者是分数高…

虾皮电商申请:一站式开店指南

随着跨境电商的快速发展&#xff0c;越来越多的商家开始意识到东南亚市场的潜力。虾皮电商&#xff08;Shopee&#xff09;作为东南亚地区最大的电商平台之一&#xff0c;为商家提供了一个开拓市场的机会。本文将详细介绍如何在虾皮电商平台上开店&#xff0c;并给出一些建议来…

STM32/STM8资源节约主义编程方式

STM32/STM8资源节约主义编程方式 在小资源芯片进行代码设计时&#xff0c;如STM32C0系列&#xff0c;STM8系列&#xff0c;因为官方库本身要包含各种场景应用特征的支持&#xff0c;所以会有一些冗余的代码占用更多FLASH空间。当需要实现资源占用最简化设计方式时&#xff0c;…

记一次gunicorn启动报错

问题&#xff1a; 使用 gunicorn -w 1 -b 0.0.0.0:5005 main:app 启动时报错 gunicorn: error: unrecognized arguments: -w 1 -b 0.0.0.0:5005 main:app 原因&#xff1a; 是由于代码中包含 args parser.parse_args()会将gunicorn 的启动参数当作输入。 修改为&#xf…

4、ollvm移植到ndk中

准备ndk&#xff1a; android-ndk-r21b-linux-x86_64 git checkout ollvm-Obfuscation 将编译好的ollvm中的bin include lib三个文件夹放到ndk中的android-ndk-r21b-linux-x86_64/android-ndk-r21b/toolchains/llvm/prebuilt/linux-x86_64目录中&#xff0c;进行替换 确认cl…

uniapp 导入ucharts图表插件 H5项目, 使用echarts eopts配置

先下载ucharts H5示例源码&#xff1a; uCharts: 高性能跨平台图表库&#xff0c;支持H5、APP、小程序&#xff08;微信小程序、支付宝小程序、钉钉小程序、百度小程序、头条小程序、QQ小程序、快手小程序、360小程序&#xff09;、Vue、Taro等更多支持canvas的框架平台&#…

如何在公网环境下使用Potplayer访问本地群晖webdav中的影视资源

文章目录 本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是&#xff1a;1 使用环境要求&#xff1a;2 配置webdav3 测试局域网使用potplayer访问webdav3 内网穿透&#xff0c;映射至公网4 使用固定地址在potplayer访问webdav ​ 国内流媒体平台的内…

读写锁ReentrantReadWriteLockStampLock详解与实践实例

读读不存在线程安全问题。写读&#xff0c;写写操作存在线程安全问题的 现实中有这样一种场景&#xff1a;对共享资源有读和写的操作&#xff0c;且写操作没有读操作那么频繁&#xff08;读多写少&#xff09;。在没有写操作的时候&#xff0c;多个线程同时读一个资源没有任何…

硬件基础与实施运维工程师的介绍

目录 一、实施与运维 1.2 实施运维一般做什么 1.1.1实施工程师 1.1.2运维工程师 1.3 实施运维需要具备哪些技能 三、基础硬件 四、操作系统 4.1 Windows 4.2 Linux 4.3 macOS 4.4 Unix 五、总结 一、实施与运维 1.1 实施运维是干什么的 1、运维工程师负责服务的稳…

第二周:AI产品经理全局学习

一、AI产品架构全景 二、 AI产品岗位分析和了解 三、 AI产品能力模型 四、AI产品经理工作流 五、AI产品经理学习路径和规划 六、本周市场动态

力扣 面试经典150算法题

1合并两个有序数组88. 合并两个有序数组-CSDN博客简单23