在 RedHat 和 CentOS 上配置具有 2 个节点的 Linux 集群
在主备 Linux 集群配置中,包括 IP、文件系统在内的所有关键服务都将从集群中的一个节点故障转移到另一个节点。
本教程详细解释了如何使用命令行实用程序创建和配置两个节点的 redhat 集群。
以下是在 Redhat 或 CentOS 上配置 Linux 集群的高级步骤:
- 安装并启动 RICCI 集群服务
- 在活动节点上创建集群
- 将节点添加到集群
- 将防护添加到集群
- 配置故障转移域
- 向集群添加资源
- 跨节点同步集群配置
- 启动集群
- 通过关闭活动节点来验证故障转移
1. 所需集群包
首先确保安装了以下集群包。如果您没有这些软件包,请使用yum 命令安装它们。
[root@rh1 ~]# rpm -qa | egrep -i "ricci|luci|cluster|ccs|cman"
modcluster-0.16.2-28.el6.x86_64
luci-0.26.0-48.el6.x86_64
ccs-0.16.2-69.el6.x86_64
ricci-0.16.2-69.el6.x86_64
cman-3.0.12.1-59.el6.x86_64
clusterlib-3.0.12.1-59.el6.x86_64
2.启动RICCI服务并分配密码
接下来,在两个节点上启动 ricci 服务。
[root@rh1 ~]# service ricci start
Starting oddjobd: [ OK ]
generating SSL certificates... done
Generating NSS database... done
Starting ricci: [ OK ]
您还需要为两个节点上的 RICCI 分配密码。
[root@rh1 ~]# passwd ricci
Changing 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。
[root@rh1 ~]# ccs -h rh1.mydomain.net --createcluster mycluster
rh1.mydomain.net password:
[root@rh1 ~]# 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 文件将如下所示:
[root@rh1 ~]# 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 添加到集群中,如下所示。
[root@rh1 ~]# ccs -h rh1.mydomain.net --addnode rh1.mydomain.net
Node rh1.mydomain.net added.
接下来,将第二个节点 rh2 添加到集群中,如下所示。
[root@rh1 ~]# ccs -h rh1.mydomain.net --addnode rh2.mydomain.net
Node rh2.mydomain.net added.
创建节点后,您可以使用以下命令查看集群中的所有可用节点。这还将显示相应节点的节点 ID。
[root@rh1 ~]# ccs -h rh1 --lsnodes
rh1.mydomain.net: nodeid=1
rh2.mydomain.net: nodeid=2
6.添加节点后的cluster.conf文件
上面的操作也会将节点添加到 cluster.conf 文件中,如下所示。
[root@rh1 ~]# 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 预留。
栅栏代理是连接到栅栏设备的软件程序,以要求栅栏设备切断对节点共享存储的访问(通过关闭节点或通过其他方式删除对共享存储的访问)。
执行以下命令以启用防护。
[root@rh1 ~]# ccs -h rh1 --setfencedaemon post_fail_delay=0
[root@rh1 ~]# ccs -h rh1 --setfencedaemon post_join_delay=25
接下来,添加一个围栏设备。有不同类型的围栏设备可用。如果您使用虚拟机构建集群,请使用如下所示的 fence_virt 设备。
[root@rh1 ~]# ccs -h rh1 --addfencedev myfence agent=fence_virt
接下来,添加围栏方法。创建防护设备后,您需要创建防护方法并将主机添加到防护方法中。
[root@rh1 ~]# ccs -h rh1 --addmethod mthd1 rh1.mydomain.net
Method mthd1 added to rh1.mydomain.net.
[root@rh1 ~]# ccs -h rh1 --addmethod mthd1 rh2.mydomain.net
Method mthd1 added to rh2.mydomain.net.
最后,将栅栏设备关联到上面创建的方法,如下所示:
[root@rh1 ~]# ccs -h rh1 --addfenceinst myfence rh1.mydomain.net mthd1
[root@rh1 ~]# ccs -h rh1 --addfenceinst myfence rh2.mydomain.net mthd1
8.Fencing后的cluster.conf文件
添加防护设备和方法后,您的 cluster.conf 将如下所示。
[root@rh1 ~]# 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”的域,
[root@rh1 ~]# ccs -h rh1 --addfailoverdomain webserverdomain ordered
创建故障转移域后,将两个节点都添加到故障转移域,如下所示:
[root@rh1 ~]# ccs -h rh1 --addfailoverdomainnode webserverdomain rh1.mydomain.net priority=1
[root@rh1 ~]# ccs -h rh1 --addfailoverdomainnode webserverdomain rh2.mydomain.net priority=2
您可以使用以下命令查看故障转移域中的所有节点。
[root@rh1 ~]# ccs -h rh1 --lsfailoverdomain
webserverdomain: restricted=0, ordered=1, nofailback=0
rh1.mydomain.net: 1
rh2.mydomain.net: 2
11. 向集群添加资源
现在是时候添加资源了。这表明当节点发生故障时,也应与 ip 和文件系统一起故障转移的服务。例如,Apache 网络服务器可以是 Redhat Linux 集群中故障转移的一部分。
当您准备好添加资源时,有两种方法可以做到这一点。
您可以添加为全局资源或将资源直接添加到资源组或服务。
将其添加为全局资源的优点是,如果您想将资源添加到多个服务组,您只需引用服务或资源组上的全局资源即可。
在此示例中,我们将共享存储上的文件系统添加为全局资源,并在服务上引用它。
[root@rh1 ~]# ccs –h rh1 --addresource fs name=web_fs device=/dev/cluster_vg/vol01 mountpoint=/var/www fstype=ext4
要将服务添加到集群,请创建服务并将资源添加到服务。
[root@rh1 ~]# 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"/>
- 点赞
- 收藏
- 关注作者
评论(0)