Dokumen ini menunjukkan kepada Anda cara menyiapkan klaster Ketersediaan Tinggi di mesin developer. Dokumen ini juga memberikan panduan tentang cara mengaktifkan Multikoneksi serta perubahan yang diperlukan untuk klaster Multikoneksi dengan ketersediaan tinggi. Untuk pengaturan produksi, ikuti instruksi relevan yang tercantum di Pengaturan Produksi.
Sebelum Anda memulai pengaturan ini, lihat daftar persyaratan kami.
Untuk menyiapkan klaster Ketersediaan Tinggi, ikuti langkah-langkah berikut:
biz
untuk skrip pengaturanWA_API_VERSION
Untuk menyiapkan klaster Multikoneksi, ikuti langkah-langkah berikut:
Setelah Anda selesai menyiapkan instance, Anda bisa memilih untuk meningkatkannya. Untuk mencopot penginstalan klien, ikuti langkah-langkah ini.
Jika Anda sudah mengikuti instruksi Pengaturan Developer: Instance Tunggal untuk menyiapkan klien API WhatsApp Business pada mesin developer sebelumnya, silakan ikuti panduan Migrasi sebelum melanjutkan dengan bagian lain dari dokumen ini.
Isi panduan ini didasarkan pada asumsi instalasi baru.
Sebelum memulai, Anda perlu menyelesaikan hal berikut:
To install Docker Desktop on your developer machine:
The remaining steps are based on macOS and should be very similar for Linux or Windows 10.
To install Docker using macOS:
Docker Compose is a plugin that is bundled with Docker Desktop and should have installed automatically. For more information about using or Docker Compose, see Overview of Docker Compose. If for some reason Docker Compose was not installed, you can install it by following the instructions located at Install Docker Compose.
Pastikan Anda menyiapkan akun uji lokal di lingkungan pengembangan. Ini untuk pengembangan cepat dan untuk menguji rilis baru. Anda juga sangat disarankan untuk membaca seluruhPanduan Ketersediaan dan Penskalaan untuk mempelajari selengkapnya tentang Ketersediaan Tinggi dan Multikoneksi.
biz
untuk Skrip PengaturanJalankan kode berikut di lokasi pilihan Anda untuk klien API WhatsApp Business:
mkdir ~/biz; cd ~/biz;
File konfigurasi untuk klien API WhatsApp Business berada di repositori GitHub WhatsApp-Business-API-Setup-Scripts. Anda dapat mengatur klien API WhatsApp Business Anda dengan instance database MySQL atau Postgres.
multiconnect-compose.yml
dan db.env
dari direktori instalasi ke ~/biz
direktori yang Anda buat di Langkah 1.multiconnect-compose.yml
dan db.env
dari Direktori Instalasi Postgres ke ~/biz
direktori yang Anda buat di Langkah 1.WA_API_VERSION
Variabel lingkungan WA_API_VERSION
harus diatur ke versi saat ini menggunakan:
export WA_API_VERSION=current-whatsapp-version
Untuk memulai klaster Ketersediaan Tinggi dengan 1 kontainer database, 1 kontainer Webapp, 2 kontainer Master, dan 2 kontainer Coreapp di latar belakang mirip dengan diagram yang ditunjukkan di Introduksi Ketersediaan Tinggi, tayangkan perintah berikut:
docker-compose -f multiconnect-compose.yml up -d db waweb master1 master2 wacore1 wacore2
Output yang dihasilkan akan terlihat seperti berikut:
Creating network "biz_default" with the default driver Creating volume "biz_mysqlData" with local driver Creating volume "biz_whatsappMedia" with local driver Creating biz_db_1 ... done Creating biz_waweb_1 ... done Creating biz_master1_1 ... done Creating biz_master2_1 ... done Creating biz_wacore2_1 ... done Creating biz_wacore1_1 ... done
Anda dapat memeriksa bahwa semua kontainer berstatus AKTIF dengan menayangkan:
docker-compose -f multiconnect-compose.yml ps
Output yang dihasilkan akan terlihat seperti berikut:
Name Command State Ports -------------------------------------------------------------------------------------------------------------------------------------------------------------- biz_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:33060->3306/tcp, 33060/tcp biz_master1_1 /opt/whatsapp/bin/wait_on_ ... Up 0.0.0.0:32931->6250/tcp, 0.0.0.0:32930->6251/tcp, 0.0.0.0:32928->6252/tcp, 0.0.0.0:32926->6253/tcp biz_master2_1 /opt/whatsapp/bin/wait_on_ ... Up 0.0.0.0:32929->6250/tcp, 0.0.0.0:32927->6251/tcp, 0.0.0.0:32925->6252/tcp, 0.0.0.0:32924->6253/tcp biz_wacore1_1 /opt/whatsapp/bin/wait_on_ ... Up 0.0.0.0:32937->6250/tcp, 0.0.0.0:32935->6251/tcp, 0.0.0.0:32933->6252/tcp, 0.0.0.0:32932->6253/tcp biz_wacore2_1 /opt/whatsapp/bin/wait_on_ ... Up 0.0.0.0:32939->6250/tcp, 0.0.0.0:32938->6251/tcp, 0.0.0.0:32936->6252/tcp, 0.0.0.0:32934->6253/tcp biz_waweb_1 /opt/whatsapp/bin/wait_on_ ... Up 0.0.0.0:9090->443/tcp
Secara default, kontainer Webapp akan ditayangkan di port 9090
dan kontainer database akan ditayangkan di port 33060
.
Anda dapat mengunduh dan mengonfigurasi Koleksi Postman kami untuk berinteraksi dengan API WhatsApp Business jika Anda tidak ingin menggunakan baris perintah.
Anda dapat melakukan pemeriksaan kesehatan pada klien API WhatsApp Business menggunakan panggilan API ke node health
.
Output yang dihasilkan akan terlihat seperti berikut:
{ "health": { "master1:b28d835cd579": { "errors": [ { "code": 1011, "title": "Service not ready", "details": "Wacore is not instantiated. Please check wacore log for details." } ] }, "master2:7fe542d305b4": { "gateway_status": "unregistered", "role": "primary_master" }, "wacore1:35a5fabfc79d": { "errors": [ { "code": 1011, "title": "Service not ready", "details": "Wacore is not instantiated. Please check wacore log for details." } ] }, "wacore2:05e1a6d70665": { "errors": [ { "code": 1011, "title": "Service not ready", "details": "Wacore is not instantiated. Please check wacore log for details." } ] } } }
Tanggapan menunjukkan gateway_status
dari unregistered
sebagai gateway_status
untuk kontainer Master utama karena klien API WhatsApp Business belum terdaftar.
Anda dapat mendaftarkan klien API WhatsApp Business menggunakan panggilan API ke nodeaccount
.
Lakukan pemeriksaan kesehatan lagi pada klien API WhatsApp Business menggunakan panggilan API ke node health
setelah menyelesaikan pendaftaran dan pastikan salah satu kontainer CoreApp memiliki gateway_status
dari connected
.
Output yang dihasilkan akan terlihat seperti berikut:
{ "health": { "master1:b28d835cd579": { "gateway_status": "disconnected", "role": "secondary_master" }, "master2:7fe542d305b4": { "gateway_status": "disconnected", "role": "primary_master" }, "wacore1:35a5fabfc79d": { "gateway_status": "connected", "role": "coreapp" }, "wacore2:05e1a6d70665": { "gateway_status": "disconnected", "role": "coreapp" } } }
Catatan: Dalam mode Ketersediaan Tinggi, hanya satu Coreapp (wacore1
dalam contoh ini) akan terhubung ke server Whatsapp; semua node lainnya, termasuk Master utama, akan memiliki gateway_status
dari disconnected
. Jika wacore1
sedang down, wacore2
akan menggantikannya dan terhubung ke server WhatsApp untuk menjaga Ketersediaan Tinggi.
Sekarang, Anda telah menyiapkan klien API WhatsApp Business dalam mode Ketersediaan Tinggi. Dalam mode ini, hanya satu CoreApp yang dapat terhubung ke server WhatsApp untuk mengirim pesan pada waktu tertentu. Jika Anda ingin memiliki beberapa CoreApp yang mengirim pesan secara bersamaan untuk meningkatkan throughput pesan, ikuti langkah-langkahnya di bagian Pengaturan Klaster Multikoneksi Ketersediaan Tinggi di bawah ini.
Gunakan endpoint partisi untuk menyiapkan 2 partisi. Anda seharusnya melihat tanggapan HTTP dengan status 201 Created
.
Anda dapat melakukan pemeriksaan kesehatan pada klien API WhatsApp Business menggunakan panggilan API ke node health
.
Output yang dihasilkan akan terlihat seperti berikut:
{ "health": { "master1:b28d835cd579": { "gateway_status": "disconnected", "role": "secondary_master" }, "master2:7fe542d305b4": { "gateway_status": "connected", "role": "primary_master" }, "wacore1:35a5fabfc79d": { "gateway_status": "connected", "role": "coreapp" }, "wacore2:05e1a6d70665": { "gateway_status": "connected", "role": "coreapp" } } }
Catatan: Dalam mode Multikoneksi dengan 2 partisi, 2 Coreapps (wacore1
dan wacore2
dalam contoh ini) akan terhubung ke server WhatsApp dan Master utama (master2
dalam contoh ini) juga akan terhubung ke server WhatsApp.
Sejauh ini dalam contoh ini, Anda memiliki 2 kontainer CoreApp dan muatan pesan dibagi di antara keduanya. Namun, jika salah satu kontainer CoreApp sedang down, setengah dari pengiriman pesan Anda akan gagal. Untuk mempertahankan Ketersediaan Tinggi dalam pengaturan Multikoneksi baru ini, Anda dapat memulai Coreapp ketiga untuk menoleransi 1 kegagalan Coreapp, yang mirip dengan diagram yang ditunjukkan di Introduksi Multikoneksi.
Untuk memulai kontainer CoreApp ketiga, jalankan perintah berikut:
docker-compose -f multiconnect-compose.yml up -d wacore3
Output yang dihasilkan akan terlihat seperti berikut:
biz_db_1 is up-to-date biz_waweb_1 is up-to-date biz_master1_1 is up-to-date Creating biz_wacore3_1 ... done
Lakukan pemeriksaan kesehatan lagi untuk memverifikasi bahwa semua node sudah berjalan dengan benar menggunakan panggilan API ke node health
.
Output yang dihasilkan akan terlihat seperti berikut:
{ "health": { "master1:b28d835cd579": { "gateway_status": "disconnected", "role": "secondary_master" }, "master2:7fe542d305b4": { "gateway_status": "connected", "role": "primary_master" }, "wacore1:35a5fabfc79d": { "gateway_status": "connected", "role": "coreapp" }, "wacore2:05e1a6d70665": { "gateway_status": "connected", "role": "coreapp" }, "wacore3:23b50199bec2": { "gateway_status": "disconnected", "role": "coreapp" } } }
Kontainer Coreapp baru (wacore3
dalam contoh ini) sekarang bertindak sebagai kontainer cadangan, tetapi saat ini tidak terhubung ke server WhatsApp. Jika wacore1
atau wacore2
berhenti berfungsi, wacore3
akan terhubung ke server WhatsApp untuk mempertahankan jumlah partisi keseluruhan sebanyak 2.
Akan ada waktu henti selama proses peningkatan.
Sangat direkomendasikan untuk mencadangkan pengaturan aplikasi Anda saat ini sebelum meningkatkannya untuk memastikan Anda dapat kembali aktif dengan cepat. Harap ikuti dokumentasi Pencadangan dan Pemulihan.
Selalu direkomendasikan untuk melakukan peningkatan selama waktu Anda yang paling tidak sibuk.
WA_API_VERSION
ke Versi BaruVariabel lingkungan WA_API_VERSION
harus diperbarui ke nomor versi terbaru menggunakan:
export WA_API_VERSION=new-whatsapp-version
Mulai ulang kontainer Docker dengan menjalankan:
docker-compose -f multiconnect-compose.yml up -d
v2.23.x
ke AtasSekarang Anda dapat menggunakan layanan peningkatan database yang memungkinkan Anda untuk meningkatkan database saat aplikasi Anda masih berjalan agar terhindar dari waktu henti.
File dbupgrade-compose.yml memiliki kolom yang menandakan versi kontainer.
Contoh:
services: dbupgrade: image: docker.whatsapp.biz/coreapp:v${WA_API_VERSION:-2.21.3}
Untuk meningkatkan penginstalan, mulailah kontainer dbupgrade-service dengan variabel lingkungan WA_API_VERSION
yang diatur ke versi terbaru:
WA_API_VERSION=new-whatsapp-version docker-compose -f dbupgrade-compose.yml up -d
Catatan: Jika Anda menggunakan orkestrasi yang memulai ulang kontainer saat keluar, terlepas dari kode keluar, mulailah layanan dengan variabel lingkungan EXIT_ON_SUCCESS
diatur ke FALSE
agar tidak keluar dari kontainer ketika kode keluar adalah 0
.
Jika peningkatan database berhasil, kontainer akan keluar dengan kode 0
. Anda dapat menggunakan perintah Docker berikut untuk melacak status:
docker wait your-database-upgrade-container-name
Outputnya adalah kode keluar dari kontainer dbupgrade-service.
Mulai ulang kontainer CoreApp dan Webapp Docker dengan variabel lingkungan WA_API_VERSION
yang diatur ke versi terbaru:
WA_API_VERSION=new-whatsapp-version docker-compose -f multiconnect-compose.yml up -d
Sangat direkomendasikan untuk mencadangkan pengaturan aplikasi Anda saat ini sebelum menghapus instalan. Harap ikuti dokumentasi Pencadangan dan Pemulihan.
Jika Anda perlu mereset lingkungan pengembangan dengan menghapus semua kontainer, jalankan perintah berikut dari direktori yang berisi file multiconnect-compose.yml
:
docker-compose -f multiconnect-compose.yml down
Untuk menghilangkan semua volume yang ditentukan dalam file multiconnect-compose.yml
selain kontainernya, jalankan down
dengan parameter -v
:
docker-compose -f multiconnect-compose.yml down -v
Untuk mengumpulkan catatan dari semua kontainer, jalankan perintah berikut:
docker-compose -f multiconnect-compose.yml logs > debug_output.txt
Untuk mengumpulkan catatan layanan tertentu, tambahkan nama layanan (contoh: waweb
, master1
, wacore1
) ke perintah docker-compose logs
:
docker-compose -f multiconnect-compose.yml logs waweb > debug_output.txt
Anda dapat menemukan catatan dalam file debug_output.txt
di direktori saat ini.
Perangkat lunak ini menggunakan kode FFmpeg yang dilisensikan di bawah LGPLv2.1 dan sumbernya bisa diunduh di sini.