April 19, 2020

Fixing Issue Celery Open edX Setelah Migrasi Instance

Activities, Android Developer, Ansible, Apache2, Atlassian, Ayo Belajar Linux, Bestpath Network, BLC Telkom Klaten, BSD, Caddy Server, Case Study, Cisco, Cisco Indonesia, Cloud Computing, Cockpit, Custom Weapons, Docker, E-Learning, Engenius, Error, FreeBSD, FreeBSD Indonesia, Komunitas Pengguna Linux Indonesia, KPLI Bulukumba, KPLI Klaten, Let's Encrypt, Linux, MacOS, Microsoft Azure, Microsoft SQL Server, MikroTik, MikroTik Indonesia, MySQL, Nginx, Open edX, OpenSID, Others, PHP, phpMyAdmin, PostgreSQL, Proxmox, Python, Redash, Sendy, SSH, Stories, Subnetting, TP-Link, Ubiquiti, Unix, Virtualization, Windows, X-Mosque, Faizar Septiawan, Icar, siBunglonGanteng, Orang Ganteng, siBunglonLabs

Beberapa hari yang lalu saya memindahkan instance Open edX dan beberapa menit setelah server aktif, Open edX tidak bisa diakses. Cek servicenya, tetapi semua service dalam keadaan aktif namun ketika melihat lognya, ternyata ada error pada celery, kurang lebih errornya seperti berikut:

$ sudo tail -f /edx/var/log/{lms,cms,nginx}/*log
==> /edx/var/log/lms/edx.log <==
Apr 12 02:21:16 beep [service_variant=lms][celery.worker.consumer][env:sandbox] ERROR [beep  1400] [consumer.py:364] - consumer: Cannot connect to amqp://celery:**@127.0.0.1:5672//: [Errno 104] Connection reset by peer.
Trying again in 32.00 seconds...

Dari log diatas, terdapat error message Connection reset by peer, penyebab issue tersebut sebenarnya sudah jelas yaitu kesalahan autentikasi.

Maka perlu dilakukan validasi, apakah user tersebut available atau tidak. Untuk melakukan validasi user, dapat menggunakan command:

$ sudo rabbitmqctl authenticate_user userCeleryedX passwordCeleryedX

Ganti value userCeleryedX dan passwordCeleryedX sesuai user yang digunakan oleh instance tersebut, dapat dicek dari file lms.auth.json dan cms.auth.json.

Jika setelah menjalankan command validasi validasi user terdapat error messege Error: failed to authenticate user, berarti perlu dilakukan pembuatan user tersebut.

Buat user celery dengan menggunakan password yang sama pada file lms.auth.json dan cms.auth.json.

$ sudo rabbitmqctl add_user userCeleryedX passwordCeleryedX

Ganti value userCeleryedX dan passwordCeleryedX sesuai user yang digunakan oleh instance tersebut, dapat dicek dari file lms.auth.json dan cms.auth.json.

Set permission untuk user celery yang baru saja dibuat.

$ sudo rabbitmqctl set_permissions -p / userCeleryedX ".*" ".*" ".*"

Restart service Open edX

$ sudo /edx/bin/supervisorctl restart all

References