التوفر العالي K3S باستخدام SafeKit: تثبيت وحدة k3s.safe للتحويل التلقائي عند الفشل
دليل التثبيت السريع Kubernetes عالي التوفر
يشرح هذا الدليل كيفية إعداد مجموعة mirror Kubernetes باستخدام SafeKit، مما يضمن تجاوز الفشل التلقائي والنسخ المتزامن دون الحاجة إلى مساحة تخزين مشتركة.
للمساعدة، يمكنك استخدام SafeKit AI 🤖.
1. نظرة عامة
- البنية : تستخدم نظامًا ثنائي العقدة (أساسي/ثانوي).
- حماية البيانات: تطبيق النسخ المتماثل المتزامن في الوقت الفعلي لضمان عدم فقدان البيانات (RPO = 0).
2. التثبيت
- البرامج: قم بتثبيت محرك SafeKit على كلا الخادمين.
- الوحدة: قم بتنزيل وحدة التطبيق
k3s.safeالمعدة مسبقًا.
3. التهيئة
- وحدة التحكم بالويب: قم بتكوين المجلدات المحددة التي تحتوي على ملفات Kubernetes.
- المراقبة: ابدأ بمراقبة تطبيق Kubernetes وحمايته.
قيود التوافر العالي SafeKit
| الحد / المتطلب | السبب والتأثير | البديل الموصى به |
|---|---|---|
| حجم النسخ المتماثل: بضعة تيرابايت | وقت إعادة المزامنة بعد الفشل (الخطوة 3): • شبكة بسرعة 1 جيجابت/ثانية ≈ 3 ساعات/تيرابايت • شبكة بسرعة 10 جيجابت/ثانية ≈ ساعة واحدة/تيرابايت (حسب أداء الكتابة على القرص) | • استخدام وحدة تخزين خارجية مشتركة (أكثر تكلفة وأكثر تعقيدًا). |
| عدد الملفات: أقل من 1,000,000 ملف | • أداء وقت إعادة المزامنة بعد حدوث عطل (الخطوة 3). • الوقت اللازم لمقارنة كل ملف بين العقدتين. | • ضع الملفات العديدة المراد نسخها في قرص صلب افتراضي/جهاز افتراضي. • في هذه الحالة، سيتم تكرار الملفات التي تمثل القرص الصلب الافتراضي/الجهاز الافتراضي وإعادة مزامنتها فقط. |
| سعة تجاوز الفشل: ≤ 32 جهازًا افتراضيًا | • تعمل كل آلة افتراضية في وحدة mirror مستقلة. • بحد أقصى 32 وحدة mirror تعمل على نفس المجموعة. | • استخدام وحدة تخزين مشتركة خارجية وحل آخر لتجميع الأجهزة الافتراضية (أكثر تكلفة وأكثر تعقيدًا). |
| البنية الشبكية: شبكة LAN/VLAN بين المواقع البعيدة | • تجاوز الفشل التلقائي لعنوان IP الظاهري مع عقدتين في نفس الشبكة الفرعية. • عرض نطاق ترددي جيد لإعادة المزامنة (الخطوة 3). • زمن انتقال منخفض للنسخ المتماثل المتزامن: عادةً ما يكون أقل من 5 مللي ثانية من زمن ذهاب وعودة (RTT)؛ يجب التحقق من صحة القيم الأعلى مقابل معدل الكتابة للتطبيق. | • إذا كانت العقدتان في شبكات فرعية مختلفة (وهو أمر شائع في السحابة)، فاستخدم خيارات إعادة التوجيه الأخرى: موازن تحميل، أو واجهات سطر الأوامر لمزود السحابة، أو بروتوكول BGP، أو إعادة توجيه نظام أسماء النطاقات (DNS). • استخدم حلول النسخ الاحتياطي مع النسخ المتماثل غير المتزامن للشبكات ذات زمن الانتقال العالي. |
نظرة عامة على حل SafeKit/Kubernetes
الحل موضح هنا: 💡 توفر عالي Kubernetes K3s: نسخ متماثل متزامن وتجاوز الفشل لعقدتين
تثبيت وتهيئة حل SafeKit/Kubernetes على Linux (k3s.safe)
1. تنزيل الحزم
- قم بتنزيل الإصدار المجاني من SafeKit 8.2 على Linux (safekitlinux_xx.bin)
- تنزيل وحدة k3s.safe Linux
- تنزيل البرنامج النصي k3sconfig.sh
- الوثائق (pptx)
ملاحظة: يقوم البرنامج النصي k3sconfig.sh بتثبيت K3S و MariaDB وNFS و SafeKit على عقدتين من Linux Ubuntu 24.04.
2. أولاً على كلتا العقدتين
على عقدتين من Linux أوبونتو 24.04، بصلاحيات الجذر:
- تأكد من أن العقدة لديها إمكانية الوصول إلى الإنترنت (يمكن أن يكون ذلك من خلال وكيل)
- انسخ ملفات k3sconfig.sh و k3s.safe وحزمة safekit_xx.bin إلى دليل ثم انتقل إليه باستخدام الأمر cd
- أعد تسمية ملف .bin إلى “safekit.bin”
- تأكد من أن k3sconfig.sh و safekit.bin قابلان للتنفيذ.
- حرر البرنامج النصي k3sconfig.sh وخصص متغيرات البيئة وفقًا لبيئتك (بما في ذلك عنوان IP ظاهري)
- نفّذ الأمر على كلا العقدتين:
./k3sconfig.sh prereq
سيقوم البرنامج النصي بما يلي:
- تثبيت حزم دبيان المطلوبة: alien, nfs-kernel-server, nfs-common, mariadb-server
- تأمين تثبيت MariaDB
- إنشاء أدلة لتكرار الملفات
- إعداد خادم NFS لمشاركة الدلائل المكررة
- تثبيت SafeKit
3. على العقدة الأولى
نفّذ الأمر على العقدة الأولى: ./k3sconfig.sh first
سيقوم البرنامج النصي بما يلي:
- إنشاء قاعدة بيانات تكوين K3S ومستخدم k3s
- إنشاء ملف وحدة تخزين التخزين المكرر (ملف متفرق) وتنسيقه كنظام ملفات xfs
- إنشاء تكوين مجموعة safekit وتطبيقه
- تثبيت وتكوين وحدة k3s.safe على المجموعة
- ابدأ تشغيل وحدة k3s كـ “prim” على العقدة الأولى
- تنزيل k3s وتثبيته وتشغيله
- تنزيل وتثبيت مخطط Helm الخاص بـ nfs-subdir-external-provisioner
- عرض رمز K3S (لاستخدامه أثناء مرحلة تثبيت العقدة الثانية)
4. على العقدة الثانية
نفّذ الأمر على العقدة الثانية: ./k3sconfig.sh second <token>
هي السلسلة النصية التي تظهر في نهاية تنفيذ " k3sconfig.sh first" على العقدة الأولى
سيقوم البرنامج النصي بما يلي:
- تأكد من بدء تشغيل وحدة k3s كـ prim على العقدة الأولى
- تثبيت k3s على العقدة الثانية
- ابدأ وحدة k3s
5. تحقق من أن وحدة k3s SafeKit قيد التشغيل على كلتا العقدتين
تحقق باستخدام هذا الأمر على كلا العقدتين: /opt/safekit/safekit –H "*" state
يجب أن يكون الرد مشابهاً للصورة.
/opt/safekit/safekit –H "*" state
---------------- الخادم = http://10.0.0.20:9010 ----------------
إجراء admin = تنفيذ
--------------------- حالة k3s ---------------------
محلي (127.0.0.1): PRIM (الخدمة: متوفرة) (اللون: أخضر)
نجاح
---------------- الخادم = http://10.0.0.21:9010 ----------------
إجراء admin = تنفيذ
--------------------- حالة k3s ---------------------
محلي (127.0.0.1): SECOND (الخدمة: متوفرة) (اللون: أخضر)
نجاح
6. ابدأ تشغيل وحدة تحكم الويب SafeKit لإدارة المجموعة
- قم بتوصيل متصفح بعنوان URL لوحدة تحكم الويب SafeKit
http://server0-IP:9010. - يجب أن ترى صفحة مشابهة للصورة.
- تحقق باستخدام أسطر أوامر Linux من أن K3S قد بدأ تشغيله على كلا العقدتين (بدأ في
start_primوstart_second) وأن MariaDB قد بدأ تشغيله على العقدة الأساسية (بدأ فيstart_prim).

