الرئيسية
» كيف
»
ضع مستندات ONLYOFFICE خلف HAProxy دون تعطيل التحرير
ضع مستندات ONLYOFFICE خلف HAProxy دون تعطيل التحرير
شغّل ONLYOFFICE Docs خلف HAProxy عن طريق إنهاء HTTPS عند الخادم الوكيل، وإعادة توجيه المضيف والبروتوكول الأصليين، والسماح باتصالات WebSocket طويلة الأمد. ابدأ بخادم مستندات واحد سليم؛ أضف المزيد من الخوادم الخلفية فقط عندما يكون نشر ONLYOFFICE الخاص بك مُهيأً للتشغيل متعدد العُقد المدعوم، وليس لمجرد أن HAProxy قادر على توزيع الطلبات.
هل يستطيع HAProxy موازنة الأحمال بين خادمين مستقلين للمستندات؟
يستطيع HAProxy توزيع طلبات HTTP بين العُقد، لكن هذا لا يجعل تثبيتين مستقلين لـ ONLYOFFICE مجموعة تحرير مُنسقة. فجلسة التحرير لها اتصالات مستمرة وحالة تطبيق ثابتة. يستخدم نموذج ONLYOFFICE الرسمي النشط-النشط فحوصات سلامة الواجهة الخلفية وملف تعريف ارتباط دائم؛ وهذه آليات توجيه، وليست بدائل للخدمات المشتركة وبنية التطبيق التي يتطلبها إصدارك.
في حالة التثبيت التقليدي على خادم واحد، استخدم فقط docs1في الواجهة الخلفية الموضحة أدناه. أما في حالة التثبيت على عقدتين، فتأكد أولاً من بنية المجموعة، والإصدار المدعوم، والتبعيات المشتركة، وتوافق الإصدار، وتكوين JWT من خلال وثائق نشر ONLYOFFICE أو دعم المورّد. عناوين المثال - 10.0.10.21و 10.0.10.22- هي عناوين IP خاصة توضيحية، وليست مضيفات مكتشفة.
ما الذي يجب أن يعمل قبل تعديل HAProxy؟
يجب أن يُشير الاسم العام docs.example.comإلى نقطة نهاية HAProxy الخاصة بك. يحتاج HAProxy إلى منفذي TCP الواردين 80 و443، وإلى إمكانية الوصول عبر الشبكة الخاصة إلى كل خادم مستندات على المنفذ 80. يجب أن يكون تطبيق إدارة المستندات الخاص بك قادرًا أيضًا على الوصول إلى عنوان Docs العام، بينما يجب أن يكون ONLYOFFICE قادرًا على جلب المستندات وإرسال ردود الاتصال إلى التطبيق. حافظ على خصوصية اتصال HTTP الخاص بالخادم الخلفي؛ وقم بتشفير اتصال الخادم الخلفي بشكل منفصل إذا كان يمر عبر شبكة غير موثوقة.
تحقق من كل خادم مستندات من مضيف الوكيل. شغّل الأمر curl -i http://10.0.10.21/healthcheck، وإذا كان موجودًا، فقم بتشغيله curl -i http://10.0.10.22/healthcheck. عادةً ما تُعيد نقطة النهاية السليمة HTTP 200 مع نص الرسالة true. تحقق من التوجيه أو جدران الحماية أو سلامة الخادم قبل تكوين موازنة الأحمال إذا فشل أي منها.
تأكد من وجود سر JWT ثابت. يجب أن يتفق خادم المستندات وموصله على سر الرمز المميز. بالنسبة لعمليات تثبيت Docker، توثق ONLYOFFICE JWT_SECRETمتغير البيئة؛ فمنذ الإصدار 7.2 من Docs، قد يؤدي الاعتماد على سر مُنشأ تلقائيًا إلى فشل التكامل بعد إعادة الإنشاء أو إعادة التشغيل. في عمليات النشر متعددة العُقد المدعومة، قم بمواءمة الأسرار عبر العُقد وفقًا لبنية المورّد.
يقوم طلب فحص صحة الواجهة الخلفية بإرجاع HTTP 200 و true قبل إضافة الخادم إلى HAProxy.
كيف يتم إعداد بروتوكول HTTPS وتوجيه الرؤوس الصحيحة؟
الخطوة الأولى: تجهيز الشهادة
احصل على شهادة موثوقة تغطي نطاق الشهادة docs.example.com. في هذا المثال لنظام لينكس، يقرأ HAProxy ملف PEM يحتوي على سلسلة الشهادات متبوعة بالمفتاح الخاص. إذا كانت الشهادات موجودة مسبقًا في مكان آخر، فاستبدل تلك المسارات. قيّد الوصول إلى ملف PEM المدمج، ورتّب لإعادة بنائه عند تجديد الشهادة.
يتم وضع الشهادة والمفتاح الخاص في ملف PEM محمي لمستمع HTTPS.
الخطوة الثانية: إضافة الواجهة الأمامية والخلفية
قم بعمل نسخة احتياطية من إعداداتك الحالية /etc/haproxy/haproxy.cfg، ثم عدّل الأقسام التالية بدلاً من استبدال إعدادات التسجيل أو الخدمة الخاصة بالتوزيعة بشكل أعمى. هذا مثال توضيحي لإعدادات إصدارات HAProxy الحديثة. يقبل هذا الإعداد بروتوكول HTTP فقط لإعادة التوجيه، وينهي اتصالات HTTPS على المنفذ 443، ويعيد توجيه المضيف العام والبروتوكول، ويراقب نقطة نهاية سلامة التطبيق.
يفصل تكوين HAProxy مستمع TLS العام الخاص به عن خوادم المستندات الداخلية؛ استخدم التوجيهات الكاملة الموضحة أعلاه.
أزل docs2السطر ما لم تكن العقدة الثانية جاهزة تمامًا. تساعد ملفات تعريف الارتباط الدائمة طلبات HTTP اللاحقة على العودة إلى العقدة المختارة. يتعامل HAProxy مع ترقية HTTP WebSocket دون إعادة كتابة عنوان URL خاص؛ timeout tunnel 1hويسمح للاتصالات المُرَقَّاة الخاملة بالبقاء مفتوحة لفترة أطول من الطلبات العادية. يشرح توثيق HAProxy WebSocket هذا السلوك.
X-Forwarded-Protoيُعدّ هذا الإعداد httpsصحيحًا هنا لأنّ هذه الواجهة الأمامية تُنهي اتصال HTTPS العام. لا تثق في أيّ مخطط إعادة توجيه يُقدّمه العميل أو مُضيف على حافة الإنترنت. تنصّ وثائق وكيل ONLYOFFICEX-Forwarded-Proto تحديدًا على ضرورة X-Forwarded-Hostالاحتفاظ بسياق عنوان URL الخارجي.
كيف يجب إعادة تحميل واختبار موازن الأحمال؟
الخطوة 3: التحقق قبل تحويل حركة المرور
تحقق من صحة بناء الجملة قبل إعادة التحميل. حالة الخروج غير الصفرية تعني أنه يجب عليك حل خطأ التكوين أو الشهادة المبلغ عنه قبل المتابعة.
تحقق من صحة ملف haproxy.cfg قبل إعادة تحميل الخدمة؛ فالتحقق الناجح من بناء الجملة ليس بديلاً عن اختبارات التحرير.
يجب أن يُظهر رد فحص السلامة العامة رمز HTTP 200 trueعندما يكون الخادم الخلفي سليمًا. يستخدم HAProxy option httpchkالتوجيهات http-check expectلإزالة العُقد المعطلة من دورة الطلبات الجديدة؛ راجع مرجع فحص السلامة الخاص به . لا يُثبت نجاح الفحص أن تحرير المستندات أو تسليم ردود الاتصال يعمل بشكل صحيح.
افتح مستندًا من خلال تطبيقك المُدمج، مثل نظام إدارة المستندات المتصل بـ ONLYOFFICE Docs. في أدوات مطوري المتصفح، استخدم لوحة الشبكة لفحص اتصال WebSocket: يجب أن تنجح عملية الترقية، وعادةً ما يكون ذلك مع حالة HTTP 101 Switching Protocols. قم بإجراء تعديل بسيط، ثم أغلق المحرر، وأعد فتح المستند، وتأكد من حفظ التغيير. لضمان نشر ثنائي العقدة بشكل صحيح، اختبر أيضًا مُتعاونًا ثانيًا وعملية فصل مُخططة لعقدة واحدة خلال فترة الصيانة.
إذا نجح فحص الصحة العامة ولكن المحرر يدور أو ينقطع اتصاله، فافحص تحذيرات المحتوى المختلط، وأعطال WebSocket، وعدم تطابق JWT، وما إذا كان تطبيق المستندات قادرًا على الوصول إلى عنوان URL المُعلن عنه في Docs. إذا فُتح مستند ولكن لم يُحفظ، فتحقق من إمكانية الوصول إلى رد الاتصال من خادم المستندات إلى التطبيق المصدر بدلًا من تغيير سياسة التوزيع الدوري لـ HAProxy. قد تتطلب جلسة WebSocket النشطة المتقطعة إعادة اتصال العميل؛ ولا تضمن فحوصات صحة الواجهة الخلفية تجاوز الفشل بسلاسة في التحرير.
التحقق النهائي: يجب أن يجتاز كل من نقطة نهاية الصحة العامة واختبار التحرير وإعادة الفتح الفعلي بنجاح. احتفظ فقط بالعُقد المعتمدة والمدعومة في التناوب، وتأكد من أن تجديد الشهادة يُعيد تحميل PEM الصحيح، وراقب سجلات HAProxy بحثًا عن استجابات 502/503 متكررة أو انقطاعات WebSocket غير متوقعة.