تثبيت مجموعة Nomad مع وحدة التحكم على خوادم السحابة

0 الأسهم
0
0
0
0

مقدمة

في هذا البرنامج التعليمي، سنُنشئ مجموعة HashiCorp Nomad باستخدام لوحة التحكم لاكتشاف الخدمات والعُقد. باستخدام ثلاث عُقد خادم وعدد مُحدد من عُقد العملاء، يُمكن أن يُشكل هذا البرنامج التعليمي أساسًا جيدًا لمشاريع مُتنامية. سنُنشئ أيضًا لقطة على Hetzner Cloud لعملائنا، مما يُتيح لنا إضافة المزيد من العملاء دون الحاجة إلى تهيئتهم يدويًا. ستعمل هذه المجموعة على شبكة خاصة بين الخوادم، وستدعم جميع ميزات Nomad ولوحة التحكم الافتراضية، مثل اكتشاف الخدمة ووحدات التخزين.

يتبع هذا البرنامج التعليمي جزئيًا الخطوات الموصى بها في أدلة التثبيت الرسمية لـ Consul وNomad.

المتطلبات الأساسية
  • حساب Hetzner Cloud
  • مقدمة إلى أوامر Linux والطرفية
  • القدرة على الاتصال بالخادم عبر ssh

تم اختبار هذا البرنامج التعليمي على خوادم Ubuntu 24.04 من Hetzner Cloud مع إصدارات Nomad 1.9.3 وConsul 1.20.1.

المصطلحات والرموز

الأوامر:

local$ <دستور> # این دستور باید در ماشین محلی شما اجرا شود

server$ <دستور> # این دستور باید در سرور به‌عنوان کاربر root اجرا شود

 

الخطوة 1 - إنشاء صورة أساسية

سيتم استخدام الموارد التالية في هذه الخطوة:

  • 1 خادم Hetzner السحابي طراز CX22

سنبدأ بإعداد خادم Consul/Nomad على خادم CX22 جديد في Hetzner Cloud. ستُستخدم اللقطة الناتجة كصورة أساسية لجميع خوادم وعملاء المجموعة في الخطوات التالية.

الخطوة 1.1 – تثبيت Consul

لتثبيت Consul، قم بتشغيل الأوامر التالية:

server$ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
server$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list
server$ apt update && apt install consul

لإضافة وظيفة الإكمال التلقائي في Consul (اختياري):

server$ consul -autocomplete-install

الخطوة 1.2 – تثبيت الملف الثنائي Nomad

لتثبيت Nomad، قم بتشغيل الأوامر التالية:

server$ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
server$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list
server$ apt update && apt install nomad

لإضافة وظيفة الإكمال التلقائي في Nomad (اختياري):

server$ nomad -autocomplete-install

الخطوة 1.3 – إعداد خدمات systemd

يجب أن يبدأ Consul وNomad تلقائيًا عند بدء التشغيل. لتفعيل هذه الميزة، أنشئ خدمة systemd لكلٍّ منهما.

server$ chown consul:consul dc1-server-consul*
server$ chown consul:consul dc1-client-consul*
server$ chown -R consul:consul /opt/consul
server$ chown -R nomad:nomad /opt/nomad
server$ mkdir -p /opt/alloc_mounts && chown -R nomad:nomad /opt/alloc_mounts

ثم قم بإنشاء ملف التكوين /etc/systemd/system/consul.service بالمحتوى التالي:

