الانتقال إلى نظام مجموعة 1C-Bitrix: بيئة الويب

في لحظة معينة ، ظهرت مهمة - لنقل مشروع موجود ويعمل بنشاط في مشروع إنتاج للعمل في مجموعة خادم. لأن تم تطوير المشروع على أساس 1C-Bitrix ، تقرر بناء مجموعة باستخدام "1C-Bitrix: بيئة الويب". الغرض من هذا الحدث هو أن تكون قادرًا على تحمل الأحمال الثقيلة مع تدفق زوار الموقع ، بالإضافة إلى القدرة على التوسع أفقيًا بشكل أسرع في المستقبل.

في الواقع ، إذا انتقلنا إلى موقع البائع على الويب ، فسوف نرى ما يلي:

"1C-Bitrix: بيئة الويب" - يستخدم Linux للتثبيت السريع والسهل لجميع البرامج اللازمة لتشغيل منتجات وحلول 1C-Bitrix على أنظمة Linux الأساسية CentOS 6 (i386، x86_64) و CentOS 7 (x86_64). من الضروري التثبيت على CentOS "النظيف" ، بدون خادم ويب مثبت بالفعل.

بنية "1C-Bitrix: بيئة الويب" - يتضمن Linux: mysql-server و httpd و php و nginx و nodejs push-server و memcached و stunnel و catdoc و xpdf و munin و nagios و sphinx.


في الواقع ، تحتوي حزمة البرامج هذه على LAMP الذي تم تكوينه ، ولوحة تحكم خادم وحدة التحكم ، بالإضافة إلى الحزم الإضافية اللازمة لتشغيل بعض وحدات 1C-Bitrix. يتم تكوين جميع البرامج مع مراعاة ميزات 1C-Bitrix ، وهي:

  • تم تثبيت الملحقات الضرورية (gd ، zip ، socket ، mbstring)
  • تمكين دعم العلامات القصيرة
  • يتم تعيين القيم الضرورية للمعلمات memory_limit و max_input_vars والوضع الآمن و opcache.validate_timestamps و opcache.revalidate_freq و mbstring.func_overload و default_charset و display_errors وما إلى ذلك.
  • تعيين نفس المنطقة الزمنية لقاعدة البيانات ، php وعلى الخادم نفسه
  • وغيرهم

هذا يسمح في معظم الحالات بعدم الانخراط في تكوين الخادم وضبطه.

لذلك ، كان لدينا خادمان تطبيق (دعنا نطلق عليهما app01 و app01) ، 2 خوادم ديسيبل (db01 ، db02) ، خادم واحد للتخزين المؤقت (cache01 ، كما تفهم) ، بشكل أكثر دقة ، كانت الفكرة هي تنفيذ بنية الكتلة بطريقة مماثلة. تم استلام خمسة خوادم لهذه الخطة ، مع تثبيت أحدث إصدارات centos7 عليها (للأسف ، ديبيان ، أوبونتو ، فيدورا ، ريل ، وما إلى ذلك ليست مناسبة) ، باستثناء نظام التشغيل ، لم يتم تثبيت أي شيء على الخوادم بعد الآن.


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


ذهب العمل الإضافي وفقا للخطة التالية:

1. تثبيت bitrixenv


التثبيت لا يعني معرفة أو إدارة لينكس خارقة للطبيعة. نذهب إلى كل خادم عبر ssh وننفذ الأوامر التالية:

cd ~ wget http://repos.1c-bitrix.ru/yum/bitrix-env.sh chmod +x bitrix-env.sh ./bitrix-env.sh 

يجب تثبيت Bitrixenv على كافة الخوادم التي تم التخطيط لاستخدامها في المجموعة. حتى إذا كان الخادم سيعمل فقط كمثيل memcached ، فإن bitrixenv ضروري ، لأنه يسمح لك بإدارة الكتلة بأكملها من الخادم الرئيسي.

