Apache Cassandra adalah salah satu database yang banyak digunakan, terutama jika anda adalah developer API Gateway. Beberapa product API Gateway seperti axway dan kong menggunakan database Apache Cassandra untuk menyimpan seluruh konfigurasi API Gateway. Agar data lebih aman ketika terjadi sesuatu yang tidak diinginkan pada database Apache Cassandra maka dibutuhkan suatu proses replication pada database tersebut. Secara default, Apache Cassandra mendukung replication dimana replication yang ditawarkan dari Apache Cassandra adalah master - master, sehingga kita tidak perlu membuat 2 konfigurasi seperti konfigurasi master - slave pada MySQL atau mariadb. Pada artikel ini, penulis akan membahas mengenai bagaimana cara membuat replication di dalam 1 cluster apache cassandra dengan menggunakan docker swarm.
Arsitektur Cluster Apache Cassandra
Arsitektur cluster Apache Cassandra yang akan kita gunakan adalah sebagai berikut
Pada gambar diatas terdapat :
6 Node Apache Cassandra, node disini adalah satu instalasi Apache Cassandra, dimana 1 node hanya dipasang pada 1 server, maka seharusnya kita menggunakan 6 server.
3 Rack, rack disini untuk menentukan replication akan dilakukan secarah horizontal
2 Data Center (data center dan data recovery), di dalam cassandra biasanya penulis menentukan 2 data center sehingga data center pertama adalah sebagai data center pada umumnya dan data ceter kedua sebagai data recovery.
1 Cluster
Apa Itu Docker Swarm
Sebelum membahas tentang arsitektur nya, kita akan membahas terlebih dahulu mengenai docker swarm.
Docker Swarm adalah Salah satu product nya docker untuk dapat mendeploy container pada multihost.
Multihost disini adalah di banyak server. Misalnya kita mempunyai 2 server, misalnya server A dan server B. Masing - masing server akan dilakukan instalasi docker, dan masing - masing docker mempunyai 1 container yang sedang berjalan. Bagaimana caranya agar container yang terdapat pada server A dan melakukan komunikasi dengan container yang ada pada server B, sedangkan jaringan yang terdapat pada server berbeda dengan jaringan yang terdapat di dalam masing - masing container. Jawaban nya adalah dengan menggunakan docker swarm, dengan menggunakan docker swarm maka docker yang yang terdapat di dalam beberapa host dapat kita lakukan cluster sehingga seakan - akan docker tersebut terdapat pada 1 host. Dengan menggunakan docker swarm, kita bebas menetukan container tersebut ingin di deploy ke host yang diinginkan.
Arsitektur Cluster Apache Cassandra Pada Docker Swarm
Berikut adalah arsitektur yang akan digunakan.
Pada gambar diatas terdapat
2 server yaitu dengan IP 192.168.50.2 dan 192.168.50.3
3 container di masing - masing server, di dalam 1 container terdapat 1 node cassandra
Dari gambar diatas dapat kita lihat bahwa antar server, terdapat jaringan fisik misalnya LAN dan sebagainya, sedangkan di dalam docker container terdapat jaringan tersendiri, sehingga untuk menyambungkan container antar server/host maka digunakan jaringan overlay.
Jaringan Overlay adalah jaringan komputer virtual yang dibangun di atas jaringan lain.
Jaringan overlay ini nantinya akan dibuatkan oleh docker swarm sehingga kita tidak perlu melakukan konfigurasi secara manual, sehingga setiap container yang berbeda host dapat berkomunikasi pada 1 jaringan overlay.
Setup Centos 7 Dengan Vagrant
Pada artikel ini, penulis akan menggunakan vagrant untuk virtualisasi 2 server, bagi yang belum paham vagrant, silahkan simak artikel Belajar Vagrant. Silahkan buat sebuah file Vagrantfile lalu masukkan code berikut.
Dari konfigurasi diatas, kita membuat 2 server dengan masing - masing ip yaitu 192.168.50.2 dan 192.168.50.3. Sistem operasi yang kita gunakan adalah centos 7. Setelah selesai, silahkan jalankan perintah berikut untuk menjalankan kedua server tersebut.
Setelah selesai, silahkan akses kedua vagrant tersebut dengan perintah
Lakukan perintah berikut pada kedua server diatas. Silahkan login dengan user dengan perintah.
Kemudian jalankan perintah berikut untuk menghapus docker versi lama
Jalankan perintah berikut untuk instalasi config manager yum
Lalu tambahkan repo docker pada centos dengan perintah berikut.
Lalu lakukan update dengan perintah
Setelah selesai, lakukan instalasi docker dengan perintah
Setelah selesai, silahkan jalankan docker dengan perintah
Setup Docker Swarm
Silahkan akses server master, lalu jalankan perintah berikut untuk inisialisasi docker swarm
IP diatas adalah IP dari server master, jika berhasil maka akan muncul output seperti berikut.
Lalu silahkan akses server worker lalu jalankan perintah join seperti berikut
Perintah join tersebut berfungsi untuk mendaftarkan server/host pada docker swarm master. Setelah selesai, silahkan akses server master kembali lalu jalankan perintah berikut untuk melihat node / host / server apa saja yang telah terdaftar.
Dan berikut adalah outputnya.
Setelah selesai, langkah berikut nya yaitu kita akan memberikan penamaan kepada setiap node / host / server agar nantinya kita dapat menentukan sebuah container dapat di deploy pada node / host / server yang mana. Silahkan jalankan perintah berikut untuk melakukan penamaan label pada node / host / server master dan worker.
ID diatas dapat dilihat dengan perintah menampilkan semua node yang telah kita lakukan sebelumnya.
Membuat Compose Cassandra Untuk Docker Swarm
Langkah selanjutnya, kita akan membuat sebuah file yaitu docker-compose.yml, isinya sama seperti konfigurasi docker compose hanya saja terdapat penambahan untuk kebutuhan docker swarm, silahkan buat file docker-compose.yml di dalam server master, lalu tambahkan code berikut.
Setelah selesai, silahkan jalankan perintah berikut untuk melakukan pull image cassandra terlebih dahulu.
Setelah selesai, silahkan jalankan semua cassandra dengan perintah berikut
Jika berhasil, silahkan cek service nya dengan perintah
Maka akan muncul output seperti berikut
Silahkan cek container yang sudah jalan dengan perintah
Maka akan muncul output seperti berikut
Cari NAMES yang memiliki nama cassandra_cassandra_dc_1, misalnya jika dilihat dari atas, kita menemukan nya di cassandra_cassandra_dc_1.1.qj4nikx2x9qweqrjp5h2i644a. Lalu silahkan akses container tersebut dengan perintah.
Lalu jalankan perintah berikut untuk mengecek cluster cassandra
Jika berhasil maka akan muncul output seperti berikut.
Sekian artikel mengenai Belajar Membuat Cluster Apache Cassandra Dengan Docker Swarm dan terima kasih :).