Fixing Issue Celery Open edX Setelah Migrasi Instance
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