ضع مستندات 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 الخاص بالخادم الخلفي؛ وقم بتشفير اتصال الخادم الخلفي بشكل منفصل إذا كان يمر عبر شبكة غير موثوقة.

  1. تحقق من كل خادم مستندات من مضيف الوكيل. شغّل الأمر curl -i http://10.0.10.21/healthcheck، وإذا كان موجودًا، فقم بتشغيله curl -i http://10.0.10.22/healthcheck. عادةً ما تُعيد نقطة النهاية السليمة HTTP 200 مع نص الرسالة true. تحقق من التوجيه أو جدران الحماية أو سلامة الخادم قبل تكوين موازنة الأحمال إذا فشل أي منها.
  2. تأكد من وجود سر JWT ثابت. يجب أن يتفق خادم المستندات وموصله على سر الرمز المميز. بالنسبة لعمليات تثبيت Docker، توثق ONLYOFFICE JWT_SECRETمتغير البيئة؛ فمنذ الإصدار 7.2 من Docs، قد يؤدي الاعتماد على سر مُنشأ تلقائيًا إلى فشل التكامل بعد إعادة الإنشاء أو إعادة التشغيل. في عمليات النشر متعددة العُقد المدعومة، قم بمواءمة الأسرار عبر العُقد وفقًا لبنية المورّد.
يقوم الطرفية بفحص http://10.0.10.21/healthcheck ويظهر HTTP 200 مع القيمة true في نص الاستجابة.
يقوم طلب فحص صحة الواجهة الخلفية بإرجاع HTTP 200 و true قبل إضافة الخادم إلى HAProxy.

تتبع هذه الفحوصات إرشادات تثبيت Docker الخاصة بالبائع وتعليمات تكوين JWT . لا تقم بتعطيل JWT لمجرد تجاوز خطأ في الخادم الوكيل.

كيف يتم إعداد بروتوكول HTTPS وتوجيه الرؤوس الصحيحة؟

الخطوة الأولى: تجهيز الشهادة

احصل على شهادة موثوقة تغطي نطاق الشهادة docs.example.com. في هذا المثال لنظام لينكس، يقرأ HAProxy ملف PEM يحتوي على سلسلة الشهادات متبوعة بالمفتاح الخاص. إذا كانت الشهادات موجودة مسبقًا في مكان آخر، فاستبدل تلك المسارات. قيّد الوصول إلى ملف PEM المدمج، ورتّب لإعادة بنائه عند تجديد الشهادة.

sudo install -d -m 700 /etc/haproxy/certs
sudo sh -c 'umask 077; cat /etc/letsencrypt/live/docs.example.com/fullchain.pem /etc/letsencrypt/live/docs.example.com/privkey.pem > /etc/haproxy/certs/docs.example.com.pem'
يعرض طرفية أوبونتو دليل الشهادة، وملف PEM الخاص بـ docs.example.com، وأذونات الملفات المقيدة.
يتم وضع الشهادة والمفتاح الخاص في ملف PEM محمي لمستمع HTTPS.

الخطوة الثانية: إضافة الواجهة الأمامية والخلفية

قم بعمل نسخة احتياطية من إعداداتك الحالية /etc/haproxy/haproxy.cfg، ثم عدّل الأقسام التالية بدلاً من استبدال إعدادات التسجيل أو الخدمة الخاصة بالتوزيعة بشكل أعمى. هذا مثال توضيحي لإعدادات إصدارات HAProxy الحديثة. يقبل هذا الإعداد بروتوكول HTTP فقط لإعادة التوجيه، وينهي اتصالات HTTPS على المنفذ 443، ويعيد توجيه المضيف العام والبروتوكول، ويراقب نقطة نهاية سلامة التطبيق.

global
    log /dev/log local0

defaults
    mode http
    log global
    option httplog
    option forwardfor
    timeout connect 5s
    timeout client 60s
    timeout server 60s
    timeout tunnel 1h

frontend docs_http
    bind :80
    http-request redirect scheme https code 301

frontend docs_https
    bind :443 ssl crt /etc/haproxy/certs/docs.example.com.pem
    http-request set-header X-Forwarded-Proto https
    http-request set-header X-Forwarded-Host %[req.hdr(Host)]
    default_backend docs_nodes