2. تكوين bitrixenv


لأن إذا استخدمنا حديقة الحيوانات بأكملها كمجموعة ، فيمكننا تكوين الخوادم من خلال قائمة البيئة في app01. للقيام بذلك ، انتقل إلى الخادم عبر ssh وقم بتشغيل الملف /root/menu.sh. في البداية ، تحتاج إلى تعيين كلمة مرور لمستخدم bitrix (يجب إجراء عملية مماثلة على جميع الخوادم حيث تتم جدولة تشغيل الموقع):



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



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



بعد إنشاء التجمع ، نعود إلى الشاشة الأولى للبيئة ، ولكن هذه المرة هناك المزيد من النقاط المتاحة:



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

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



مرة أخرى ، حدد عنصر القائمة الأول ، وحدد عنوان IP للخادم الجديد واسمه في المجموعة (نفس app02 و db01 و db02 و cache01) وكلمة المرور الجذر للخادم المتصل. وبالتالي ، نضيف كل خادم متاح واحدًا تلو الآخر. بعد تسجيل جميع الخوادم في المجموعة ، يجب أن نحصل على شيء مثل هذه القائمة على الشاشة الرئيسية للبيئة:



تم تأجيل تعيين أدوار الخادم الآن إلى الخطوة التالية.


3. نقل المشروع


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

بعد أن تصبح المحفوظات والمقالب جاهزة ، انتقل إلى app01 واسحب رمز المشروع من خلال البوابة إلى المجلد الافتراضي للموقع في bitrixenv - / home / bitrix / www ، وقم بتنزيل الأرشيفات وتفريغ قاعدة البيانات باستخدام wget أو curl ، وفك المحفوظات وتحميلها تفريغ لقاعدة البيانات على app01 ، نقل إدخالات كرون.

إذا كان تطبيقك يستخدم برنامجًا إضافيًا ، فقد حان الوقت لتثبيته وتكوينه. في حالتنا ، تم تثبيت وتكوين المشرف و RabbitMQ ، على النحو يعمل التطبيق باستخدام قوائم الانتظار.

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


4. تمكين عملية الكتلة


بعد نقل التطبيق إلى app01 ، والتحقق من صحة عمله ، حان الوقت للقيام بأكثر شيء مثير للاهتمام - التحجيم. تحتاج أولاً إلى تثبيت وحدات المقياس والكتلة في لوحة إدارة 1C-Bitrix. أثناء التثبيت ، لا يوجد شيء خاص يجب القيام به ، كل العمل يستمر.

بمجرد تثبيت الوحدات النمطية ، انتقل إلى اتصال ssh مع الخادم الرئيسي ، وهذا هو app01 ، وافتح قائمة bitrixenv (تقع /root/menu.sh هنا). قبل متابعة المزيد من التكوين ، تحتاج إلى معرفة نقطة واحدة مهمة - يستخدم bitrixenv مفهوم "دور الخادم". لا يهم حقا ما يسمى الخادم في التجمع ، لأنه يحتوي كل خادم على جميع البرامج المضمنة في حزمة bitrixenv ، يمكننا دائمًا تعيين دور واحد أو أكثر لها ، ويمكننا إزالتها منه أو استبداله بآخرين. الأدوار الرئيسية هي mgmt (الموازن ، أي nginx) ، الويب (أي httpd / apache) ، mysql_master و mysql_slave (مثيل DB ، يظهر الرقيق عندما نبدأ في إجراء النسخ المتماثل) ، memcached (الخادم مع memcached). الصورة العامة واضحة الآن ، وقررنا أن نبدأ بخادم memcached. للقيام بذلك ، انتقل إلى الفقرة

 4. Configure memcahed servers > 1. Configure memcached service 

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



نقوم بإدخال الاسم cache01 ، ونرى أن مهمة تحديد الدور في قائمة الانتظار. نحن في انتظار الانتهاء من عمل الخلفية ونرى خادمًا جاهزًا للعمل بالدور الذي نحتاجه.



