在 RedHat 和 CentOS 上配置具有 2 个节点的 Linux 集群

华为云 2022-09-23 09:22:50 阅读数:515

CentOS配置Redhat节点具有

在主备 Linux 集群配置中,包括 IP、文件系统在内的所有关键服务都将从集群中的一个节点故障转移到另一个节点。

本教程详细解释了如何使用命令行实用程序创建和配置两个节点的 redhat 集群。

以下是在 Redhat 或 CentOS 上配置 Linux 集群的高级步骤:

  • 安装并启动 RICCI 集群服务
  • 在活动节点上创建集群
  • 将节点添加到集群
  • 将防护添加到集群
  • 配置故障转移域
  • 向集群添加资源
  • 跨节点同步集群配置
  • 启动集群
  • 通过关闭活动节点来验证故障转移

红帽集群

1. 所需集群包

首先确保安装了以下集群包。如果您没有这些软件包,请使用yum 命令安装它们。

[[email protected] ~]# rpm -qa | egrep -i "ricci|luci|cluster|ccs|cman"modcluster-0.16.2-28.el6.x86_64luci-0.26.0-48.el6.x86_64ccs-0.16.2-69.el6.x86_64ricci-0.16.2-69.el6.x86_64cman-3.0.12.1-59.el6.x86_64clusterlib-3.0.12.1-59.el6.x86_64

2.启动RICCI服务并分配密码

接下来,在两个节点上启动 ricci 服务。

[[email protected] ~]# service ricci startStarting oddjobd: [ OK ]generating SSL certificates... doneGenerating NSS database... doneStarting ricci: [ OK ]

您还需要为两个节点上的 RICCI 分配密码。

[[email protected] ~]# passwd ricciChanging password for user ricci.New password:Retype new password:passwd: all authentication tokens updated successfully.

此外,如果您正在运行 iptables 防火墙,请记住,您需要在两个节点上都有适当的防火墙规则才能相互通信。

3.在Active Node上创建集群

请从活动节点运行以下命令以创建新集群。

以下命令将创建集群配置文件 /etc/cluster/cluster.conf。如果该文件已经存在,它将用新创建的 cluster.conf 替换现有的 cluster.conf。

[[email protected] ~]# ccs -h rh1.mydomain.net --createcluster myclusterrh1.mydomain.net password:[[email protected] ~]# ls -l /etc/cluster/cluster.conf-rw-r-----. 1 root root 188 Sep 26 17:40 /etc/cluster/cluster.conf

还要记住,我们仅从集群上的一个节点运行这些命令,并且我们还没有准备好将更改传播到集群上的另一个节点。

4.初始纯cluster.conf文件

创建集群后,cluster.conf 文件将如下所示:

[[email protected] ~]# cat /etc/cluster/cluster.conf<?xml version="1.0"?><cluster config_version="1" name="mycluster"> <fence_daemon/> <clusternodes/> <cman/> <fencedevices/> <rm> <failoverdomains/> <resources/> </rm></cluster>

5. 向集群添加节点

创建集群后,我们需要使用 ccs 命令将参与节点添加到集群中,如下所示。

首先,将第一个节点 rh1 添加到集群中,如下所示。

[[email protected] ~]# ccs -h rh1.mydomain.net --addnode rh1.mydomain.netNode rh1.mydomain.net added.

接下来,将第二个节点 rh2 添加到集群中,如下所示。

[[email protected] ~]# ccs -h rh1.mydomain.net --addnode rh2.mydomain.netNode rh2.mydomain.net added.

创建节点后,您可以使用以下命令查看集群中的所有可用节点。这还将显示相应节点的节点 ID。

[[email protected] ~]# ccs -h rh1 --lsnodesrh1.mydomain.net: nodeid=1rh2.mydomain.net: nodeid=2

6.添加节点后的cluster.conf文件

上面的操作也会将节点添加到 cluster.conf 文件中,如下所示。

[[email protected] ~]# cat /etc/cluster/cluster.conf<?xml version="1.0"?><cluster config_version="3" name="mycluster"> <fence_daemon/> <clusternodes> <clusternode name="rh1.mydomain.net" nodeid="1"/> <clusternode name="rh2.mydomain.net" nodeid="2"/> </clusternodes> <cman/> <fencedevices/> <rm> <failoverdomains/> <resources/> </rm></cluster>

7. 将 Fencing 添加到集群

隔离是节点与共享存储的断开连接。Fencing 切断了共享存储的 I/O,从而确保了数据的完整性。

围栏设备是一种硬件设备,可用于将节点从共享存储中断开。

这可以通过多种方式实现:通过远程电源开关关闭节点、禁用光纤通道交换机端口或撤销主机的 SCSI 3 预留。

栅栏代理是连接到栅栏设备的软件程序,以要求栅栏设备切断对节点共享存储的访问(通过关闭节点或通过其他方式删除对共享存储的访问)。

执行以下命令以启用防护。

[[email protected] ~]# ccs -h rh1 --setfencedaemon post_fail_delay=0[[email protected] ~]# ccs -h rh1 --setfencedaemon post_join_delay=25

接下来,添加一个围栏设备。有不同类型的围栏设备可用。如果您使用虚拟机构建集群,请使用如下所示的 fence_virt 设备。

[[email protected] ~]# ccs -h rh1 --addfencedev myfence agent=fence_virt

接下来,添加围栏方法。创建防护设备后,您需要创建防护方法并将主机添加到防护方法中。

[[email protected] ~]# ccs -h rh1 --addmethod mthd1 rh1.mydomain.netMethod mthd1 added to rh1.mydomain.net.[[email protected] ~]# ccs -h rh1 --addmethod mthd1 rh2.mydomain.netMethod mthd1 added to rh2.mydomain.net.

最后,将栅栏设备关联到上面创建的方法,如下所示:

[[email protected] ~]# ccs -h rh1 --addfenceinst myfence rh1.mydomain.net mthd1[[email protected] ~]# ccs -h rh1 --addfenceinst myfence rh2.mydomain.net mthd1

8.Fencing后的cluster.conf文件

添加防护设备和方法后,您的 cluster.conf 将如下所示。

[[email protected] ~]# cat /etc/cluster/cluster.conf<?xml version="1.0"?><cluster config_version="10" name="mycluster"> <fence_daemon post_join_delay="25"/> <clusternodes> <clusternode name="rh1.mydomain.net" nodeid="1"> <fence> <method name="mthd1"> <device name="myfence"/> </method> </fence> </clusternode> <clusternode name="rh2.mydomain.net" nodeid="2"> <fence> <method name="mthd1"> <device name="myfence"/> </method> </fence> </clusternode> </clusternodes> <cman/> <fencedevices> <fencedevice agent="fence_virt" name="myfence"/> </fencedevices> <rm> <failoverdomains/> <resources/> </rm></cluster>

9. 故障转移域的类型

故障转移域是资源组或服务可能绑定到的集群成员的有序子集。

以下是不同类型的故障转移域:

  • 受限故障转移域:绑定到域的资源组或服务只能在也是故障转移域成员的集群成员上运行。如果没有可用的故障转移域成员,则资源组或服务处于停止状态。
  • 不受限制的故障转移域:绑定到此域的资源组可以在所有集群成员上运行,但只要有可用的域成员,就会在该域成员上运行。这意味着如果资源组在域外运行并且域成员在线转换,则资源组或
  • 服务将迁移到该集群成员。
  • 有序域:有序域中的节点被分配一个从 1 到 100 的优先级。优先级 1 最高,100 最低。具有最高优先级的节点将运行资源组。如果资源在节点 2 上运行,则当它联机时将迁移到节点 1。
  • 无序域:域的成员没有优先顺序。任何成员都可以在资源组中运行。资源组将始终尽可能迁移到其故障转移域的成员。

10. 添加一个 Filover 域

要添加故障转移域,请执行以下命令。在此示例中,我创建了名为“webserverdomain”的域,

[[email protected] ~]# ccs -h rh1 --addfailoverdomain webserverdomain ordered

创建故障转移域后,将两个节点都添加到故障转移域,如下所示:

[[email protected] ~]# ccs -h rh1 --addfailoverdomainnode webserverdomain rh1.mydomain.net priority=1[[email protected] ~]# ccs -h rh1 --addfailoverdomainnode webserverdomain rh2.mydomain.net priority=2

您可以使用以下命令查看故障转移域中的所有节点。

[[email protected] ~]# ccs -h rh1 --lsfailoverdomainwebserverdomain: restricted=0, ordered=1, nofailback=0 rh1.mydomain.net: 1 rh2.mydomain.net: 2

11. 向集群添加资源

现在是时候添加资源了。这表明当节点发生故障时,也应与 ip 和文件系统一起故障转移的服务。例如,Apache 网络服务器可以是 Redhat Linux 集群中故障转移的一部分。

当您准备好添加资源时,有两种方法可以做到这一点。

您可以添加为全局资源或将资源直接添加到资源组或服务。

将其添加为全局资源的优点是,如果您想将资源添加到多个服务组,您只需引用服务或资源组上的全局资源即可。

在此示例中,我们将共享存储上的文件系统添加为全局资源,并在服务上引用它。

[[email protected] ~]# ccs –h rh1 --addresource fs name=web_fs device=/dev/cluster_vg/vol01 mountpoint=/var/www fstype=ext4

要将服务添加到集群,请创建服务并将资源添加到服务。

[[email protected] ~]# ccs -h rh1 --addservice webservice1 domain=webserverdomain recovery=relocate autostart=1

现在在 cluster.conf 中添加以下行,以将资源引用添加到服务。在此示例中,我们还将故障转移 IP 添加到我们的服务中。

 <fs ref="web_fs"/> <ip address="192.168.1.12" monitor_link="yes" sleeptime="10"/>
版权声明:本文为[华为云]所创,转载请带上原文链接,感谢。 https://bbs.huaweicloud.com/blogs/375690