Docker Swarm Untuk Mencapai Ketersediaan Tinggi



Blog di Docker Swarm ini, menjelaskan kehebatan menyusun sekumpulan mesin Docker melalui Docker Swarm yang dikonfigurasi untuk mencapai Ketersediaan Tinggi.

Apakah ciri terpenting dari aplikasi berasaskan web? Terdapat banyak, tetapi bagi saya ketersediaan tinggi adalah yang paling penting. Itulah yang Docker Swarm bantu kita capai! Ini membantu dalam aplikasi yang sangat tersedia.

Dalam saya blog sebelumnya , Saya menerangkan bagaimana Docker Compose berfungsi. Blog di Docker Swarm ini merupakan kesinambungan kepada yang pertama dan di sini faedah menggunakan Docker Swarm untuk menampung mana-mana aplikasi berbilang wadah telah dijelaskan.





Dalam kes blog ini, hanya aplikasi Angular yang akan Docker Swarm'ed.
Catatan : Kaedah untuk menampung aplikasi MEAN Stack adalah sama.

Jadi, Apa itu Docker Swarm?

Kumpulan Docker adalah teknik untuk membuat dan mengekalkan sekumpulan Mesin Docker . Enjin Docker boleh dihoskan pada nod yang berlainan, dan node ini yang berada di lokasi terpencil membentuk a Kluster apabila disambungkan dalam mod Swarm.



Mengapa Menggunakan Docker Swarm?

Atas sebab yang telah disebutkan! Mencapai ketersediaan tinggi tanpa downtime adalah keutamaan bagi setiap penyedia perkhidmatan di luar sana. Adakah ketersediaan yang tinggi akan menarik perhatian pelanggan anda? Mereka tidak akan kagum jika menghadapi waktu henti. Itu adalah tidak berakal.

Kelebihan lain dari Docker Swarm

Seperti banyak perkhidmatan lain, Docker Swarm melakukan automatik pengimbangan beban untuk kami. Oleh itu, tidak perlu bagi jurutera DevOps untuk mengarahkan permintaan pemprosesan ke nod lain apabila gagal. Pengurus kluster secara automatik akan melakukan pengimbangan beban untuk kami.

Akses terpusat adalah faedah lain. Apa maksudnya? Ini bermaksud semua node dapat diakses dengan mudah dari pengurus. Pengurus juga akan meminta node secara berkala, dan memantau kesihatan / statusnya untuk mengatasi waktu henti. Walau bagaimanapun, node tidak dapat mengakses atau menjejaki perkhidmatan yang dijalankan di nod / pengurus lain.



Anda boleh menyemak no. bekas yang berjalan di nod, penambahbaikan yang tidak. bekas atau turun ke bawah yang tidak. berdasarkan keperluan kami, dengan hanya melaksanakan satu perintah.

Walaupun aplikasi telah disebarkan, kami dapat mengeluarkannya kemas kini bergulir dan pastikan bahawa CI (Integrasi Berterusan) tercapai. Pengemaskinian bergulir dikeluarkan ke satu node demi satu sehingga memastikan tidak ada waktu henti dan beban diedarkan antara nod lain dalam kluster.

Jadi, apa seterusnya? Untuk melakukan yang jelas. Mulakan dengan Docker Swarm jika anda sudah bekerja di Docker atau jika organisasi anda ingin menggunakan perkhidmatan web yang boleh dipercayai.

Catatan : Enjin dok dipasang pada hos / pelayan bebas atau dalam beberapa VM dalam hos.

Bermula dengan Mod Swarm

Docker Swarm dimulakan oleh pengurus, atau biarkan saya mengatakannya seperti ini, contoh yang memulakan kelompok Swarm menjadi pengurus. Perintah untuk memulakan kluster adalah:

$ docker kawanan masuk - alamat iklan-addr ip

Di sini, bendera ‘-iklan-addr’ digunakan untuk mengiklankan dirinya ke nod lain yang ingin bergabung dengan kluster. Alamat IP pengurus perlu dinyatakan bersama dengan bendera. Berikut adalah contoh tangkapan skrin.

perintah init docker - kawanan docker - edureka

Apabila kelompok Swarm dimulakan, token dihasilkan di hujung pengurus. Token ini perlu digunakan oleh nod lain untuk bergabung dalam kelompok kawanan.