7. الاختبار
- أوقف عقدة PRIM بالتمرير لأسفل في قائمتها السياقية والنقر على
Stop. - تحقق من وجود تجاوز الفشل على العقدة SECOND التي يجب أن تصبح ALONE (باللون الأخضر).
- وباستخدام أسطر الأوامر في Linux، تحقق من تجاوز الفشل للخدمات (توقفت على العقدة 1 في البرنامج النصي
stop_primوبدأت على العقدة 2 في البرنامج النصيstart_prim). يجب أن يعمل MariaDB و K3S على node2.
![]()
إذا لم يتم الوصول إلى ALONE " (باللون الأخضر) على node2، فحلل السبب باستخدام سجل وحدة العقدة 2.
- انقر على
node2لعرض سجل الوحدة. - مثال على سجل وحدة SQL Server حيث يكون اسم الخدمة في
start_primغير صالح. تتم مراقبة عملية sqlserver.exe ولكن نظرًا لعدم بدء تشغيلها، تتوقف الوحدة في النهاية.
![]()
إذا كان كل شيء على ما يرام، فابدأ التشغيل على node1، والتي ستعيد مزامنة الدلائل المكررة من node2.
إذا ساءت الأمور، أوقف node2 وافرض بدء تشغيل node1 أساسية، والتي ستتم إعادة تشغيلها ببياناتها السليمة محليًا في وقت الإيقاف.
![]()
🛠️ مزيد من المعلومات حول الاختبارات في دليل المستخدم.

