镜像安装
RDS 双机热备系统 ISO 镜像共有两份,主机和从机,镜像是基于 Ubuntu18.04 做的定制版本,自带 Systemback 工具进行安装,请注意及时备份您系统硬盘上的重要资料,系统安装将会清除硬盘上的所有文件,之后按照以下步骤进行操作。
- 将 ISO 镜像以任何支持的方式安装,刻录光盘,或者使用 SyncService ISO 镜像制作U盘启动盘进行安装。
ISO镜像启动盘启动系统安装后,首先进入系统安装界面(图1),输入默认用户名称,及 root 密码,并以 node1 为例设置hostname ,hostname 字段后续还需使用,建议以相关联并容易区分的名称命名,如 node1,node2 或者用其他易分辨 的名称给 RDS 这个两台主从服务器 hostname 命名。
- 点击 "Next" 进入下一步分区界面,示例以 1T 硬盘为例进行分区,请根据使用的实际硬盘大小设置分区(如果是全新的硬盘没有进行过分区,请直接跳转到第4步),下图2 中
dev/sda(1-5)
是需要重新分配的区域,总可用大小 931.51GB,不同电脑的名称以及序号、数量都可能不同,请根据硬盘大小或者实际名称来区分。图中/dev/sdb
是 U盘,因为本示例是通过 U盘 安装的系统所以此处显示有 U盘,总可用大小 58.59GB,注意不要在 U盘 上进行任何操作。
- 分别点击 图2 中
/dev/sda1
~dev/sda5
选择右侧操作菜单中的删除按钮!Delete!
,操作完成后,5个 分区将合并成一个新的分区/dev/sda?
,如下图3,总大小 931.51GB 未分配的硬盘。
- 点击
/dev/sda?
所在行,右侧会显示Create new
字样,修改分区大小为 512MiB 后(图4),点击绿色左方向箭头,表示分配一个 512MB 大小的分区,之后就会在左侧多出一个/dev/sda1
大小 512MB 的分区(图5)。
图4 创建分区大小
- 按照上一步方法再次点击左侧
/dev/sda?
继续创建分区,需要创建其余 4个 分区,加上上一步创建的分区,总共 5个分区,大小分别是 512MB,256MB,32GB,100GB,和剩余全部空间(此处示例剩余是 798.76GB,当剩下最后一个分区时,分配时不需要在右侧Create New
输入分区大小,直接点击绿色左方向箭头即可将剩余全部空间分配到最后一个分区,即/dev/sda5
),如 图6 所示,分配了 5个 区域就不再有/dev/sda?
。
- 点击
/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 所有分区
- 接着在 上图8 中左下方勾选
Transfer user confguration and data files
,注意是对勾样式(此处存在其他勾选方式,注意甄别)。点击Next
后,进行最后一步安装操作,点击Start
开始安装(图9)。 - 安装结束后,重新启动服务器即可。
环境配置
服务器名称设置
为方便区别热备主从服务器,给服务器命名是有必要的,使用以下命令修改台服务器名称:
sudo vi /etc/hostname
在另一台服务器重复此步骤。
静态 IP 设置
RDS 主从服务器必须使用静态 IP 互相访问,且每个服务器最少需要两张网卡,一个用于心跳检测以便主机下线后主备能够快速切换;另一个用于对外业务,访问 RDS 和 Core。
- 网卡1,用于心跳监测,推荐使用一条网线将主从服务器直连,以降低网络带来的问题。
- 网卡2,用于业务访问,为主从服务器提供网络服务。
RDS ISO 镜像是 Ubuntu18.04 桌面版,修改静态 IP 可以在"设置"界面进行操作,设置相关参数(图10,11)。
图10 网络设置1
图11 网络设置2
注意:两张网卡均需设置。完成后,在另一台服务器重复以上 IP 设置步骤。
主从映射配置
使用以下命令设置主从服务器间的映射关系
sudo vi /etc/hosts
在文件末尾增加两行:
192.168.1.101 node1
192.168.1.102 node2
2
其中,IP 字段是在上一步设置的接入网络的网卡2,进行业务访问的静态 IP,请不要设置成心跳监测 IP;后一个字段 node1 / node2 对应设置的服务器名称,根据实际名称设置。
在另一台服务器也需要增加以上两行映射关系。
重启服务器
重启两台服务器,使用 ping
命令,每台服务器使用三次 ping 命令,分别 ping 网卡 IP,网卡2 IP 以及对方主机名称,查看能否互相访问。任何一次访问失败,则检查以上步骤是否出现错误,重新设置重启服务器测试。
数据同步配置
RDS 数据同步
以下步骤使用服务器名称 node1 和 node2 作为示范,请根据实际修改。
服务器 node1 同步
- 在 node1 服务器上的终端上输入以下命令,访问 MariaDB 数据:
mysql -uroot -p
- 之后再输入以下命令设置要同步的服务器名称,此处是 node2:
stop slave;
change master to master_host = 'node2';
start slave;
2
3
服务器 node2 同步
- 在 node2 服务器上的终端上输入以下命令,访问 MariaDB 数据:
mysql -uroot -p
- 之后再输入以下命令设置要同步的服务器名称,此处是 node1:
stop slave;
change master to master_host = 'node1';
start slave;
2
3
检查 RDS 同步
- 切换回到 node1,进入 MariaDB 命令行,执行以下命令查看是否设置成功:
show slave status\G;
- 当返回的信息中包含以下信息,则同步成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
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
*
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
从前往后,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
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 双机热备服务配置已全部完成。