Bagaimana sebenarnya? Salin keseluruhan token yang dihasilkan di enjin docker pengurus, tampalkannya di enjin docker node dan laksanakan. Bahagian tangkapan skrin di atas adalah tanda. Apabila token dilaksanakan di simpul pekerja, ia akan kelihatan seperti tangkapan skrin di bawah.

Mana-mana nod yang bergabung dengan kluster kemudiannya dapat dipromosikan menjadi pengurus. Sekiranya anda mahukan mesin pelabur bergabung sebagai pengurus, laksanakan perintah di bawah di hujung pengurus:

pengurus token kawanan $ docker

Dan pada masa yang akan datang, jika anda mahu token untuk simpul bergabung dengan kluster, jalankan arahan di bawah:

simpul token kumpulan $ docker

Teruskan, dan laksanakan token di setiap nod yang anda mahukan, untuk bergabung dengan kluster. Apabila semua itu selesai, anda boleh menjalankan perintah senarai simpul docker untuk memeriksa berapa banyak nod yang bergabung dengan kluster beserta statusnya. Perintahnya adalah:

$ simpul pelabuhan ls

Tangkapan skrin ada di bawah:

Membuat Imej Docker Untuk Aplikasi Sudut

Sekiranya semuanya baik, maka kita boleh memulakan perkhidmatan Swarm kita, dengan syarat Docker Image dibina. Imej Docker boleh dibina dari Dockerfile. Dockerfile yang digunakan untuk membina aplikasi ada di bawah:

DARI nod: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm cache bersih RUN npm pasang COPY. / usr / src / app EXPOSE 4200 CMD ['npm', 'start']

Dockerfile digunakan untuk menjalankan sekumpulan perintah bersama-sama untuk membangun gambar Docker khusus dari gambar dasar. Seperti yang anda lihat, gambar asas 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 bekas dan menjadikannya direktori berfungsi di dalam bekas saya.

Saya menyalin fail 'package.json' dari mesin tempatan saya ke direktori kerja kontena. Saya kemudian menetapkan arahan ‘RUN npm cache clean’ dan ‘RUN npm install’. pasang npm arahan memuat turun versi kebergantungan yang disebut dalam fail package.json.

Saya kemudian menyalin semua kod projek dari mesin tempatan ke kontena, memperlihatkan nombor port 4200 kerana mengakses aplikasi Angular pada penyemak imbas dan akhirnya, saya menentukan perintah mula npm yang memuatkan aplikasi.

Sekarang, untuk membuat gambar Docker berdasarkan Dockerfile ini, jalankan arahan di bawah:

$ docker membina -t gambar sudut.

Catatan: Imej Docker perlu dibina di semua nod dalam kluster. Tanpa itu, kontena tidak dapat diputar di mesin Docker lain.

Memulakan Perkhidmatan Docker Swarm

Memandangkan Docker Image kami dibina, kami dapat memutarkan bekas dari gambar ini. Tetapi, kami akan melakukan sesuatu yang lebih baik: buat perkhidmatan Docker Swarm. Perintah untuk membuat perkhidmatan kawanan adalah:

Perkhidmatan $ docker buat --nama 'Angular-App-Container' -p 4200: 4200 sudut gambar

Di sini, bendera ‘name’ digunakan untuk memberikan nama kepada perkhidmatan saya dan bendera ‘p’ digunakan untuk mendedahkan port kontena ke port host. Dalam fail package.json, saya telah menentukan port kontena di mana aplikasi Angular harus dihoskan. Dan 4200 dalam perintah ini membantu memetakan port kontena 4200 ke port host 4200. ‘angular-image’ adalah nama gambar yang saya bina sebelumnya.

Ingatlah : Apabila kami membuat perkhidmatan, perkhidmatan tersebut dapat dihosting pada mana-mana mesin dok di kluster. Pengurus kawanan akan memutuskan di mana ia akan menjadi tuan rumah. Tetapi, tidak kira di mana node dihoskan, aplikasi dapat diakses di localhost: 4200 dari mana-mana node yang dihubungkan di kluster.

Bagaimana mungkin? Kerana Swarm secara dalaman memperlihatkan nombor port dapat diakses oleh setiap simpul lain dalam kluster. Itu bermaksud, port no. 4200 pada sebarang nod / pengurus dalam kluster akan menjadikan aplikasi Angular.

