منظم ضربات القلب للتخزين العنقودي + DRBD (ثنائي أساسي) + ctdb

يوم جيد ، هابروفسك. كانت هناك مهمة - لنشر مساحة تخزين High High متسامحة مع الأخطاء باستخدام pacamaker + drbd (في الوضع الأساسي المزدوج) + clvmd + ctdb ، والتي سيتم تحميلها على الخادم. سوف أبدي تحفظًا عبر كل هذه الأدوات لأول مرة وسأكون سعيدًا بالنقد والإضافات / التصحيحات. على الإنترنت ، لا توجد أي تعليمات خاصة بهذه الحزمة ، أو أن المعلومات قديمة. هذا يعمل في الوقت الحالي ، ولكن هناك مشكلة واحدة ، وآمل أن أجد حلها في المستقبل القريب. يجب تنفيذ جميع الإجراءات على كلا العقدتين ، ما لم يرد خلاف ذلك.

لنبدأ. لدينا جهازان افتراضيان على CentOS 7.

1) من أجل الموثوقية ، قدمهم إلى / etc / hosts

192.168.0.1 node1 192.168.0.2 node2 

2) لا يوجد DRBD في المستودعات القياسية ، لذلك تحتاج إلى توصيل طرف ثالث.

 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 

3) تثبيت drbd الإصدار 8.4 (لم أستطع الحصول على 9.0 في الوضع الأساسي المزدوج)

 yum install -y kmod-drbd84 drbd84-utils 

4) تفعيل وتمكين وحدة drbd kernel في بدء التشغيل

 modprobe drbd echo drbd > /etc/modules-load.d/drbd.conf 

5) إنشاء ملف التكوين للمورد drbd /etc/drbd.d/r0.res

 resource r0 { protocol C; device /dev/drbd0; meta-disk internal; disk /dev/sdb; net { allow-two-primaries; } disk { fencing resource-and-stonith; } handlers { fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh"; } on node1 { address 192.168.0.1:7788; } on node2 { address 192.168.0.2:7788; } 

6) تعطيل وحدة drbd (جهاز تنظيم ضربات القلب في وقت لاحق سيكون مسؤولا عن ذلك) ، وإنشاء البيانات الوصفية للقرص drbd ، ورفع الموارد

 systemctl disable drbd drbdadm create-md r0 drbdadm up r0 

7) في العقدة الأولى ، اجعل المورد أساسيًا

 drbdadm primary --force r0 

8) ضع جهاز تنظيم ضربات القلب

 yum install -y pacemaker pcs resource-agents 

9) تعيين كلمة مرور للمستخدم hacluster للحصول على إذن على العقد

 echo CHANGEME | passwd --stdin hacluster 

10) قم بتشغيل جهاز تنظيم ضربات القلب على كلا العقدتين

 systemctl enable pcsd systemctl start pcsd 

11) تسجيل الدخول إلى الكتلة. من هذه المرحلة نقوم بكل شيء على عقدة واحدة

 pcs cluster auth node1 node2 -u hacluster 

12) إنشاء كتلة باسم samba_cluster

 pcs cluster setup --force --name samba_cluster node1 node2 

13) تفعيل العقد

 pcs cluster enable --all pcs cluster start --all 

14) نظرًا لأن لدينا أجهزة افتراضية كخوادم ، فإننا نوقف تشغيل آلية STONITH

 pcs property set stonith-enabled=false pcs property set no-quorum-policy=ignore 

15) إنشاء VIP

 pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.10 cidr_netmask=24 op monitor interval=60s 

16) إنشاء مورد drbd

 pcs cluster cib drbd_cfg pcs -f drbd_cfg resource create DRBD ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s pcs -f drbd_cfg resource master DRBDClone DRBD master-max=2 master-node-max=1 clone-node-max=1 clone-max=2 notify=true interleave=true pcs cluster cib-push drbd_cfg 

17) تثبيت الحزم اللازمة ل clvm وإعداد clvm

 yum install -y lvm2-cluster gfs2-utils /sbin/lvmconf --enable-cluster 

