مقدمة
مع انتشار فلسفة Agile ، يكتسب المتخصصون الروس في تكنولوجيا المعلومات كل عام مزيدًا من الخبرة والكفاءات في مجال تخصيص المنتجات وإدارتها لفرق التطوير ، والتي لا تزال Jira هي الأكثر شهرة. ومع ذلك ، لا يزال العمل مع الإصدار الأقدم والأكثر إنتاجية وسهولة الوصول إليه - مركز بيانات جيرا - يثير الكثير من الأسئلة. في هذا المنشور سأتحدث عن بعض مبادئ وآليات مركز جيرا DataCenter التي نطبقها في الممارسة العملية. سأبدأ بقصة حول بنية مجموعة جيرا.
ما هو جيرا DataCenter؟
يعد Jira DataCenter إصدارًا أساسيًا للخادم ، ولكن مع إمكانية استخدام قاعدة بيانات مشتركة وفهرس مشترك.
من المهم أن نفهم أن Jira DataCenter نفسها ، كمنتج
وكتطبيق ،
لا توفر التسامح مع الخطأ وموازنة التحميل. الوحدات والنظم مسؤولة عن هذا الأمر ، حيث لا يوجد علاقة بين المنتج الأطلسي.
بمعنى آخر ، يوفر Atlassian الدعم للعمل في مجموعة ، لكن التجميع نفسه يتم تنفيذه بوسائل خارجية ، يكون اختيارها غنيًا للغاية.
تتوفر أوصاف المنتجات التفصيلية
على موقع Atlassian .
هناك العديد من خيارات البناء:
1. على البنية التحتية الخاصة
2. على Amazon Cloud (AWS)
3. في سحابة مرض التصلب العصبي المتعدد (أزور)
سوف تصف هذه المقالة حلاً للبنية التحتية الخاصة بك.
ما هي المشاكل التي يحلها مركز جيرا DataCenter؟
يساعدك Jira Data Center على تحقيق الأهداف التالية:
- تنفيذ التسامح مع الخطأ.
- ضمان تشغيل مستقر تحت حمولة عالية. يشير الحمل الكبير إلى مثيلات كبيرة الحجم / للمؤسسة ، وفقًا لدليل جيرا للتحجيم .
- ضمان التشغيل المستمر عند الحاجة إلى الصيانة. عند هذه النقطة سوف أسكن بشكل منفصل. غالبًا ما يحتاج التطبيق إلى التحديث وليس لدى جميع الشركات القدرة على القيام بذلك بسرعة وغير مرئية للمستخدمين. يتم حل هذه المشكلة عن طريق التجميع واستخدام نظام التحديث Zero Downtime المزعوم .
تتم معالجة هذه المشكلات من خلال التجميع و بنية قابلة للتطوير.
ما هي مكونات جيرا DataCenter؟
كما ترون في الشكل أدناه ، فإن مجموعة Jira DataCenter عبارة عن مجموعة من العديد من الأجهزة المخصصة.
الشكل 1. بنية مركز بيانات جيرا- عقد التطبيق (عقد التطبيق أو عقد نظام المجموعة). أنها تقبل ومعالجة جميع عبء العمل والطلبات. يتم لعب دور العقد بواسطة خوادم عادية ، مع محتوى مطابق وتطبيق مثبت ، بالإضافة إلى نظام ملفات مشترك مركب.
- نظام الملفات (نظام ملفات مشترك) مع ميزات قياسية لاستيراد / تصدير الملفات والإضافات والتخزين المؤقت وما إلى ذلك. خادم الملفات هو أيضًا خادم منفصل يتم إنشاء مجلد أو مورد مشترك عليه ، ويتم تثبيته على العقد ويستخدم للملفات المشتركة.
- قاعدة بيانات مشتركة خادم قاعدة البيانات هو أيضا ، في هذه الحالة ، خادم منفصل ويمكن بناؤه على MS SQL و PostgreSQL و MySQL و Oracle.
- تحميل موازن تقوم بتوزيع طلبات المستخدم وتسليمها إلى العقد ، وإذا فشل أحدها ، يعيد الموازن توجيه طلباته إلى العقد الأخرى على الفور تقريبًا. بفضل عملها ، لا يلاحظ المستخدمون حتى فشل عقدة واحدة. سنتحدث أدناه عن عمل الموازن بشكل منفصل.
طوبولوجيا مركز جيرا للبيانات
سأقدم المبادئ الأساسية التي يتم من خلالها بناء مجموعة في JDC:
- مثيلات Jira مشاركة قاعدة بيانات مشتركة؛
- يتم نسخ مؤشر Lucene في الوقت الفعلي وتخزينه محليًا لكل مثيل ؛
- يتم تخزين المرفقات في مستودع مشترك.
- حالات جيرا مراقبة تناسق ذاكرة التخزين المؤقت؛
- في أي وقت ، يمكن أن تكون هناك عدة حالات نشطة في نفس الوقت ؛
- الأقفال العنقودية متوفرة ؛
- تم تكوين الموازن لإعادة توجيه الطلبات فقط إلى العقد النشطة ، في حين أنه لا ينبغي إعادة توجيه الطلبات إلى العقد غير النشطة ، وكذلك لا يمكن معالجة جميع الدورات إلى عقدة واحدة.
وتنقسم جميع العقد إلى نشطة وسلبي. تختلف العقد النشطة في أنها:
- طلبات العملية
- أداء العمليات الخلفية والمهام
- يمكن تكوين المهام المجدولة على واحد أو أكثر منها.
- في جميع السيناريوهات العملية ، سيبدو الموقف باستخدام خادم Jira قياسي. وفقًا لذلك ، لا تقوم العقد المنفعلة بمعالجة الطلبات ولا تقوم بالمهام ، ولكنها تعمل على تحمل عبء عمل قصير الأجل (على سبيل المثال ، عند بدء تشغيل النظام ، وتحميل المكونات الإضافية و / أو الفهرسة).
يوضح الشكل أدناه تشغيل مجموعة جيرا
الشكل 2. رسم تخطيطي مبسط للهندسة المعماريةحول موازنات الحمل
يمكن أن يكون الموازن أي خادم به وكيل عكسي مثبت أو جهاز فعلي. سأقدم أشهر الأمثلة على الموازين.
1. موازنات الأجهزة:
• سيسكو
• العرعر
• F5
2. موازنات البرمجيات:
• mod_proxy (Apache) - خادم وكيل لـ Apache HTTP Server يدعم معظم البروتوكولات الشائعة والعديد من خوارزميات موازنة التحميل المختلفة.
• الورنيش هو خادم وكيل HTTP عكسي ومسرع ، تم تصميمه للمواقع ذات حركة المرور العالية. على عكس الآخرين ، إنه فقط خادم وكيل وموازن التحميل لحركة مرور HTTP. على وجه الخصوص ، يستخدم Varnish ويكيبيديا و NY Times و The Guardian والعديد من المشاريع الكبيرة الأخرى.
• Nginx - خادم الويب الأول الذي يحظى بشعبية كبيرة بين موازنات التحميل والحلول الوكيل للمواقع التي تتمتع بحركة مرور عالية. انها تتطور بنشاط ، وتقدم الشركة المصنعة نسخة مجانية والشركات. تستخدم على العديد من المواقع الأكثر زيارة في العالم ، على سبيل المثال ، WordPress.com ، Zynga ، Airbnb ، Hulu ، MaxCDN.
• Nginx Plus - في الواقع ، النسخة المدفوعة للشركات المذكورة أعلاه من Nginx.
• HAProxy هي أداة مجانية مفتوحة المصدر توفر موازنة التحميل وقدرات الوكيل لبروتوكولات TCP / HTTP. إنه سريع ويستهلك القليل من موارد النظام ، وهو متوافق مع Linux و Solaris و FreeBSD و Windows.
يمكن العثور
على مقارنة جيدة للخوادم الوكيلة
هنا على هذا الرابط .
إلى الأمام وعكس الوكلاء
يمكن أن تعمل موازنات التحميل بشكل مباشر وكذلك الوكلاء العكسيين. تم وصف الاختلاف جيدًا بواسطة مؤلف
هذا التعليق على stackoverflow:
1. "وكيل إعادة التوجيه" (وكيل إعادة التوجيه). الحدث الوكيل في هذه الحالة هو أن "الوكيل المباشر" يسترجع البيانات من موقع ويب آخر نيابة عن الطالب الأصلي. على سبيل المثال ، سأقدم قائمة بثلاثة أجهزة كمبيوتر متصلة بالإنترنت.
X = الكمبيوتر أو الكمبيوتر العميل على الإنترنت
Y = موقع الوكيل ، proxy.example.org
Z = موقع الويب الذي تريد زيارته هو
www.example.netيمكنك عادة الاتصال مباشرة من X -> Z. ومع ذلك ، في بعض السيناريوهات ، من الأفضل Y -> Z نيابة عن X ، والتي تبدو كهذا في سلسلة: X -> Y -> Z.
2. "وكيل عكسي" (وكيل عكسي). تخيل الموقف نفسه ، يتم تكوين الموقع Y فقط مع وكيل عكسي. يمكنك عادة الاتصال مباشرة من X -> Z. ومع ذلك ، في بعض السيناريوهات ، من الأفضل أن يقوم مسؤول Z بتقييد أو حظر الوصول المباشر وإجبار الزائرين على المرور عبر Y أولاً ، وبالتالي ، كما حصل من قبل ، نحصل على البيانات التي تلقاها Y -> Z نيابة عن X ، وهي كما يلي: X -> Y -> Z.
تختلف هذه الحالة عن "الوكيل المباشر" في أن المستخدم X لا يعرف أنه يقوم بالوصول إلى Z ، لأن المستخدم X يرى أنه يتبادل البيانات مع Y. Server Z غير مرئي للعملاء ، والخادم الوكيل الخارجي Y مرئي خارجيًا فقط . الوكيل العكسي لا يتطلب التكوين من جانب العميل. يعتقد العميل X أنه يتفاعل فقط مع Y (X -> Y) ، ولكن الحقيقة هي أن Y تعيد توجيه الاتصال بالكامل (X -> Y -> Z مرة أخرى).
بعد ذلك ، سوف نفكر في العمل مع موازن البرامج.
أي برنامج موازن تختار؟
في تجربتنا ، يعد Nginx هو الخيار الأفضل بين موازنات البرامج لأنه يدعم وضع جلسات Sticky وهو أيضًا أحد خوادم الويب الأكثر استخدامًا ، مما يعني وجود وثائق جيدة وشعبية كافية بين المتخصصين في تكنولوجيا المعلومات.
الجلسة اللاصقة هي طريقة لموازنة التحميل يتم فيها إرسال طلبات العميل إلى خادم المجموعة نفسه. يحتوي Nginx على طريقة لزجة تستخدم ملفات تعريف الارتباط لتحقيق التوازن ، ولكن فقط في الإصدار التجاري. ولكن هناك طريقة حرة - استخدام وحدات خارجية.
تقوم الوحدة بإنشاء ملف تعريف ارتباط ، وبالتالي تجعل كل متصفح فريدًا. بعد ذلك ، يتم استخدام ملف تعريف الارتباط لإعادة توجيه الطلبات إلى نفس الخادم. إذا لم يكن هناك ملف تعريف ارتباط (على سبيل المثال ، عند الطلب الأول) ، فسيتم اختيار الخادم بشكل عشوائي.
يمكنك قراءة المزيد حول الطريقة اللاصقة في
هذا الرابط ، وكذلك
في Habrapost .
والآن ، دعنا ننتقل إلى الجزء العملي ...
تعليمات لإنشاء مجموعة Jira DataCenter
للتجميع ، يمكنك استخدام مثيل موجود مع تثبيت Jira ، أو مثيل جديد. في مثالنا ، سيتم وصف تثبيت مثيلات جديدة على أنظمة تشغيل مختلفة (لإظهار براعة النظام).
1. لنبدأ مع خادم قاعدة البيانات. يمكنك استخدام كل من القائمة وإنشاء واحدة جديدة. مرة أخرى ، للتوضيح ، تم اختيار Windows Server 2016 + PostgreSQL 9.4. تثبيت نظام التشغيل ، تثبيت خادم PG ، تثبيت المسؤول PG ، إضافة المستخدم وقاعدة البيانات.
2. قم بإنشاء العقدة الأولى على نظام التشغيل Ubuntu 16.04 LTS. تثبيت الحزم اللازمة ، تحديثات مستودع.
3.
قم بتنزيل Jira DataCenter وتثبيته ، وإطلاق قاعدة البيانات وتكوينها (فقط في حالة وجود
دليل تفصيلي لدى Atlassian)
4. إيقاف جيرا ، وإيقاف العقدة.
توقف خدمة جيرا5. لمزيد من التلاعب ، من الأفضل تعطيل تشغيل Jira التلقائي مؤقتًا:
تحديث - اتفاقية روتردام - واو جيرا إزالة6. نحن استنساخ العقدة مغلقة.
7. بدء العقدة الأولى ، وإيقاف جيرا (افتراضيا ، جيرا بعد التثبيت لضبط التشغيل التلقائي).
8. تشغيل العقدة الثانية ، وإيقاف جيرا.
9. إنشاء مثيل منفصل للموازن. اخترت أوبونتو 16.04 ل إنه سريع للغاية وبسيط ولا يتطلب تكاليف إضافية في شكل تراخيص.
10. قم بتثبيت nginx (المثال المستخدم في الإصدار 1.13.4).
11. قم بتنزيل وفك nginx-sticky-module-ng:
git clone
bitbucket.org/nginx-goodies/nginx-sticky-module-ng.git12. تحضير nginx لإعادة
ترجمة وإضافة وحدة نمطية.
13. قم بتجميع nginx مع وحدة nginx-sticky-module-ng. في حالتي ، تحول خط الترجمة كما يلي:
./configure --prefix = / etc / nginx - مسار المسار = / usr / sbin / nginx - وحدات المسار = / usr / lib / nginx / modules --conf-path = / etc / nginx / nginx. conf --error-log-path = / var / log / nginx / error.log --http-log-path = / var / log / nginx / access.log --pid-path = / var / run / nginx. pid --lock-path = / var / run / nginx.lock --http-client-body-temp-path = / var / cache / nginx / client_temp --http-proxy-temp-path = / var / cache / nginx / proxy_temp - http-fastcgi-temp-path = / var / cache / nginx / fastcgi_temp --http-uwsgi-temp-path = / var / cache / uwsgi_temp --http-scgi-temp-path = / var / cache / nginx / scgi_temp --user = nginx --group = nginx - with with compat - with-file-aio - withith Threads --with-http_addition_module - with-http_auth_request_module --with-http_dav_module - -with-http_flv_module - with-http_gunzip_module - with-http_gzip_static_module - with-http_mp4_module - with-http_random_index_module --with-http_realip_module --with-http مع http_sub_module - مع ht tp_v2_module - with-mail - with-mail_ssl_module - with-stream --with-stream_realip_module - with-stream_ssl_module - with-stream_ssl_preread_module - with-stream_ssl_preread_module - withith-cc-opt = '- g -O2 -fstack-protector - param = ssp-buffer-size = 4 -Wformat -Werror = format-security -Wp، -D_FORTIFY_SOURCE = 2 -fPIC '--with-ld-opt =' - Wl -bsymbolic-function -Wl، -z، relro -Wl ، -z ، الآن -Wl ، - حسب الحاجة -pie -add-module = / usr / local / src / nginx-sticky-module-ng14. ابحث عن الملف /etc/nginx/nginx.conf ، وانسخه إلى .bak ، وقم
بتكوين nginx لعكس وضع الوكيل.
15. بعد ذلك ، نحتاج إلى خادم ملفات (يفضل أيضًا أن يكون متسامحًا مع الأخطاء). على سبيل المثال ، اخترت خادم Windows ، حيث
أنشأت كرة NFS.
16. على كل عقدة نقوم بتثبيت حزم لدعم NFS:
الرابطة بين الحصول على تثبيت NFS المشتركة17. قم بإنشاء مجلد / media / jira وتنفيذ:
chmod -R 0777 / media / Jira18. قم بتركيب كرة NFS كلعبة مشتركة (من الضروري تركيبها ليس في مجلد الجذر ، ولكن على سبيل المثال ، في / media / jira) - كل NODE
19.1. علاوة على ذلك ، من الممكن إجراء التثبيت اليدوي (فردي):
sudo mount -t nfs -Oid = 1000 ، iocharset = utf-8 xx.xx.xx.xx: / jira / media / jiraحيث xx.xx.xx.xx هو عنوان IP للخادم مع كرة NFS
19.2. أو التثبيت التلقائي على الفور (عند بدء تشغيل نظام التشغيل):
mcedit / الخ / fstabفي النهاية تحتاج إلى إضافة السطر:
192.168.7.239:/jira / media / jira nfs user، rw 0 0ثم حفظ والخروج.
20. تعيين معرف: العقدة الأولى node1 ، على العقدة الثانية node2 ، وهلم جرا.
يجب أن يكون هذا المعرّف فريدًا عبر المجموعة
jira.node.id = node1
# موقع الدليل الرئيسي المشترك لجميع العقد جيرا
jira.shared.home = / media / jira21. قم بتشغيل الجيرا على العقدة الأولى
خدمة جيرا تبدأتحقق:
انتقل إلى النظام -> معلومات النظام -> ابحث عن الكتلة ON ورقم العقدة.
22. إعداد موازنة nginx
23. منذ سبق أن عطلنا تشغيل Jira تلقائيًا على العقد ، ثم يمكننا تمكينه باستخدام الأمر:
تحديث rc.d -f جيرا تمكين24. نتحقق من عمل المجموعة ونضيف العقد حسب الضرورة.
ترتيب بدء المجموعة
1. تمكين خادم نظام الملفات المشتركة
2. تمكين تحميل موازن
3. تمكين node1
4. تمكين node2
5. ...
ترتيب وقف الكتلة
1. أوقف Jira على كلا العقدتين باستخدام الأمر Jira stop
2. إيقاف العقدة 2
3. إيقاف العقدة 1
4. قم بإيقاف تشغيل موازن التحميل
5. قم بإيقاف تشغيل خادم نظام الملفات
هذا كل شيء ...
بالطبع ، الطريقة الموصوفة ليست الطريقة الوحيدة الصحيحة. هذه مجرد طريقة للتنفيذ.
أعرب عن امتناني لزملائي لمساعدتهم في إعداد المواد.
التعليق ، وطرح الأسئلة وشكرا لاهتمامكم.