ฉันกำลังพยายามปรับใช้สถาปัตยกรรมคลัสเตอร์ HA NFS กับ PCS บน Rocky Linux 8.5 เคอร์เนลปัจจุบันและเวอร์ชันแพ็คเกจที่เกี่ยวข้องกับ nfs การกำหนดค่า pcs จะแสดงพร้อมรายละเอียดด้านล่าง
ฉันไม่สามารถประกาศ IP เฉพาะสำหรับอินสแตนซ์ NFSD (rpc.statd, rpc.mountd ฯลฯ) เพื่อผูก ไม่ว่าฉันจะทำอะไร บริการต่างๆ ก็จะมีผลผูกพัน 0.0.0.0:$default-พอร์ต
.
ฉันต้องการเริ่มต้น "ocf:Hearthbeat:nfsserver" ที่แตกต่างกันด้วยทรัพยากร VirtualIP เฉพาะสำหรับแต่ละกลุ่มทรัพยากร NFS (บล็อก) ของฉัน เมื่อฉันประกาศกลุ่มทรัพยากรที่ใช้ร่วมกัน NFS ที่สองบนโหนดเดียวกันของคลัสเตอร์ (โดยที่ฉันวางแผนที่จะมี NFS มากกว่าขนาดคลัสเตอร์) ทรัพยากร "ocf:Hearthbeat:nfsserver" จะบล็อกซึ่งกันและกัน และในที่สุดทรัพยากรหนึ่งก็ชนะและทรัพยากรอื่นก็เข้ามา เข้าสู่สถานะ "ถูกบล็อก"
[root@node1 ~]# uname -a
Linux node1.local 4.18.0-348.12.2.el8_5.x86_64 #1 SMP วันพุธที่ 19 มกราคม 17:53:40 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[root@node1 ~]# รอบต่อนาที -qa nfs* rpc*
nfs-utils-2.3.3-46.el8.x86_64
rpcbind-1.2.5-8.el8.x86_64
[รูท@node1 ~]#
สถานะคลัสเตอร์ PCS
[root@node1 ~]สถานะ # ชิ้น
ชื่อคลัสเตอร์: cluster01
สรุปคลัสเตอร์:
* สแต็ค: corosync
* DC ปัจจุบัน: node5 (เวอร์ชัน 2.1.0-8.el8-7c3f660707) - พาร์ติชันที่มีองค์ประชุม
* ปรับปรุงล่าสุด: พฤ. 24 มี.ค. 13:10:09 น. 2565
* แก้ไขล่าสุด: พฤ. 24 มี.ค. 13:03:48 2022 โดย root ผ่าน crm_resource บน node3
* กำหนดค่า 5 โหนด
* กำหนดค่าอินสแตนซ์ทรัพยากร 5 รายการ
รายการโหนด:
* ออนไลน์: [ node1 node2 node3 node4 node5 ]
รายการทรัพยากรทั้งหมด:
* กลุ่มทรัพยากร: Group_SHARE:
* ROOT-FS_SHARE (ocf::heartbeat:Filesystem): เริ่มทำงาน node2
* NFSD_SHARE (ocf::heartbeat:nfsserver): เริ่มต้น node2
* NFS_SHARE (ocf::heartbeat:exportfs): เริ่มต้น node2
* NFS-IP_SHARE (ocf::heartbeat:IPaddr2): เริ่มต้น node2
* NFS-NOTIFY_SHARE (ocf::heartbeat:nfsnotify): เริ่มต้น node2
สถานะภูต:
corosync: เปิดใช้งาน/เปิดใช้งาน
เครื่องกระตุ้นหัวใจ: เปิดใช้งาน/เปิดใช้งาน
pcsd: เปิดใช้งาน/เปิดใช้งาน
[รูท@node1 ~]#
เอาต์พุตการกำหนดค่าทรัพยากร PCS
[root@node2 ~]# pcs การกำหนดค่าทรัพยากร
กลุ่ม: Group_SHARE
ทรัพยากร: ROOT-FS_SHARE (คลาส=ผู้ให้บริการ ocf=ประเภท heartbeat=ระบบไฟล์)
คุณสมบัติ: device=/dev/disk/by-id/wwn-0x6001405ce6b7033688d497a91aa23547 directory=/srv/block/SHARE fstype=xfs
การทำงาน: ช่วงเวลามอนิเตอร์ = หมดเวลา 20 วินาที = 40 วินาที (ROOT-FS_SHARE-monitor-interval-20s)
ช่วงเวลาเริ่มต้น = หมดเวลา 0 วินาที = 60 วินาที (ROOT-FS_SHARE-start-interval-0s)
ช่วงเวลาหยุด = หมดเวลา 0 วินาที = 60 วินาที (ROOT-FS_SHARE-stop-interval-0s)
ทรัพยากร: NFSD_SHARE (คลาส=ผู้ให้บริการ ocf=ชนิด heartbeat=nfsserver)
แอตทริบิวต์: nfs_ip=10.1.31.100 nfs_no_notify=true nfs_shared_infodir=/srv/block/SHARE/nfsinfo/
การดำเนินการ: ช่วงเวลามอนิเตอร์=10s หมดเวลา=20s (NFSD_SHARE-monitor-interval-10s)
ช่วงเวลาเริ่มต้น = 0 วินาที หมดเวลา = 40 วินาที (NFSD_SHARE-ช่วงเริ่มต้น-0 วินาที)
หยุดช่วงเวลา = 0 วินาทีหมดเวลา = 20 วินาที (NFSD_SHARE-หยุดช่วงเวลา-0 วินาที)
ทรัพยากร: NFS_SHARE (คลาส=ผู้ให้บริการ ocf=ประเภทการเต้นของหัวใจ=ส่งออก)
คุณสมบัติ: clientspec=10.1.31.0/255.255.255.0 directory=/srv/block/SHARE/SHARE fsid=0 options=rw,sync,no_root_squash
การดำเนินการ: ช่วงเวลามอนิเตอร์=10s หมดเวลา=20s (NFS_SHARE-monitor-interval-10s)
ช่วงเวลาเริ่มต้น = 0 วินาที หมดเวลา = 40 วินาที (NFS_SHARE-ช่วงเริ่มต้น-0 วินาที)
ช่วงเวลาหยุด = 0 วินาที หมดเวลา = 120 วินาที (NFS_SHARE-stop-interval-0 วินาที)
ทรัพยากร: NFS-IP_SHARE (คลาส=ผู้ให้บริการ ocf=ประเภทการเต้นของหัวใจ=IPaddr2)
คุณสมบัติ: cidr_netmask=24 ip=10.1.31.100 nic=team31
การทำงาน: ช่วงเวลามอนิเตอร์ = 30 วินาที (NFS-IP_SHARE-monitor-interval-30s)
ช่วงเวลาเริ่มต้น = 0 วินาที หมดเวลา = 20 วินาที (NFS-IP_SHARE-ช่วงเริ่มต้น-0 วินาที)
ช่วงเวลาหยุด = 0 วินาที หมดเวลา = 20 วินาที (NFS-IP_SHARE-stop-interval-0 วินาที)
ทรัพยากร: NFS-NOTIFY_SHARE (คลาส=ผู้ให้บริการ ocf=ประเภทการเต้นของหัวใจ=nfsnotify)
แอตทริบิวต์: source_host=SHARE.local
การทำงาน: ช่วงเวลามอนิเตอร์=หมดเวลา 30 วินาที=90 วินาที (NFS-NOTIFY_SHARE-monitor-interval-30s)
ช่วงเวลาการโหลดซ้ำ = 0 วินาที หมดเวลา = 90 วินาที (NFS-NOTIFY_SHARE-reload-interval-0s)
ช่วงเวลาเริ่มต้น = 0 วินาที หมดเวลา = 90 วินาที (NFS-NOTIFY_SHARE-ช่วงเริ่มต้น-0 วินาที)
ช่วงเวลาหยุด = 0 วินาที หมดเวลา = 90 วินาที (NFS-NOTIFY_SHARE-stop-interval-0s)
[รูท@node2 ~]#
IP เสมือนผูกสำเร็จบน node2
[root@node2 ~]# ip -4 addr แสดง team31
6: team31: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP กลุ่มเริ่มต้น qlen 1000
inet 10.1.31.2/24 brd 10.1.31.255 ขอบเขต global noprefixroute team31
valid_lft ตลอดไป reserved_lft ตลอดไป
inet 10.1.31.100/24 brd 10.1.31.255 ขอบเขตทีมรองทั่วโลก31
valid_lft ตลอดไป reserved_lft ตลอดไป
[รูท@node2 ~]#
TCP LISTEN เชื่อมโยง
[root@node2 ~]# netstat -punta | ฟัง
tcp 0 0 0.0.0.0:2049 0.0.0.0:* ฟัง -
tcp 0 0 127.0.0.1:44321 0.0.0.0:* ฟัง 1803/pmcd
tcp 0 0 0.0.0.0:34661 0.0.0.0:* ฟัง 630273/rpc.statd
tcp 0 0 127.0.0.1:199 0.0.0.0:* ฟัง 1257/snmpd
tcp 0 0 127.0.0.1:4330 0.0.0.0:* LISTEN 2834/pmlogger
tcp 0 0 10.20.101.136:2379 0.0.0.0:* ฟัง 3285/etcd
tcp 0 0 10.20.101.136:2380 0.0.0.0:* ฟัง 3285/etcd
tcp 0 0 0.0.0.0:111 0.0.0.0:* ฟัง 1/systemd
tcp 0 0 0.0.0.0:20048 0.0.0.0:* ฟัง 630282/rpc.mountd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 317707/nginx: เสาหลัก
tcp 0 0 0.0.0.0:2224 0.0.0.0:* ฟัง 3725/platform-pytho
tcp 0 0 0.0.0.0:22 0.0.0.0:* ฟัง 1170/sshd
tcp 0 0 0.0.0.0:41017 0.0.0.0:* ฟัง -
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 317707/nginx: เสาหลัก
tcp 0 0 0.0.0.0:35261 0.0.0.0:* ฟัง -
tcp6 0 0 :::2049 :::* ฟัง -
tcp6 0 0 ::1:44321 :::* ฟัง 1803/pmcd
tcp6 0 0 ::1:4330 :::* ฟัง 2834/pmlogger
tcp6 0 0 :::111 :::* ฟัง 1/systemd
tcp6 0 0 :::20048 :::* ฟัง 630282/rpc.mountd
tcp6 0 0 :::2224 :::* ฟัง 3725/platform-pytho
tcp6 0 0 :::37329 :::* ฟัง -
tcp6 0 0 :::22 :::* ฟัง 1170/sshd
tcp6 0 0 :::41179 :::* ฟัง 630273/rpc.statd
tcp6 0 0 :::43487 :::* ฟัง -
[รูท@node2 ~]#
ทรัพยากรคลัสเตอร์ PCS (รูปแบบ cib.xml ในกรณีที่คุณต้องการข้อมูลเชิงลึก)
<resources>
<group id="Group_SHARE">
<primitive class="ocf" id="ROOT-FS_SHARE" provider="heartbeat" type="Filesystem">
<instance_attributes id="ROOT-FS_SHARE-instance_attributes">
<nvpair id="ROOT-FS_SHARE-instance_attributes-device" name="device" value="/dev/disk/by-id/wwn-0x6001405ce6b7033688d497a91aa23547"/>
<nvpair id="ROOT-FS_SHARE-instance_attributes-directory" name="directory" value="/srv/block/SHARE"/>
<nvpair id="ROOT-FS_SHARE-instance_attributes-fstype" name="fstype" value="xfs"/>
</instance_attributes>
<operations>
<op id="ROOT-FS_SHARE-monitor-interval-20s" interval="20s" name="monitor" timeout="40s"/>
<op id="ROOT-FS_SHARE-start-interval-0s" interval="0s" name="start" timeout="60s"/>
<op id="ROOT-FS_SHARE-stop-interval-0s" interval="0s" name="stop" timeout="60s"/>
</operations>
</primitive>
<primitive class="ocf" id="NFSD_SHARE" provider="heartbeat" type="nfsserver">
<instance_attributes id="NFSD_SHARE-instance_attributes">
<nvpair id="NFSD_SHARE-instance_attributes-nfs_ip" name="nfs_ip" value="10.1.31.100"/>
<nvpair id="NFSD_SHARE-instance_attributes-nfs_no_notify" name="nfs_no_notify" value="true"/>
<nvpair id="NFSD_SHARE-instance_attributes-nfs_shared_infodir" name="nfs_shared_infodir" value="/srv/block/SHARE/nfsinfo/"/>
</instance_attributes>
<operations>
<op id="NFSD_SHARE-monitor-interval-10s" interval="10s" name="monitor" timeout="20s"/>
<op id="NFSD_SHARE-start-interval-0s" interval="0s" name="start" timeout="40s"/>
<op id="NFSD_SHARE-stop-interval-0s" interval="0s" name="stop" timeout="20s"/>
</operations>
</primitive>
<primitive class="ocf" id="NFS_SHARE" provider="heartbeat" type="exportfs">
<instance_attributes id="NFS_SHARE-instance_attributes">
<nvpair id="NFS_SHARE-instance_attributes-clientspec" name="clientspec" value="10.1.31.0/255.255.255.0"/>
<nvpair id="NFS_SHARE-instance_attributes-directory" name="directory" value="/srv/block/SHARE/SHARE"/>
<nvpair id="NFS_SHARE-instance_attributes-fsid" name="fsid" value="0"/>
<nvpair id="NFS_SHARE-instance_attributes-options" name="options" value="rw,sync,no_root_squash"/>
</instance_attributes>
<operations>
<op id="NFS_SHARE-monitor-interval-10s" interval="10s" name="monitor" timeout="20s"/>
<op id="NFS_SHARE-start-interval-0s" interval="0s" name="start" timeout="40s"/>
<op id="NFS_SHARE-stop-interval-0s" interval="0s" name="stop" timeout="120s"/>
</operations>
</primitive>
<primitive class="ocf" id="NFS-IP_SHARE" provider="heartbeat" type="IPaddr2">
<instance_attributes id="NFS-IP_SHARE-instance_attributes">
<nvpair id="NFS-IP_SHARE-instance_attributes-cidr_netmask" name="cidr_netmask" value="24"/>
<nvpair id="NFS-IP_SHARE-instance_attributes-ip" name="ip" value="10.1.31.100"/>
<nvpair id="NFS-IP_SHARE-instance_attributes-nic" name="nic" value="team31"/>
</instance_attributes>
<operations>
<op id="NFS-IP_SHARE-monitor-interval-30s" interval="30s" name="monitor"/>
<op id="NFS-IP_SHARE-start-interval-0s" interval="0s" name="start" timeout="20s"/>
<op id="NFS-IP_SHARE-stop-interval-0s" interval="0s" name="stop" timeout="20s"/>
</operations>
</primitive>
<primitive class="ocf" id="NFS-NOTIFY_SHARE" provider="heartbeat" type="nfsnotify">
<instance_attributes id="NFS-NOTIFY_SHARE-instance_attributes">
<nvpair id="NFS-NOTIFY_SHARE-instance_attributes-source_host" name="source_host" value="SHARE.local"/>
</instance_attributes>
<operations>
<op id="NFS-NOTIFY_SHARE-monitor-interval-30s" interval="30s" name="monitor" timeout="90s"/>
<op id="NFS-NOTIFY_SHARE-reload-interval-0s" interval="0s" name="reload" timeout="90s"/>
<op id="NFS-NOTIFY_SHARE-start-interval-0s" interval="0s" name="start" timeout="90s"/>
<op id="NFS-NOTIFY_SHARE-stop-interval-0s" interval="0s" name="stop" timeout="90s"/>
</operations>
</primitive>
</group>
</resources>
แก้ไข-1
มันดูเหมือน OpenClusterFramework - ทรัพยากร nfsserver ไม่ได้ใช้ฟิลด์ nfs_ip สำหรับ "rpc.nfsd -H $nfs_ip" เลย. บน RockyLinux 8.5 ทรัพยากรนี้ยังไม่อนุญาตให้เราทำ เขียนทับพฤติกรรมเริ่มต้นของการสนับสนุน NFS แต่ละเวอร์ชัน RockyLinux 8.5 ใช้แพ็คเกจต่อไปนี้ resource-agent-4.1.1-98.el8_5.2.x86_64
ฉันจะพยายามแก้ปัญหาด้วยการระบุทรัพยากร systemd pcs แบบกำหนดเองสำหรับ [email protected]