مرحبًا!
لم يعد مثيل Discourse الخاص بي يعمل (لم قمت بأي تغيير من جانبي).
في ملف production.log، ظهر لي هذا الرسالة:
Error connecting to Redis on localhost:6379 (Errno::ENETUNREACH) subscribe failed,
ما حاولت فعله حتى الآن:
إعادة تشغيل الخادم
تحديث Docker + إعادة تشغيل الخادم + إعادة بناء التطبيق
أنا جديد نسبيًا في Docker وDiscourse، لذا لا أعرف ما الذي يمكنني فعله بعد ذلك
نظام التشغيل المضيف: 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?).
أي مساعدة أو نصيحة ستكون مُقدَّرة
شكرًا مسبقًا!
إعجابَين (2)
pfaffman
(Jay Pfaffman)
23 يوليو 2020، 1:58م
2
يبدو أن هناك مشكلة تتعلق بـ iptables و Docker. هذه هي الأمور التي يجب البحث عنها. إنها ليست مشكلة في Discourse.
إعجابَين (2)
أظن أن مشكلة Redis ترتبط أكثر بـ Discourse وليس بـ iptables أو Docker، أليس كذلك؟
pfaffman
(Jay Pfaffman)
23 يوليو 2020، 6:30م
4
يبدو لي أن شبكات 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)
csmu
(Keith John Hutchison - Ceiteach Seán Mac Úistin)
5 يونيو 2024، 9:22ص
7
بعد قراءة هذا، أوقفت Docker على خادمنا Centos
systemctl stop docker
ثم بدأته
systemctl start docker
تم حل المشكلة.
شكراً @pfaffman
إعجاب واحد (1)