Docker Swarm Untuk Mencapai Ketersediaan Tinggi



Blog di Docker Swarm ini, menjelaskan kekuatan pengaturan cluster mesin Docker melalui Docker Swarm yang dikonfigurasi untuk mencapai Ketersediaan Tinggi.

Apa fitur terpenting dari aplikasi berbasis web? Ada banyak, tapi untukku ketersediaan tinggi adalah yang paling penting. Itulah yang Docker Swarm bantu kami capai! Ini membantu dalam aplikasi yang sangat tersedia.

Dalam saya blog sebelumnya , Saya menjelaskan cara kerja Docker Compose. Blog di Docker Swarm ini merupakan kelanjutan dari yang sebelumnya dan di sini manfaat menggunakan Docker Swarm untuk membuat container aplikasi multi-container apa pun telah dijelaskan.





Dalam kasus blog ini, ini hanya aplikasi Angular yang akan menjadi Docker Swarm.
Catatan : Metode untuk mengemas aplikasi MEAN Stack sama.

Jadi, Apa Itu Docker Swarm?

Docker Swarm adalah teknik untuk membuat dan memelihara cluster Mesin Docker . Mesin Docker dapat dihosting di node yang berbeda, dan node ini yang berada di lokasi terpencil membentuk a Gugus saat terhubung dalam mode Swarm.



Mengapa Menggunakan Docker Swarm?

Untuk alasan yang sudah disebutkan! Mencapai ketersediaan tinggi tanpa waktu henti adalah prioritas bagi setiap penyedia layanan di luar sana. Akankah ketersediaan tinggi membuat klien Anda terkesan? Nah, mereka tidak akan terkesan jika menghadapi waktu henti. Itu adalah no-brainer.

Manfaat Lain dari Docker Swarm

Seperti banyak layanan lainnya, Docker Swarm melakukan otomatis penyeimbang beban untuk kita. Oleh karena itu, insinyur DevOps tidak perlu merutekan permintaan pemrosesan ke node lain jika salah satunya gagal. Manajer cluster secara otomatis akan melakukan load balancing untuk kita.

Akses terdesentralisasi adalah keuntungan lain. Apa artinya? Artinya semua node dapat diakses dengan mudah dari pengelola. Manajer juga akan meminta node secara teratur, dan melacak kesehatan / statusnya untuk mengatasi waktu henti. Namun, node tidak dapat mengakses atau melacak layanan yang berjalan di node / manajer lain.



Anda dapat memeriksa no. kontainer yang berjalan di sebuah node, meningkatkan tidak. wadah atau menurunkan tidak. berdasarkan kebutuhan kami, hanya dengan menjalankan satu perintah.

Bahkan setelah aplikasi diterapkan, kami dapat mengeluarkan pembaruan bergulir dan pastikan CI (Continuous Integration) tercapai. Pembaruan bergulir dikeluarkan untuk satu node demi node lainnya sehingga memastikan tidak ada downtime dan beban didistribusikan antara node lain di cluster.

Jadi apa selanjutnya? Untuk melakukan yang sudah jelas. Mulailah dengan Docker Swarm jika Anda sudah bekerja di Docker atau jika organisasi Anda ingin mengemas layanan web yang andal.

Catatan : Mesin Docker diinstal pada host / server independen atau di beberapa VM dalam sebuah host.

Memulai Dengan Mode Swarm

Docker Swarm diprakarsai oleh manajer, atau begini, instance yang memulai cluster Swarm menjadi manajer. Perintah untuk memulai cluster adalah:

$ buruh pelabuhan swarm init --advertise-addr ip-address

Di sini, tanda '–advertise-addr' digunakan untuk mengiklankan dirinya sendiri ke node lain yang ingin bergabung dengan cluster. Alamat IP manajer perlu ditentukan bersama dengan bendera. Di bawah ini adalah contoh tangkapan layar.

buruh pelabuhan perintah init - buruh pelabuhan swarm - edureka

Saat cluster Swarm dimulai, token dibuat di ujung pengelola. Token ini perlu digunakan oleh node lain untuk bergabung dengan cluster swarm.