8. جرّب المجموعة باستخدام تطبيق Kubernetes مثل WordPress
لديك مثال على تثبيت ووردبريس في الصورة: بوابة ويب مع قاعدة بيانات خلفية تم تنفيذها بواسطة البودات.
يمكنك نشر تطبيقك الخاص بنفس الطريقة.
يتمتع ووردبريس بتوافر عالٍ تلقائيًا:
- مع بياناتها (PHP + قاعدة البيانات) في وحدات تخزين دائمة يتم تكرارها في الوقت الفعلي بواسطة SafeKit
- مع عنوان IP ظاهري للوصول إلى موقع ووردبريس للمستخدمين
- مع ميزة تجاوز الفشل التلقائي الاسترجاع التلقائي (failback)
ملاحظات:
يُعرّف مخطط WordPress خدمة موازنة التحميل التي تستمع على المنفذين <service.port> و <service.httpsport>.
يمكن الوصول إلى ووردبريس عبر عنوان URL التالي:
http://<virtual-ip>:<service.port>.تتم إدارة عنوان IP الظاهري بواسطة SafeKit ويتم تبديله تلقائيًا في حالة حدوث تجاوز للفشل.
بشكل افتراضي، تُنفّذ K3S موازنات التحميل باستخدام Klipper.
يستمع Klipper على
: <service.port> ويوجه حزم TCP/IP إلى عنوان IP ومنفذ حاوية WordPress التي اختارها. $ export KUBECONFIG= /etc/rancher/k3s/k3s.yaml $ helm repo add bitnami https://charts.bitnami.com/bitnami $ helm install my-release bitnami/wordpress –set global.storageClass=nfs-client –set service.ports.http=8099,service.ports.https=4439
يجب أن يقوم أمر helm السابق بتنزيل صورة WordPress من registry-1.docker.io. قد تواجه مشكلات في المصادقة على registry-1.docker.io. في هذه الحالة، يجب عليك:
أنشئ
/etc/rancher/k3s/registries.yamlعلى كلا العقدتين بالمحتوى التالي:configs: "registry-1.docker.io": auth: username: your_user_name password: your_password tls: insecure_skip_verify: trueأوقف تشغيل k3s ثم أعد تشغيله لأخذ ذلك في الاعتبار، باستخدام
systemctl stop k3sوsystemctl start k3s.نفّذ الأمر
helm registry login -u your_user_name docker.io، ثم أدخل كلمة المرور الخاصة بك
9. الدعم
- للحصول على الدعم، التقط
SnapshotsSafeKit (ملفان مضغوطان)، واحدة لكل عقدة.
![]()
🛠️ استكشاف الأخطاء وإصلاحها في دليل المستخدم.