حان الوقت لإضافة خادم تطبيقات ثانٍ. للقيام بذلك ، انتقل على طول المسار
 8. Manage web nodes in the pool > 1. Create web role on server, 



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



لاحظ أنه في عمود الأدوار المقابل لخادم app02 ، يشار إلى دور الويب.
يبقى للتعامل مع قاعدة البيانات ، تكوينها يستغرق معظم الوقت. أولاً ، سأشرح بإيجاز كيفية توزيع أدوار الخلية في سياق bitrixenv. بشكل افتراضي ، الإصدار الرئيسي من قاعدة البيانات موجود على الخادم الرئيسي للكتلة. في حالتنا ، كان من الضروري نقل قاعدة البيانات إلى خادم منفصل وإضافة خادم آخر مع إصدار تابع لقاعدة البيانات. في bitrixenv ، لا يمكنك فقط نقل ونقل رئيسي من خادم إلى آخر)



التسلسل كما يلي:

  1. نعطي دور mysql_slave إلى الخادم الذي نخطط لنقل قاعدة البيانات إليه
  2. على الخادم الهدف ، نقوم بتغيير دور mysql_slave إلى دور mysql_master (تلقائيًا ، ينتقل mysql_master القديم إلى وضع mysql_slave)
  3. حذف دور mysql_slave على الخادم الأصلي الرئيسي السابق
  4. ...
  5. الربح !!!

لقد اتبعنا هذا المنطق بهذه الطريقة:

ذهب إلى

 3. Configure MySQL servers > 4. Create MySQL slave 



أشرنا إلى الخادم الذي نريد منحه الدور mysql_slave - db01. نحن في انتظار انتهاء عمل الخلفية ونرى النتيجة التالية:



حسنا ، الآن نذهب إلى

 3. Configure MySQL servers > 5. Change MySQL master 



حدد app01 وانتظر. نتيجة لذلك ، يجب أن تشاهد شيئًا مثل هذا:



ببطء وحتمًا ، اقتربنا من تثبيت الدور الأخير - mysql_slave. لهذا ، من الضروري تكرار الخطوات التي حددنا بها هذا الدور لـ db01 ، ولكن حدد db02 بالفعل.

وأخيرًا ، يتم توصيل جميع الخوادم وتكوينها.

5. ضبط الأداء


بعد أن تكون الكتلة جاهزة ، هناك بعض الميزات في تكوين التطبيق التي تسمح بتحسين إضافي:

  • نضخ العمل مع الجلسات. موصوفة بالتفصيل هنا . باختصار - تبديل جلسة التخزين في memcached.
  • احذف ملفات /bitrix/php_interface/after_connect_d7.php و /bitrix/php_interface/after_connect.php لأن أوامر منهم قطع خط أنابيب الكتلة (إذا لم يتم استخدام bitrixenv ، فمن الأفضل تركها).
  • نقوم بزيادة مقدار الذاكرة المخصصة بواسطة memcached وتعيين النسبة المئوية لاستخدام الخوادم ذات دور memcached إلى 100٪.
  • تعطيل وحدات php: apcu ، ldap
  • قم بتعطيل وحدات الناقل "ضغط" و "تحليلات الويب" (إن أمكن).
  • ضع في اعتبارك استخدام ذاكرة التخزين المؤقت المحلية. يتم وصف المزيد من التفاصيل هنا . في حالتنا ، لم تكن هناك زيادة ، لكن الفكرة مثيرة للاهتمام. يحتوي الحل على ميزتين:

    • يجب أن يساوي عدد النسخ memcached عدد عقد الويب.
    • لإرجاع ذاكرة التخزين المؤقت المركبة بواسطة nginx ، مباشرة من memcached المحلية ، يجب عليك الحفر في تهيئة nginx ، ولا تعمل خارج الصندوق.

  • نقل تنفيذ جميع العملاء إلى كرون.


