تعذر الوصول إلى Discourse فجأة

مرحبًا!

لم يعد مثيل Discourse الخاص بي يعمل (لم قمت بأي تغيير من جانبي).

في ملف production.log، ظهر لي هذا الرسالة:
Error connecting to Redis on localhost:6379 (Errno::ENETUNREACH) subscribe failed,

ما حاولت فعله حتى الآن:

  • إعادة تشغيل الخادم
  • تحديث Docker + إعادة تشغيل الخادم + إعادة بناء التطبيق

أنا جديد نسبيًا في Docker وDiscourse، لذا لا أعرف ما الذي يمكنني فعله بعد ذلك :frowning:

نظام التشغيل المضيف: CentOS 7
الوكيل: Apache
Docker: أحدث إصدار

على الخادم المضيف، قمت بتثبيت fail2ban وfirewalld.
في سجلات firewalld، ظهرت أسطر غريبة:

2020-07-23 14:00:52 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION-STAGE-1' failed: iptables: No chain/target/match by that name.

2020-07-23 14:00:52 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -F DOCKER-ISOLATION-STAGE-2' failed: iptables: No chain/target/match by that name.

2020-07-23 14:00:52 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION-STAGE-2' failed: iptables: No chain/target/match by that name.

2020-07-23 14:00:52 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -F DOCKER-ISOLATION' failed: iptables: No chain/target/match by that name.

2020-07-23 14:00:52 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION' failed: iptables: No chain/target/match by that name.

2020-07-23 14:00:53 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DROP' failed: iptables: Bad rule (does a matching rule exist in that chain?).

2020-07-23 14:00:53 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DROP' failed: iptables: Bad rule (does a matching rule exist in that chain?).

أي مساعدة أو نصيحة ستكون مُقدَّرة :slight_smile:
شكرًا مسبقًا!

إعجابَين (2)

يبدو أن هناك مشكلة تتعلق بـ iptables و Docker. هذه هي الأمور التي يجب البحث عنها. إنها ليست مشكلة في Discourse.

إعجابَين (2)

أظن أن مشكلة Redis ترتبط أكثر بـ Discourse وليس بـ iptables أو Docker، أليس كذلك؟

يبدو لي أن شبكات Docker معطلة، لذا حتى لو كان Discourse و Redis يعملان بشكل صحيح، فلا يمكن لـ Discourse الوصول إلى Redis لأن الشبكات و/أو Docker معطلة.

أعتقد أن هذه المشاكل ظهرت في وقت ما بعد تثبيت firewalld، وهذا ما أدى إلى تعطيل تثبيتك.

إعجابَين (2)

شكرًا لك، جاي.

أوقفت خدمة جدار الحماية، وأعدت تشغيل Docker والحاوية المعطلة، لكن الخطأ لا يزال كما هو (في production.log):

Error connecting to Redis on localhost:6379 (Errno::ENETUNREACH) subscribe failed, reconnecting in 1 second.

اتصلت بالحاوية عبر Docker:

docker exec --privileged -it <container id> bash

أستطيع رؤية أن Redis يعمل:

redis 45 0.2 0.1 45936 4352 ? Sl 05:29 0:02 /usr/bin/redis-server *:6379

هل لديك أي فكرة؟

لقد حققت بعض التقدم. تستخدم إعداداتي Apache 2.4 كوكيل. في الإعدادات، أضفت ما يلي:

RemoteIPHeader X-Forwarded-For

للتتبع عنوان IP الأصلي.
بعد إعادة تشغيل httpd، تمكنت من الوصول إلى discourse (مع تنبيه بشأن انتهاء صلاحية شهادة SSL). قمت بإصلاح هذه المشكلة أيضًا، والآن يعمل كل شيء بشكل جيد ولكن مع تعطيل firewalld.

لقد وجدت العديد من المنشورات حول المشاكل بين Docker و firewalld على CentOS 7. لذلك سأعود إلى استخدام iptables.

بخصوص رسالة خطأ Redis، بعد الخطوات المذكورة أعلاه، تظهر هذه الرسالة فقط عند إيقاف Docker. عند إعادة التشغيل، لا تظهر، لذا أعتقد أن هذا أمر مقبول.

شكرًا!

إعجابَين (2)

بعد قراءة هذا، أوقفت Docker على خادمنا Centos

systemctl stop docker

ثم بدأته

systemctl start docker

تم حل المشكلة.

شكراً @pfaffman

إعجاب واحد (1)