[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl
[Service]
EnvironmentFile=-/etc/consul.d/consul.env
User=consul
Group=consul
ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target

ثم قم بإنشاء ملف التكوين /etc/systemd/system/nomad.service بالمحتوى التالي:

[Unit]
Description=Nomad
Documentation=https://www.nomadproject.io/docs/
Wants=network-online.target
After=network-online.target
[Service]
User=nomad
Group=nomad
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/bin/nomad agent -config /etc/nomad.d
KillMode=process
KillSignal=SIGINT
LimitNOFILE=65536
LimitNPROC=infinity
Restart=on-failure
RestartSec=2
OOMScoreAdjust=-1000
TasksMax=infinity
[Install]
WantedBy=multi-user.target

لا تقم بتمكين هذه الخدمات في هذه المرحلة، حيث أن التثبيت لم يكتمل بعد.

الخطوة 1.5 – إنشاء لقطة أساسية

أخيرًا، أوقف الخادم في وحدة تحكم Hetzner Cloud وأنشئ لقطة. ستُستخدم هذه اللقطة كأساس لإعداد خوادم وعملاء المجموعة.

الخطوة 2 - إعداد خوادم المجموعة

في هذه الخطوة، ستُنشئ ثلاثة خوادم عنقودية من الصورة الأساسية. ستكون هذه الخوادم قواعد عنقودك، وستختار قائدًا له تلقائيًا.

سوف نستخدم الموارد التالية:

  • 1 شبكة هيتزنر السحابية
  • 3 خوادم Hetzner السحابية طراز CX22

في وحدة تحكم Hetzner السحابية، أنشئ ثلاثة خوادم CX22 من اللقطة التي أنشأتها في الخطوة 1، ثم اربطها بشبكة سحابية مشتركة. سيستخدم هذا البرنامج التعليمي الشبكة 10.0.0.0/8، ولكن الشبكات الأصغر ستعمل أيضًا.

الخطوة 2.1 - إنشاء مفتاح تشفير متماثل

أولاً، أنشئ مفتاح تشفير متماثلًا ليتم مشاركته بين جميع الخوادم. احفظ هذا المفتاح في مكان آمن، لأننا سنحتاجه في الخطوات التالية.

server$ consul keygen

الخطوة 2.2 – توزيع الشهادات

الآن يمكننا نسخ الشهادات الصحيحة من الخطوة ١ إلى دليل إعدادات Consul. شغّل الأمر التالي على جميع الخوادم:

server$ cp consul-agent-ca.pem /etc/consul.d/

يجب توزيع شهادات الخوادم الثلاث المُنشأة في الخطوة 1 بحيث يحصل كل خادم على شهادة فريدة خاصة به مع المفتاح المقابل. يوفر هذا البرنامج التعليمي الأوامر التالية للخوادم المختلفة:

[10.0.0.2] server$ cp -a dc1-server-consul-0* /etc/consul.d/
[10.0.0.3] server$ cp -a dc1-server-consul-1* /etc/consul.d/
[10.0.0.4] server$ cp -a dc1-server-consul-2* /etc/consul.d/

الخطوة 2.3 – تحرير تكوين القنصل

على جميع الخوادم، قم بتحرير ملف التكوين /etc/consul.d/consul.hcl وأضف المحتويات التالية:

datacenter = "dc1"
data_dir = "/opt/consul"
encrypt = "your-symmetric-encryption-key"
tls {
defaults {
ca_file = "/etc/consul.d/consul-agent-ca.pem"
cert_file = "/etc/consul.d/dc1-server-consul-0.pem"
key_file = "/etc/consul.d/dc1-server-consul-0-key.pem"
verify_incoming = true
verify_outgoing = true
},
internal_rpc {
verify_server_hostname = true
}
}
retry_join = ["10.0.0.2"]
bind_addr = "{{ GetPrivateInterfaces | include \"network\" \"10.0.0.0/8\" | attr \"address\" }}"
acl = {
enabled = true
default_policy = "allow"
enable_token_persistence = true
}
performance {
raft_multiplier = 1
}

الخطوة 2.4 – إعداد القنصل والبدوي

الآن بعد أن تم إجراء التكوينات بشكل صحيح، يمكنك بدء خدمات Consul وNomad.

server$ systemctl enable consul
server$ systemctl start consul
server$ systemctl enable nomad
server$ systemctl start nomad

للتحقق من حالة الخدمات، يمكنك استخدام الأوامر التالية:

server$ systemctl status consul
server$ systemctl status nomad
 

إذا كان كل شيء يعمل بشكل صحيح، فيجب تشغيل خدمات Consul وNomad وإعداد المجموعة بشكل صحيح.

الخطوة 2.5 – ربط العقد الأخرى بالمجموعة

بعد أن أصبحت خوادم المجموعة الرئيسية جاهزة للعمل، حان وقت ربط العقد الأخرى. لربط عقد العميل بالمجموعة، ما عليك سوى تطبيق نفس الإعدادات على إعدادات Consul وNomad للعقد الجديدة.

في كل عقدة عميل، قم بإنشاء نفس ملفات التكوين مثل الخادم الرئيسي ثم ابدأ الخدمات:

client$ cp consul-agent-ca.pem /etc/consul.d
/client$ cp dc1-client-consul-* /etc/consul.d
/client$ systemctl enable consul client$ systemctl start consul
client$ systemctl enable nomad client$ systemctl start nomad

الخطوة 3 - التحقق من المجموعة والتكوين

بعد بدء تشغيل الخوادم والعملاء، يمكنك التحقق من حالة المجموعة باستخدام الأوامر التالية:

client$ consul members

سيعرض هذا الأمر قائمةً بالعُقد في المجموعة. يمكنك أيضًا التحقق من حالة وإعدادات Nomad باستخدام الأمر التالي:

client$ nomad status

الخطوة 4 – إدارة المجموعة

الآن بعد أن تم إعداد مجموعة Consul وNomad الخاصة بك بشكل صحيح، يمكنك إدارتها والاستفادة من ميزاتها المختلفة.

لعرض حالة المجموعة وتشغيل طلبات الإدارة، استخدم الأوامر التالية:

  • معلومات القنصل # للحصول على معلومات عامة حول مجموعة القنصل
  • حالة العمل البدوي # لعرض حالة وظيفة Nomad
  • حالة تخصيص البدو # لعرض حالة التخصيصات في مجموعة Nomad

استخدام Nomad Cluster

يتيح لك Nomad تنفيذ مهام مختلفة مثل إدارة الوظائف ونشر الحاويات والتنسيق مع Consul لاكتشاف الخدمات.

استخدام Consul لاكتشاف الخدمات

يوفر Consul اكتشافًا تلقائيًا للخدمات. باستخدام واجهة ويب Consul (المتاحة افتراضيًا على المنفذ 8500)، يمكنك عرض الخدمات المتاحة وتكوينها عند الحاجة.

نتيجة

في هذا البرنامج التعليمي، أنشأتَ مجموعة من خوادم HashiCorp Nomad وConsul في شبكة سحابية خاصة باستخدام Hetzner Cloud. يمكن استخدام هذه المجموعة لإدارة أحمال عمل واسعة النطاق. كما غطّى هذا البرنامج التعليمي كيفية تشغيل عُقد جديدة عبر Snapshot وتكوين الخوادم بالتفصيل.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً