Persistent Volume di Cluster Docker Swarm

Image

Pada artikel ini, saya ingin membagi langkah langkah cara konfigurasi persistent volume yang digunakan di cluster Docker Swarm

Persistent volume dapat digunakan terutama jika kita memerlukan storage tetap di cluster Docker Swarm. Misalnya, pada cluster Docker Swarm kita terdapat container aplikasi database. Jika sewaktu-waktu terjadi masalah pada salah 1 node dan container tidak berjalan di node tersebut, kemudian container aplikasi database tersebut dijalankan kembali di node lain, data data yang sebelumnya sudah tersimpan tidak hilang, meskipun container dijalankan di node yang berbeda ketika container dijalankan sebelumnya.

Pada artikel ini, saya menggunakan lingkungan sistem Cluster Docker Swarm yang terdiri atas 1 node master dan 2 node worker. Node dijalankan di atas Ubuntu Linux 20.04 yang berjalan di AWS EC2. Namun konfigurasi ini juga sudah pernah saya coba jalankan di On Premise dan dapat berjalan.

Untuk persistent volume menggunakan GlusterFS. Nantinya 3 node tersebut akan terhubung ke 1 logical volume yang dikonfigurasi via Gluster

Skenario yang digunakan pada artikel ini adalah membuat service/stack aplikasi database via container. Database yang digunakan adalah MariaDB. Nantinya saya akan mensimulasikan ketika container berjalan di node yang berbeda namun data dalam database tetap sama atau tidak berubah.

Topologinya jika digambarkan sebagai berikut:

Image

Sebelum memulai konfigurasi, ada baiknya juga untuk memastikan port port yang digunakan oleh GlusterFS sudah dibuka di firewall. Untuk dokumentasi port yang digunakan, silahkan cek dari dokumentasi di web GlusterFS berikut:

Gluster FAQ

Berikut langkah-langkah yang dilakukan untuk konfigurasi persistent volume Docker Swarm menggunakan GlusterFS:

  1. Mapping IP setiap host yang akan terhubung ke dalam Cluster Gluster. Masukkan informasi IP di /etc/hosts. Lakukan ini di setiap node.

    Image

  2. Install dependancy dan tambahkan repository gluster. Lakukan ini di setiap node.

     sudo apt-get install software-properties-common -y  
     sudo add-apt-repository ppa:gluster/glusterfs-3.12  
    

    Image

    Image

  3. Update apt dan install GlusterFS server. Lakukan ini di setiap node.

     sudo apt-get update
     sudo apt install glusterfs-server -y
    

    Image

    Image

  4. Start service glusterd dan enable service glusterd agar berjalan sewaktu startup. Lakukan ini di di setiap node.

     sudo systemctl start glusterd
     sudo systemctl enable glusterd
    

    Image

  5. Generate SSH keygen di setiap node.

     ssh-keygen -t rsa
    

    Image

  6. Peer probe node yang join di cluster Gluster. Lakukan command ini di master node dan jalankan command sebagai root. Pastikan probe success di setiap node.

     su -
     gluster peer probe [node_1]; gluster peer probe [node_2]; gluster peer probe [node_3]
    

    Image

  7. Cek setiap node sudah terhubung di dalam cluster Gluster.

     gluster pool list
    

    Image

  8. Buat directory Gluster di tiap node.

    Image

  9. Buat Gluster Volume yang nantinya akan digunakan sebagai logical volume di cluster. Kemudian jalankan volume-nya. Jalankan ini di master node.

     sudo gluster volume create [volume_name] replica [number_of_replicas] [volume_path]
     sudo gluster volume start [volume_name]
    

    Image

  10. Mount Gluster di setiap node dan konfigurasi agar path tidak lepas ketika server mengalami restart atau boot ulang. Pada contoh ini saya mount ke folder /mnt di setiap node. Lakukan ini di setiap node.

    echo 'localhost:/volume-1 /mnt glusterfs defaults,_netdev,backupvolfile-server=localhost 0 0' >> /etc/fstab
    mount.glusterfs localhost:[logical_volume_name] [local_path]
    chown -R root:docker /mnt
    

    Image

  11. Check disk di setiap node. Output yang diharapkan adalah setiap node sudah berhasil menampilkan logical volume Gluster.

    Image

  12. Simulasi membuat folder baru di node-1.

    Image

  13. Ekspektasi output yang diharapkan adalah di node-2 dan node-3 secara otomatis akan terbentuk 1 folder baru dengan nama folder yang sama dengan yang telah dibuat di node-1.

    Image

  14. Simulasi membuat docker stack yang menjalankan service container database MariaDB dan adminer untuk web interface DB dan dijalankan di node-2.

    Image

  15. Simulasi membuat database dummy dan buat 1 table dummy.

    Image

  16. Kemudian matikan stack service yang dijalankan di poin 14.

  17. Simulasikan kembali menjalankan docker stack yang menjalankan servcie container database MariaDB dan adminer namun kali ini dijalankan di node-3.

    Image

  18. Ekspektasi output yang diharapkan adalah ketika akses database, data yang sudah dibuat di node-2 sebelumnya, kali ini sudah terbentuk tanpa harus dibuat terlebih dahulu. Karena data sudah tersimpan di logical persistent volume Gluster.

    Image

Sekian informasi terkait konfigurasi persistent volume Docker Swarm menggunakan Gluster.
Semoga bermanfaat.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

Situs yang Didukung WordPress.com.

Atas ↑

%d blogger menyukai ini: