帮助中心
帮助中心主页
使用说明
开发与集成
RDS 协议选型指导
RDS脚本方法字典
Linux 双机热备配置说明(基于heartbeat)

镜像安装

RDS 双机热备系统 ISO 镜像共有两份,主机和从机,镜像是基于 Ubuntu18.04 做的定制版本,自带 Systemback 工具进行安装,请注意及时备份您系统硬盘上的重要资料,系统安装将会清除硬盘上的所有文件,之后按照以下步骤进行操作。

  1. 将 ISO 镜像以任何支持的方式安装,刻录光盘,或者使用 SyncService ISO 镜像制作U盘启动盘进行安装。

ISO镜像启动盘启动系统安装后,首先进入系统安装界面(图1),输入默认用户名称,及 root 密码,并以 node1 为例设置hostname ,hostname 字段后续还需使用,建议以相关联并容易区分的名称命名,如 node1,node2 或者用其他易分辨 的名称给 RDS 这个两台主从服务器 hostname 命名。

  1. 点击 "Next" 进入下一步分区界面,示例以 1T 硬盘为例进行分区,请根据使用的实际硬盘大小设置分区(如果是全新的硬盘没有进行过分区,请直接跳转到第4步),下图2 中 dev/sda(1-5) 是需要重新分配的区域,总可用大小 931.51GB,不同电脑的名称以及序号、数量都可能不同,请根据硬盘大小或者实际名称来区分。图中 /dev/sdb 是 U盘,因为本示例是通过 U盘 安装的系统所以此处显示有 U盘,总可用大小 58.59GB,注意不要在 U盘 上进行任何操作。


  1. 分别点击 图2 中 /dev/sda1 ~ dev/sda5 选择右侧操作菜单中的删除按钮 !Delete!,操作完成后,5个 分区将合并成一个新的分区 /dev/sda?,如下图3,总大小 931.51GB 未分配的硬盘。


  1. 点击 /dev/sda? 所在行,右侧会显示 Create new 字样,修改分区大小为 512MiB 后(图4),点击绿色左方向箭头,表示分配一个 512MB 大小的分区,之后就会在左侧多出一个 /dev/sda1 大小 512MB 的分区(图5)。


图4 创建分区大小

  1. 按照上一步方法再次点击左侧 /dev/sda? 继续创建分区,需要创建其余 4个 分区,加上上一步创建的分区,总共 5个分区,大小分别是 512MB,256MB,32GB,100GB,和剩余全部空间(此处示例剩余是 798.76GB,当剩下最后一个分区时,分配时不需要在右侧 Create New 输入分区大小,直接点击绿色左方向箭头即可将剩余全部空间分配到最后一个分区,即 /dev/sda5),如 图6 所示,分配了 5个 区域就不再有 /dev/sda?


  1. 点击 /dev/sda1 512MB 分区,在右侧 Mount point 下拉框选择 /boot,点击绿色左方向箭头便把 sda1 分区分配给 /boot 系统引导分区(图7),如此分配剩余 4个 区域(图8),256MB 给 /boot/efi EFI系统分区;32GB 给 SWAP 系统内存扩展分区,此分区一般是系统内存的两倍,示例服务器内存是 16GB,因此此处分配 32GB 给 SWAP 分区;100GB 给 /home 分区;剩余分配给 / 分区,由于 RDS、core等系统服务均使用的是 / 分区,不占用其他分区,所以尽可能分配大一点,如果服务器需要在 /home 分区安装 RDS 之外的其他应用,也可适当调整 /home 分区的大小,根据实际应用情况分配 home/ 的比例即可。

图7 boot分区
图8 所有分区

  1. 接着在 上图8 中左下方勾选 Transfer user confguration and data files ,注意是对勾样式(此处存在其他勾选方式,注意甄别)。点击 Next 后,进行最后一步安装操作,点击 Start 开始安装(图9)。
  2. 安装结束后,重新启动服务器即可。

