يوم جيد ، هابروفسك. كانت هناك مهمة - لنشر مساحة تخزين 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. على كلا العقدتين
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