April 19, 2020

Fixing Issue Celery Open edX Setelah Migrasi Instance

Linux, Unix, BSD, MacOS, Komunitas Pengguna Linux Indonesia, KPLI Klaten, KPLI Bulukumba, MikroTik, MikroTik Indonesia, FreeBSD, FreeBSD Indonesia, Cisco, Cisco Indonesia, BLC Telkom Klaten, Ansible, Nginx, Apache2, Caddy Server, Ayo Belajar Linux, Cloud Computing, e-Learning, Open edX, Proxmox, Sendy, Microsoft SQL Server, MySQL, PostgreSQL, Lets Encrypt, Case Study, Atlassian, Virtualization, Faizar Septiawan, Icar, siBunglonGanteng, siBunglonLabs, Orang Ganteng

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.

  • userCeleryedX

    Sesuai user yang digunakan oleh instance tersebut, dapat dicek dari file lms.auth.json dan cms.auth.json

  • passwordCeleryedX

    Sesuai password 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
  • userCeleryedX

    Sesuai user yang digunakan oleh instance tersebut, dapat dicek dari file lms.auth.json dan cms.auth.json

  • passwordCeleryedX

    Sesuai password 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 instance

$ sudo reboot

References