backend docs_nodes
    option http-server-close
    balance roundrobin
    cookie SERVERID insert indirect nocache
    option httpchk GET /healthcheck
    http-check expect string true
    server docs1 10.0.10.21:80 check cookie docs1
    server docs2 10.0.10.22:80 check cookie docs2
محرر تكوين HAProxy يعرض واجهة TLS أمامية وعنوانين خلفيين لخادم المستندات الخاص.
يفصل تكوين 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: التحقق قبل تحويل حركة المرور

تحقق من صحة بناء الجملة قبل إعادة التحميل. حالة الخروج غير الصفرية تعني أنه يجب عليك حل خطأ التكوين أو الشهادة المبلغ عنه قبل المتابعة.

sudo haproxy -c -f /etc/haproxy/haproxy.cfg
sudo systemctl reload haproxy
curl -i https://docs.example.com/healthcheck
يعرض الطرفية أمر التحقق من صحة تكوين HAProxy ورسالة التكوين الصحيح.
تحقق من صحة ملف haproxy.cfg قبل إعادة تحميل الخدمة؛ فالتحقق الناجح من بناء الجملة ليس بديلاً عن اختبارات التحرير.

يجب أن يُظهر رد فحص السلامة العامة رمز HTTP 200 trueعندما يكون الخادم الخلفي سليمًا. يستخدم HAProxy option httpchkالتوجيهات http-check expectلإزالة العُقد المعطلة من دورة الطلبات الجديدة؛ راجع مرجع فحص السلامة الخاص به . لا يُثبت نجاح الفحص أن تحرير المستندات أو تسليم ردود الاتصال يعمل بشكل صحيح.

الخطوة الرابعة: تأكيد التحرير، وWebSockets، والحفظ

افتح مستندًا من خلال تطبيقك المُدمج، مثل نظام إدارة المستندات المتصل بـ ONLYOFFICE Docs. في أدوات مطوري المتصفح، استخدم لوحة الشبكة لفحص اتصال WebSocket: يجب أن تنجح عملية الترقية، وعادةً ما يكون ذلك مع حالة HTTP 101 Switching Protocols. قم بإجراء تعديل بسيط، ثم أغلق المحرر، وأعد فتح المستند، وتأكد من حفظ التغيير. لضمان نشر ثنائي العقدة بشكل صحيح، اختبر أيضًا مُتعاونًا ثانيًا وعملية فصل مُخططة لعقدة واحدة خلال فترة الصيانة.

إذا نجح فحص الصحة العامة ولكن المحرر يدور أو ينقطع اتصاله، فافحص تحذيرات المحتوى المختلط، وأعطال WebSocket، وعدم تطابق JWT، وما إذا كان تطبيق المستندات قادرًا على الوصول إلى عنوان URL المُعلن عنه في Docs. إذا فُتح مستند ولكن لم يُحفظ، فتحقق من إمكانية الوصول إلى رد الاتصال من خادم المستندات إلى التطبيق المصدر بدلًا من تغيير سياسة التوزيع الدوري لـ HAProxy. قد تتطلب جلسة WebSocket النشطة المتقطعة إعادة اتصال العميل؛ ولا تضمن فحوصات صحة الواجهة الخلفية تجاوز الفشل بسلاسة في التحرير.

التحقق النهائي: يجب أن يجتاز كل من نقطة نهاية الصحة العامة واختبار التحرير وإعادة الفتح الفعلي بنجاح. احتفظ فقط بالعُقد المعتمدة والمدعومة في التناوب، وتأكد من أن تجديد الشهادة يُعيد تحميل PEM الصحيح، وراقب سجلات HAProxy بحثًا عن استجابات 502/503 متكررة أو انقطاعات WebSocket غير متوقعة.

اترك تعليقاً

أتمتة عمليات النسخ الاحتياطي المتسقة لـ Nextcloud باستخدام Restic و Cron

أتمتة عمليات النسخ الاحتياطي المتسقة لـ Nextcloud باستخدام Restic و Cron

