KingbaseES R3读写分离集群工作机制(2)

1.2.2 kingbasecluster 集群组件
kingbasecluster 集群组件集成了开源的PGPOOL,pgpool是一个位于 kingbaseES服务器和 kingbaseES数据库客户端之间的中间件,它提供以下功能:

1.2.2.1 pgpool组件功能
用于集群节点之间kingbasecluster集群服务的状态检测。
对后台kingbaseES数据库服务的健康状态进行检测。
管理集群的主备切换和数据库服务的recovery。

1.2.2.2 看门狗watchdog功能
“看门狗”是一个 pgpool的子进程,用于添加高可用性功能。看门狗添加的功能包括:

pgpool 服务的生命检测
看门狗监控 pgpool 服务的响应而不是进程。它通过被它监控的 pgpool 发送查询到 kingbaseES,并检查响应情况。
看门狗还监控到从 pgpool 到前端服务器的连接(例如应用服务器)。从 pgpool 到前端服务器的连接作为 pgpool 的服务来监控。

看门狗进程相互监控
看门狗进程交换被监控服务器的信息用来保证信息是最新的,并允许看门狗进程相互监控。在某些故障检测中交换活跃/备用状态,当一个 pgpool 的故障被检测到,看门狗通知其他的看门狗这个消息。 看门狗在旧的活跃 pgpool 发生故障后通过投票确定新的活跃 pgpool 并更新活跃/备用状态。

在服务器切换的时候实现自动虚拟 IP 地址分配
当一个备用 pgpool 服务器提升为活跃的,新的活跃服务器启动虚拟 IP 接口。也就是,之前的活跃服务器停用虚拟 IP 接口。这确保活动的 pgpool 使用相同的 IP 地址,即使在发生服务器切换的时候。

在恢复的时候自动注册服务器为备用服务器
当失效的服务器恢复或者新的服务器连接上来,看门狗进程通知其他的看门狗进程关于新服务器的信息,看门狗进程在活跃服务器和其他服务器上接收这些信息。然后,新连接上的服务器注册为备用节点。

服务器组件

KingbaseES R3读写分离集群工作机制(2)
图1-2 watchdog组件架构图

启动/停止看门狗
看门狗进程由 pgpool自动启动/停止,也就是说,没有单独的命令来启动/停止它。但是,pgpool启动时必须拥有管理员权限(root),因为看门狗进程需要控制虚拟 IP 接口。在等待到所有的 pgpool 启动后,生命监测将启动。

配置看门狗 (kingbasecluster.conf)
看门狗的配置参数在 kingbasecluster.conf 中配置。在kingbasecluster.conf.sample 文件中的 WATCHDOG 小节是配置看门狗的示例。 以下所有的选项都是使用看门狗进程必须指定的。

Watchdog基本配置:

参数 参数功能 备注
use_watchdog 如果为 on,则激活看门狗,默认为 off。
trusted_servers 用于检测前端链路状态的信任服务器的列表。每个服务器需要能响应 ping。 用逗号分隔服务器的列表,例如“hostA,hostB,hostC”.
ping_path 本参数指定用于监控到前端服务器连接的 ping 命令的路径。只需要设置路径,例如“/bin”。
wd_interval 本参数指定用于 pgpool生命检查的间隔,单位为秒(一个大于或等于 1 的数字)。
wd_life_point pgpool生命检测失败后重试次数(一个大于或等于 1 的数字)。
wd_lifecheck_method 用于检查 pgpool的查询语句。默认为“heartbeat”。
delegate_IP 指定客户端服务器(应用服务器等)连接到的 pgpool的虚拟 IP 地址(VIP)。 当一个 pgpool 从备用切换到活跃状态,pgpool 将使用这个 VIP。
ifconfig_path 本参数指定切换 IP 地址的命令所在的路径。只需要设置路径例如“/sbin”。
if_up_cmd 本参数指定用于启用虚拟 IP 的命令。设置命令和参数例如:‘ifconfig eth0:0 inet $IP$ netmask 255.255.255.0‘。 $IP$ 将被 delegate_IP 指定的 IP 地址替换。
if_down_cmd 本参数指定用于停用虚拟 IP 的命令。设置命令和参数例如:‘ifconfig eth0:0 down‘。
arping_path 本参数指定用于在虚拟 IP 切换后用于发送 ARP 请求的命令的所在路径。 只需要设置路径例如“/usr/sbin”。
arping_cmd 本参数指定在进行虚拟 IP 切换后用于发送 ARP 请求的命令。设置命令和参数例如:‘arping -U $IP$ -w 1‘。 $IP$ 将被 delegate_IP 指定的 IP 地址替换。
wd_hostname 指定用于相互监控的看门狗进程的主机名或 IP 地址。
wd_port 指定用于相互监控的看门狗进程的端口。
other_pgpool_hostname0 指定被监控的 pgpool服务器的主机名。参数末尾的数字表示“服务器id”,必须从 0 开始。
other_pgpool_port0 指定被监控的 pgpool服务器上的 pgpool 的端口号。参数末尾的数字表示“服务器id”,必须从 0 开始。
other_wd_port0 指定 pgpool服务器上的需要被监控的看门狗的端口号。参数末尾的数字表示“服务器id”,必须从 0 开始。

如下图1-3所示,kingbasecluster.conf中watchdog配置
KingbaseES R3读写分离集群工作机制(2)

如下图1-4所示,kingbasecluster集群启动后,watchdog、kingbasecluster、kingbaseES服务通讯端口:
KingbaseES R3读写分离集群工作机制(2)

图1-4 kingbasecluster服务通讯端口

如下图1-5所示,kingbasecluster集群服务启动,watchdog通讯过程:
KingbaseES R3读写分离集群工作机制(2)

图1-5 watchdog通讯过程

Kingbasecluster服务启动主备选举过程:

1)kingbasecluster服务启动后,watchdog自动启动,将会和本地的pgpool进程及远程的watchdog通过9000端口发送heartbeat进行通讯。
2)watchdog启动后,状态演变从【DEAD】—->【LOADING】—->【JOINING】—->【INITIALIZING】状态。
4)在watchdog cluster中判断本节点的角色,对于首先在watchdog cluster中被active的节点,会被选举为MASTER角色。
5)当收到其他节点watchdog的heartbeat信息后,将其他节点加入到cluster,并配置其角色为STANDBY,完成kingbasecluster的主备选举。
6)集群节点watchdog将按照kingbasecluster.conf配置的间隔时间,定期发送heartbeat进行通讯,获取对方的状态信息。

KingbaseES R3读写分离集群工作机制(2)

上一篇:element ui table 复选框bug


下一篇:Nginx部署Vue项目以及解决刷新页面404问题