SUSE Linux 11高可用群集安装配置指南
2020-11-11河北王春海
■ 河北 王春海
编者按:高可用群集HA(High Available)是保证业务系统连续性的有效解决方案。关于Windows操作系统配置高可用群集的资料较多,SUSE Linux配置群集的资料较小。本文通过一个具体的案例,比较详细的介绍了基于SUSE Linux配置高可用群集的方法和步骤。
要配置高可用群集,一般配置2台物理主机加1台共享存储,系统运行在物理主机上,数据保存在共享存储上。在主机上运行相同的操作系统及应用程序,其中有1台主机的应用程序是活动节点。活动节点连接管理共享存储,另1台主机的应用程序是备用节点(备用节点暂时不管理共享存储)。如果活动节点的主机出现问题,备用节点的应用程序会接管共享存储并接管应用。这种情况要求实现了业务的连续性,在群集节点切换期间,业务不中断或短暂中断。
客户需求介绍
最近在一个项目中,客户需要使用SUSE Linux For SAP 11 SP4版本的操作系统配置HA的环境。
用于HA的主机配置了2台高配置的DELL R740XA的服务器、1台华为OceanStor 5310F V5的全闪存存储。每台主机配置了1.5 TB内存、2个Intel Gold 6230的CPU、1块DELL BOSS卡(配置了2块240 GB的M.2 SSD做RAID-1并安装SUSE Linux For SAP 11 SP4操作系统)。2台主机分别使用2端口16 GB FC HBA卡连接到光纤存储交换机,再连接到华为5310F存储。
HA的项目要求2个资源包(sypascs、sypdb),需要两个浮动IP和虚拟主机名(eccci、eccdb)。具体如下:
1.卷组1:ascsvg,划分文件系统/usr/sap/SYP/ASCS 00,用于部署SAP ASCS服务,大小5 TB。
2.卷组2:db vg,用于存放Db2数据库相关数据文件及其运行日志,主要包含/db 2/SYP/下的相关目录和文件系统,大小10 GB。
3.NFS共享文件系统:采用NAS文件系统,大小60 GB。
卷组1、卷组2需要2个LUN,在本次项目中,配置一个100 MB大小的共享磁盘用于HA。一共3个LUN。在华为OceanStor 5310F V5划分了3个LUN分配给这2台服务器。这3个LUN大小分别为100 MB、5 TB、10 GB。
其中LUN01(100 MB)用于仲裁或见证,LUN02(5 TB)与LUN04(10 GB)用于共享数据磁盘。
在华为OceanStor 5310F V5划分了2个文件系统,大小分别为10 GB、50 GB,用于NAS文件系统,采用NFS共享文件。
在本项目中,2台主机的IP地址分别是172.16.68.221与172.16.68.222。配置的2个Virtual IP分别为172.16.68.168与172.16.68.170。共享文件系统指定给这4个IP地址使用。其他IP地址无法访问。
要求2台主机使用SUSE HA进行配置。创建2个资源组,其中第1个资源组分配1个Virtual IP(本示例为172.16.68.168),同时加载10 GB的LUN04,这个资源组默认在节点1加载;第2个资源组分别1个Virtual IP(本示例中为172.16.68.170)并加载5 TB的LUN02,这个资源组默认在节点2加载。同一时间只能有1台主机挂载共享盘,如果其中1台主机故障,另1台主机马上接管并挂载共享磁盘。项目最终配置完成后,执行“crm status”命令,如图1所示。
说明:对于大多数只熟悉Windows操作系统和Windows群集的系统管理员来说,只要你了解Linux、掌握一些Linux的基本命令,就能参考本文完成配置。
图1 查看资源状态
下面介绍配置的主要流程、步骤,安装配置中出现的问题及解决方法进行整理,希望对有同样需求的朋友有所帮助。
安装FC HBA卡驱动与多路径软件
本次项目中用到的SUSE Linux For SPA 11 SP4的安装镜像,可以登录其官网下载,链接地址为:https://www.suse.com/zh-cn/download-linux。
实际使用中只需要下载SLE-11-SP4-SAP-DVD-x86_64-GM-DVD1.iso、SLE-HA-11-SP4-x86_64-GM-CD1.iso这两个文件即可。关于SUSE Linux 11的安装本文不做过多介绍。
在服务器上安装SUSE Linux 11 SP4操作系统之后,需要安装FC HBA卡驱动及多路径软件。可以使用SUSE Linux操作系统自带的多路径软件,也可以使用厂商提供的多路径软件。
本示例中安装华为提供的多路径软件。当前2台DELL R740XD配置的FC HBA卡是Emulex LPE 31002双端口16 Gb光纤通道 HBA。在SUSE 11中不包含该HBA卡的驱动,需要单独下载安装。DELL提供的驱动程序下载地址为:
https://docs.broadcom.com/docs-and-downloads/oem/support/elx/rt11.4.1/11.4.142.23/elx-lpfc-ddsles11sp-11.4.142.21-1.tar.gz
下载驱动程序之后,解压缩展开,然后使用SFTP上传到Linux主机的/tmp文件夹进行安装。主要步骤如下(如图2所示)。
chmod +x elx_lpfc_install.sh
./elx_lpfc_install.sh
安装FC HBA卡驱动之后,可以执行“fidsk -l”就可以显示出存储分配给当前主机的LUN。但对于同一个LUN会显示为多个相同的磁盘,这需要启用多路径。因为当前使用的是华为存储,华为提供了多路径软件。
(1)拷贝华为多路径软件到SUSE Linux的/tmp文件夹。可以使用SFTP软件将多路径软件上传到Linux主机的/tmp文件夹。
(2)进入驱动程序文件夹,使用chmod命令为安装程序添加运行权限。
chmod +x install.sh
(3)执行安装
eccprd2:/tmp/SLES #./install.sh
(4)选择从本地引导。在出现以下提示是输入1并按回车键。
图2 安装FC HBA卡驱动
If the operating sys tem is installed on a lo cal drive of the server,you are advised
to choose boot from local;if the operating system is installed on a SAN storage
system,you must choo se boot from san.Please choose the boot type of your system:
<1>--boot-from-Local
<2>--boot-from-SAN
please input your select:1
(5)安装完成后重新引导系统
The install ation is com plete.Whether to restart the system now?
配置网络与host name文件
用于HA的2台主机,每台主机配置了1块4端口10 Gbit/s网卡,集成4端口1 Gbit/s网卡。本项目中使用配置10 Gbit/s网卡用于业务通讯(配置172.16.68.0网段),1 Gbit/s网卡用于群集心跳(规划使用192.168.68.0网段)。本项目中主机名、IP地址规划如表1所列。
下面以第1台主机的设置为例。另一台主机设置与此类似。在本项目中,172.16.68.0网段的网关地址为172.16.68.8,DNS为172.16.5.11。
表1 主机表与IP地址规划表
1.在“Yast”中单击“Network Sett ings”,在网络设置的“Routing”选项中添加网关地址,本示例中172.16.68.0/24的网关地址为172.16.68.8。
2.在“Hostname/DNS”选项卡中,设置主机名称为eccprd1,在Name Ser ver中设置DNS服务器的IP地址,本示例中DNS服务器的IP地址为172.16.5.11。
3.选中第一块网卡(用于对外提供服务的网卡),单击“Edit”按钮,设置IP地址为172.16.68.221,设置Hostname为eccprd1。
4.选中用于群集心跳的网卡,单击“Edit”按钮,设置IP地址为192.168.68.221,设置Hostname为eccprd1-lan。
5.在当前实验环境中,第三块网卡用于连接iSCSI共享存储,设置这块网卡的IP地址为192.168.0.221。在实际的生产环境中,服务器通过16G FC HBA卡连接到存储。
图3 编辑主机hostname文件
对于群集中另一台主机与此设置相类似,只是服务器的IP地址设置为172.16.68.222,群集心跳网络地址设置为192.168.68.222,对应的名称分别是eccprd2、eccprd2-lan。
设置连接iSCSI存储的网卡的IP地址为192.168.0.222。在群集中每台主机编辑hostname文件,添加主机名对IP地址的解析。
在Yast中单击hostname,将2台群集主机hostname添加到另一台主机名称的解析,编辑之后如图3所示。
172.16.68.221 eccprd1 eccprd1
172.16.68.222 eccprd2 eccprd2
192.168.68.221 eccprd1-lan eccprd1-lan
192.168.68.222 eccprd2-lan eccprd2-lan
SSH免密码互联服务配置
HA集群的两台HANA服务器的需要配置SSH免密码互联服务,执行过程如下。
生成认证公钥:
登录主节点分别执行命令“ssh-key gen -t rsa”“sshkeygen -t dsa”生成公钥。
在主节点依次执行下面命令复制公钥到对方节点。提示输入节点密码时输入root用户密码。其他直接按回车键。
ssh-keygen -t rsa
ssh-keygen -t dsa
ssh eccprd1 "echo $(cat/root/.ssh/id_dsa.pub) >>/root/.ssh/authorized_keys"
ssh eccprd2 "echo $(cat/root/.ssh/id_dsa.pub) >>/root/.ssh/authorized_keys"
ssh eccprd1 "echo $(cat/root/.ssh/id_rsa.pub) >>/root/.ssh/authorized_keys"
ssh eccprd2 "echo $(cat/root/.ssh/id_rsa.pub) >>/root/.ssh/authorized_keys"
登录服务器节点2,参考服务器节点1的方法,依次执行下面命令复制公钥到对方节点:
ssh eccprd1 "echo $(cat/root/.ssh/id_dsa.pub) >>/root/.ssh/authorized_keys"
ssh eccprd2 "echo $(cat/root/.ssh/id_dsa.pub) >>/root/.ssh/authorized_keys"
ssh eccprd1 "echo $(cat/root/.ssh/id_rsa.pub) >>/root/.ssh/authorized_keys"
ssh eccprd2 "echo $(cat/root/.ssh/id_rsa.pub) >>/root/.ssh/authorized_keys"
在配置完成后,登录服务器节点1,运行ssh eccprd2,可以直接登录到节点2,不需要输入密码。在另一台计算机上运行ssh eccprd1可以直接登录到节点1,表示配置正确。
安装Suse 11 SP4 Cluster组件
加载或拷贝SLE-HA-11-SP4-x86_64-GM-CD1.iso安装镜像,安装SUSE HA软件。主要步骤和过程如下。
1.在Yast中单击“Addon Products”,在“Installed Add-on Products”,单击“Add”按钮。
2.在 “Media Type”按钮中单击选择加载安装包的方式,可以指定URL、FTP、HTTP、SMB、NFS路径,也可以加载SLE-HA-11-SP4-x86_64-GM-CD1.iso安装。
3.在“License Agreeme nt”中单击“Yes,I Agree to the License Agreement”,接受许可协议。
4.在“Software Selectio n and System Tasks”中确认“High Availability”已经选中。然后单击“OK”按钮开始安装。
5.安装完成之后,重新启动启动计算机。群集中的每一台计算机都要安装HA组件,安装完成之后重新启动计算机。再次进入系统之后,在Yast中可以看到“Cluster”和“Pacemaker GUI”程序组件。
在安装HA之后,修改hac luster用户密码。打开终端界面,执行:
passwd hacluster
然后为群集帐户haclu ster设置密码。一般直接设置与root用户的密码一样。
在配置与使用SUSE 11的时候,为了简化配置,一般建议关闭关闭系统默认的防火墙,并且让系统重新启动后不加载防火墙。主要步骤和过程如下。
(1)在Yast中单击Fire wall,在“Firewall Confi guration:Start-UP”对话框中选择“Disable Firewall Automatic Starting”,并单击“Stop Firewall Now”按钮以停止防火墙服务,然后单击“Next”按钮并完成设置。
(2)在“Firewall star ting”对话框中单击“Fini sh”按钮,完成配置。
为节点添加iSCSI存储并进行磁盘分区
在生产环境中采用的是FC连接的共享存储。这一步实验抓图采用的是iSCSI共享存储。在本示例中,使用iSCSI服务器为群集中的2个节点提供共享磁盘服务。首先为主节点添加iSCSI服务器分配的LUN磁盘。
1.在节点1的服务器上的“Yast”中单击“iSCSI Initiator”,在“iSCSI Init iator Overview”对话框中的“Service”选项卡中,单击选中“When Booting”让iSCSI客户端在系统启动时开始服务。
2.在“Connected Targets”选项卡中单击“Add”按钮,添加iSCSI服务器的地址,本示例为192.168.0.110,添加之后设置系统启动时自动连接。
在配置群集完成之前,建议只有一台主机连接到共享存储。如果要在节点1主机上进行配置,可以暂时把节点2主机连接到存储的光纤拔下。等群集配置完成之后再插上光纤并连接存储。在当前项目中,主机连接到存储的3个LUN,其中100 MB的LUN不需要配置,5 TB与10 GB的LUN根据项目要求创建卷组并创建逻辑卷。创建完成后的如图4所示。
使用sleha-init配置群集
在准备用做主节点的服务器中,执行“sleha-init”命令初始化主节点,主要步骤如下。
在本示例中,设置IP地址为172.16.68.221、主机名称为eccprd1为节点1,IP地址为172.16.68.222、主机名称为eccprd2的为节点2。
在节点1主机上运行Suse 11 Cluster命令进行集群的初始化。
图4 5TB共享磁盘划分情况
1.以root用户登录服务器节点1(配置为主节点),执行命令“sleha-init”,进行初始化。执行过程中根据提示选择。
2.出现提示“/root/.ssh/id_rsa already exists-overwrite? [y/N]”时,选择输入“N”,不覆盖id_rsa。
3.如果该服务器之前做过配置,当出现提示“csync2 is already configured -overwrite? [y/N]”时,选择输入“Y”,覆盖原有配置。
4.Configure Corosync。当提示“Network address to bind to(e.g.:192.168.1.0)”时,请输入集群的通信网络,即选择服务器操作系统的维护网段,当前示例为192.168.68.0(不需要输入具体的IP地址,只需要输入子网地址)。
5.Multicast address(e.g.:239.x.x.x)默认不变,按Enter。
6.当提示:Mult icast port [5405]默认不变,按Enter。
7.Configure SBD:使用SBD模式,输入Y。然后配置SBD。
在生产环境中,使用LUN 01的100 MB共享磁盘用做SBD。在当前环境的2台群集主机中,主机本地硬盘为sda,LUN01、LUN02、LUN03、LUN04加载的共享磁盘依次为sdb、sdc、sde。
说明:在配置存储的时候多划了一个LUN03,在后期从主机映射中移除了LUN03这个共享磁盘。
再次打开一个终端窗口,执行“ls -l/dev/disk/byid/”命令,搜索查看sdb设备名称,该设备名称以scsi -3开头。本示例中该名称为scsi-36446747100ee045300 0957e400000000。复制该设备名称,切换到sleha-init窗口,在Path to storage device(e.g./dev/disk/byid/...) []后面输入:
/dev/disk/by-id/scsi-36446747100ee045300095 7e400000000
之后按Enter,在Are you sure you wish to use this device [y/N]后面输入y,然后按Enter完成初始化。
配置完成后,登录https://172.16.68.221,可以看到STONITH已启用。也可以执行“crm_mon”,可以看到名为stonith-sbd的资源已经启动。
在集群服务器备节点上,运行sleha-join命令将其他节点加入现有的集群中。
(1)以root用户登录集群主节点,将主节点配置文件复制到备节点。命令如下。在本示例中,eccprd1为主节点,eccprd2为备节点。
scp/etc/csync2/csync2.cfg root@eccprd2:/etc/csync2
scp/etc/csync2/key_hagroup root@eccprd2:/etc/csync2
scp/etc/corosync/authkey root@eccprd2:/etc/corosync/
scp/etc/corosync/coros ync.conf root@eccprd2:/etc/corosync/
(2)以root用户登录集群备节点,运行命令“slehajoin”。
(3)当出现提示“IP add ress or hostname of exist ing node”时,输入主节点的OS管理的IP地址。本示例中为172.16.68.221。
(4)Enable sshd servi ce:当出现提示“/root/.ssh/id_rsa already exists -overwrite? [y/N]”时,输入“N”,然后“Enter”,选择不覆盖;等待加入完成。
加入群集之后,执行crm_mon,会显示当前有2个节点在线,一个stonith资源已经启动。
如果提示安装失败:“WARNING:csync2 of/etc/csync2/csync2.cfg failed WARNING:csync2 of/etc/csync2/csync2.cfg failed--file may not be in sync file may not be in sync on all nodeson all nodes;”,则需要在主节点运行命令将主节点的配置文件复制到备节点。
这包括csync2.cfg等文件,然后重新执行命令行命令slehasleha—join join加入现有群集。在执行命令前停止备节点的群集服务。
使用Pacemaker GUI配置资源
在群集中任意一个节点中运行Pacemaker GUI配置资源。在配置的时候,建议将另一个节点主机关机,等群集资源配置完成后再打开另一个节点并让节点联机。
1.在“YaST Control Center”单击Pacemaker GUI,在Pacemaker GUI中单击Co nnection,在弹出的Login对话框中,输入用户名hac luster及密码,单击“OK”按钮登录。
2.在CRM Config中,在“No Quorum Policy”下拉列表中选择ignore。然后单击“Apply”按钮。
3.在“Resources”中当前只有“stonith-sbd”的一个资源。下面添加一个资源组,在该资源组中添加一个Virtual IP,同时加载一个逻辑卷及加载一个文件系统。
(1)左侧单击Resources,在右侧单击“Add”按钮,在弹出的对话框中选择Group,然后单击“OK”按钮。
(2)在“Add Group”对话框中“ID”文本框中输入新添加的资源组的名称,本示例中为g_SAP,然后单击“Forward”按钮。
(3)在“Add Group -Add Sub-resource For ‘g_SAP’”中默认为Primitive,单击“OK”按钮。
(4)在“Add Primitive -Basic Settings”中,在 “ID”文本框中输入子资源名称,本示例中为r_sappap_vip,在“Class”下拉列表中选择ocf,在“Provider”下拉列表中选择heartbeat,在“Type”下拉列表中选择IPaddr2,然后单击“Forward”按钮。
(5)在“instance Attribut es”选项卡中选中IP,然后单击“Edit”按钮,在“Value”中输入Virtual IP地址,本示例中为172.16.68.168,然后单击“OK”按钮。
注意,新添加的虚拟IP地址应该是当前网段中未分配未使用的。
(6)返回到“Add Primiti ve -Summary of ‘r_sapap_vip’”对话框,单击“Apply”按钮。
(7)返回“Add Group -Add Sub-resource For ‘g_SAP’”对话框,如果要继续添加资源,应单击“OK”按钮。如果添加资源完成,单击“Cancel”按钮。本示例中继续添加子资源。
(8)在“Add Primitive”对话框中的“ID”文本框中输入新添加的子资源名称,本示例为r_ascsvg,在“Class”下拉列表中选择ocf,然后在“Provider”下拉列表中选择heartbeat,在“Type”下拉列表中选择LVM。
(9)在“instance Attri butes”选项卡中选中volgrp name,然后单击“Edit”按钮,在“Edit Nvpair”的Value中输入要加载的卷组的名称,本示例为ascsvg,单击“OK”按钮。
(10)返回到“Add Primi tive”对话框,单击“Apply”按钮,返回“Add Group -Add Sub-resource For ‘g_SAP’”对话框,如果要继续添加资源,应单击“OK”按钮。如果添加资源完成,单击“Cancel”按钮。本示例中继续添加子资源。
(11)在“Add Primitive”对话框中的“ID”文本框中输入新添加的子资源名称,本示例为r_sap_ascs00,在“Class”下拉列表中选择ocf,在“Provider”下拉列表中选择heartbeat,在“Type”下拉列表中选择Filesystem。然后单击“Forward”按钮。
(12)在“Add Primitive-Summary Of ‘r_sap_asc s00’”对话框中,在添加文件系统时,需要添加设备名称、要加载到的目录、加载的文件属性。
在YaST2中执行Partit ioner程序,查看创建的名为ascsvg卷组属性,本示例中卷组名称为ascsvg,要加载的逻辑卷的名称为ascs00,其Device(设备名称)为/dev/ascsvg/ascs00。
选择Device,然后单击“Edit”按钮,在弹出的“Edit Nvpair”对话框的“Value”中输入要加载的文件系统的设备,名称为/dev/ascsvg/ascs00,然后单击“OK”按钮。
这个设备要加载到本地的一个目录中,本示例中将其加载到/usr/sap/SYP/ascs00目录中。在此需要创建/usr/sap/SYP目录。选中directory,然后单击“Edit”按钮,在弹出的“Edit Nvpair”对话框的Value中输入要加载的位置,本示例中为/usr/sap/SYP/ascs00。然后单击“OK”按钮。
选中fstype然后单击Edit按钮,在弹出的“Edit Nvpair”对话框的Value中输入文件系统属性,本示例为ext3。添加的文件系统资源完成后,单击“Apply”按钮。
(13)返回“Add Group-Add Sub-resource For‘g_SAP’”对话框,如果要继续添加资源,应单击“OK”按钮。如果添加资源完成,单击“Cancel”按钮。本示例已经添加完所需资源,单击“Cancel”按钮。
(14)返回“Add Group”对话框,本示例中添加一个Virtual IP地址,加载一个LVM,加载一个文件系统。单击“Apply”按钮,添加资源组完成。
(15)返回Pacemaker GUI对话框,在“Resources→Group”中可以看到创建的资源组。
当前的资源组还没有运行。在“Management”中用鼠标右键单击资源组的名称g_SAP,在弹出的快捷菜单中选择Start启动资源组,如果配置正确,资源组启动成功。此时资源组在节点1上加载。
如果群集中2个节点全部启动,有可能在启动带有文件系统的资源组时,2台服务器会立刻重启。笔者分析,可能是这2个节点全部加载了同一个逻辑卷造成系统冲突引起的。如果出现这一情况,应暂时关闭一台节点主机,只让1个节点加载文件系统,等加载成功之后再启动另一个节点即可。
(16)参照上面的示例,添加第2个资源组。资源组的名称为g_sypdb,Virtual IP地址为172.16.68.170,加载的卷组为dbvg,加载的逻辑卷分别为SYP、log_dir、sapdata1、sapdata2、sapdata3、sapdata4等逻辑卷。
(17)配置好第2个资源组。
用户要求当群集中主机开机后,默认的资源组g_SAP在节点1主机上加载,g_sypdb在节点2主机上加载。如果其中的一个节点主机故障,则资源组会自动在存活主机自动加载。为资源指定群集节点的操作步骤如下。
①资源组g_sypdb在节点1上加载,用鼠标右键单击资源组名称g_sypdb,在弹出的快捷菜单中选择“Mi grate Resource”。
②在“Migrate Resource”对话框中,在“To Node”下拉列表中选择另一个节点名称eccprd2,单击“OK”按钮。
③在资源组切换过程中,Cluster会暂时先停止资源组中的资源,然后再在指定的节点启动。等资源切换完成后,指定的资源组(默认)在节点2运行。
④参考前面步骤,将g_sypascs资源组(实验环境中对应的资源组名称为g_SAP,生产环境中对应的资源组名称为g_sypascs)迁移到节点1。
⑤在“Constraints(约束条件)”中可以看到,在默认情况下,g_sypascs资源组在节点1(主机名称为eccprd1),g_sypdb资源组在节点2(主机名称为eccprd2)。
⑥打开终端桌面,执行crm status查看Cluster状态。
常见故障解决
1.如果配置资源的过程中,服务器突然退出图形界面,返回到到命令行界面并报如下错误:
Failed to connect to socket/var/run/dbus/syste m_bus_socket:No such file or directory
按ALT F1或F2,切换到另一个窗口,使用root帐户登录,执行/etc/init.d/dbus start启动服务后,服务器会再次进入图形界面。
2.两台服务器交替重新启动。
当两台群集的心跳线断开后就会出现这种情况,应检查2台服务器用于心跳的网线。