Bagaimana tepatnya? Salin seluruh token yang dihasilkan di mesin buruh pelabuhan manajer, tempelkan di mesin buruh pelabuhan node dan jalankan. Bagian yang disorot dari tangkapan layar di atas adalah token. Ketika token dijalankan pada node pekerja, itu akan terlihat seperti gambar di bawah ini.

Setiap node yang bergabung dengan cluster nantinya dapat dipromosikan menjadi manajer. Jika Anda ingin mesin buruh pelabuhan bergabung sebagai pengelola, jalankan perintah di bawah ini di akhir pengelola:

$ docker swarm join-token manager

Dan di lain waktu, jika Anda ingin token untuk sebuah node bergabung dengan cluster, jalankan perintah di bawah ini:

$ docker swarm join-token node

Silakan, dan jalankan token di setiap node yang Anda inginkan, untuk bergabung dengan cluster. Ketika semua itu selesai, Anda dapat menjalankan perintah daftar node pekerja pelabuhan untuk memeriksa berapa banyak node telah bergabung dengan cluster bersama dengan statusnya. Perintahnya adalah:

$ node docker ls

Tangkapan layarnya ada di bawah ini:

Membuat Gambar Docker Untuk Aplikasi Angular

Jika semuanya baik-baik saja, maka kita dapat memulai layanan Swarm kita, asalkan Image Docker dibuat. Image Docker dapat dibangun dari Dockerfile. Dockerfile yang digunakan untuk membangun aplikasi di bawah ini:

DARI node: 6 JALANKAN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app JALANKAN cache npm bersih JALANKAN npm instal COPY. / usr / src / app TAMPILKAN 4200 CMD ['npm', 'start']

Dockerfile digunakan untuk menjalankan sekumpulan perintah bersama-sama untuk membangun image Docker kustom dari image dasar. Seperti yang Anda lihat, gambar dasar yang saya gunakan adalah 'Node: 6'. NodeJS adalah gambar I dari Docker Hub yang ditandai dengan versi 6.

Saya kemudian membuat direktori Docker baru di dalam wadah dan menjadikannya direktori kerja di dalam wadah saya.

Saya menyalin file 'package.json' dari komputer lokal saya ke direktori kerja penampung. Saya kemudian menentukan perintah 'RUN npm cache clean' dan 'RUN npm install'. npm install perintah mengunduh versi dependensi yang disebutkan dalam file package.json.

Saya kemudian menyalin semua kode proyek dari mesin lokal ke container, mengekspos nomor port 4200 untuk mengakses aplikasi Angular di browser dan akhirnya, saya menentukan perintah npm start yang mengemas aplikasi.

Sekarang, untuk membuat image Docker berdasarkan Dockerfile ini, jalankan perintah di bawah ini:

$ buruh pelabuhan membangun -t angular-image.

catatan: Gambar Docker perlu dibangun di semua node di cluster. Tanpanya, kontainer tidak dapat diputar di mesin Docker lainnya.

Memulai Layanan Docker Swarm

Mengingat bahwa Gambar Docker kami dibuat, kami dapat memutar container dari gambar ini. Tapi, kami akan melakukan sesuatu yang lebih baik: membuat layanan Docker Swarm darinya. Perintah untuk membuat swarm service adalah:

bagaimana mengubah ganda menjadi int di java
$ layanan buruh pelabuhan buat --name 'Angular-App-Container' -p 4200: 4200 angular-image

Di sini, flag 'name' digunakan untuk memberi nama pada layanan saya dan flag 'p' digunakan untuk mengekspos port kontainer ke port host. Di file package.json, saya telah menentukan port kontainer tempat aplikasi Angular harus dihosting. Dan 4200 dalam perintah ini membantu memetakan port container 4200 ke port host 4200. 'angular-image' adalah nama gambar yang saya buat sebelumnya.

Ingat : Saat kami membuat layanan, layanan dapat dihosting di mesin buruh pelabuhan mana pun di kluster. Manajer gerombolan akan memutuskan di mana itu akan diselenggarakan. Namun, di mana pun node itu di-host, aplikasi dapat diakses di localhost: 4200 dari salah satu node yang terhubung di cluster.

Bagaimana mungkin? Karena Swarm secara internal mengekspos nomor port agar dapat diakses oleh setiap node lain di cluster. Artinya, port no. 4200 pada setiap node / manager dalam cluster akan membuat aplikasi Angular.

Sekarang apa? Apakah wadahnya aktif?

Anda dapat memverifikasi apakah layanan dimasukkan ke dalam container dengan menjalankan perintah daftar layanan buruh pelabuhan. Namun, mungkin perlu waktu beberapa menit untuk menerapkan penampung. Di bawah ini adalah perintahnya:

$ layanan buruh pelabuhan ls

Perintah ini akan mencantumkan semua layanan yang dikelola oleh cluster Swarm. Dalam kasus kami, itu harus menampilkan satu wadah aktif. Lihat gambar di bawah untuk referensi.

Di sini, “REPLICAS = 1/1” menunjukkan bahwa ada satu 'layanan' dari penampung tersebut, di cluster. Dan 'MODE = direplikasi' menunjukkan bahwa layanan direplikasi pada semua node di cluster.

Sekarang, untuk mengidentifikasi di mana node / manager, aplikasi di-host, kita dapat menjalankan perintah ps command docker service diikuti dengan nama container. Perintahnya adalah:

$ layanan buruh pelabuhan ps Angular-App-Container

Tangkapan layar untuk hal yang sama ada di bawah.

Ini menyebutkan detail tentang node tempat aplikasi dihosting bersama dengan perintah yang digunakan untuk memulai layanan.

Perintah 'docker ps' menyoroti detail tentang container aktif. Perintahnya adalah:

$ buruh pelabuhan ps

Lihat gambar di bawah untuk referensi.

Namun, perintah ini hanya akan berfungsi pada manajer cluster dan node tempat layanan sebenarnya dihosting.

Untuk memeriksa berapa banyak node yang berjalan, jalankan perintah daftar node. Perintahnya adalah:

$ node docker ls

Untuk memeriksa container yang berjalan di host tertentu, jalankan perintah node ps. Perintahnya adalah:

$ node docker ps

Jika Anda ingat, saya sebelumnya menyebutkan bahwa layanan saat ini berjalan dalam MODE yang direplikasi. Artinya, layanan direplikasi di semua node dalam cluster. Apakah menurut Anda ada alternatif lain?

Benar! Ada yang disebut MODE Global. Dalam mode ini, ada layanan container ini yang berjalan di setiap / manager di cluster. Ingatlah untuk menghentikan layanan / kontainer saat ini sebelum memutar kumpulan kontainer lainnya.

Perintah untuk itu adalah:

$ layanan buruh pelabuhan rm Angular-App-Container

Perintah untuk memutar container dalam mode Global adalah:

$ layanan buruh pelabuhan buat --name 'Angular-App-Container' -p 4200: 4200 --mode global angular-image

Ini akan membuat 3 layanan pada 3 node di cluster kami. Anda dapat memverifikasinya dengan menjalankan perintah daftar layanan buruh pelabuhan. Tangkapan layarnya ada di bawah.

Ketika perintah ps layanan buruh pelabuhan dijalankan, Anda akan melihat sesuatu seperti ini:

Seperti yang Anda lihat, dikatakan bahwa mode direplikasi dan replika penampung ini adalah 3. Sekarang sampai pada bagian terbaik dari blog ini.

Untuk memiliki 2 replika layanan yang berjalan di antara tiga kontainer, kita dapat menggunakan bendera replika. Lihat perintah di bawah ini:

$ docker service buat --name 'Angular-App-Container' -p 4200: 4200 --replicas = 2 angular-image

Anda akan melihat bahwa 2 layanan ini memiliki beban seimbang antara tiga node dalam cluster. Jalankan perintah proses layanan buruh pelabuhan untuk memverifikasi, di mana node wadah aktif. Lihat gambar di bawah untuk referensi. Penampung aktif dalam satu node manajer dan satu node pekerja.

Dari node Worker, Anda dapat memverifikasi bahwa container sedang berjalan dengan menjalankan perintah 'docker ps'.

Docker Swarm Untuk Ketersediaan Tinggi

Sekarang untuk benar-benar memverifikasi bahwa ada ketersediaan tinggi di cluster kita, kita perlu mengalami skenario di mana salah satu node turun dan node lain di cluster menebusnya. Kita dapat mewujudkan skenario itu dengan menghentikan container secara manual dari salah satu node menggunakan perintah ini:

$ buruh pelabuhan menghentikan Angular-App-Container

Jalankan perintah di atas pada node: Worker-1 tempat container berjalan.Dari pengelola, jalankan perintah:

$ layanan buruh pelabuhan ps Angular-App-Container

Sekarang Anda akan melihat bahwa container sekarang berjalan di node: Worker-2 dan Manager. Namun, ini telah dimatikan dari node: Worker-1. Hal yang sama terlihat dari tangkapan layar di bawah ini.

Ini caranya Ketersediaan Docker Tinggi tercapai. sayan meskipun container tidak aktif di Worker-1, aplikasi dapat dirender di nomor port 4200 di node pekerja tersebut. Ini karena ia terhubung secara internal ke node lain di cluster dan dapat merender aplikasi di browser.

Ketersediaan Tinggi Setelah Peningkatan Layanan

Baik itu dalam mode replikasi atau mode global, kami dapat meningkatkan jumlah layanan yang berjalan di cluster kami. Dan bahkan setelah ditingkatkan, kami akan dapat mempertahankan ketersediaan tinggi. Luar biasa bukan?

adalah gelar master dan gelar pascasarjana

Namun kembali ke poin kami, mari kita lihat betapa mudahnya meningkatkan jumlah layanan di cluster kami. Dengan asumsi bahwa kita memiliki 2 atau 3 replika di cluster kita, mari kita tingkatkan layanan menjadi 5 dengan hanya menjalankan satu perintah. Perintahnya adalah:

$ skala layanan buruh pelabuhan Angular-App-Container = 5

Tangkapan layarnya ada di bawah.

Dengan menjalankan perintah daftar layanan buruh pelabuhan, Anda dapat melihat bahwa jumlah replika sekarang 5. Dan dengan menjalankan perintah ps layanan buruh pelabuhan bersama dengan nama layanan, Anda dapat melihat bagaimana 5 layanan dimuat seimbang dan didistribusikan pada 3 node . Perintahnya adalah:

$ layanan buruh pelabuhan ls $ layanan buruh pelabuhan ps Angular-App-Container

Dan terakhir, dalam pengaturan Docker Swarm jika Anda tidak ingin manajer Anda berpartisipasi dalam proses dan membuatnya sibuk hanya untuk mengelola proses, maka kami dapat menguras manajer dari hosting aplikasi apa pun. Karena begitulah cara kerjanya di dunia, bukan? Manajer hanya untuk mengelola pekerja lain. Bagaimanapun, perintah untuk melakukannya adalah:

$ node docker update - ketersediaan drain Manager-1

Anda dapat memverifikasi apakah manajer sekarang mengambil bagian dalam cluster dengan menjalankan perintah daftar node buruh pelabuhan dan perintah ps layanan buruh pelabuhan:

$ node docker ls $ layanan docker ps Angular-App-Container

Anda sekarang dapat melihat bahwa layanan penampung telah dibagi antara node Pekerja dan node Manajer sebenarnya telah dikosongkan dari penampung layanan apa pun. Tangkapan layar ada di bawah.

Jadi, itu mengakhiri blog ini di Docker Swarm. Saya harap blog ini menjelaskan betapa pentingnya menerapkan mode Swarm untuk mencapai ketersediaan tinggi. Pantau terus untuk lebih banyak blog di seri tutorial Docker ini.

Sebagai alternatif, Anda dapat menonton video di bawah ini untuk memahami cara kerja Docker Swarm. Semua konsep yang dijelaskan di atas telah tercakup dalam video.

Docker Swarm Untuk Ketersediaan Tinggi | Tutorial Docker | Tutorial DevOps

Sekarang Anda telah mempelajari tentang Docker, lihat file oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus Pelatihan Sertifikasi Docker Edureka ini membantu peserta didik mendapatkan keahlian dalam mengimplementasikan Docker dan menguasainya.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar dan kami akan menghubungi Anda kembali.