
أطلقت LINBIT مؤخرًا حلها الجديد لتنسيق وإدارة صفيفات DRBD متعددة.
على سبيل المثال ، يمكن أن يكون لديك العديد من العقد وكل منها سيكون له مستودع LVM أو ZFS الخاص به حيث تقوم LINSTOR بإنشاء مجلدات جديدة تلقائيًا وتكرارها بين العقد باستخدام بروتوكول DRBD.
LINSTOR يدعم العرض الدقيق واللقطات والعديد من الأشياء الأخرى المثيرة للاهتمام.
هذا الحل مناسب تمامًا للأجهزة والحاويات الافتراضية.
أقمار لينستر
أعتقد أن لديك بالفعل مجموعة pve1
، pve2
ثلاث عقد pve1
و pve2
و pve3
.
لذا فإن الخطوة الأولى هي تثبيت drbd-utils وبناء وحدة نواة على كل عقدة.
أضف مستودع linstor وقم بتثبيت رؤوس kernel ، بالإضافة إلى جميع الحزم اللازمة منه:
wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add - echo "deb http://packages.linbit.com/proxmox/ proxmox-5 drbd-9.0" \ > /etc/apt/sources.list.d/linbit.list apt-get update apt-get -y install pve-headers apt-get -y install drbd-dkms drbdtop
بعد التثبيت ، دعنا نتحقق من إصدار وحدة kernel:
modprobe drbd cat /proc/drbd
إذا كنت ترى الإصدار 8 ، فحينئذٍ حدث خطأ وتم تحميل وحدة النواة داخل الشجرة ، تحقق من dkms status
لمعرفة المزيد حول بناء وحدة dkms مباشرة.
بالنسبة لـ LINSTOR ، يجب استخدام DRBD الإصدار 9.
بعد ذلك ، في كل عقدة ، قم بتثبيت حزم linstor-proxmox و linstor-satellite :
apt-get -y install linstor-proxmox linstor-satellite systemctl start linstor-satellite.service systemctl enable linstor-satellite.service
تحكم LINSTOR
سننشر وحدة التحكم داخل حاوية LXC.
تحميل قالب دبيان:
wget http://download.proxmox.com/images/system/debian-9.0-standard_9.3-1_amd64.tar.gz -P /var/lib/vz/template/cache/
الآن قم بإنشاء حاوية لوحدة التحكم:
pct create 100 local:vztmpl/debian-9.0-standard_9.3-1_amd64.tar.gz \ --hostname=linstor-controller \ --net0=name=eth0,bridge=vmbr0,gw=10.1.0.1,ip=10.1.0.123/16
قم بتشغيل الحاوية وأدخلها:
pct start 100 pct exec 100 bash
تثبيت التحديثات:
apt-get update apt-get -y upgrade
أضف مستودع linstor وقم بتثبيت وحدة تحكم linstor و linstor-client :
wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add - echo "deb http://packages.linbit.com/proxmox/ proxmox-5 drbd-9.0" \ > /etc/apt/sources.list.d/linbit.list apt-get update && apt-get install -y linstor-controller linstor-client systemctl start linstor-controller.service systemctl enable linstor-controller.service
يتطلب Linstor لغة محلية مكونة. تكوين الإعدادات المحلية:
sed -i '/en_US.UTF-8 UTF-8/ s/^# //' /etc/locale.gen locale-gen
لنقم بإعداد المنطقة الزمنية على الفور:
dpkg-reconfigure tzdata
تكوين Vault
إنشاء العقد:
linstor node create pve1 10.1.0.11 linstor node create pve2 10.1.0.12 linstor node create pve3 10.1.0.13
لكل عقدة ، نقوم بوصف واجهة إضافية سيتم استخدامها لنسخ DRBD:
linstor node interface create pve1 data 10.2.0.11 linstor node interface create pve2 data 10.2.0.12 linstor node interface create pve3 data 10.2.0.13
مثال على الإخراج من أمر linstor node list
:
╭──────────────────────────────────────────────────────────────╮ ┊ Node ┊ NodeType ┊ Addresses ┊ State ┊ ╞┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄╡ ┊ pve1 ┊ SATELLITE ┊ 10.0.1.11,10.0.2.11:3366 (PLAIN) ┊ Online ┊ ┊ pve2 ┊ SATELLITE ┊ 10.0.1.12,10.0.2.12:3366 (PLAIN) ┊ Online ┊ ┊ pve3 ┊ SATELLITE ┊ 10.0.1.13,10.0.2.13:3366 (PLAIN) ┊ Online ┊ ╰──────────────────────────────────────────────────────────────╯
إنشاء تجمعات:
في كل عقدة ، يجب عليك إعداد تجمع رفيع lvm لـ drbd:
lvcreate -L 800G --thinpool drbdpool pve
الآن يمكنك إضافتهم إلى لينستور:
linstor storage-pool create lvmthin pve1 drbdpool pve/drbdpool linstor storage-pool create lvmthin pve2 drbdpool pve/drbdpool linstor storage-pool create lvmthin pve3 drbdpool pve/drbdpool
لنقم بتكوين التجمعات لاستخدام واجهة data
:
linstor storage-pool set-property pve1 drbdpool PrefNic data linstor storage-pool set-property pve2 drbdpool PrefNic data linstor storage-pool set-property pve3 drbdpool PrefNic data
مثال على الإخراج من الأمر linstor storage-pool list
:
╭─────────────────────────────────────────────────────────────────────────────────────────── ┊ StoragePool ┊ Node ┊ Driver ┊ PoolName ┊ FreeCapacity ┊ TotalCapacity ┊ Support ╞┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ┊ drbdpool ┊ pve1 ┊ LvmThinDriver ┊ hv1/drbdpool ┊ 800 GiB ┊ 800 GiB ┊ true ┊ drbdpool ┊ pve1 ┊ LvmThinDriver ┊ hv1/drbdpool ┊ 800 GiB ┊ 800 GiB ┊ true ┊ drbdpool ┊ pve3 ┊ LvmThinDriver ┊ hv3/drbdpool ┊ 800 GiB ┊ 800 GiB ┊ true ╰───────────────────────────────────────────────────────────────────────────────────────────
الآن يمكننا إضافة التخزين الجديد الخاص بنا إلى تكوين Proxmox:
cat >> /etc/pve/storage.cfg <<EOF drbd: drbdpool content rootdir,images controller 10.1.0.123 controllervm 100 redundancy 3 EOF
إعداد HA لوحدة التحكم
الآن سننقل حاوية linstor إلى تخزين linstor.
نحتاج أولاً إلى إنشاء قرص افتراضي له:
pct exec 100 bash linstor resource-definition create vm-100-disk-0 linstor volume-definition create vm-100-disk-0 4G linstor resource create vm-100-disk-0 --auto-place 3 -s drbdpool
مثال على الإخراج من أمر linstor resource list
:
╭──────────────────────────────────────────╮ ┊ ResourceName ┊ Node ┊ Port ┊ State ┊ ╞┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄╡ ┊ vm-100-disk-0 ┊ pve1 ┊ 7000 ┊ UpToDate ┊ ┊ vm-100-disk-0 ┊ pve2 ┊ 7000 ┊ UpToDate ┊ ┊ vm-100-disk-0 ┊ pve3 ┊ 7000 ┊ UpToDate ┊ ╰──────────────────────────────────────────╯
بشكل افتراضي ، يحذف linstor-satellite تكوينات جميع الموارد في وقت بدء الخدمة ، ثم يتوقع تكوينًا جديدًا من linstor-controller ، ولكن إذا احتفظنا بوحدة تحكم linstor في نفس المكان مثل البيانات ، فيجب علينا إجراء استثناء لموردها عن طريق إضافة خيار --keep-res=vm-100
للساتل اللينستور على جميع العقد:
echo -e "[Service]\nExecStart=\nExecStart=/usr/share/linstor-server/bin/Satellite --logs=/var/log/linstor-satellite --config-directory=/etc/linstor --keep-res=vm-100" | SYSTEMD_EDITOR=tee systemctl edit linstor-satellite.service
يجب أن يمنع هذا الإجراء حذف مورد vm-100-disk-0
كل مرة يبدأ فيها.
الآن نوقف حاوية وحدة التحكم linstor وننقل جميع البيانات من القرص المحلي إلى قرص drbd.
pct shutdown 100 dd if=/var/lib/vz/images/100/vm-100-disk-0.raw of=/dev/drbd/by-res/vm-100-disk-0/0 bs=8M status=progress e2fsck -f /dev/drbd/by-res/vm-100-disk-0/0 resize2fs /dev/drbd/by-res/vm-100-disk-0/0
تحديث تهيئة الحاوية:
sed -i '/^rootfs:/d' /etc/pve/lxc/100.conf echo 'rootfs: drbdpool:vm-100-disk-0,size=4G' >> /etc/pve/lxc/100.conf
قم بتشغيل الحاوية ، وإذا كان كل شيء على ما يرام ، فقم بحذف القرص القديم:
pct start 100 rm -f /var/lib/vz/images/100/vm-100-disk-0.raw
الآن نحن بحاجة فقط إلى إضافة حاويتنا إلى مدير البروكسموكس hak manager :
ha-manager add ct:100 --max_relocate=3 --max_restart=3
الربح
الأداء والضبط
في الوقت الحالي ، لتغيير الإعدادات العامة لوحدة التحكم ، ستحتاج إلى تعطيل المصادقة على وحدة التحكم:
لحل مواقف الدماغ المقسم تلقائيًا ، أضف الخيارات التالية لوحدة التحكم:
linstor controller drbd-options \ --after-sb-0pri=discard-zero-changes \ --after-sb-1pri=discard-secondary \ --after-sb-2pri=disconnect
بالنسبة لشبكة 10G الخاصة بي ، وجدت أن الإعدادات التالية هي الأمثل للتزامن السريع:
linstor controller drbd-options \ --max-buffers=36864 \ --rcvbuf-size=2097152 \ --sndbuf-size=1048576 linstor controller drbd-options \ --c-fill-target=10240 \ --c-max-rate=737280 \ --c-min-rate=20480 \ --c-plan-ahead=10