环境配置

服务器名称设置

为方便区别热备主从服务器,给服务器命名是有必要的,使用以下命令修改台服务器名称:

shell
sudo vi /etc/hostname
1

在另一台服务器重复此步骤。

静态 IP 设置

RDS 主从服务器必须使用静态 IP 互相访问,且每个服务器最少需要两张网卡,一个用于心跳检测以便主机下线后主备能够快速切换;另一个用于对外业务,访问 RDS 和 Core。

  • 网卡1,用于心跳监测,推荐使用一条网线将主从服务器直连,以降低网络带来的问题。
  • 网卡2,用于业务访问,为主从服务器提供网络服务。

RDS ISO 镜像是 Ubuntu18.04 桌面版,修改静态 IP 可以在"设置"界面进行操作,设置相关参数(图10,11)。

图10 网络设置1

图11 网络设置2
注意:两张网卡均需设置。完成后,在另一台服务器重复以上 IP 设置步骤。

主从映射配置

使用以下命令设置主从服务器间的映射关系

shell
sudo vi /etc/hosts
1

在文件末尾增加两行:

192.168.1.101 node1
192.168.1.102 node2
1
2

其中,IP 字段是在上一步设置的接入网络的网卡2,进行业务访问的静态 IP,请不要设置成心跳监测 IP;后一个字段 node1 / node2 对应设置的服务器名称,根据实际名称设置。
在另一台服务器也需要增加以上两行映射关系。

重启服务器

重启两台服务器,使用 ping 命令,每台服务器使用三次 ping 命令,分别 ping 网卡 IP,网卡2 IP 以及对方主机名称,查看能否互相访问。任何一次访问失败,则检查以上步骤是否出现错误,重新设置重启服务器测试。

数据同步配置

RDS 数据同步

以下步骤使用服务器名称 node1 和 node2 作为示范,请根据实际修改。

服务器 node1 同步

  1. 在 node1 服务器上的终端上输入以下命令,访问 MariaDB 数据:
shell
mysql -uroot -p
1
  1. 之后再输入以下命令设置要同步的服务器名称,此处是 node2:
shell
stop slave;
change master to master_host = 'node2';
start slave;
1
2
3

服务器 node2 同步

  1. 在 node2 服务器上的终端上输入以下命令,访问 MariaDB 数据:
shell
mysql -uroot -p
1
  1. 之后再输入以下命令设置要同步的服务器名称,此处是 node1:
shell
stop slave;
change master to master_host = 'node1';
start slave;
1
2
3

检查 RDS 同步

  1. 切换回到 node1,进入 MariaDB 命令行,执行以下命令查看是否设置成功:
shell
show slave status\G;
1
  1. 当返回的信息中包含以下信息,则同步成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
1
2

如果不是以上信息,则说明 node2 的数据库无法同步,可能的原因有以下几点:

  • node2 的主机名实际上不是 node2,则需要修改主机名。
  • node2 的 网络和 node1 无法联通,请检查网路设置。

当 node1 返回的信息满足以上条件时,使用同样的方法,查看 node2 即可。

SyncService 数据同步

准备

其他所有同步数据相关文件,全部由同步工具 SyncService 来完成,SyncService 已预安装到主从服务器镜像中。在正式使用前,请确保主从两台服务器均可以通过 http://node-ip:8384 访问 SyncService,之后按照以下同步配置过程进行设置确认。

添加同步设备

首次配置同步服务时,需要在主从 SyncService 页面上添加将对方添加为要同步的设备。以 node1 的 SyncService 为例具体操作如下。

点击 SyncService 界面右下方的添加远程设备(图12),在弹出框中(图13)设备列表中点击选择 node2 服务器的设备 ID (设备 ID 在 node2 SyncService 右上角菜单栏中的"操作"中可以看到),并输入设备名 node2,此时 node1 便将 node2 加入到自己的同步服务中,点击保存。

图12 添加设备1