الاستنتاجات


في إطار هذه المقالة ، درسنا تسلسل الخطوات المطلوبة لتكوين مجموعة من الخوادم استنادًا إلى bitrixenv ، بالإضافة إلى بعض العثرات المحتملة. استنادًا إلى نتائج العمل مع bitrixenv والمجموعة عليه ، يمكننا تسليط الضوء على إيجابيات وسلبيات هذا النهج:

الايجابيات bitrixenv


  • وقت التثبيت
    يستغرق التثبيت والإعداد الأساسي أقل من 30 دقيقة. ليست هناك حاجة لتكوين عناصر LAMP (كل من تكامل هذه الخدمات مع بعضها البعض ، وللعمل الصحيح للمشاريع على 1C-Bitrix).
  • خدمات لتسريع الموقع
    الخدمات المثبتة والمهيأة التي تسمح لك بتنظيم التخزين المؤقت بشكل أسرع عبر memcached بدلاً من الملفات ، والبحث باستخدام محرك أبو الهول ووظائف مكالمات الفيديو والدردشات على بوابة الشركة (nginx push & pull module). بالإضافة إلى ذلك ، يتم تكوين nginx في البيئة بطريقة تتيح لك تمكين الخيارات المقابلة على الموقع وفي قائمة bitrixenv ، يتم إرسال ذاكرة التخزين المؤقت باستخدام nginx مباشرة من memcached (تجاوز httpd و php)
  • التكتل
    القدرة على تمكين النسخ المتماثل لقاعدة البيانات ، دون اختيار إعدادات MySQL. ربط عدد عشوائي من عقد الويب التي ستتم مزامنتها تلقائيًا مع بعضها البعض ، والعقد memcached. إدارة موازنة التحميل على الويب والعقد memcached من قائمة bitrixenv ومن خلال لوحة الإدارة للمشروع على 1C-Bitrix. بالإضافة إلى ذلك ، لا تؤدي إضافة خوادم وأدوار جديدة إليها إلى مشروع بسيط (ربما باستثناء أدوار خوادم قواعد البيانات)

سلبيات bitrixenv


  • الموازن يكون دائمًا مع عقدة الويب الرئيسية
    لأن كان لدينا بالفعل موازننا الخاص ، واجهنا حقيقة أنه من المستحيل التخلي عن الموازن المدمج في bitrixenv. من المستحيل بما في ذلك ضعه بشكل منفصل عن عقدة الويب الرئيسية.
  • الكثير من البرامج الإضافية لبعض الأدوار
    لأن نظرًا لأن كل خادم في التجمع يحتوي على الإصدار الكامل من البيئة ، فقد تبين أن عقد db هي httpd و memcached و sphinx ، حتى إذا لم يتم استخدامها. وبالمثل ، يمكنك العثور على MySQL على خادم يتعامل فقط مع التخزين المؤقت ، ولكن في هذه الحالة ، يمكن إيقاف MySQL في قائمة البيئة أو لوحة الإدارة الخاصة بالموقع.
  • يعمل PHP في وضع apache2handler
    لا توجد طريقة لتمكين php بأمان في وضع fcgi ، ناهيك عن وضع nginx + php-fpm. أيضا ، لن تعمل على تغيير نسخة php ، دون الرقص مع الدف.


مصادر:


www.1c-bitrix.ru/products/env
dev.1c-bitrix.ru/community/blogs/rns/hidden-features-of-work-with-sessions.php
dev.1c-bitrix.ru/community/blogs/rns/the-use-of-local-caches-in-the-cluster.php
dev.1c-bitrix.ru/learning/course/index.php؟COURSE_ID=32&INDEX=Y
dev.1c-bitrix.ru/learning/course/index.php؟COURSE_ID=37&INDEX=Y

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


All Articles