10. إذا لزم الأمر، قم بتهيئة مدقق split-brain
راجع قسم “ما هي السيناريوهات المختلفة في حالة عزل الشبكة في مجموعة؟” أدناه لمعرفة ما إذا كنت بحاجة إلى تكوين أداة مدقق split-brain.
في إعدادات الوحدة النمطية، انقر على
Advanced Configuration" (انظر الصورة) لتعديلuserconfig.xml.أعلن عن مدقق split-brain بإضافتها في قسم
<check>منuserconfig.xml:<service> ... <check> ... <splitbrain ident="witness" exec="ping" arg="witness IP"/> </check>Save and applyلإعادة نشر ملف userconfig.xml المعدل على كلتا العقدتين (يجب إيقاف الوحدة على كلتا العقدتين للحفظ والتطبيق).
المعلمات :
- يحدد
ident="witness"الشاهد باسم المورد:splitbrain.witness. يمكنك تغيير هذه القيمة لتحديد الشاهد. - يشير
exec="ping"إلى رمز ping المراد تنفيذه. لا تقم بتغيير هذه القيمة. arg="witness IP"هي وسيطة لأمر ping. قم بتغيير هذه القيمة إلى عنوان IP الخاص بالشاهد (عنصر قوي، عادةً ما يكون جهاز توجيه).

