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









