Jika Anda telah menyimpan alur kerja pengembangan Anda, Anda akan setuju bahwa Docker adalah salah satu pilihan terbaik untuk kontrol versi. Namun, Docker Swarm adalah salah satu fitur Docker yang digunakan untuk mengatur aplikasi yang kompleks.

Mekanisme kerja Docker Swarm mungkin sulit untuk dipecahkan pada awalnya. Tapi jangan khawatir, kami akan menjabarkannya di artikel ini. Jadi apa itu Docker Swarm? Mengapa menggunakannya? Dan bagaimana cara kerjanya?

Apa Itu Docker Swarm, dan Bagaimana Cara Kerjanya?

Docker Swarm mengacu pada sekelompok host Docker (komputer) yang terhubung ke jaringan sebagai cluster untuk mengirimkan tugas-tugas tertentu. Setiap host Docker di cluster ini adalah node, juga disebut node pekerja.

Untuk memastikan distribusi tugas yang efisien, Anda memerlukan node manajer. Idealnya, inisialisasi mode Docker Swarm dimulai dengan node manajer, dan node berikutnya menjadi pekerja.

Sebagai operator, Anda hanya perlu berinteraksi dengan node manager, yang meneruskan instruksi ke pekerja. Selalu, node pekerja menerima alokasi tugas dari node manajer dan menjalankannya sesuai.

instagram viewer

Namun, node manajer juga dapat berpartisipasi dalam pelaksanaan tugas (sebagai pekerja) atau menghadapi manajemen secara langsung. Anda dapat mencegah penjadwalan tugas pada manajer dengan mengubah statusnya dari aktif ke mengeringkan. Tetapi keputusan Anda untuk menetapkan fungsi ganda ini mungkin bergantung pada beberapa faktor. Pada dasarnya, Anda ingin memastikan bahwa ia memiliki sumber daya yang cukup untuk menangani beberapa peran sebelum melakukannya.

Node memang gagal. Jadi, node manajer secara aktif memantau keadaan setiap node pekerja dan mengaktifkan mekanisme toleransi kegagalan untuk menjadwal ulang tugas dari node yang gagal ke node lain.

Tetapi bagaimana jika simpul manajer juga macet? Menariknya, kawanan itu terus berlari. Satu-satunya perangkap adalah Anda tidak akan dapat berkomunikasi dengan node manajer untuk mengontrol cluster lagi.

Pendekatan fail-safe yang umum untuk mencegah hal ini adalah dengan menetapkan peran manajer ke banyak node (Docker merekomendasikan maksimal tujuh per cluster). Anda kemudian dapat memilih node manajer utama dari mereka. Saat manajer utama mogok, salah satu manajer siaga mengambil peran.

Namun, Anda tidak perlu khawatir tentang pergantian peran di antara node atau pemeliharaan status dalam sebuah cluster. Algoritma konsensus rakit (metode toleran kesalahan) yang dibangun ke dalam Docker SwarmKit menangani hal ini.

Mengapa Menggunakan Docker Swarm?

Docker Swarm berguna untuk menerapkan aplikasi kompleks dengan prospek skalabilitas tinggi. Salah satu kasus penggunaan utamanya adalah mendesentralisasikan layanan mikro. Setiap layanan mikro kemudian berbagi wadah serupa dengan yang ada di node pekerja lainnya.

Alasan lain untuk menggunakan Docker Swarm adalah bahwa banyak host menjalankan tugas secara bersamaan dalam sebuah cluster. Ini berbeda dengan Docker Compose, yang hanya memungkinkan Anda menjalankan beberapa container pada satu mesin Docker.

Atribut Docker Swarm yang skalabel ini memungkinkan aplikasi tersedia secara konsisten dengan latensi nol. Itu bahkan salah satu alasan Anda ingin pilih Docker daripada alat virtualisasi lainnya.

Dan apa lagi? Tidak seperti Kontainer Docker tunggal, di mana sebuah kontainer berhenti ketika gagal, Docker Swarm secara otomatis mendistribusikan kembali tugas di antara node pekerja yang tersedia setiap kali gagal.

Docker Swarm juga menyimpan cadangan dari setiap status. Jadi Anda selalu dapat mengembalikan konfigurasi swarm baru ke keadaan sebelumnya. Katakanlah node manager pada swarm sebelumnya gagal; Anda dapat memulai cluster baru dengan lebih banyak node manajer dan mengembalikannya untuk menyesuaikan konfigurasi yang sebelumnya.

Penting juga untuk menyebutkan bahwa interaksi antara node manajer dan node pekerja aman.

Docker memiliki banyak alternatif, dan salah satu yang terdekat adalah Kubernetes. Namun, Docker Swarm mudah digunakan dan lebih otomatis. Misalnya, sementara Anda mungkin perlu menyeimbangkan beban secara manual di beberapa alat orkestrasi lain seperti Kubernetes, Docker Swarm memiliki fitur penyeimbangan beban otomatis, yang memudahkan hidup DevOps.

Arsitektur Kawanan Docker

Arsitektur Docker Swarm berkisar pada layanan, node, dan tugas. Namun, masing-masing memiliki peran dalam menjalankan tumpukan dengan sukses.

Jasa

Layanan Docker Swarm merinci konfigurasi image Docker yang menjalankan semua container dalam swarm. Ini mencakup informasi tentang tugas-tugas dalam sebuah cluster. Misalnya, sebuah layanan mungkin menggambarkan Pengaturan server SQL Dockerized.

Saat Anda menjalankan layanan, itu memaksa node manajer untuk menyinkronkan dengan konfigurasinya. Node manajer kemudian menjalankan sisa node pekerja berdasarkan pengaturan yang ditentukan dalam layanan.

Layanan di Docker Swarm dapat bersifat global atau direplikasi.

Perbedaan di antara mereka adalah bahwa sementara layanan global hanya mendefinisikan satu tugas untuk semua node dalam sebuah cluster, layanan yang direplikasi menentukan jumlah tugas per node.

Node

Sebuah node di Docker Swarm adalah turunan dari seluruh runtime Docker, juga dikenal sebagai mesin Docker. Swarm node dapat berupa mesin fisik atau virtual. Anggap ini sebagai jaringan komputer yang menjalankan proses serupa (wadah).

Biasanya, node menjangkau beberapa komputer dan server yang menjalankan mesin Docker dalam aplikasi kehidupan nyata. Dan seperti yang disebutkan sebelumnya, sebuah node dapat menjadi node manajer atau pekerja, tergantung pada perannya.

Node manajer mendengarkan detak jantung kawanan dan mengontrol node pekerja, yang menjalankan tugas yang diberikan kepadanya oleh node manajer. Seperti yang dinyatakan sebelumnya, Anda dapat memiliki lebih dari satu node manajer dalam swarm. Tetapi idealnya, cobalah untuk membatasi jumlahnya menjadi di bawah tujuh, karena menambahkan terlalu banyak node manajer dapat mengurangi kinerja swarm.

Tugas

Sebuah tugas mendefinisikan pekerjaan yang ditugaskan untuk setiap node di Docker Swarm. Di latar belakang, penjadwalan tugas di Docker Swarm dimulai saat orkestra membuat tugas dan meneruskannya ke penjadwal, yang membuat instance wadah untuk setiap tugas.

Node manajer kemudian menggunakan penjadwal untuk menetapkan dan menetapkan kembali tugas ke node seperti yang diperlukan dan ditentukan dalam layanan Docker.

Kawanan Docker vs. Docker Compose: Apa Perbedaannya?

Orang sering menggunakan Docker Compose dan Docker Swarm secara bergantian. Meskipun keduanya melibatkan menjalankan banyak wadah, keduanya berbeda.

Sementara Docker Compose memungkinkan Anda menjalankan beberapa container pada satu host, Docker Swarm mendistribusikannya ke beberapa mesin Docker dalam sebuah cluster.

Anda menggunakan Docker Compose saat Anda perlu membuat container terpisah untuk setiap layanan di aplikasi Anda. Jadi, ketika satu komponen rusak, itu tidak mengganggu yang lain. Namun, ketika mesin host gagal, seluruh aplikasi juga mogok.

Docker Swarm, bagaimanapun, membantu Anda menjalankan banyak kontainer pada node berkerumun. Jadi, setiap komponen aplikasi Anda berada di beberapa node. Dan ketika satu node yang menangani komponen aplikasi mogok, swarm mengalokasikan tugasnya ke node lain dalam cluster dan menjadwal ulang tugas yang sedang berjalan, mencegah downtime.

Oleh karena itu, meskipun Anda mungkin mengalami downtime di Docker Compose, Docker Swarm memastikan bahwa aplikasi Anda terus berjalan dengan bantuan server cadangan (node ​​pekerja). Namun, Docker 1.13 mendukung penyebaran Docker Compose ke mode Swarm menggunakan penyebaran tumpukan buruh pelabuhan memerintah.

Docker Swarm Membantu Anda Menyebarkan Aplikasi Kompleks

Kontainerisasi telah mengalahkan mesin virtual dalam desain perangkat lunak continuous integration dan continuous delivery (CI/CD). Oleh karena itu, memahami seluk beluk mekanisme Docker Swarm adalah keterampilan plus jika Anda ingin menjadi ahli DevOps yang tak ternilai.

Anda mungkin tahu cara memutar container Docker atau bahkan menjalankan Docker Compose untuk beberapa container dalam satu host. Tetapi Docker Swarm lebih mudah untuk menerapkan aplikasi dengan arsitektur yang kompleks. Ini memecah proses menjadi unit, meningkatkan akses runtime, dan mengurangi atau bahkan menghilangkan kemungkinan downtime.