سحابة خاصة لإنترنت الأشياء



تحياتي يا هبر!

نحن ، فريق المهندسين المعماريين في مجال تكنولوجيا المعلومات من شركة IBM ، والذي يعمل على إنشاء وتسويق الحلول الصناعية لمختلف الصناعات. في وقت فراغنا ، نبحث عن تقنيات جديدة ونجرب ونجرب أفضل الممارسات.

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

سألنا أنفسنا: "ماذا لو جمعنا شيئًا مشابهًا في التقنيات المفتوحة والعامة؟"

لقد تحدثنا بالفعل وأظهرنا الكثير حول استخدام حاويات Docker وأدوات إدارتها استنادًا إلى Kubernetes . ومع ذلك ، لم يكن من الممكن حتى الآن رؤية كيف يمكن استخدام جميع هذه التقنيات المتقدمة على نطاق صناعي لمهام الأعمال ، وتحديداً في إطار إنترنت الأشياء. لذا فلنملأ هذه الفجوة. سيتم اعتبار مفهوم الخدمات الصغيرة ، بالإضافة إلى الأساليب العصرية للتنمية (DevOps) ، ودمج ونشر التطبيقات (CI / CD) مهمة مختلفة قليلاً وسيتم وضعها جانباً في وقت لاحق.

في هذه المقالة ، نريد أن نتحدث عن إعداد وتثبيت أحد المكونات الرئيسية - IBM Cloud Private (في الواقع ، التجميع الصناعي لـ Docker / Kubernetes وأكثر من ذلك بقليل) ، والذي يمكن أن يكون بمثابة بنية تحتية مشروطة عند إنشاء منصة إنترنت الأشياء المحلية. اسأل لماذا هو؟

لأننا وعدنا بتقنيات مفتوحة وعامة (نسخة مجانية للمجتمع ودعم من المجتمع): hub.docker.com/r/ibmcom/icp-inception

نظرة عامة على IBM Cloud Private


IBM Cloud Private (ICP) هو نظام أساسي سحابي خاص للنشر والعمليات الداخلية. إن ICP عبارة عن بيئة متكاملة تتيح لك تصميم وتطوير ونشر وإدارة التطبيقات المحلية التي تم إنشاؤها مع مراعاة بنية الحاوية. يتضمن تسليم ICP أوركستراتر Kubernetes (K8s) ، ومتجر صور محلي ، بالإضافة إلى وحدة تحكم إدارية وأدوات دعم داعمة.

ما هي السحابة الخاصة أو الخاصة؟


السحابة الخاصة هي نموذج حوسبة سحابية يتم تشغيلها حصريًا لمؤسسة واحدة ، وعادة ما تكون على أراضيها ومواردها. يمكن إدارة هذه السحابة وصيانتها من قبل متخصصيها وموظفي الطرف الثالث. يمكن استضافة منصة مماثلة خلف جدار حماية الشركة وخارجه. توفر السحابة الخاصة مزايا السحابة العامة ، بما في ذلك النشر السريع وقابلية التوسع ، بالإضافة إلى سهولة الاستخدام والإدارة والمرونة. في الوقت نفسه ، يوفر الإصدار المحلي تحكمًا أكبر في النظام ، وزيادة الإنتاجية ، وتكاليف يمكن التنبؤ بها بدقة ، وزيادة متطلبات الأمان وقدرات الإدارة المرنة وفقًا لاحتياجات المؤسسة. تسمح لك السحابة الخاصة بتكوينها مباشرةً لمهام عمل محددة ومتطلبات أمان العملاء.

قبل الشروع في تثبيت ICP ، سنحدد المصطلحات:

العقدة الرئيسية
  • تراقب وتتحكم في مجموعة K8s.
  • kubectl: أداة سطر أوامر لإدارة نظام المجموعة.
  • REST API: واجهة للتفاعل مع عقد العمل.
  • etcd: هو مخزن مفاتيح ثابت وميسور التكلفة ، يستخدم كمخزن نسخ احتياطي K8s لجميع بيانات المجموعة.
  • kube-Scheduler: يراقب هذا المكون الحاويات التي تم إنشاؤها حديثًا (القرون) التي ليس لها عقدة معينة ، ويحدد عقدة لتشغيلها.
  • عادة ما تكون هناك حاجة إلى 3 عقد رئيسية أو أكثر من أجل التشغيل المستقر وضمان تحمل الخطأ. في حالتنا ، لتوفير الموارد ، سنقوم بتثبيت جميع مكونات ICP الضرورية على خادم مخصص واحد (عقدة مفردة).

عقدة العمل
  • آلة العمل في K8s المعروفة سابقًا باسم Minion. يمكن أن تكون هذه العقدة أي من المضيفين الذين يتلقون المهام من العقدة الرئيسية ، ويتحكمون أيضًا في عملية إطلاق الحاويات عليها. اعتمادًا على إعدادات الكتلة ، يمكن أن تكون عقدة العمل إما جهازًا افتراضيًا أو خادمًا فعليًا.
  • يمكن تشغيل المكونات التالية على كل عقدة:
  • kubelet: هي الخدمة الرئيسية لعقدة العمل. يراقب الحاويات التي تم تعيينها لعقدة (إما apirusver لاتصال آمن ، أو من خلال ملف التكوين المحلي).
  • kube-proxy: يعرض الخدمات المحددة في K8s API في كل عقدة ، ويدعم قواعد الشبكة على المضيف وإعادة توجيه الاتصالات.
  • عامل ميناء: إطلاق الحاويات وبيئة الإدارة.
  • المشرف: هذه عملية مراقبة خفيفة الوزن ونظام تحكم يمكنك استخدامها للحفاظ على تشغيل kubelet و docker.
  • fluentd: هذه خدمة تساعد على ضمان التسجيل على مستوى المجموعة.

حاويات
  • تطبيق يعمل في بيئة معزولة.
  • مجموعة العمليات القابلة للتنفيذ والصورة التي تم إطلاقها للبرنامج.

شرانق (قرون)
  • جراب هو مجموعة واحدة أو أكثر من حاويات Docker ، مع تخزين / شبكة مشتركة ومواصفات كيفية تشغيل الحاويات على عقدة عمل.
  • كل Pod لديه IP خاص به.
  • يشارك Pod مساحة اسم PID والشبكة واسم المضيف.

تحكم النسخ المتماثل
  • يوفر إمكانية الوصول والقابلية للتطوير.
  • مسؤول عن التحكم في عدد Pods المنشورة.
  • يستخدم قالب يصف ما يجب أن يحتوي عليه كل Pod.

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

الخدمات
  • مجموعة حاويات مكشوفة كنقطة نهاية.
  • معلومات حول حالة إعدادات الشبكة والشبكة K8s ، والتي تنطبق على جميع عقد العمل.
  • باستخدام التكوين الصحيح ، سيتم تسجيل القرون التي تم إنشاؤها بواسطة وحدة تحكم النسخ المتماثل تلقائيًا كخدمة مقابلة.

معلومات سرية (أسرار)
  • المعلومات السرية المراد قراءتها أو استخدامها بواسطة الحاويات.
  • يتم تحميل وحدات التخزين الخاصة بمحرك الأقراص تلقائيًا حتى تتمكن الحاويات من قراءة المحتويات.
  • كل إدخال له مساره الخاص.

العمارة


فيما يلي بنية ICP رفيعة المستوى تسرد المكونات الرئيسية حسب العقد الرئيسية والعمل والوكيل. تجدر الإشارة إلى أنه في هذه المقالة يتم التركيز بشكل رئيسي على مزيج من حاويات Docker وبيئة إدارة Kubernetes. هذه المكونات مفتوحة المصدر أساسية وأساسية لمنصة برنامج المقارنات الدولية. ومع ذلك ، للعمل بشكل كامل مع ICP ، ستحتاج أيضًا إلى معرفة Helm ، مدير إدارة حزم البرامج. يتم استخدام K8s لنشر واستضافة مثيلات التطبيق المضمنة في مخططات Helm ، والتي بدورها تشير إلى صور Docker. تحتوي مخططات Helm على معلومات حول تفاصيل التطبيق الخاص بك ، وتحتوي صور Docker على جميع حزم البرامج اللازمة لتشغيل التطبيق الخاص بك.