18) أضف مورد dlm و clvd إلى جهاز تنظيم ضربات القلب

 pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true pcs constraint colocation add clvmd-clone with dlm-clone 

19) عند هذه النقطة ، يجب البدء clvmd و dlm رمي خطأ. نذهب إلى منظم ضربات القلب واجهة الويب 192.168.0.1 : 2224. إذا لم تظهر المجموعة ، فأضفها إلى "Edd موجود". بعد ذلك ، انتقل إلى Resources - dlm - وسيطات اختيارية وقم بتعيين القيمة allow_stonith_disabled = true

20) وضعنا قائمة انتظار تحميل الموارد

 pcs constraint order start DRBDClone then dlm-clone pcs constraint order start dlm-clone then clvmd-clone 

21) لا سمح LVM لكتابة ذاكرة التخزين المؤقت ومسحها. على كلا العقدتين

 sed -i 's/write_cache_state = 1/write_cache_state = 0/' /etc/lvm/lvm.conf rm /etc/lvm/cache/* 

22) نقوم بتحرير /etc/lvm/lvm.conf حتى لا يرى lvm / dev / sdb. على كلا العقدتين

 # This configuration option has an automatic default value. # filter = [ "a|.*/|" ] filter = [ "r|^/dev/sdb$|" ] 

23) إنشاء قسم CLVM. نحن نصنع فقط في ملاحظة واحدة

 $ vgcreate -Ay -cy cl_vg /dev/drbd0 Physical volume "/dev/drbd0" successfully created. Clustered volume group "cl_vg" successfully created $ lvcreate -l100%FREE -n r0 cl_vg Logical volume "r0" created. 

24) نحن ترميز القسم في gfs2

 mkfs.gfs2 -j2 -p lock_dlm -t drbd-gfs2:r0 /dev/cl_vg/r0 

25) بعد ذلك ، أضف جبل هذا القسم في جهاز تنظيم ضربات القلب وأخبره بالتمهيد بعد clvmd

 pcs resource create fs ocf:heartbeat:Filesystem device="/dev/cl_vg/r0" directory="/mnt/" fstype="gfs2" --clone pcs constraint order start clvmd-clone then fs-clone 

26) الآن جاء دور ctdb الذي سيدير ​​السامبا

 yum install -y samba ctdb cifs-utils 

27) قم بتحرير config /etc/ctdb/ctdbd.conf

 CTDB_RECOVERY_LOCK="/mnt/ctdb/.ctdb.lock" CTDB_NODES=/etc/ctdb/nodes CTDB_MANAGES_SAMBA=yes CTDB_LOGGING=file:/var/log/ctdb.log CTDB_DEBUGLEVEL=NOTICE 

28) إنشاء ملف مع قائمة العقد. الاهتمام! بعد كل عنوان IP في قائمة العقد ، يجب أن يكون موجز السطر موجودًا. وإلا ، ستفشل العقدة أثناء التهيئة.

 cat /etc/ctdb/nodes 192.168.0.1 192.168.0.2 

29) أضف إلى config /etc/samba/smb.conf

 [global] clustering = yes private dir = /mnt/ctdb lock directory = /mnt/ctdb idmap backend = tdb2 passdb backend = tdbsam [test] comment = Cluster Share path = /mnt browseable = yes writable = yes 

30) أخيرًا ، قم بإنشاء مورد ctdb وأشر إلى أنه يجب تحميله بعد

 pcs constraint order start fs-clone then samba 

والآن عن المشكلة التي لم أقررها بعد. إذا قمت بإعادة تشغيل العقدة ، فإن المجموعة بأكملها تنهار ، لأن drbd يحتاج إلى وقت لتنشيط / dev / drbd0. لا ترى DLM القسم ، لأنه لم يتم تنشيطه بعد ولا يبدأ التشغيل ، إلخ. الحل البديل هو تنشيط القسم يدويًا وإعادة تشغيل موارد جهاز تنظيم ضربات القلب

 vgchage -ay pcs resource refresh 

Source: https://habr.com/ru/post/ar435906/


All Articles