图13 添加设备2
切换到 node2 服务器的 SyncService 界面会看到一条来自 node1 的同步请求(图14),点击"添加设备"将 node1 添加到 node2 同步服务中,如图15,输入设备名 node1,直接点击保存。

图14 确认添加设备

经过以上添加设备操作后,可以在 node1 和 node2 两个节点的"远程设备"中看到对方已经加入到本地同步服务中(图16)。

图16 远程设备确认

开始同步数据

浏览器进入同步工具 SyncService 应用界面,按照以下步骤手动添加同步目录。

添加 RDS 同步文件

点击 "+添加文件夹"(图17)。


图17 添加文件夹

点击"常规"选项卡(图18)。"文件夹标签",即自定义文件夹的名称,如 biz,表示这是 RDS 的 biz 配置文件;"文件夹 ID",设置同步文件夹的唯一 ID,默认已经生成好了,不需修改;"文件夹路径",指定要同步的文件夹路径,RDS biz 配置文件是固定路径,为 /opt/data/rds/script

图18 添加文件夹
点击"忽略模式"选项卡(图19)。

图19 忽略模式
点击"保存"后,会返回到主界面,在 UI 界面上点击 "biz" 文件夹,点击"选项"。

图20 选项
再点击"忽略模式",就可以添加要忽略的文件了。由于我们只需要同步 application-biz.yml,其他文件不需要同步,而 SyncService 同步工具只能同步文件夹,所以要设置忽略选项。在界面上填写以下字段:

!application-biz.yml
*
1
2

"!" 表示不要忽略后面的文件,"*" 表示忽略全部,即除了 application-biz.yml 文件其他全部都不需要同步(图21)。

图21 忽略文件

点击"共享"选项卡,勾选要同步的目标服务器(图22)

图22 共享文件

点击"高级"选项卡。在"文件夹类型"中选择"发送与接收",勾选"同步所有权",点击"保存"完成设置(图23)。

图23 高级

上一步保存后,切换到另一台服务器的 SyncService 界面,Web 界面将会弹出共享界面(图24),点击"添加"后,按照以上4个步骤同样设置这台服务器的文件夹。

图24 确认共享
至此,RDS 的配置文件同步设置完成。

添加 core 同步文件

同 RDS 配置文件的同步设置,增加 core 的同步目录 /opt/.data/rdscore/resources/db,不同于 RDS biz 配置文件,core 的同步文件不需要进行第2步忽略文件操作,core 的 db 文件夹下的全部文件都需要同步。

验证

设置完成后, core 和 RDS 的配置文件显示如下就表示配置正常(图25),其中 biz 为 RDS 配置文件 application-biz.yml 目录 /opt/data/rds/script,core 为目录 /opt/.data/rdscore/resources/db

图25 共享文件夹

主从切换配置

要使用 SyncService 的主从切换功能,除了需要同步数据之外,主从服务器之间还需要监测对方心跳,当从机接收不到主机信息时,完成接管主机的任务。从资源配置和心跳监测两方面进行配置。

资源切换配置

RDS 双机热备服务首次部署时,必须指定一台服务器作为主服务器,使得正式使用时系统能够首先启动主服务器的服务。访问主服务器 http://ip:8384 进入 SyncService 界面,点击"资源配置"(图26)。

图26 资源配置

虚拟 IP 设置和资源设置

在弹出框中编辑以下字段:

node1 192.168.1.200/23/eno1 rds.sh
1

从前往后,node1是主服务器节点的主机名称,即在服务器设置中设置的名称;192.168.1.200/23/eno1分别是虚拟 IP子网掩码以及关联的网卡名称。对于双机热备服务器而言,对外提供的是同一个 IP,不管主从如何切换,对外服务的 IP 是不能改变的,始终有一个 IP 对外提供服务。虚拟 IP 需要关联到一个物理网卡进行绑定,eno1就是网卡名称,对应环境配置中的业务网卡。rds.sh是管理 RDS 和 core 的脚本。
注意:除了 rds.sh外,其他信息都需要根据实际情况设置。