للحصول على مقدمة تفصيلية عن بنية ومكونات النظام الأساسي لبرنامج المقارنات الدولية ، يمكنك استخدام ارتباط التوثيق في مركز معرفة IBM .

تحضير


من أجل إكمال تثبيت ICP بسهولة في 20-30 دقيقة ، يلزم الحد الأدنى من موارد الأجهزة التالية والوصول إلى الإنترنت:
• مضيف واحد (فعلي أو افتراضي)
• CPU = 8 نوى (أو نوى افتراضية)
• ذاكرة الوصول العشوائي = 10 جيجابايت (في الواقع ، قد تكون هناك حاجة إلى 14 جيجابايت)
• قرص = 40 جيجا بايت (على SSD أسرع دائمًا)
ملاحظة: إذا كان لديك وقت فراغ أكثر قليلًا وموارد أقل للأجهزة ، فيمكنك تثبيت ICP في مكان ما خلال 40-60 دقيقة على i5 و 1 غيغابايت من ذاكرة الوصول العشوائي.

التثبيت


تنزيل Ubuntu


قم بتنزيل إصدار توزيع Ubuntu Server 16.04.05 . قم بإجراء تثبيت قياسي لنظام التشغيل على جهاز افتراضي أو فعلي بالخصائص المذكورة أعلاه.

الحصول على عنوان IP


بعد إكمال عملية تثبيت نظام التشغيل ، في سطر الأوامر ، اكتشف عنوان IP لجهازك الظاهري باستخدام الأمر التالي:

ifconfig 

تحتاج إلى كتابة / تذكر عنوان Ethernet IP (inet addr) ، بالإضافة إلى Bcast و Mask. سيتم عرض هذه المعلمات بعد تنفيذ الأمر المطابق:

الشكل 1. مثال على الأمر ifconfig

اتصال SSH


إذا استخدمت وظيفة "Easy Install" عند إعداد الجهاز الظاهري ، فبعد التثبيت الكامل لخادم Ubuntu ، ستحتاج إلى تثبيت خادم OpenSSH. يمكنك القيام بذلك باستخدام الأوامر التالية:

 apt install openssh-server sudo systemctl enable sshd 

بعد تنفيذ الأوامر المناسبة ، ستتمكن من الاتصال بالجهاز الظاهري باستخدام SSH. اعتمادًا على نظام التشغيل ، يمكنك استخدام طرق اتصال مختلفة. بالنسبة لنظام التشغيل Windows ، يمكنك استخدام أداة PuTTY الشائعة ؛ وبالنسبة لنظام التشغيل Mac ، يمكنك استخدام الأمر ssh في النهاية الطرفية.


الشكل 2. مثال اتصال عبر PuTTY لنظام التشغيل Windows

الخطوة التالية هي تعيين كلمة مرور للمستخدم المميز (الجذر):

 sudo -i passwd 


الشكل 3. تعيين كلمة مرور جديدة للمستخدم الجذر

تحديث واجهة الشبكة


بعد تكوين القدرة على الاتصال عبر SSH وتحديث كلمة مرور المستخدم الفائق ، نحتاج إلى تكوين واجهة الشبكة لتحديد معلمات الشبكة الثابتة. يتم ذلك باستخدام الأمر التالي:

 nano /etc/network/interfaces 

نقوم بتحديث إعدادات واجهة الشبكة (واجهة الشبكة الأساسية) بناءً على المعلومات التي تم الحصول عليها أثناء الأمر ifconfig ، يبدو مثالنا كما يلي:

 auto ens33 iface ens33 inet static address 192.168.175.7 netmask 255.255.255.0 network 192.168.175.0 broadcast 192.168.175.255 gateway 192.168.175.2 dns-nameservers 192.168.175.2 8.8.8.8 