ما هي السيناريوهات المختلفة في حالة عزل الشبكة في مجموعة؟
شبكة واحدة
عند وجود عزل للشبكة، يكون السلوك الافتراضي هو:
- عندما تُفقد نبضات heartbeat لكل عقدة، تنتقل كل عقدة إلى ALONE وتشغل التطبيق بعنوان IP الظاهري الخاص بها (تنفيذ مزدوج للتطبيق مع تعديل بياناته المحلية)،
- عندما يتم إصلاح العزل، تُجبر عقدة واحدة ALONE على التوقف وإعادة مزامنة بياناتها من العقدة الأخرى،
- في النهاية، تكون المجموعة من النوع الأساسي-الثانوي (أو الثانوي-الأساسي وفقًا لاكتشاف عنوان IP الظاهري المكرر الذي أجرته Windows).
شبكتان مع شبكة نسخ متماثل مخصصة
عند وجود عزل للشبكة، يكون السلوك مع شبكة النسخ المتماثل المخصصة هو:
- يتم تنفيذ شبكة نسخ متماثل مخصصة على شبكة خاصة،
- تُفقد نبضات heartbeat على شبكة الإنتاج (شبكة معزولة)،
- نبضات heartbeat على شبكة النسخ المتماثل تعمل (ليست شبكة معزولة)،
- تظل المجموعة في حالة PRIM/SECOND.
شبكة واحدة وأداة مدقق split-brain
عند حدوث عزل للشبكة، يكون السلوك مع أداة مدقق split-brain كما يلي:
- تم تكوين مدقق split-brain باستخدام عنوان IP الخاص بالشاهد (عادةً ما يكون جهاز توجيه)،
- يعمل مدقق split-brain عندما ينتقل الخادم من PRIM إلى ALONE أو من SECOND إلى ALONE
- في حالة عزل الشبكة، وقبل الانتقال إلى ALONE، تختبر كلتا العقدتين عنوان IP
- تنتقل العقدة التي يمكنها الوصول إلى عنوان IP إلى ALONE، وتنتقل العقدة الأخرى إلى WAIT
- عندما يتم إصلاح العزل، تعيد عقدة WAIT مزامنة بياناتها وتصبح SECOND.
ملاحظة: إذا كان الشاهد معطلاً أو غير متصل، فإن كلا العقدتين تنتقلان إلى WAIT ولا يعود التطبيق قيد التشغيل. لهذا السبب يجب عليك اختيار شاهد قوي مثل جهاز التوجيه.
عرض حل mirror من SafeKit
فيديو SafeKit: تجميع على مستوى التطبيق (8:47)
في هذا الفيديو، اكتشف كيف تُنفّذ SafeKit مجموعة HA mirror دون تعقيد شبكة SAN. بينما يستخدم هذا العرض التوضيحي Microsoft SQL Server، فإن الحل يعمل بشكل متطابق مع قواعد البيانات والتطبيقات الأخرى.
الفصول
- 🎬 عقدتان مع SQL Server (0:32)
- 🎬 إعداد المجموعة ووحدة mirror.safe (3:58)
- 🎬 بدء واختبار النسخ المتماثل لـ SQL، والترحيل، وتجاوز الفشل عند التعطل (4:17)
التنفيذ خطوة بخطوة
- 🛠️ اقرأ الدليل الخاص بإعداد مجموعة mirror على Windows
- 🛠️ اقرأ الدليل الخاص بإعداد مجموعة mirror على Linux
🔍 استكشف SafeKit
ابحث عن معلومات حول ميزات SafeKit وهياكلها ومقاطع الفيديو والوثائق والإصدار التجريبي المجاني.
| المورد | الوصف | رابط |
|---|---|---|
| الميزات الرئيسية | تعرّف على سبب كون SafeKit حلاً بسيطًا وفعالًا من حيث التكلفة لضمان التوافر العالي. | اكتشف الميزات الرئيسية |
| حالات الاستخدام | تعرّف على كيفية الحفاظ على توفر التطبيقات والبنية التحتية الهامة باستخدام SafeKit. | استكشف حالات الاستخدام |
| نموذج النشر | يوفر SafeKit توافرًا عاليًا دون الحاجة إلى شبكة منطقة التخزين (SAN) أو وحدة تخزين مشتركة. | استكشف نموذج النشر |
| استراتيجيات التوافر العالي | قارن بين التوافر العالي للأجهزة الافتراضية والتوافر العالي للتطبيقات. | قارن بين الاستراتيجيتين |
| المواصفات الفنية | تحقق من المتطلبات والقيود التقنية لمجموعات SafeKit. | اقرأ المواصفات الفنية |
| مقاطع الفيديو | شاهد عروضًا توضيحية لتكوين SafeKit وتجاوز الفشل التلقائي. | شاهد مقاطع الفيديو التقنية |
| البنية | تعرّف على كيفية قيام مجموعة mirror بنسخ الملفات احتياطيًا في الوقت الفعلي والتعامل مع تجاوز الفشل. | استكشف البنية Mirror |
| البنية | تعرّف على كيفية موازنة مجموعة farm لحركة مرور الشبكة والتعامل مع تجاوز الفشل. | استكشف البنية Farm المعمارية |
| مقارنة المنتجات | قارن بين SafeKit وعناقيد التوافر العالي التقليدية. | قارن الحلول |
| الموارد التقنية | يمكنك العثور على الوثائق الفنية، وتنزيل برنامج SafeKit، والوصول إلى النسخة التجريبية المجانية. | الوصول إلى الوثائق والتجربة المجانية |
| وحدات التطبيق | استخدم وحدات SafeKit المعدة مسبقًا لإعداد التوافر العالي لتطبيقاتك. | استكشف وحدات التطبيق |