Bagaimana sekarang? Adakah bekas itu aktif?

Anda boleh mengesahkan sama ada perkhidmatan tersebut dikendalikan dengan menjalankan perintah senarai perkhidmatan docker. Tetapi, mungkin diperlukan satu minit untuk bekas itu dikerahkan. Berikut adalah arahan:

gaji pemaju java di india
perkhidmatan $ docker ls

Perintah ini akan menyenaraikan semua perkhidmatan yang dikendalikan oleh kelompok Swarm. Dalam kes kami, ia mesti memaparkan satu bekas aktif. Lihat tangkapan skrin di bawah untuk rujukan.

Di sini, 'REPLICAS = 1/1' menunjukkan bahawa terdapat satu 'perkhidmatan' tunggal dari wadah itu, dalam kluster. Dan 'MODE = direplikasi' menunjukkan bahawa perkhidmatan itu direplikasi pada semua node dalam kluster.

Sekarang, untuk mengenal pasti node / pengurus mana, aplikasi dihosting, kita dapat menjalankan perintah ps service docker service diikuti dengan nama container. Perintahnya adalah:

perkhidmatan $ docker ps Angular-App-Container

Tangkapan skrin untuk yang sama ada di bawah.

Ini menyebutkan perincian mengenai node di mana aplikasi dihoskan bersama dengan perintah yang digunakan untuk memulakan perkhidmatan.

Perintah ‘docker ps’ memberi penerangan mengenai perincian mengenai bekas aktif. Perintahnya adalah:

$ dok dok

Lihat tangkapan skrin di bawah untuk rujukan.

Tetapi, arahan ini hanya akan berfungsi pada pengurus kluster dan nod di mana perkhidmatan tersebut sebenarnya dihoskan.

Untuk memeriksa berapa banyak nod yang dijalankan, jalankan arahan senarai nod. Perintah adalah:

$ simpul pelabuhan ls

Untuk memeriksa kontena yang berjalan di host tertentu, jalankan perintah ps node. Perintah adalah:

$ dok simpul ps

Sekiranya anda masih ingat, saya telah menyebut bahawa perkhidmatan ini sedang dijalankan dalam MODE yang direplikasi. Ini bermaksud perkhidmatan direplikasi di semua node dalam kelompok. Adakah anda fikir ada alternatif?

Tentunya! Terdapat sesuatu yang dipanggil sebagai MODE Global. Dalam mod ini, terdapat perkhidmatan wadah ini berjalan di setiap pengurus / kluster. Ingatlah untuk menghentikan perkhidmatan / bekas semasa sebelum memutar set kontena yang lain.

Perintah untuk itu adalah:

$ dok perkhidmatan rm Angular-App-Container

Perintah untuk memutar bekas dalam mod Global adalah:

Perkhidmatan $ docker buat --nama 'Angular-App-Container' -p 4200: 4200 --mode global sudut-imej

Ini akan mewujudkan 3 perkhidmatan pada 3 nod dalam kluster kami. Anda boleh mengesahkannya dengan menjalankan perintah senarai perkhidmatan docker. Tangkapan skrin ini ada di bawah.

Apabila perintah ps perkhidmatan docker dijalankan, anda akan melihat sesuatu seperti ini:

Seperti yang anda lihat, ia mengatakan mod itu ditiru dan replika wadah ini adalah 3. Sekarang terdapat bahagian terbaik dari blog ini.

Untuk mempunyai 2 replika perkhidmatan yang berjalan di antara tiga kontena, kita dapat menggunakan bendera replika. Lihat arahan di bawah:

Perkhidmatan $ docker buat --nama 'Angular-App-Container' -p 4200: 4200 --replicas = 2 sudut gambar

Anda akan melihat bahawa 2 perkhidmatan ini seimbang antara ketiga-tiga node dalam kluster. Jalankan perintah proses perkhidmatan dok untuk mengesahkan, di mana nod bekas aktif. Lihat tangkapan skrin di bawah untuk rujukan. Bekas aktif dalam satu nod pengurus dan satu nod pekerja.

Dari simpul Pekerja, anda boleh mengesahkan bahawa wadah sedang berjalan dengan melaksanakan perintah ‘docker ps’.

Docker Swarm Untuk Ketersediaan Tinggi