قم بعمل نسخ احتياطية لملفات Nextcloud و MariaDB معًا، وجدول لقطات Restic المشفرة باستخدام cron، وتحقق من الاستعادة دون المخاطرة بالخادم المباشر.

تشغيل خادم أوبونتو في وضع الطوارئ: دليل إنقاذ خطوة بخطوة

تشغيل خادم أوبونتو في وضع الطوارئ: دليل إنقاذ خطوة بخطوة

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

نسخ احتياطي واستعادة صندوق بريد Zimbra CE باستخدام ملفات TGZ

نسخ احتياطي واستعادة صندوق بريد Zimbra CE باستخدام ملفات TGZ

قم بتصدير صندوق بريد فردي من إصدار Zimbra Community Edition، وتحقق من صحة نسخة TGZ الاحتياطية الخاصة به، واستعد العناصر المفقودة دون الكتابة فوق البريد الموجود.

السماح للمستخدمين المعتمدين بإنشاء غرف Jitsi باستخدام تسجيل الدخول عبر Keycloak

السماح للمستخدمين المعتمدين بإنشاء غرف Jitsi باستخدام تسجيل الدخول عبر Keycloak

السماح فقط للحسابات المعتمدة ببدء غرف Jitsi Meet باستخدام Keycloak ومصادقة الرمز المميز، مع إبقاء إمكانية انضمام الضيوف متاحة عند الحاجة.

مزامنة مستخدمي Active Directory مع ONLYOFFICE DocSpace عبر LDAP

مزامنة مستخدمي Active Directory مع ONLYOFFICE DocSpace عبر LDAP

قم بتوصيل ONLYOFFICE DocSpace بـ Active Directory أو OpenLDAP، واستورد المستخدمين والمجموعات بأمان، وقم بتعيين حقول الحساب، وجدول مزامنة موثوقة.

إضافة الخطوط إلى خادم مستندات ONLYOFFICE: دوكر مقابل لينكس

إضافة الخطوط إلى خادم مستندات ONLYOFFICE: دوكر مقابل لينكس

قم بتثبيت الخطوط المخصصة في خادم مستندات ONLYOFFICE، وقارن عمليات تحميل Docker الدائمة مع النسخ المباشرة، وأعد بناء قائمة الخطوط، وتحقق من النتيجة.

دبيان 12 على خادم افتراضي خاص ذي ذاكرة وصول عشوائي منخفضة: كيفية تقليل أعطال نفاد الذاكرة في MySQL

دبيان 12 على خادم افتراضي خاص ذي ذاكرة وصول عشوائي منخفضة: كيفية تقليل أعطال نفاد الذاكرة في MySQL

تشخيص عمليات إيقاف MySQL بسبب نفاد الذاكرة على Debian 12، والتحقق من حدود ذاكرة VPS، وتكوين التبديل، وضبط ذاكرة قاعدة البيانات والتزامن دون تقديم حل شامل.

تثبيت وتوقيع وحدات نواة مخصصة على نظام التشغيل SLES 15 Secure Boot

تثبيت وتوقيع وحدات نواة مخصصة على نظام التشغيل SLES 15 Secure Boot

قم بتحميل وحدة نواة SLES 15 مخصصة دون تعطيل خاصية التمهيد الآمن. طابق النواة قيد التشغيل، ووقّع ملف .ko، وسجّل مفتاح MOK، وتحقق من التحميل.

ضع مستندات ONLYOFFICE خلف HAProxy دون تعطيل التحرير

ضع مستندات ONLYOFFICE خلف HAProxy دون تعطيل التحرير

قم بتكوين HAProxy HTTPS، وإعادة توجيه الرؤوس، ومهلات WebSocket، وفحوصات السلامة لـ ONLYOFFICE Docs، ثم تحقق من التحرير والحفظ.

إعادة توجيه سجلات النظام الآمنة في SLES باستخدام rsyslog وبروتوكول TLS المتبادل

إعادة توجيه سجلات النظام الآمنة في SLES باستخدام rsyslog وبروتوكول TLS المتبادل

إرسال سجلات نظام SLES إلى جامع rsyslog عن بعد عبر TLS مصادق عليه، مع عمليات التحقق من الشهادات، وتخزين الانقطاعات مؤقتًا، واختبارات التسليم.