实验室设置

2 个带有 CentOS 6.5 - 64 位的节点

节点 1
主机名:node1.cluster
IP 地址:192.168.1.5

节点 2
主机名:node2.cluster
IP 地址:192.168.1.6

1 个用于 CentOS 6.5 - 64 位管理界面的节点

节点 1
主机名:node3.mgmt
IP 地址:192.168.1.7

Openfiler

主机名:of.storage

IP 地址:192.168.1.8

在开始配置集群和集群节点之前,让我们用 iSCSI 存储准备我们的 openfiler。

登录到 openfiler 存储的 Web 控制台(假设我们已成功安装 openfiler,并有足够的可用空间用于集群存储)

1. 使用 Openfiler 配置 iSCSI Target

单击块管理并选择要创建物理卷的分区。

使用以下显示的可用磁盘选项创建一个新分区。
提及分区的柱面值

完成后,我们应该会看到添加了一个新分区

同样为下一个磁盘 /dev/sdb 创建一个新分区

在分区类型中选择物理卷

所以我们又创建了一个分区

为我们创建的分区配置卷组

所以,我们已经成功创建了一个新的卷组 SAN

接下来是创建一个新的逻辑卷。
根据要求创建 2 个具有自定义大小的逻辑卷。

对于我的情况,我将创建两个卷

  1. quorum 1400 MB (Quorum disk 不需要超过 1GB 的磁盘空间)
  2. SAN 的所有剩余大小将用于我们集群中的 GFS2 文件系统

启动 iSCSI Target 服务

在系统的主页上为子网创建一个 ACL,它将尝试访问 openfiler 存储。
对于我的情况,子网是 192.168.1.0,所以我将添加一个具有相关子网掩码的新条目。

接下来为第一个磁盘添加 iscsi 目标,例如:仲裁卷。
我们可以使用自定义名称编辑 iscsi 目标值,就像我为我所做的那样,以便我更容易理解

接下来将卷映射到 iSCSI 目标。
对于仲裁目标,选择仲裁分区,然后单击 Map,如下所示

接下来在 Network ACL 部分允许 iSCSI 目标

对 SAN 卷执行相同的步骤,就像我们对上面的仲裁卷所做的一样。
编辑目标值如下图所示

将卷映射到 iSCSI 目标,如下图所示。
一定要映射正确的体积

在网络 ACL 部分允许该特定目标的 ACL

2. 配置我们的集群

我们将使用 luci 也称为 Conga 来管理集群。

什么是Conga?

Conga 是一组集成的软件组件,可提供红帽集群和存储的集中配置和管理。
Conga 提供以下主要功能:

  • 一个用于管理集群和存储的 Web 界面
  • 集群数据和配套包的自动化部署
  • 与现有集群轻松集成
  • 无需重新认证
  • 集群状态和日志的集成
  • 对用户权限的细粒度控制

Conga 中的主要组件是 luci 和 ricci,它们可以单独安装。
luci 是在一台计算机上运行的服务器,并与多个集群和计算机 viaricci 通信。
ricci 是在 Conga 管理的每台计算机(集群成员或者独立计算机)上运行的代理

在节点 3 上:
运行以下命令安装所有与集群相关的包

[root@node3 ~]# yum groupinstall "High Availability Management" "High Availability" 

在节点 1 和节点 2 上:
安装以下给定的软件包以开始构建集群节点并连接到我们将在 openfiler 中创建的 iSCSI 目标

[root@node1 ~]# yum groupinstall "iSCSI Storage Client" "High Availability"
[root@node2 ~]# yum groupinstall "iSCSI Storage Client" "High Availability"

3. 使用 iSCSI 启动器添加 iSCSI 目标

一旦安装了集群包,让我们进入下一步,在我们的集群节点中添加 iSCSi 存储(这里 192.168.1.8 是我的 openfiler 的 IP)