Sekarang untuk benar-benar mengesahkan bahawa terdapat ketersediaan yang tinggi di kluster kami, kita perlu mengalami senario di mana salah satu node turun dan node lain di kluster menebusnya. Kami dapat mewujudkan senario itu dengan menghentikan bekas secara manual dari salah satu nod menggunakan arahan ini:

$ docker stop Angular-App-Container

Jalankan arahan di atas pada simpul: Worker-1 tempat bekas berjalan.Dari pengurus, jalankan arahan:

perkhidmatan $ docker ps Angular-App-Container

Anda sekarang akan melihat bahawa bekas sekarang berjalan dalam nod: Worker-2 dan Manager. Walau bagaimanapun, ia telah ditutup dari nod: Worker-1. Perkara yang sama dapat dilihat dari tangkapan skrin di bawah.

Inilah caranya Ketersediaan Tinggi Docker tercapai. SayaWalaupun kontena tidak aktif di Worker-1, aplikasi boleh diberikan pada nombor port 4200 pada simpul pekerja tersebut. Ini kerana ia dihubungkan secara dalaman ke node lain dalam kluster dan ia dapat membuat aplikasi di penyemak imbas.

Ketersediaan Tinggi Setelah Meningkatkan Perkhidmatan

Baik dalam mod replikasi atau mod global, kita dapat meningkatkan jumlah perkhidmatan yang berjalan di kluster kita. Dan walaupun selepas meningkatkan, kami akan dapat mengekalkan ketersediaan yang tinggi. Hebat bukan?

apa itu swing di java

Tetapi kembali ke sudut pandang kami, mari kita lihat betapa mudahnya meningkatkan jumlah perkhidmatan dalam kelompok kita. Dengan mengandaikan bahawa kita mempunyai 2 atau 3 replika dalam kluster kita, marilah kita meningkatkan perkhidmatan menjadi 5 dengan hanya menjalankan satu perintah. Perintahnya adalah:

Skala perkhidmatan $ docker Angular-App-Container = 5

Tangkapan skrin ini ada di bawah.

Dengan menjalankan perintah senarai perkhidmatan docker, anda dapat melihat bahawa jumlah replika sekarang adalah 5. Dan dengan menjalankan perintah ps service docker bersama dengan nama perkhidmatan, anda dapat melihat bagaimana 5 perkhidmatan dimuat seimbang dan diedarkan pada 3 nod . Perintah adalah:

$ docker service ls $ docker service ps Angular-App-Container

Dan akhirnya, dalam penyediaan Docker Swarm jika anda tidak mahu pengurus anda mengambil bahagian dalam prosiding dan memastikannya sibuk kerana hanya menguruskan prosesnya, maka kami dapat menguruskan pengurus dari hosting aplikasi apa pun. Kerana begini cara kerjanya di dunia, bukan? Pengurus hanya untuk menguruskan pekerja lain. Bagaimanapun, arahan untuk melakukannya adalah:

Kemas kini $ docker node - ketersediaan longkang Manager-1

Anda boleh mengesahkan sama ada pengurus sekarang mengambil bahagian dalam kluster dengan menjalankan perintah senarai simpul docker dan perintah ps perkhidmatan docker:

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

Anda sekarang dapat melihat bahawa perkhidmatan kontena telah dibahagikan antara node Pekerja dan node Pengurus sebenarnya telah dikurangkan daripada membuat sebarang perkhidmatan. Tangkapan skrin ada di bawah.

Jadi, ini mengakhiri blog ini di Docker Swarm. Saya harap blog ini menjelaskan betapa pentingnya melaksanakan mod Swarm untuk mencapai ketersediaan yang tinggi. Nantikan lebih banyak blog dalam siri tutorial Docker ini.

Anda juga boleh menonton video di bawah untuk memahami bagaimana Docker Swarm berfungsi. Semua konsep yang dijelaskan di atas telah diliputi dalam video.

Docker Swarm Untuk Ketersediaan Tinggi | Tutorial Docker | Tutorial DevOps

Sekarang setelah anda mengetahui mengenai Docker, lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus Latihan Persijilan Edureka Docker ini membantu pelajar memperoleh kepakaran dalam melaksanakan Docker dan menguasainya.

Ada soalan untuk kami? Sila sebutkan di bahagian komen dan kami akan menghubungi anda.