ملاحظة: من المهم تحديد خادم DNS بشكل صحيح ، لأن الوصول إلى الإنترنت ضروري للتثبيت اللاحق لمكونات ICP.


الشكل 4. تكوين واجهة الشبكة

احفظ الملف المحدث باستخدام الخطوات التالية: Ctrl + X ، نعم ، أدخل.

لتبسيط تسجيل الدخول إلى جهاز افتراضي بامتيازات المستخدم الخارق (الجذر) ، تحتاج إلى إجراء تغييرات على تكوين خدمة SSH. للقيام بذلك ، قم بتشغيل الأمر التالي:

 nano /etc/ssh/sshd_config 

بعد ذلك ، ابحث عن سطر إذن الوصول وقم بتحريره وفقًا لذلك:

 PermitRootLogin yes 


الشكل 5. تحديث تكوين SSH

احفظ الملف كما في الخطوة السابقة: Ctrl + X ، نعم ، أدخل.

بعد إجراء جميع التغييرات ، لتطبيق المعلمات الجديدة ، من المنطقي إعادة تشغيل الجهاز الظاهري بالكامل أو إعادة تشغيل الخدمات المقابلة (الشبكات و ssh) ، على سبيل المثال ، باستخدام الأوامر التالية:

 shutdown -r 0 

أو

 service <service_name> restart 

بعد إعادة تشغيل الجهاز ، يجب عليك تسجيل الدخول مرة أخرى من خلال SSH.

تحديث المكون


قم بتحديث خادم Ubuntu بالأمر التالي (يجب تشغيل الأمر كجذر):

 apt update 

ملاحظة: في حالة حدوث خطأ أثناء التحديث: "المستودع 'cdrom: // Ubuntu-Server 16.04.5 LTS _Xenial Xerus_ - Release amd64 (20180731) xenial Release" ليس له ملف إصدار. ". يجب تشغيل الأمر التالي:

 sudo nano /etc/apt/sources.list 