[root@node1 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.8
 Starting iscsid:                                           [  OK  ]
 192.168.1.8:3260,1 iqn.2006-01.com.openfiler:san
 192.168.1.8:3260,1 iqn.2006-01.com.openfiler:quorum 

正如您所看到的,一旦我们使用 openfiler IP 地址给出发现命令,iSCSi 目标就会按照 openfiler 上的配置自动发现

现在再次重新启动 iSCSI 服务以刷新设置

[root@node1 ~]# service iscsi restart
 Stopping iscsi:                                            [  OK  ]
 Starting iscsi:                                            [  OK  ] 

验证节点 1 上添加的 iSCSI 存储

[root@node1 ~]# fdisk -l
Disk /dev/sdb: 1476 MB, 1476395008 bytes
 46 heads, 62 sectors/track, 1011 cylinders
 Units = cylinders of 2852 * 512 = 1460224 bytes
 Sector size (logical/physical): 512 bytes/512 bytes
 I/O size (minimum/optimal): 512 bytes/512 bytes
 Disk identifier: 0x00000000
Disk /dev/sdc: 11.1 GB, 11106516992 bytes
 64 heads, 32 sectors/track, 10592 cylinders
 Units = cylinders of 2048 * 512 = 1048576 bytes
 Sector size (logical/physical): 512 bytes/512 bytes
 I/O size (minimum/optimal): 512 bytes/512 bytes
 Disk identifier: 0x00000000

现在在 node2 上执行相同的步骤

[root@node2 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.8
 192.168.1.8:3260,1 iqn.2006-01.com.openfiler:san
 192.168.1.8:3260,1 iqn.2006-01.com.openfiler:quorum 

重启 iSCSI 服务

[root@node2 ~]# service iscsi restart
 Stopping iscsi:                                            [  OK  ]
 Starting iscsi:                                            [  OK  ] 

验证添加的 iSCSI 存储反映在 node1 上

[root@node2 ~]# fdisk -l
Disk /dev/sdb: 1476 MB, 1476395008 bytes
 46 heads, 62 sectors/track, 1011 cylinders
 Units = cylinders of 2852 * 512 = 1460224 bytes
 Sector size (logical/physical): 512 bytes/512 bytes
 I/O size (minimum/optimal): 512 bytes/512 bytes
 Disk identifier: 0x00000000
Disk /dev/sdc: 11.1 GB, 11106516992 bytes
 64 heads, 32 sectors/track, 10592 cylinders
 Units = cylinders of 2048 * 512 = 1048576 bytes
 Sector size (logical/physical): 512 bytes/512 bytes
 I/O size (minimum/optimal): 512 bytes/512 bytes
 Disk identifier: 0x00000000

4. 配置仲裁磁盘

您需要在两个节点上都执行此步骤。
注意:在您执行此步骤之前,请非常确定您使用的分区,因为它不应被任何人使用,因为以下步骤将破坏该分区中的所有数据

对我来说,我将使用 iSCSI 仲裁分区,即 /dev/sdb

这里我们使用的标签名称是 “quorum”

注意:此标签将在后续步骤中使用,因此请记住您使用的名称。 此外,一旦您在任何一个节点上运行该命令,同样会自动反映在共享同一分区的其他节点上。

[root@node1 ~]# mkqdisk -c /dev/sdb -l quorum
 mkqdisk v3.0.12.1
Writing new quorum disk label 'quorum' to /dev/sdb.
 WARNING: About to destroy all data on /dev/sdb; proceed [N/y] ? y
 Warning: Initializing previously initialized partition
 Initializing status block for node 1...
 Initializing status block for node 2...
 Initializing status block for node 3...
 Initializing status block for node 4...
 Initializing status block for node 5...
 Initializing status block for node 6...
 Initializing status block for node 7...
 Initializing status block for node 8...
 Initializing status block for node 9...
 Initializing status block for node 10...
 Initializing status block for node 11...
 Initializing status block for node 12...
 Initializing status block for node 13...
 Initializing status block for node 14...
 Initializing status block for node 15...
 Initializing status block for node 16...

5.格式化GFS2分区

由于我们希望 GFS 服务在我们的集群上运行,所以让我们格式化我们映射到集群节点的 iSCSI san 目标,例如:/dev/sdc

解释:

  • 格式化文件系统:GFS2

  • 锁定协议:lock_dlm

  • 集群名称:cluster1

  • 文件系统名称:GFS

  • Journal:2

  • 分区:/dev/sdc

在任何一个节点上运行以下命令,因为相同的将反映在同一分区的所有其他节点上,在我们的例子中是 /dev/sdc

[root@node1 ~]# mkfs.gfs2 -p lock_dlm -t cluster1:GFS -j 2 /dev/sdc
 

这将破坏 /dev/sdc 上的所有数据。
它将包含:Linux GFS2 文件系统(块大小 4096,lockproto lock_dlm)

Are you sure you want to proceed? [y/n] y
Device:                    /dev/sdc
 Blocksize:                 4096
 Device Size                10.34 GB (2711552 blocks)
 Filesystem Size:           10.34 GB (2711552 blocks)
 Journals:                  2
 Resource Groups:           42
 Locking Protocol:          "lock_dlm"
 Lock Table:                "cluster1:GFS"
 UUID:                      2ff81375-31f9-c57d-59d1-7573cdfaff42

6. 给ricci分配密码

如前所述,ricci 是 luci 用来连接到每个集群节点的代理。 所以我们需要为其分配一个密码。 这必须在 node1 和 node2 上执行

[root@node1 ~]# passwd ricci
 Changing password for user ricci.
 New password:
 BAD PASSWORD: it is based on a dictionary word
 BAD PASSWORD: is too simple
 Retype new password:
 passwd: all authentication tokens updated successfully. 

重新启动 ricci 服务以使更改生效

[root@node1 ~]# /etc/init.d/ricci start
 Starting oddjobd:                                          [  OK  ]
 generating SSL certificates...  done
 Generating NSS database...  done
 Starting ricci:                                            [  OK  ] 

确保在重启后 ricci 服务出现

[root@node1 ~]# chkconfig ricci on 
[root@node2 ~]# passwd ricci
 Changing password for user ricci.
 New password:
 BAD PASSWORD: it is based on a dictionary word
 BAD PASSWORD: is too simple
 Retype new password:
 passwd: all authentication tokens updated successfully.
[root@node2 ~]# /etc/init.d/ricci start
 Starting oddjobd:                                          [  OK  ]
 generating SSL certificates...  done
 Generating NSS database...  done
 Starting ricci:                                            [  OK  ]
 [root@node2 ~]# chkconfig ricci on

7. 启动 conga 服务

由于 node3 是您的管理服务器,请使用以下命令在其上启动 luci 服务

[root@node3 ~]# /etc/init.d/luci start
 Adding following auto-detected host IDs (IP addresses/domain names), corresponding to `node3.example' address, to the configuration of self-managed certificate `/var/lib/luci/etc/cacert.config' (you can change them by editing `/var/lib/luci/etc/cacert.config', removing the generated certificate `/var/lib/luci/certs/host.pem' and restarting luci):         (none suitable found, you can still do it bananaally as mentioned above)
Generating a 2048 bit RSA private key
 writing new private key to '/var/lib/luci/certs/host.pem'
 Starting saslauthd:                                        [  OK  ]
 Start luci...                                              [  OK  ]

将您的网络浏览器指向 https://node3.mgmt:8084(或者等效的)以访问 luci

8. 访问 luci 控制台

默认登录凭据将是 node3 用户名/密码,即

  • 用户名:root

  • 密码: 你设置root的密码

单击“管理集群”以创建新集群

点击创建

为 clusterCluster 名称提供以下详细信息:Cluster1(如上所述)
节点名称:node1.cluster (192.168.1.5) 确保主机名是可解析的
node2.cluster (192.168.1.6) 确保主机名是可解析的
密码:如步骤 6 中为代理 ricci 提供的

在我们使用 GFS2 时检查共享存储框

单击提交后,节点将开始添加节点的程序(如果一切正常,否则将抛出错误)

现在添加了节点,但它们以红色显示。
让我们来看看背后的原因。
单击任何节点以获取更多详细信息

原因看起来是大部分服务都没有运行。 让我们登录控制台并启动服务

[root@node1 ~]# /etc/init.d/cman start
 Starting cluster:
    Checking if cluster has been disabled at boot...        [  OK  ]
    Checking Network Manager...
 Network Manager is either running or configured to run. Please disable it in the cluster.
                                                           [FAILED]
 Stopping cluster:
    Leaving fence domain...                                 [  OK  ]
    Stopping gfs_controld...                                [  OK  ]
    Stopping dlm_controld...                                [  OK  ]
    Stopping fenced...                                      [  OK  ]
    Stopping cman...                                        [  OK  ]
    Unloading kernel modules...                             [  OK  ]
    Unmounting configfs...                                  [  OK  ] 

重要说明:如果您计划配置 Red Hat Cluster,请确保 NetworkManager 服务未运行

[root@node1 ~]# service NetworkManager stop
Stopping NetworkManager daemon:                            [  OK  ]
[root@node1 ~]# chkconfig NetworkManager off

启动 cman 服务

[root@node1 ~]# /etc/init.d/cman start
 Starting cluster:
    Checking if cluster has been disabled at boot...        [  OK  ]
    Checking Network Manager...                             [  OK  ]
    Global setup...                                         [  OK  ]
    Loading kernel modules...                               [  OK  ]
    Mounting configfs...                                    [  OK  ]
    Starting cman...                                        [  OK  ]
    Waiting for quorum...                                   [  OK  ]
    Starting fenced...                                      [  OK  ]
    Starting dlm_controld...                                [  OK  ]
    Tuning DLM kernel config...                             [  OK  ]
    Starting gfs_controld...                                [  OK  ]
    Unfencing self...                                       [  OK  ]
    Joining fence domain...                                 [  OK  ] 

启动 clvmd 服务

[root@node1 ~]# /etc/init.d/clvmd start
 Activating VG(s):   2 logical volume(s) in volume group "VolGroup" now active
                                                            [  OK  ]
 [root@node1 ~]# chkconfig  clvmd on 

启动 rgmanager 和 modclusterd 服务

[root@node1 ~]# /etc/init.d/rgmanager start
Starting Cluster Service Manager:                          [  OK  ]
[root@node1 ~]# chkconfig rgmanager on
[root@node1 ~]# /etc/init.d/modclusterd start

启动集群模块 - 集群监视器:

[root@node1 ~]# chkconfig modclusterd on

我们还需要在 node2 上启动所有这些服务

[root@node2 ~]# /etc/init.d/cman start
 Starting cluster:
    Checking if cluster has been disabled at boot...        [  OK  ]
    Checking Network Manager...                             [  OK  ]
    Global setup...                                         [  OK  ]
    Loading kernel modules...                               [  OK  ]
    Mounting configfs...                                    [  OK  ]
    Starting cman...                                        [  OK  ]
    Waiting for quorum...                                   [  OK  ]
    Starting fenced...                                      [  OK  ]
    Starting dlm_controld...                                [  OK  ]
    Tuning DLM kernel config...                             [  OK  ]
    Starting gfs_controld...                                [  OK  ]
    Unfencing self...                                       [  OK  ]
    Joining fence domain...                                 [  OK  ]
[root@node2 ~]# chkconfig cman on 
[root@node2 ~]# /etc/init.d/clvmd start
 Starting clvmd:
 Activating VG(s):   2 logical volume(s) in volume group "VolGroup" now active
                                                            [  OK  ]
 [root@node2 ~]# /etc/init.d/rgmanager start
 Starting Cluster Service Manager:                          [  OK  ]
[root@node2 ~]# chkconfig rgmanager on
[root@node2 ~]# chkconfig modclusterd on
[root@node2 ~]# /etc/init.d/modclusterd start
 Starting Cluster Module - cluster monitor: 

现在一旦所有服务都启动,让我们刷新 Web 控制台并查看更改。

所以所有的服务都在运行,集群或者节点上都没有更多的警告消息

9. 配置仲裁磁盘

从 TAB 菜单中单击配置,然后选择 QDisk
填写详细信息如下图
选中“使用仲裁磁盘”框
在步骤 4 中格式化仲裁磁盘时提供上述步骤中使用的标签名称
提供要运行的命令来检查所有节点之间的仲裁状态和间隔时间
完成后点击应用

如果一切顺利,我们应该能够看到以下消息

10. 配置故障转移域

从选项卡菜单中选择故障转移域选项并添加新的故障转移域

为故障转移域命名并按照如下所示进行设置

11. 创建资源

单击顶部菜单中的资源选项卡,然后选择添加

从下拉菜单中选择 GFS2 并填写详细信息
名称:随便起个名字
挂载点:在提供挂载点之前,请确保它存在于两个节点上

让我们在 node1 和 node2 上创建这些挂载点

[root@node1 ~]# mkdir /GFS
[root@node2 ~]# mkdir /GFS

接下来填写我们为 GFS2 格式化的设备详细信息,例如:/dev/sdc
选中强制卸载框并单击提交

12. 创建服务组

从顶部菜单中选择服务组选项卡,然后单击添加

为服务命名
选中该框以自动启动服务
选择我们在步骤 10 中创建的故障转移
从下拉菜单中为恢复策略选择重定位
完成后点击“添加资源”

我们将在屏幕上看到以下框。
选择我们在步骤 11 中创建的资源。

选择 GFS 后,GFS 资源下的所有保存设置都将在服务组部分下可见,如下所示。
单击提交以保存更改

单击提交后,刷新 Web 控制台,我们应该能够在任何节点上看到集群上运行的 GFS 服务,如下所示

我们也可以从 CLI 验证相同的内容

13. 验证

在Node1执行:

[root@node1 ~]# clustat
 Cluster Status for cluster1 @ Wed Nov 26 00:49:04 2014
 Member Status: Quorate
Member Name                                            ID   Status
  ------ ----                                            ---- -----
  node1.cluster                                           1 Online,  Local, rgmanager
  node2.cluster                                           2 Online,  rgmanager
  /dev/block/8:16                                         0 Online, Quorum Disk
Service Name                                   State             Owner (Last)                                                 
  ------- ----                                   -----             ----- ------                                                
  service:GFS                                    started           node1.cluster

因此,如果 GFS 在 node1 上运行,则 GFS 应安装在 node1 上的 /GFS 上。 让我们验证

[root@node1 ~]# df -h
 Filesystem                 Size  Used Avail Use% Mounted on
 /dev/mapper/VolGroup-root  8.7G  3.4G  5.0G  41% /
 tmpfs                      495M   32M  464M   7% /dev/shm
 /dev/sda1                  194M   30M  155M  16% /boot
 /dev/sr0                   4.2G  4.2G     0 100% /media/CentOS_6.5_Final
 /dev/sdc                    11G  518M  9.9G   5% /GFS

现在让我尝试重新定位 node2 上的 GFS 服务

[root@node1 ~]# clusvcadm -r GFS -m node2
 'node2' not in membership list
 Closest match: 'node2.cluster'
 Trying to relocate service:GFS to node2.cluster...Success
 service:GFS is now running on node2.cluster 

让我们看看更改是否反映在集群上

[root@node1 ~]# clustat
 Cluster Status for cluster1 @ Wed Nov 26 00:50:42 2014
 Member Status: Quorate
Member Name                                                ID   Status
  ------ ----                                                ---- -----
  node1.cluster                                               1 Online, Local, rgmanager
  node2.cluster                                               2 Online, rgmanager
  /dev/block/8:16                                             0 Online, Quorum Disk
Service Name                                 State                  Owner (Last)                                                     
 ------- ----                                 -----                  ----- ------                                                     
  service:GFS                                 started                 node2.cluster                                                     
Again to reverify on the available partitions
[root@node1 ~]# df -h
 Filesystem                 Size  Used Avail Use% Mounted on
 /dev/mapper/VolGroup-root  8.7G  3.4G  5.0G  41% /
 tmpfs                      495M   26M  470M   6% /dev/shm
 /dev/sda1                  194M   30M  155M  16% /boot
 /dev/sr0                   4.2G  4.2G     0 100% /media/CentOS_6.5_Final

在 node2上执行

[root@node2 ~]# df -h
 Filesystem                 Size  Used Avail Use% Mounted on
 /dev/mapper/VolGroup-root  8.7G  3.4G  5.0G  41% /
 tmpfs                      495M   32M  464M   7% /dev/shm
 /dev/sda1                  194M   30M  155M  16% /boot
 /dev/sr0                   4.2G  4.2G     0 100% /media/CentOS_6.5_Final
 /dev/sdc                    11G  518M  9.9G   5% /GFS

手动重启集群

停止集群服务

只需在一个节点上执行,禁用 clustat 中列出的服务

# clusvcadm -d GFS

验证 clustat 中的所有服务都显示为禁用

在每个节点上执行: # service rgmanager stop
在每个节点上执行: # service clvmd stop
在每个节点上执行: # service cman stop 

启动集群服务

在每个节点上执行: # service cman start
在每个节点上执行: # service clvmd start
在每个节点上执行: # service rgmanager start 

在任意一个节点上启用 GFS 服务

# clusvcadm -e GFS

如果我们计划手动重启集群,那么我们必须按照预先定义的顺序停止和启动服务

使用 VMware、Quorum Disk、GFS2、Openfiler 配置 Red Hat Cluster

在本文中,将介绍使用 VMware Workstation 10 安装和配置 Red Hat Cluster 的步骤。

在开始配置 Red Hat集群 之前,我们必须熟悉 High Availability Cluster 及其架构。

本文使用到的软件

  • VMware Workstation 10(8以上的任何版本都可以)
  • CentOS 6.5 - 64 位(我们可以使用 32 位或者 64 位,而且如果我们使用较早的版本,对于低于 6.0 的任何版本,某些 rpm 和软件包会有所不同)
  • Openfiler 2.99 - 64 位

我们将实现:

  • 使用 CentOS 6.5(64 位)配置 2 节点 Red Hat 集群
  • 一个节点将用于使用 CentOS 6.5(64 位)的 luci 集群的管理目的
  • Openfiler 将用于为集群配置共享 iSCSI 存储
  • 为两个节点配置故障转移
  • 配置一个 Quorum 磁盘以 1 票一票来测试故障转移
  • 创建一个通用服务 GFS2,它将在我们集群的任何一个节点上运行,并具有故障转移策略

注意:我们将无法配置与防护相关的设置,因为它在 vmware 上不受支持。

日期:2020-06-02 22:17:23 来源:oir作者:oir