High Availability Add-On 管理
Red Hat Enterprise Linux 7
配置红帽高可用性部署
摘要
High Availability Add-On 管理 提供了使用 Red Hat Enterprise Linux 7 的高可用性附加组件的集群配置示例。
第 1 章 使用 Pacemaker 创建红帽高可用性集群 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
本章论述了使用 pcs 创建红帽高可用性双节点集群的步骤。创建集群后,您可以配置所需的资源和资源组。
配置本章中提供的集群需要您的系统包含以下组件:
- 2 个节点,用于创建集群。在本例中,所用的节点为
z1.example.com和z2.example.com。 - 专用网络的网络交换机,用于集群节点和其它集群硬件(如网络电源交换机和光线通道交换机)间的通信。
- 集群中的每个节点都有一个电源隔离设备。这个示例使用 APC 电源交换机的两个端口,主机名为
zapc.example.com。
本章分为三个部分。
- 第 1.1 节 “集群软件安装” 提供安装集群软件的步骤。
- 第 1.2 节 “集群创建” 提供配置双节点集群的步骤。
- 第 1.3 节 “隔离配置” 提供为集群的每个节点配置隔离设备的步骤。
1.1. 集群软件安装 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
安装和配置集群的步骤如下。
- 在集群的每个节点中,安装 Red Hat High Availability Add-On 软件包,以及 High Availability 性频道中的所有可用的隔离代理。
yum install pcs pacemaker fence-agents-all
# yum install pcs pacemaker fence-agents-allCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果您正在运行 firewalld 守护进程,请执行以下命令启用 Red Hat High Availability Add-On 所需的端口。注意您可以使用 rpm -q firewalld 命令确定您的系统中是否安装了 firewalld 守护进程。如果安装了 firewalld 守护进程,您可以使用 firewall-cmd --state 命令确定它是否在运行。
firewall-cmd --permanent --add-service=high-availability firewall-cmd --add-service=high-availability
# firewall-cmd --permanent --add-service=high-availability # firewall-cmd --add-service=high-availabilityCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 要使用
pcs配置集群并在节点间通信,您必须在每个节点中为用户 IDhacluster设置密码,它是pcs的管理帐户。建议每个节点上的用户hacluster的密码都相同。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在配置集群前,必须启动并启用 pcsd 守护进程以便在每个节点启动时引导。这个守护进程和 pcs 命令一起工作,可以管理集群中的跨节点的配置。在集群的每个节点中执行以下命令启动
pcsd服务并在系统启动时启用pcsd。systemctl start pcsd.service systemctl enable pcsd.service
# systemctl start pcsd.service # systemctl enable pcsd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 在要运行 pcs 的节点上,为集群中的每个节点验证 pcs 用户
hacluster。以下命令为示例双节点集群、z1.example.com和z2.example.com中的两个节点在z1.example.com上验证用户hacluster。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. 集群创建 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
此流程创建由节点
z1.example.com 和 z2.example.com组成的红帽高可用性附加组件集群。
- 从
z1.example.com执行以下命令来创建由z1.example.com和z2.example.com组成的双节点集群my_cluster。这会将集群配置文件传播到集群中的两个节点。此命令包含--start选项,该选项将在集群的两个节点上启动集群服务。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在节点引导时,启用集群服务在集群中的每个节点上运行。注意对于特定环境,您可以跳过这一步来禁用集群服务。这可让您确保在节点重新加入集群前解决集群或您的资源中的任何问题。如果禁用了集群服务,则需要在重新引导节点时手动启动该服务,方法是在该节点上执行 pcs cluster start 命令。
pcs cluster enable --all
[root@z1 ~]# pcs cluster enable --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以使用 pcs cluster status 命令显示集群的当前状态。因为在使用 pcs cluster setup 命令的
--start 选项启动集群服务时,集群的启动和运行可能会有一些延迟,所以您应该确保在集群及其配置上执行后续操作前已启动并运行了集群。
1.3. 隔离配置 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您必须为集群中的每个节点配置保护设备。有关隔离配置命令和选项的详情请参考 Red Hat Enterprise Linux 7 High Availability Add-On 参考。有关隔离的一般信息及其在红帽高可用性集群中的重要程度,请 查看红帽高可用性集群中的隔离。
注意
在配置隔离设备时,应该注意该设备是否与集群中的任何节点或者设备共享电源。如果某个节点及其隔离设备共享了电源,那么如果它的电源出现问题,集群可能就无法收到隔离功能的保护。这样的集群应该有冗余电源来保护设备和节点,或者具有没有和节点共享电源的额外的隔离设置。其他替代的隔离方法,比如 SBD 或存储隔离,也可以用来对电源问题提供冗余保护。
这个示例使用主机名为
zapc.example.com 的 APC 电源交换机来保护节点,并使用 fence_apc_snmp 隔离代理。因为这两个节点都使用同一隔离代理进行隔离,所以您可以使用 pcmk_host_map 和 pcmk_host_list 选项将这两个隔离设备配置为单一资源。
您可以使用 pcs stonith create 命令将该设备配置为
stonith 资源来创建隔离设备。以下命令配置名为 myapc 的 stonith 资源,作为节点 z1.example.com 和 z2.example.com 的 fence_apc_snmp 隔离代理。pcmk_host_map 选项将 z1.example.com 映射到端口 1,将 z2.example.com 映射到端口 2。APC 设备的登录值和密码都是 apc。默认情况下,该设备对每个节点都使用 60 秒的监视间隔时间。
请注意,您可以在为节点指定主机名时使用 IP 地址。
pcs stonith create myapc fence_apc_snmp \ ipaddr="zapc.example.com" pcmk_host_map="z1.example.com:1;z2.example.com:2" \ pcmk_host_check="static-list" pcmk_host_list="z1.example.com,z2.example.com" \ login="apc" passwd="apc"
[root@z1 ~]# pcs stonith create myapc fence_apc_snmp \
ipaddr="zapc.example.com" pcmk_host_map="z1.example.com:1;z2.example.com:2" \
pcmk_host_check="static-list" pcmk_host_list="z1.example.com,z2.example.com" \
login="apc" passwd="apc"
注意
当您创建
fence_apc_snmp stonith 设备时,您可能会看到以下警告信息,您可以安全地忽略:
Warning: missing required option(s): 'port, action' for resource type: stonith:fence_apc_snmp
Warning: missing required option(s): 'port, action' for resource type: stonith:fence_apc_snmp
以下命令显示现有 STONITH 设备的参数。
pcs stonith show myapc
[root@rh7-1 ~]# pcs stonith show myapc
Resource: myapc (class=stonith type=fence_apc_snmp)
Attributes: ipaddr=zapc.example.com pcmk_host_map=z1.example.com:1;z2.example.com:2 pcmk_host_check=static-list pcmk_host_list=z1.example.com,z2.example.com login=apc passwd=apc
Operations: monitor interval=60s (myapc-monitor-interval-60s)
配置了隔离设备后,您应该测试该设备。有关测试隔离设备的详情,请参考 " 高可用性附加组件参考"中配置 Stonith。
注意
不要通过禁用网络接口来测试您的隔离设备,因为这不会正确测试隔离功能。
注意
当配置了隔离功能,且启动集群后,网络重启会触发节点的隔离,即使没有超过超时时间也会重启网络。因此,不要在集群服务运行时重启网络服务,因为它将在节点上触发意外隔离。
第 2 章 在红帽高可用性集群中主动/被动 Apache HTTP 服务器 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
本章论述了如何使用 pcs 在双节点 Red Hat Enterprise Linux High Availability 附加组件集群中配置主动/被动 Apache HTTP 服务器来配置集群资源。在这种情况下,客户端通过浮动 IP 地址访问 Apache HTTP 服务器。Web 服务器在集群的两个节点之一中运行。如果运行 web 服务器的节点出现问题,则 web 服务器会在集群的第二个节点上再次启动,以实现服务中断的最小化。
图 2.1 “Red Hat High Availability 双节点集群中的 Apache” 显示集群的高级别概述。集群是一个双节点 Red Hat High Availability 集群,它使用网络电源交换机和共享存储进行配置。集群节点连接到公用网络,以便客户端通过虚拟 IP 访问 Apache HTTP 服务器。Apache 服务器在 Node 1 或 Node 2 中运行,每个节点都可访问保存 Apache 数据的存储。
图 2.1. Red Hat High Availability 双节点集群中的 Apache
这个用例需要您的系统包括以下组件:
- 一个双节点 Red Hat High Availability 集群,为每个节点配置了电源隔离功能。此流程使用中提供的集群示例 第 1 章 使用 Pacemaker 创建红帽高可用性集群。
- Apache 需要的公共虚拟 IP 地址。
- 集群中节点的共享存储,使用 iSCSI、光纤或其他共享网络块设备。
集群被配置为带有 Apache 资源组,其中包含 web 服务器所需的集群组件:LVM 资源、文件系统资源、IP 地址资源以及 web 服务器资源。这个资源组可以从集群的一个节点切换到另外一个节点,允许其中两个节点运行 web 服务器。在为集群创建资源组前,您将执行以下步骤:
- 配置 Web 服务器,如所述 第 2.2 节 “Web 服务器配置”。
- 确保只有集群可以激活包含
my_lv的卷组,且在启动时不会在集群外激活卷组,如所述 第 2.3 节 “在集群中禁用卷组激活”。
执行这些流程后,您可以创建资源组及其包含的资源,如所述 第 2.4 节 “使用 pcs 命令创建资源和资源组”。
2.1. 使用 ext4 文件系统配置 LVM 卷 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
这个用例要求您在集群节点之间共享的存储中创建 LVM 逻辑卷。
下面的步骤创建了 LVM 逻辑卷,然后在该卷中创建
ext4 文件系统。在这个示例中,使用共享分区 /dev/sdb1 来存储创建 LVM 逻辑卷的 LVM 物理卷。
注意
LVM 卷以及集群节点使用的对应分区和设备必须只能连接到集群节点。
因为
/dev/sdb1 分区是共享的存储,因此您只在一个节点中执行这个步骤,
- 在分区
/dev/sdb1中创建 LVM 物理卷。pvcreate /dev/sdb1
# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建由物理卷
my_vg组成的卷组/dev/sdb1。vgcreate my_vg /dev/sdb1
# vgcreate my_vg /dev/sdb1 Volume group "my_vg" successfully createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用卷组
my_vg创建逻辑卷。lvcreate -L450 -n my_lv my_vg
# lvcreate -L450 -n my_lv my_vg Rounding up size to full physical extent 452.00 MiB Logical volume "my_lv" createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用 lvs 命令来显示逻辑卷。lvs
# lvs LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert my_lv my_vg -wi-a---- 452.00m ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在逻辑卷
my_lv中创建ext4文件系统。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. Web 服务器配置 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
以下步骤配置 Apache HTTP 服务器。
- 确定在集群的每个节点上安装了 Apache HTTP 服务器。您还需要安装
wget工具才能检查 Apache HTTP 服务器的状态。在每个节点上执行以下命令。yum install -y httpd wget
# yum install -y httpd wgetCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 要让 Apache 资源代理获得 Apache HTTP 服务器的状态,确保在集群中每个节点的
/etc/httpd/conf/httpd.conf文件中有以下文本,并确保没有注释掉它。如果这个内容不存在,在文件的末尾添加这个内容。<Location /server-status> SetHandler server-status Require local </Location><Location /server-status> SetHandler server-status Require local </Location>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 当使用
apache资源代理来管理 Apache 时,它不使用systemd。因此,您必须编辑 Apache 提供的logrotate脚本,使其不使用systemctl重新载入 Apache。删除集群中每个节点的/etc/logrotate.d/httpd文件中的以下行。/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下三行替换您删除的行。/usr/bin/test -f /run/httpd.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /run/httpd.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /run/httpd.pid" -k graceful > /dev/null 2>/dev/null || true
/usr/bin/test -f /run/httpd.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /run/httpd.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /run/httpd.pid" -k graceful > /dev/null 2>/dev/null || trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 为 Apache 创建网页供服务。在集群的一个节点中挂载您创建的文件系统 第 2.1 节 “使用 ext4 文件系统配置 LVM 卷”,在该文件系统中创建文件
index.html,然后卸载该文件系统。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 在集群中禁用卷组激活 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
下面的步骤配置卷组的方式是,确保只有集群可以激活卷组,且在启动时不会在集群外激活卷组。如果卷组由集群外的系统激活,则有破坏卷组元数据的风险。
此流程修改
/etc/lvm/lvm.conf 配置文件中的 volume_list 条目。volume_list 条目中列出的卷组可以在集群管理器控制之外的本地节点中自动激活。与节点本地根目录和主目录相关的卷组应包含在此列表中。由集群管理器管理的所有卷组都必须从 volume_list 条目中排除。请注意,这个过程不需要使用 clvmd。
在集群的每个节点上执行以下步骤。
- 执行以下命令,确保
locking_type在/etc/lvm/lvm.conf文件中被设置为 1,且use_lvmetad被设置为 0。这个命令还会立即禁用和停止任何 lvmetad 进程。lvmconf --enable-halvm --services --startstopservices
# lvmconf --enable-halvm --services --startstopservicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用以下命令确定当前在本地存储中配置哪些卷组。这会输出当前配置的卷组列表。如果您在单独的卷组中为 root 分配了空间,并且为这个节点的主目录分配了空间,您会在输出中看到这些卷,如下例所示。
vgs --noheadings -o vg_name
# vgs --noheadings -o vg_name my_vg rhel_home rhel_rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 将
my_vg以外的卷组(您刚刚为集群定义的卷组)添加为/etc/lvm/lvm.conf配置文件中的volume_list的条目。例如:如果您在单独的卷组中为 root 和您的主目录分配了空间,您可以取消对lvm.conf文件的volume_list行的注释,并将这些卷组作为条目添加到volume_list中,如下所示。请注意,您刚刚为集群定义的卷组(本例中为(my_vg)没有在这个列表中。volume_list = [ "rhel_root", "rhel_home" ]
volume_list = [ "rhel_root", "rhel_home" ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果节点上没有在集群管理器之外激活的本地卷组,您仍需要将volume_list条目初始化为volume_list = []。 - 重建
initramfs引导镜像,以确保引导镜像不会尝试激活集群控制的卷组。使用以下命令更新initramfs设备。这个命令可能需要一分钟时间完成。dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
# dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重新引导节点。注意如果您在引导节点后安装了一个新的 Linux 内核,新的
initrd镜像将适用于创建该节点时运行的内核,而不是重启节点时运行的新内核。您可以通过在重启前和重启后运行 uname -r 命令确定使用正确的initrd设备,以确定正在运行的内核发行版本。如果发行版本不同,请在重启新内核后更新initrd文件,然后重新引导节点。 - 当节点重新引导时,通过在该节点上执行 pcs cluster status 命令来检查集群服务是否在该节点上再次启动。如果生成了信息
Error: cluster is not currently running on this node,请输入以下命令。pcs cluster start
# pcs cluster startCopy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,您可以等待集群中的每个节点重新引导,并使用以下命令在每个节点上启动集群服务。pcs cluster start --all
# pcs cluster start --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4. 使用 pcs 命令创建资源和资源组 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
这个用例需要您创建四个集群资源。为确保这些资源在同一节点上运行,它们都配置为资源组
apachegroup 的一部分。要创建的资源如下,按其启动顺序列出。
IPaddr2资源,它是apachegroup资源组的浮动 IP 地址。IP 地址不能是一个已经与物理节点关联的 IP 地址。如果没有指定IPaddr2资源的 NIC 设备,浮动 IP 必须位于与静态分配的 IP 地址相同的网络中,否则无法正确检测到分配浮动 IP 地址的 NIC 设备。
以下流程创建资源组
apachegroup 以及组包含的资源。资源将以您添加到组的顺序启动,并按照添加到组中的相反顺序停止。仅从集群的一个节点运行此步骤。
- 以下命令创建 LVM 资源
my_lvm。这个命令指定exclusive=true参数以确保只有集群可以激活 LVM 逻辑卷。由于资源组apachegroup尚不存在,这个命令会创建资源组。pcs resource create my_lvm LVM volgrpname=my_vg \ exclusive=true --group apachegroup
[root@z1 ~]# pcs resource create my_lvm LVM volgrpname=my_vg \ exclusive=true --group apachegroupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当您创建资源时,会自动启动该资源。您可以使用以下命令确认资源已创建并启动。pcs resource show
# pcs resource show Resource Group: apachegroup my_lvm (ocf::heartbeat:LVM): StartedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用 pcs resource disable 和 pcs resource enable 命令手动停止并启动单独的资源。 - 以下命令为配置创建剩余的资源,并将其添加到现有资源组
apachegroup中。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建资源和包含这些资源的资源组后,您可以检查集群的状态。请注意,所有四个资源都在同一个节点上运行。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,如果您还没有如所述为集群配置隔离设备 第 1.3 节 “隔离配置”,默认情况下资源不会启动。 - 当集群启动并运行后,您可以将浏览器指向定义为
IPaddr2资源,查看示例显示,包括一个简单的单词 "Hello"。Hello
HelloCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果发现您配置的资源没有运行,您可以运行 pcs resource debug-start resource 命令来测试资源配置。有关 pcs resource debug-start 命令的详情请参考 高可用性附加组件参考手册。
2.5. 测试资源配置 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在显示的集群状态中 第 2.4 节 “使用 pcs 命令创建资源和资源组”,所有资源都在节点
z1.example.com 中运行。您可以按照以下流程将第一个节点设置为 standby 模式来测试资源组是否切换到节点 z2.example.com ,之后该节点将不再能够托管资源。
- 以下命令将节点
z1.example.com置于standby模式。root@z1 ~]# pcs node standby z1.example.com
root@z1 ~]# pcs node standby z1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 将节点
z1置于待机模式后,检查集群状态。请注意,这些资源现在都应在z2中运行。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义的 IP 地址的网页仍会显示,而不中断。 - 要从
standby模式中删除z1,请输入以下命令。root@z1 ~]# pcs node unstandby z1.example.com
root@z1 ~]# pcs node unstandby z1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意从standby模式中删除节点不会自动导致资源恢复到该节点。这将依赖于资源的resource-stickiness值。有关resource-stickinessmeta 属性的详情,请参考 红帽高可用性附加组件参考 中的配置资源以引用其当前节点。
第 3 章 在红帽高可用性集群中有一个主动/被动 NFS 服务器 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
本章论述了如何使用共享存储在双节点 Red Hat Enterprise Linux High Availability 附加组件集群中配置高度可用的主动/被动 NFS 服务器。以下操作过程使用 pcs 来配置 Pacemaker 集群资源。在这种情况下,客户端会通过一个浮动 IP 地址访问 NFS 文件系统。NFS 服务器在集群中的两个节点中的一个上运行。如果运行 NFS 服务器的节点出现问题,则 NFS 服务器会在集群的第二个节点上再次启动,以实现服务中断的最小化。
这个用例需要您的系统包括以下组件:
- 两个节点,用于创建运行 Apache HTTP 服务器的集群。在本例中,所用的节点为
z1.example.com和z2.example.com。 - 集群中的每个节点都有一个电源隔离设备。这个示例使用 APC 电源交换机的两个端口,主机名为
zapc.example.com。 - NFS 服务器需要的一个公共虚拟 IP 地址。
- 集群中节点的共享存储,使用 iSCSI、光纤或其他共享网络块设备。
在双节点 Red Hat Enterprise Linux High 中配置高可用性的主动/被动 NFS 服务器需要执行以下步骤。
- 创建运行 NFS 服务器并为集群中的每个节点配置隔离的集群,如所述 第 3.1 节 “创建 NFS 集群”。
- 在 LVM 逻辑卷的共享存储中配置 NFS 共享,如所述 第 3.3 节 “NFS 共享设置”。
- 确定只有集群可以激活包含逻辑卷
my_lv的 LVM 卷组,且在启动时不会在集群外激活该卷组,如所述 第 3.4 节 “在集群中禁用卷组激活”。 - 如所述创建集群资源 第 3.5 节 “配置集群资源”。
- 测试您配置的 NFS 服务器,如所述 第 3.6 节 “测试资源配置”。
3.1. 创建 NFS 集群 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用以下步骤来安装和创建 NFS 集群。
- 使用中介绍的步骤为集群的每个节点配置隔离设备 第 1.3 节 “隔离配置”。这个示例使用 APC 电源交换机的两个端口配置隔离,主机名为
zapc.example.com。
3.2. 使用 ext4 文件系统配置 LVM 卷 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
这个用例要求您在集群节点之间共享的存储中创建 LVM 逻辑卷。
下面的步骤创建了 LVM 逻辑卷,然后在该卷中创建
ext4 文件系统。在这个示例中,使用共享分区 /dev/sdb1 来存储创建 LVM 逻辑卷的 LVM 物理卷。
注意
LVM 卷以及集群节点使用的对应分区和设备必须只能连接到集群节点。
因为
/dev/sdb1 分区是共享的存储,因此您只在一个节点中执行这个步骤,
- 在分区
/dev/sdb1中创建 LVM 物理卷。pvcreate /dev/sdb1
[root@z1 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建由物理卷
my_vg组成的卷组/dev/sdb1。vgcreate my_vg /dev/sdb1
[root@z1 ~]# vgcreate my_vg /dev/sdb1 Volume group "my_vg" successfully createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用卷组
my_vg创建逻辑卷。lvcreate -L450 -n my_lv my_vg
[root@z1 ~]# lvcreate -L450 -n my_lv my_vg Rounding up size to full physical extent 452.00 MiB Logical volume "my_lv" createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用 lvs 命令来显示逻辑卷。lvs
[root@z1 ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert my_lv my_vg -wi-a---- 452.00m ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在逻辑卷
my_lv中创建ext4文件系统。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. 在集群中禁用卷组激活 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
下面的步骤配置 LVM 卷组的方式是,确保只有集群可以激活卷组,且在启动时不会在集群外激活卷组。如果卷组由集群外的系统激活,则有破坏卷组元数据的风险。
此流程修改
/etc/lvm/lvm.conf 配置文件中的 volume_list 条目。volume_list 条目中列出的卷组可以在集群管理器控制之外的本地节点中自动激活。与节点本地根目录和主目录相关的卷组应包含在此列表中。由集群管理器管理的所有卷组都必须从 volume_list 条目中排除。请注意,这个过程不需要使用 clvmd。
在集群的每个节点上执行以下步骤。
- 执行以下命令,确保
locking_type在/etc/lvm/lvm.conf文件中被设置为 1,且use_lvmetad被设置为 0。这个命令还会立即禁用和停止任何 lvmetad 进程。lvmconf --enable-halvm --services --startstopservices
# lvmconf --enable-halvm --services --startstopservicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用以下命令确定当前在本地存储中配置哪些卷组。这会输出当前配置的卷组列表。如果您在单独的卷组中为 root 分配了空间,并且为这个节点的主目录分配了空间,您会在输出中看到这些卷,如下例所示。
vgs --noheadings -o vg_name
# vgs --noheadings -o vg_name my_vg rhel_home rhel_rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 将
my_vg以外的卷组(您刚刚为集群定义的卷组)添加为/etc/lvm/lvm.conf配置文件中的volume_list的条目。例如:如果您在不同的卷组中为 root 和您的主目录分配了空间,您可以取消对lvm.conf文件的volume_list行的注释,并将这些卷组作为条目添加到volume_list,如下所示:volume_list = [ "rhel_root", "rhel_home" ]
volume_list = [ "rhel_root", "rhel_home" ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果节点上没有在集群管理器之外激活的本地卷组,您仍需要将volume_list条目初始化为volume_list = []。 - 重建
initramfs引导镜像,以确保引导镜像不会尝试激活集群控制的卷组。使用以下命令更新initramfs设备。这个命令可能需要一分钟时间完成。dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
# dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重新引导节点。注意如果您在引导节点后安装了一个新的 Linux 内核,新的
initrd镜像将适用于创建该节点时运行的内核,而不是重启节点时运行的新内核。您可以通过在重启前和重启后运行 uname -r 命令确定使用正确的initrd设备,以确定正在运行的内核发行版本。如果发行版本不同,请在重启新内核后更新initrd文件,然后重新引导节点。 - 当节点重新引导时,通过在该节点上执行 pcs cluster status 命令来检查集群服务是否在该节点上再次启动。如果生成了信息
Error: cluster is not currently running on this node,请输入以下命令。pcs cluster start
# pcs cluster startCopy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,您可以等到集群中每个节点重新引导,并使用以下命令在集群中的所有节点上启动集群服务。pcs cluster start --all
# pcs cluster start --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5. 配置集群资源 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
本节提供了为这个用例配置集群资源的步骤。
注意
建议您使用 pcs resource create 创建集群资源时,请立即执行 pcs status 命令验证资源是否正在运行。请注意,如果您还没有如所述为集群配置隔离设备 第 1.3 节 “隔离配置”,默认情况下资源不会启动。
如果发现您配置的资源没有运行,您可以运行 pcs resource debug-start resource 命令来测试资源配置。这会在集群控制之外启动服务。当配置的资源再次运行时,运行 pcs resource cleanup resource 使集群了解更新。有关 pcs resource debug-start 命令的详情请参考 高可用性附加组件参考手册。
以下步骤配置系统资源。为确保这些资源在同一节点上运行,它们都配置为资源组
nfsgroup 的一部分。资源将以您添加到组的顺序启动,并按照添加到组中的相反顺序停止。仅从集群的一个节点运行此步骤。
- 以下命令创建名为
my_lvm的 LVM 资源。这个命令指定exclusive=true参数以确保只有集群可以激活 LVM 逻辑卷。由于资源组nfsgroup尚不存在,这个命令会创建资源组。pcs resource create my_lvm LVM volgrpname=my_vg \ exclusive=true --group nfsgroup
[root@z1 ~]# pcs resource create my_lvm LVM volgrpname=my_vg \ exclusive=true --group nfsgroupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查集群的状态,以验证资源是否在运行。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 为集群配置
Filesystem资源。注意您可以使用options=options参数指定挂载选项作为Filesystem资源资源配置的一部分。运行 pcs resource describe Filesystem 命令获取完整配置选项。以下命令将名为nfsshare的 ext4Filesystem资源配置为nfsgroup资源组的一部分。这个文件系统使用您在中创建的 LVM 卷组和 ext4 文件系统, 第 3.2 节 “使用 ext4 文件系统配置 LVM 卷” 并将挂载到您创建的/nfsshare目录中 第 3.3 节 “NFS 共享设置”。pcs resource create nfsshare Filesystem \ device=/dev/my_vg/my_lv directory=/nfsshare \ fstype=ext4 --group nfsgroup
[root@z1 ~]# pcs resource create nfsshare Filesystem \ device=/dev/my_vg/my_lv directory=/nfsshare \ fstype=ext4 --group nfsgroupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查my_lvm和nfsshare资源是否正在运行。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建资源组
nfsgroup的名为nfs-daemon的nfsserver资源。注意nfsserver资源允许您指定一个nfs_shared_infodir参数,该参数是 NFS 守护进程用来存储与 NFS 相关的有状态信息的目录。建议将此属性设置为您在这个导出集合中创建的Filesystem资源的子目录。这样可确保 NFS 守护进程将其有状态的信息存储在需要重新定位资源组时可供另一个节点使用的设备中。在这个示例中,/nfsshare是由Filesystem资源管理的共享存储目录,/nfsshare/exports/export1和/nfsshare/exports/export2是导出的目录,/nfsshare/nfsinfo是nfsserver资源的共享目录。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 添加
exportfs资源来导出/nfsshare/exports目录。这些资源是资源组nfsgroup的一部分。这为 NFSv4 客户端构建了一个虚拟目录。NFSv3 客户端也可以访问这些导出。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 添加 NFS 客户端用来访问 NFS 共享的浮动 IP 地址资源。您指定的浮动 IP 地址需要反向 DNS 查找,或者必须在集群中所有节点上的
/etc/hosts中指定。这个资源是资源组nfsgroup的一部分。在本示例部署中,我们使用 192.168.122.200 作为浮动 IP 地址。pcs resource create nfs_ip IPaddr2 \ ip=192.168.122.200 cidr_netmask=24 --group nfsgroup
[root@z1 ~]# pcs resource create nfs_ip IPaddr2 \ ip=192.168.122.200 cidr_netmask=24 --group nfsgroupCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 在完成整个 NFS 部署后,添加用于发送 NFSv3 重启通知的
nfsnotify资源。这个资源是资源组nfsgroup的一部分。注意为了正确处理 NFS 通知,浮动 IP 地址必须具有与其关联的主机名,在 NFS 服务器和 NFS 客户端中都一致。pcs resource create nfs-notify nfsnotify \ source_host=192.168.122.200 --group nfsgroup
[root@z1 ~]# pcs resource create nfs-notify nfsnotify \ source_host=192.168.122.200 --group nfsgroupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
在创建资源和资源限制后,您可以检查集群的状态。请注意,所有资源都在同一个节点上运行。
3.6. 测试资源配置 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您可以按照以下步骤验证您的系统配置。您应该可以使用 NFSv3 或 NFSv4 挂载导出的文件系统。
- 在与部署位于同一个网络中的、位于集群以外的一个节点中,通过挂载 NFS 共享来确定 NFS 共享。在本例中,我们使用 192.168.122.0/24 网络。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 要验证您可以用 NFSv4 挂载 NFS 共享,将 NFS 共享挂载到客户端节点的目录中。挂载后,请确定导出目录的内容是可见的。测试后卸载共享。
mkdir nfsshare mount -o "vers=4" 192.168.122.200:export1 nfsshare ls nfsshare umount nfsshare
# mkdir nfsshare # mount -o "vers=4" 192.168.122.200:export1 nfsshare # ls nfsshare clientdatafile1 # umount nfsshareCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 确定您可以用 NFSv3 挂载 NFS 共享。挂载后,请确定测试文件
clientdatafile1是可见的。与 NFSv4 不同,因为 NFSV3 不使用虚拟文件系统,所以您必须挂载一个特定的导出。测试后卸载共享。mkdir nfsshare mount -o "vers=3" 192.168.122.200:/nfsshare/exports/export2 nfsshare ls nfsshare umount nfsshare
# mkdir nfsshare # mount -o "vers=3" 192.168.122.200:/nfsshare/exports/export2 nfsshare # ls nfsshare clientdatafile2 # umount nfsshareCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 要测试故障切换,请执行以下步骤。
- 在集群外的节点中挂载 NFS 共享,并确认可以访问我们中创建的
clientdatafile1第 3.3 节 “NFS 共享设置”。mkdir nfsshare mount -o "vers=4" 192.168.122.200:export1 nfsshare ls nfsshare
# mkdir nfsshare # mount -o "vers=4" 192.168.122.200:export1 nfsshare # ls nfsshare clientdatafile1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在集群的一个节点中,决定集群中的哪个节点正在运行
nfsgroup。在本例中,nfsgroup在z1.example.com上运行。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在集群的一个节点中,将运行
nfsgroup的节点设置为待机模式。pcs node standby z1.example.com
[root@z1 ~]# pcs node standby z1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证
nfsgroup是否在另外一个集群节点上成功启动。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在您挂载了 NFS 共享的集群之外的节点中,确认这个外部节点仍然可以访问 NFS 挂载中的测试文件。
ls nfsshare
# ls nfsshare clientdatafile1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在短暂的故障转移过程中,服务可能会在短暂时间内不可用,但可以在没有用户干预的情况下恢复。默认情况下,使用 NFSv4 的客户端可能最多需要 90 秒恢复该挂载。这个 90 秒代表服务器启动时观察到的 NFSv4 文件租期的宽限期。NFSv3 客户端应该在几秒钟内就可以恢复对该挂载的访问。 - 从集群的一个节点中删除最初运行
nfsgroup的节点,从待机模式中删除最初运行的节点。这本身不会将集群资源移至此节点。pcs node unstandby z1.example.com
[root@z1 ~]# pcs node unstandby z1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意从standby模式中删除节点不会自动导致资源恢复到该节点。这将依赖于资源的resource-stickiness值。有关resource-stickinessmeta 属性的详情,请参考 红帽高可用性附加组件参考 中的配置资源以引用其当前节点。
自 Red Hat Enterprise Linux 7.4 发行版本起,Red Hat Resilient Storage 附加组件支持使用 Pacemaker 在主动/主动集群配置中运行 Samba。Red Hat Resilient Storage Add-On 包括 High Availability Add-On。
注意
本章论述了如何使用共享存储在双节点 Red Hat Enterprise Linux High Availability 附加组件集群中配置高可用性主动/主动 Samba 服务器。以下操作过程使用 pcs 来配置 Pacemaker 集群资源。
这个用例需要您的系统包括以下组件:
- 两个节点,用于创建运行 Clustered Samba 的集群。在本例中,所用的节点为
z1.example.com和z2.example.com,它们的 IP 地址为192.168.1.151和192.168.1.152。 - 集群中的每个节点都有一个电源隔离设备。这个示例使用 APC 电源交换机的两个端口,主机名为
zapc.example.com。 - 集群中节点的共享存储,使用 iSCSI 或光纤频道。
在双节点 Red Hat Enterprise Linux High Availability Add-On 集群中配置高可用性主动/主动 Samba 服务器需要执行以下步骤。
- 创建导出 Samba 共享并为集群中的每个节点配置隔离的集群,如所述 第 4.1 节 “创建集群”。
- 在集群的每个节点上配置 Samba 第 4.3 节 “配置 Samba”。
- 如所述创建 Samba 集群资源 第 4.4 节 “配置 Samba 集群资源”。
- 测试您配置的 Samba 共享,如所述 第 4.5 节 “测试资源配置”。
4.1. 创建集群 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用以下步骤安装和创建用于 Samba 服务的集群:
- 使用中介绍的步骤为集群的每个节点配置隔离设备 第 1.3 节 “隔离配置”。这个示例使用 APC 电源交换机的两个端口配置隔离,主机名为
zapc.example.com。
4.2. 使用 GFS2 文件系统配置集群 LVM 卷 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
这个用例要求您在集群节点间共享的存储中创建集群的 LVM 逻辑卷。
这部分论述了如何使用那个卷中的 GFS2 文件系统创建集群 LVM 逻辑卷。在这个示例中,使用共享分区
/dev/vdb 来存储创建 LVM 逻辑卷的 LVM 物理卷。
注意
LVM 卷以及集群节点使用的对应分区和设备必须只能连接到集群节点。
在开始此步骤前,在集群的两个节点上安装
lvm2-cluster 和 gfs2-utils 软件包,它们是 Resilient Storage 频道的一部分。
yum install lvm2-cluster gfs2-utils
# yum install lvm2-cluster gfs2-utils
因为
/dev/vdb 分区是共享的存储,因此您只在一个节点中执行这个步骤,
- 将全局 Pacemaker 参数
no_quorum_policy设置为freeze。这可防止在每次 quorum 丢失时整个集群被隔离。有关设置该策略的更多信息,请参阅 全局文件系统 2。pcs property set no-quorum-policy=freeze
[root@z1 ~]# pcs property set no-quorum-policy=freezeCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 设置
dlm资源。这是clvmd服务和 GFS2 文件系统所需的依赖项。pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true
[root@z1 ~]# pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 将
clvmd设置为集群资源。pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true
[root@z1 ~]# pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,作为启动过程的一部分,ocf:heartbeat:clvm资源代理将/etc/lvm/lvm.conf文件中的locking_type参数设置为3,并禁用lvmetad守护进程。 - 设置
clvmd和dlm依赖项并启动顺序。clvmd资源必须在dlm资源后启动,且必须与dlm资源在同一节点上运行。pcs constraint order start dlm-clone then clvmd-clone pcs constraint colocation add clvmd-clone with dlm-clone
[root@z1 ~]# pcs constraint order start dlm-clone then clvmd-clone Adding dlm-clone clvmd-clone (kind: Mandatory) (Options: first-action=start then-action=start) [root@z1 ~]# pcs constraint colocation add clvmd-clone with dlm-cloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证
dlm和clvmd资源是否在所有节点上运行。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建集群逻辑卷
pvcreate /dev/vdb vgcreate -Ay -cy cluster_vg /dev/vdb lvcreate -L4G -n cluster_lv cluster_vg
[root@z1 ~]# pvcreate /dev/vdb [root@z1 ~]# vgcreate -Ay -cy cluster_vg /dev/vdb [root@z1 ~]# lvcreate -L4G -n cluster_lv cluster_vgCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 另外,要验证卷是否已成功创建,您可以使用 lvs 命令显示逻辑卷。
lvs
[root@z1 ~]# lvs LV VG Attr LSize ... cluster_lv cluster_vg -wi-ao---- 4.00g ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用 GFS2 文件系统格式化卷。在本例中,
my_cluster是集群名称。本例指定-j 2指定两个日志,因为您配置的日志数量必须等于集群中的节点数量。mkfs.gfs2 -p lock_dlm -j 2 -t my_cluster:samba /dev/cluster_vg/cluster_lv
[root@z1 ~]# mkfs.gfs2 -p lock_dlm -j 2 -t my_cluster:samba /dev/cluster_vg/cluster_lvCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建
Filesystem资源,它将 Pacemaker 配置为挂载和管理文件系统。这个示例创建了名为fs的Filesystem资源,并在集群的两个节点上创建/mnt/gfs2share。pcs resource create fs ocf:heartbeat:Filesystem device="/dev/cluster_vg/cluster_lv" directory="/mnt/gfs2share" fstype="gfs2" --clone
[root@z1 ~]# pcs resource create fs ocf:heartbeat:Filesystem device="/dev/cluster_vg/cluster_lv" directory="/mnt/gfs2share" fstype="gfs2" --cloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 为 GFS2 文件系统和
clvmd服务配置依赖关系和启动顺序。GFS2 必须在clvmd后启动,且必须与clvmd在同一个节点上运行。pcs constraint order start clvmd-clone then fs-clone pcs constraint colocation add fs-clone with clvmd-clone
[root@z1 ~]# pcs constraint order start clvmd-clone then fs-clone Adding clvmd-clone fs-clone (kind: Mandatory) (Options: first-action=start then-action=start) [root@z1 ~]# pcs constraint colocation add fs-clone with clvmd-cloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证 GFS2 文件系统是否如预期挂载。
mount |grep /mnt/gfs2share
[root@z1 ~]# mount |grep /mnt/gfs2share /dev/mapper/cluster_vg-cluster_lv on /mnt/gfs2share type gfs2 (rw,noatime,seclabel)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. 配置 Samba 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
以下流程初始化 Samba 环境并在集群节点上配置 Samba。
- 在集群的两个节点上执行以下步骤:
- 安装
samba、ctdb和cifs-utils软件包。yum install samba ctdb cifs-utils
# yum install samba ctdb cifs-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果您正在运行 firewalld 守护进程,请运行以下命令启用
ctdb和samba服务所需的端口。firewall-cmd --add-service=ctdb --permanent firewall-cmd --add-service=samba --permanent firewall-cmd --reload
# firewall-cmd --add-service=ctdb --permanent # firewall-cmd --add-service=samba --permanent # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 输入以下命令以确保这些守护进程没有运行且不会在引导时启动。请注意,不是所有这些守护进程都可能存在或者在您的系统中运行。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在
/etc/samba/smb.conf文件中,配置 Samba 服务器并设置[public]共享定义。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关将 Samba 配置为独立服务器的详情,如本例中所示,以及使用 testparm 实用程序验证smb.conf文件的详情,请参考 系统管理员指南中的 File and Print Servers 部分。 - 将集群节点的 IP 地址添加到
/etc/ctdb/nodes文件中。cat << END > /etc/ctdb/nodes 192.168.1.151 192.168.1.152 END
# cat << END > /etc/ctdb/nodes 192.168.1.151 192.168.1.152 ENDCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 要在集群节点之间进行负载平衡,您可以将两个或者多个 IP 地址添加到
/etc/ctdb/public_addresses文件中,可用于访问此集群导出的 Samba 共享。这些是在 DNS 中为 Samba 服务器的名称配置的 IP 地址,也是 SMB 客户端要连接的地址。将 Samba 服务器的名称配置为具有多个 IP 地址的 DNS 类型 A 记录,并允许轮询 DNS 在集群节点中分发客户端。在本例中,DNS 条目linuxserver.example.com是由/etc/ctdb/public_addresses文件中列出的地址定义的。在这个版本中,DNS 会以轮循(round-robin)方式在集群节点中分发 Samba 客户端。请注意,在执行这种情况时,DNS 条目应该与您的需要匹配。将可用于访问此集群导出的 Samba 共享的 IP 地址添加到/etc/ctdb/public_addresses文件中。cat << END > /etc/ctdb/public_addresses 192.168.1.201/24 eth0 192.168.1.202/24 eth0 END
# cat << END > /etc/ctdb/public_addresses 192.168.1.201/24 eth0 192.168.1.202/24 eth0 ENDCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建 Samba 组,然后为公共测试共享目录添加本地用户,将之前创建的组设置为主组群。
groupadd smbguest adduser smbguest -g smbguest
# groupadd smbguest # adduser smbguest -g smbguestCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 请确定在 CTDB 相关目录中 SELinux 上下文正确。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 在集群的一个节点上执行以下步骤:
- 为 CTDB 锁定文件和公共共享设置目录。
mkdir -p /mnt/gfs2share/ctdb/ mkdir -p /mnt/gfs2share/public/
[root@z1 ~]# mkdir -p /mnt/gfs2share/ctdb/ [root@z1 ~]# mkdir -p /mnt/gfs2share/public/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 更新 GFS2 共享中的 SELinux 上下文。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4. 配置 Samba 集群资源 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
本节提供了为这个用例配置 Samba 集群资源的步骤。
以下流程创建了名为
samba.cib 的集群 cib 文件的快照,并将该资源添加到该测试文件中,然后直接在正在运行的集群中配置这些资源。配置资源和约束后,流程将 samba.cib 的内容推送到正在运行的集群配置文件。
在集群的一个节点上运行以下步骤。
- 创建
cib文件的快照,即集群配置文件。pcs cluster cib samba.cib
[root@z1 ~]# pcs cluster cib samba.cibCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建 Samba 使用 CTDB 资源。将这个资源作为克隆的资源创建,以便它在两个集群节点上运行。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建克隆的 Samba 服务器。
pcs -f samba.cib resource create samba systemd:smb --clone
[root@z1 ~]# pcs -f samba.cib resource create samba systemd:smb --cloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 为集群资源创建 colocation 和顺序限制。启动顺序是 Filesystem 资源、CTDB 资源,然后是 Samba 资源。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将
cib快照的内容推送到集群。pcs cluster cib-push samba.cib
[root@z1 ~]# pcs cluster cib-push samba.cib CIB updatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 检查集群的状态,以验证资源是否在运行。请注意,在 Red Hat Enterprise Linux 7.4 中, CTDB 可能需要几分钟时间来启动 Samba、导出共享和稳定。如果在这个过程完成前检查集群状态,您可能会看到一个 CTDB 状态调用失败的消息。这个过程完成后,您可以运行 pcs resource cleanup ctdb-clone 命令从显示中清除这个信息。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果发现您配置的资源没有运行,您可以运行 pcs resource debug-start resource 命令来测试资源配置。这会在集群控制之外启动服务。如果配置的资源再次运行,运行 pcs resource cleanup resource 使集群了解更新。有关 pcs resource debug-start 命令的详情请参考 High Availability Add-On Reference 手册中的 Enabling、Disabling 和 Banning Cluster Resources 部分。
4.5. 测试资源配置 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
如果 Samba 配置成功,应该可以在集群的节点中挂载 Samba 共享。以下示例步骤挂载了一个 Samba 共享。
- 在集群节点中添加现有用户到
smbpasswd文件并分配密码。在以下示例中,有一个现有用户smbuser。smbpasswd -a smbuser
[root@z1 ~]# smbpasswd -a smbuser New SMB password: Retype new SMB password: Added user smbuserCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 挂载 Samba 共享:
mkdir /mnt/sambashare mount -t cifs -o user=smbuser //198.162.1.151/public /mnt/sambashare
[root@z1 ~]# mkdir /mnt/sambashare [root@z1 ~]# mount -t cifs -o user=smbuser //198.162.1.151/public /mnt/sambashare Password for smbuser@//198.162.1.151/public: ********Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 检查是否挂载文件系统:
mount | grep /mnt/sambashare
[root@z1 ~]# mount | grep /mnt/sambashare //198.162.1.151/public on /mnt/sambashare type cifs (rw,relatime,vers=1.0,cache=strict,username=smbuser,domain=LINUXSERVER,uid=0,noforceuid,gid=0,noforcegid,addr=10.37.167.205,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,echo_interval=60,actimeo=1)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要检查 Samba 恢复,请执行以下步骤。
- 使用以下命令手动停止 CTDB 资源:
pcs resource debug-stop ctdb
[root@z1 ~]# pcs resource debug-stop ctdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 停止资源后,系统应该恢复该服务。使用 pcs status 命令检查集群状态。您应该看到
ctdb-clone资源已启动,但您也会看到ctdb_monitor失败。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要从状态中删除这个错误,请在其中一个集群节点上输入以下命令:pcs resource cleanup ctdb-clone
[root@z1 ~]# pcs resource cleanup ctdb-cloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
附录 A. 修订记录 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
| 修订历史 | |||
|---|---|---|---|
| 修订 6-1 | Wed Aug 7 2019 | ||
| |||
| 修订 5-2 | Thu Oct 4 2018 | ||
| |||
| 修订 4-2 | Wed Mar 14 2018 | ||
| |||
| 修订 4-1 | Thu Dec 14 2017 | ||
| |||
| 修订 3-4 | Wed Aug 16 2017 | ||
| |||
| 修订 3-3 | Wed Jul 19 2017 | ||
| |||
| 修订 3-1 | Wed May 10 2017 | ||
| |||
| 修订 2-6 | Mon Apr 17 2017 | ||
| |||
| 修订 2-4 | Mon Oct 17 2016 | ||
| |||
| 修订 2-3 | Fri Aug 12 2016 | ||
| |||
| 修订 1.2-3 | Mon Nov 9 2015 | ||
| |||
| 修订 1.2-2 | Tue Aug 18 2015 | ||
| |||
| 修订 1.1-19 | Mon Feb 16 2015 | ||
| |||
| 修订 1.1-10 | Thu Dec 11 2014 | ||
| |||
| 修订 0.1-33 | Mon Jun 2 2014 | ||
| |||
法律通告 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
提供 © 2018 Red Hat, Inc。
本文档由红帽根据 Creative Commons Attribution-ShareAlike 3.0 Unported 许可证授权。如果您发布本文档,或者修改本文档,您必须为 Red Hat, Inc. 提供相关功能,并提供到原始文档的链接。如果修改了文档,则必须删除所有红帽商标。
作为本文档的许可者,红帽可能会放弃强制制执行 CC-BY-SA 第 4d 条款,且不声明此条款在适用条款允许的最大限度内有效。
Red Hat、Red Hat Enterprise Linux、Shadowman 商标、JBoss、OpenShift、Fedora、Infinity 商标以及 RHCE 都是在美国及其他国家的注册商标。
Linux® 是 Linus Torvalds 在美国和其它国家的注册商标。
Java® 是 Oracle 和(/或者)其子的注册商标。
XFS® 是 Silicon Graphics International Corp 的商标,或其在美国和(或)其它国家的子公司。
MySQL® 是美国、欧洲联合体和其它国家的 MySQL AB 注册商标。
Node.js® 是 Joyent 的一个官方商标。Red Hat Software Collections 与官方 Joyent Node.js 开源或商业项目没有正式关联或被正式发布。
OpenStack® Word Mark 和 OpenStack 徽标是 OpenStack Foundation 的注册商标/服务标记或商标/服务标记,在美国和其它国家的注册商标/服务标记,可根据 OpenStack Foundation 授权使用。我们不附属于 OpenStack Foundation 或 OpenStack 社区。
所有其他商标都是其各自拥有者。