وعلق خارج الخط:

 deb cdrom:[Ubuntu-Server 16.04.5 LTS … 


الشكل 6. تصحيح خطأ محتمل

بعد ذلك ، احفظ الملف ، كما تم من قبل: Ctrl + X ، نعم ، أدخل

بعد إصلاح خطأ محتمل ، شغّل أمر التحديث مرة أخرى ، ونتيجة لذلك سترى شيئًا مثل هذا:


الشكل 7. تحديث أوبونتو

قم بتثبيت IBM Cloud Private


قبل تثبيت ICP ، تحتاج إلى تحرير ملف المضيفين:

 nano /etc/hosts 

استبدل السلسلة 127.0.1.1 ubuntu بعنوان IP الخاص بك وأي اسم مضيف مناسب.

تأكد من فصل اسم المضيف والاسم المستعار في السطر بعلامة تبويب أو مسافة:

الشكل 8. تغيير ملف المضيفين

احفظ الملف: Ctrl + X ، نعم ، أدخل

سيسمح لك الأمران التاليان بتحديث النظام وتثبيت وحدات إضافية.

 apt update apt-get install apt-transport-https ca-certificates curl software-properties-common python-minimal jq 

تحقق من وجود أخطاء في الجهاز الطرفي:


الشكل 9. تثبيت مكونات إضافية

قم بزيادة الحد الأقصى للذاكرة الافتراضية باستخدام الأمر:

 sysctl -w vm.max_map_count=262144 

لن تبدأ K8s بتمكين التبديل. يمكنك تعطيله باستخدام الأمر:

 swapoff –a 

ملاحظة: سيعمل الأمران السابقان في الجلسة الحالية. عند إعادة التشغيل ، ستفقد هذه المعلمات وتحتاج إلى تسجيلها مرة أخرى.

يمكن تمكين تطبيق هذه المعلمات عند تحميل نظام التشغيل من خلال الأوامر التالية:

 sed -i '/ swap / s/^/#/' /etc/fstab echo "vm.max_map_count=262144" >> /etc/sysctl.conf 

إضافة مفتاح GPG


نستخدم الأمر التالي:

 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - 

إضافة مستودع لتثبيت Docker


لإكمال تثبيت المستودع ، يجب تشغيل الأمرين التاليين:

 add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt-get update 

تثبيت Docker


استخدم الأمر التالي لتثبيت Docker (Docker الإصدار 17.12.1 هو الحد الأقصى للإصدار المدعوم لـ IBM Cloud Private 2.1.0.3):

 apt-get install docker-ce=17.12.1~ce-0~ubuntu 


الشكل 10. عملية تثبيت عامل الميناء

يمكنك التحقق من وظائف Docker باستخدام الأمر التالي:

 docker version 


الشكل 11. التحقق من عامل الميناء

قم بتنزيل IBM Cloud Private


لتنزيل صورة ICP-ce (Community Edition) من مورد dockerHub ، تحتاج إلى استخدام مجموعة أدوات Docker. يمكنك القيام بذلك باستخدام الأمر التالي:

 docker pull ibmcom/icp-inception:2.1.0.3 


الشكل 12. تحميل برنامج المقارنات الدولية

قامت شركة IBM بتعبئة جميع المكونات الأساسية اللازمة للتثبيت في حزمة واحدة (لاحظ أنه يمكنك تغيير الإصدار إلى إصدار أحدث إذا لزم الأمر). سيقوم الأمر pull بتحميل الصورة إلى نظام الملفات المحلي (سيتم تشغيل الصورة لتثبيت ICP).

قم بإنشاء دليل وانتقل إليه:

 mkdir /opt/icp cd /opt/icp 

انسخ حزمة ICP إلى هذا الدليل:

 docker run -e LICENSE=accept -v "$(pwd)":/data ibmcom/icp-inception:2.1.0.3 cp -r cluster /data 

ملاحظة: يقوم أمر Docker toolkit بتنفيذ أمر نسخ (cp) Linux من الدليل المحدد (خيار -v). سيتم إنشاء دليل نظام المجموعة في / opt / icp مع جميع الملفات الضرورية.

تكوين مفاتيح SSH


أنشئ مفاتيح ssh جديدة في دليل / opt / icp / الكتلة:

 ssh-keygen -b 4096 -f ~/.ssh/id_rsa -N "" cat ~/.ssh/id_rsa.pub | sudo tee -a ~/.ssh/authorized_keys systemctl restart sshd cp ~/.ssh/id_rsa ./cluster/ssh_key 

تحقق من أن المفتاح تم إنشاؤه وأنه موجود في مجلد / opt / icp / الكتلة:

 ls /opt/icp/cluster 


الشكل 13. محتويات مجلد الكتلة

إعداد ICP


أضف عنوان IP لكل عقدة في المجموعة إلى الملف / opt / icp / الكتلة / المضيفين (في حالتنا ، نستخدم نفس عنوان IP لكل مكون حددناه في / etc / hosts). نقوم بذلك بالأمر التالي:

 nano /opt/icp/cluster/hosts 


الشكل 14. محتويات ملف المضيفين

احفظ الملف: Ctrl + X ، نعم ، أدخل

يمكن العثور على معلومات تفصيلية حول خيارات التثبيت في ملف التكوين:

 more /opt/icp/cluster/config.yaml 

لا نوصي بتغيير إعدادات التثبيت الافتراضية.
ملاحظة: أهم ملفي تثبيت هما hosts و config.yaml ، اللذين يصفان خيارات تثبيت ICP. في تكوين متعدد العاملين ، يجب عليك تحديد قائمة بعناوين IP في قسم العامل. عند تثبيت الإصدار الحالي من ICP في وضع العقدة المفردة ، تتغير عناوين IP في ملف المضيفين فقط.

تثبيت ICP


انتقل إلى دليل نظام المجموعة وقم بتشغيل التثبيت:

 cd /opt/icp/cluster docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 install 

اعتمادًا على الموارد المتاحة ، يمكن أن يستمر التثبيت من 20 إلى 60 دقيقة. في حالة حدوث أخطاء (رسائل حمراء) ، قم بإجراء التغييرات المناسبة على ملفات التكوين. في بعض الأحيان قد يتباطأ التثبيت قليلاً بسبب محاولات إعادة الاتصال بالمكونات التي لم تبدأ بعد (على سبيل المثال ، عند بدء تشغيل Cloudant أو IAM).

يجب أن يبدو التثبيت كما يلي:

الشكل 15. نتيجة تثبيت ICP

في حالة وجود أخطاء ، قد يلزم إلغاء تثبيت ICP:

 docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 uninstall 

قبل المتابعة إلى الخطوة التالية ، انتظر حوالي 5 دقائق حتى تبدأ جميع مكونات ICP في التشغيل بنجاح.

اتبع الرابط المقدم بعد اكتمال التثبيت ، أدخل وحدة تحكم ICP (admin / admin):

 https://<ip_address>:8443 


الشكل 16. صفحة تسجيل الدخول إلى لوحة التحكم

صفحة ترحيب ICP:

الشكل 17. واجهة ويب للوحة التحكم

في أعلى اليمين ، حدد قائمة الكتالوج ، يتم عرض قائمة بالتطبيقات المتاحة:

الشكل 18. كتالوج المكون

يحتوي هذا الدليل على قائمة بالتطبيقات والبرامج ، والتي يمكنك وصفها في وقت فراغك ، ولكن حتى الآن لا تتسرع في نشرها.
لم نتعلم بعد كيفية التعامل بشكل صحيح مع ICP المثبت حديثًا (ليس فقط من خلال واجهة الويب ، ولكن أيضًا وحدة التحكم في شكل CLI - واجهة سطر الأوامر) ، وربط التخزين المستمر وإجراء إعدادات صغيرة.

في الختام


لتلخيص.

لقد نجحنا في نشر إصدار مجتمع IBM Cloud Private (الإصدار 2.1.0.3) على مضيف واحد في جهاز ظاهري يعمل بنظام Ubuntu Server OS 04/16/05. في الوقت الحالي ، تحققنا شخصيًا من التثبيت على VMware و Hyper-V hypervisors ، وهو بالتأكيد يعمل على XenServer ولا ينبغي أن يكون هناك أي صعوبات لـ VirtualBox و KVM.

من هو حريص حقًا على الانغماس أكثر في دراسة برنامج المقارنات الدولية ، أي مجموعة ممتازة من العمل المخبري لزميلنا هنا: github.com/phthom/IBMCloudPrivate

من الخطوات القادمة - بعد التثبيت الجديد ، نحتاج فقط إلى تكوين ICP قليلاً والبدء في ملئه بشيء مفيد وقريب من المهام العملية.

إذا كان مجتمع هابر يدعم هذه المبادرة بشكل إيجابي ، فعندما تتقدم أبحاثنا وتجاربنا ، سنملأ قلب النظام الأساسي بالمكونات الضرورية لجمع القياس عن بُعد ، وتخزين البيانات ، ومعالجتها ، وتحليلها ، والتنبؤ بها ، وتكوين واجهات البرنامج الخارجية وإنشاء تطبيقات المستخدم. وبناء على ذلك ، تطوير سلسلة من هذه المواد.

في انتظار ملاحظاتك واقتراحاتك!

أيضًا ، أعد الأشخاص المتشابهون في التفكير من AIXportal.ru مقطع فيديو رائعًا حول تثبيت IBM Cloud Private على قناتهم على Youtube ، وسيكون شخصًا أكثر راحة مثل هذا: youtu.be/eQwOOTzjM24

الروابط والمواد المفيدة


صفحة المنتج باللغة الروسية
• من يريد ممارسة اللغة الإنجليزية ، كتاب - " ICP for Dummies " 2018. (40 صفحة)
أوراق بيضاء لبرنامج المقارنات الدولية 2.1.0.3 في مركز المعرفة IBM
• فتح مجتمع ICP على IBM developerWorks
وصفات ICP للمطورين

Source: https://habr.com/ru/post/ar426135/


All Articles