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。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!