切换到从服务器的 SyncService 界面,点击"资源配置",将以上信息无需修改的复制一份,保证双方一致。即,主从两台服务器设置的都是主机的资源信息。

点击保存,完成设置。

心跳配置

当主节点长时间无法和从节点通讯时,从节点将会接管主节点。进入主服务器 SyncService 界面,点击"心跳配置"(图27)。点击保存,完成配置。


图27 心跳配置
配置以下信息:

debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
warntime 15
deadtime 30
initdead 60
udpport 694
ucast eno2 169.254.0.100
auto_failback off
node node1
node node2
ping 192.168.0.1
respawn hacluster /usr/lib/heartbeat/ipfail
1
2
3
4
5
6
7
8
9
10
11
12
13
14

debugfile: 记录 debug 日志信息的文件。
logfile: 记录其他日志的文件。
logfacility: 系统配置,请不要修改。
keepalive: 心跳周期,单位为秒。
warntime: 超过该时间,单位为秒。没收到心跳则发送警告信息
deadtime: 超时 deadtime 时间,单位为秒。则宣布当前节点已死亡,备机接管主机。
initdead: 服务器重启后心跳检测第一次监测宕机的时间,单位为秒。在这段时间内,系统会等待另一端节点的心跳信号。如果在这段时间内没有接收到另一端节点的心跳信号,就会认为另一端节点已经宕机。作用相同与 deadtime,但仅在重启时第一次生效。因为在一些机器/操作系统等上,网络在重启后需要一段时间来启动。
udpport: 发送心跳信息的端口。
ucast: 心跳网卡名称及其 IP 地址。
auto_failback: 是否在主机恢复时放弃所有权,当设置为 on 时,意味着从机接管服务后,当主机重新上线时,从机让出资源。off 表示备机不放弃资源,相当于双主服务器。
node: 主从机器的名称。
ping: 一般填写网关 IP,不能填写某一个节点的 IP。
respawn: 参数 hacluster /usr/lib/heartbeat/ipfail表示当主机资源意外终止时,会将之前设置的虚拟 IP(示例中为192.168.1.200,具体 IP 由实际决定) 迁移到从节点。以保证对外资源可以通过唯一 IP 的进行访问。

点击保存,完成配置。

启动同步服务

在配置 SyncService 的过程中界面上会弹出"同步服务已被关闭"的信息,此时是正常现象(图28)。因为配置完成后需要手动启动同步服务,关闭弹出框,点击"当前设备"下方的"启动服务"按钮(图29),错误提醒会消失。另一台服务器也需要"启动服务"。

图28 同步服务关闭
因为配置完成后需要手动启动同步服务,关闭弹出框,点击"当前设备"下方的"启动服务"按钮(图29),错误提醒会消失。另一台服务器也需要"启动服务"。

图29 启动同步服务

注意

首先执行"启动服务"的节点会作为主机将启动 RDS 和 core,后启动的服务器将作为从机,等待主机不可用时接管服务,注意"启动服务"顺序。除非服务器出现异常,否则请不要点击"停止服务"按钮,该操作会造成此服务器不能进行资源接管。

验证

完成配置并启动同步服务后,可以通过已配置好的 虚拟 IP 访问 RDS 主页查看是否正常,至此 RDS 双机热备服务配置已全部完成。

最近更新 2023/10/10
文章内容

镜像安装

环境配置

服务器名称设置

静态 IP 设置

主从映射配置

重启服务器

数据同步配置

RDS 数据同步

服务器 node1 同步

服务器 node2 同步

检查 RDS 同步

SyncService 数据同步

准备

添加同步设备

开始同步数据

添加 RDS 同步文件

添加 core 同步文件

验证

主从切换配置

资源切换配置

虚拟 IP 设置和资源设置

心跳配置

启动同步服务

注意

验证