‫Jadi sedikit sihir itu sebenarnya bukan sihir. Itu adalah Routing Mesh. Routing Mesh adalah jaringan
‫masuk atau masuk yang mendistribusikan paket untuk layanan kami ke tugas-tugas untuk layanan itu, karena kami dapat
‫memiliki lebih dari satu tugas.
‫Ini sebenarnya mencakup semua node, dan menggunakan primitif Kernel yang telah ada beberapa waktu lalu
‫sebenarnya disebut IPVS.
‫Jadi kita tidak berbicara tentang layanan baru yang mewah. Kami benar-benar hanya
‫berbicara tentang fitur inti dari Kernel Linux. Apa yang sebenarnya dilakukannya di sini adalah load balancing
‫di semua node dan mendengarkan semua node untuk lalu lintas.
‫Ada beberapa cara kita dapat berbicara tentang cara kerjanya.
‫Contoh pertama adalah dari satu wadah ke wadah lain.
‫Jika sistem backend kami, seperti misalnya database, ditingkatkan menjadi dua replika, frontend yang berbicara dengan backend, tidak
‫akan benar-benar
‫berbicara langsung ke alamat IP mereka.
‫Mereka benar-benar akan berbicara dengan sesuatu yang disebut VIP, atau IP Virtual, yang diletakkan Swarm di depan
‫semua layanan.
‫Ini adalah IP pribadi di dalam jaringan virtual Swarm, dan memastikan bahwa beban didistribusikan di antara
‫semua tugas untuk layanan.
‫Jadi jika Anda bisa membayangkan jika Anda memiliki peran pekerja dalam aplikasi Anda, dan itu memiliki 10 kontainer yang berbeda, Anda tidak
‫harus meletakkan penyeimbang beban di depannya.
‫Ini melakukan itu untukmu.
‫Ketika Anda berbicara tentang lalu lintas dari satu layanan di dalam jaringan virtual Anda berbicara ke layanan lain di
‫dalam jaringan virtual Anda.
‫Dan contoh kedua tentang cara kerja routing mesh adalah lalu lintas eksternal yang datang ke swarm Anda sebenarnya
‫dapat memilih untuk menekan salah satu node di swarm Anda.
‫Setiap node pekerja akan memiliki port yang diterbitkan terbuka dan mendengarkan lalu lintas kontener itu, dan
‫kemudian akan mengalihkan rute lalu lintas itu ke wadah yang tepat berdasarkan keseimbangan beban.
‫Apa artinya ini ketika Anda mengerahkan kontainer dalam gerombolan, Anda tidak seharusnya peduli dengan server apa
‫yang sedang aktif karena itu mungkin bergerak, kan?
‫Jika sebuah wadah gagal, dan tugas itu diciptakan kembali oleh gerombolan, itu mungkin menempatkan itu pada simpul yang berbeda. Dan Anda tentu tidak ingin harus mengubah
‫firewall Anda atau pengaturan DNS Anda untuk membuat wadah itu berfungsi
‫lagi.
‫Perutean jala menyelesaikan banyak masalah tersebut dengan memungkinkan situs web Drupal kami pada port 80
‫dapat diakses dari sembarang simpul di swarm. Dan di latar belakang, itu mengambil paket-paket dari server
‫itu dan kemudian merutekannya ke wadah. Jika berada pada node yang berbeda, di dalamnya akan merutekannya
‫melalui jaringan virtual.
‫Jika berada di node yang sama, itu hanya akan mengalihkannya ke port wadah itu.
‫Dan kami tidak perlu melakukan apa pun untuk mengaktifkan ini.
‫Ini semua di luar kotak.
‫Mari kita lihat diagram bagaimana ini bisa bekerja.
‫Jika saya membuat layanan bentuk berita, dan saya katakan untuk memiliki tiga replika. Dan itu menciptakan tiga tugas,
‫dengan tiga wadah, pada tiga node. Di dalam jaringan overlay itu, sebenarnya membuat IP virtual yang
‫dipetakan ke nama DNS layanan, kan? Dan layanan, secara default, nama DNS, adalah nama
‫layanan.
‫Dalam hal ini, saya membuat layanan bernama my-web, dan semua wadah lain yang saya miliki di jaringan overlay
‫saya yang perlu berbicara dengan layanan di dalam kerumunan, mereka
‫hanya perlu khawatir tentang menggunakan DNS web saya. IP virtual yang dimuat dengan benar
‫memantulkan lalu lintas di antara semua tugas dalam layanan itu.
‫Ini sebenarnya bukan Round Robin DNS. Itu sebenarnya konfigurasi yang sedikit berbeda. Kita dapat
‫mengaktifkannya jika kita mau. Sebenarnya ada opsi untuk menggunakan DNS Round Robin.
‫Manfaat dari VIP daripada Round Robin adalah banyak kali cache DNS kami di dalam aplikasi kami mencegah kami
‫mendistribusikan muatan dengan benar.
‫Daripada berkelahi dengan klien DNS kami dalam konfigurasi DNS, kami hanya mengandalkan VIP, yang seperti apa
‫yang akan Anda miliki jika Anda membeli penyeimbang beban perangkat keras khusus.
‫Dalam contoh kedua, ini benar-benar menunjukkan bagaimana jadinya dengan lalu lintas eksternal yang masuk.
‫Ini mirip dengan apa yang baru saja kita lakukan dengan Drupal, di mana ketika saya membuat kotak-kotak
‫kuning itu, dengan membuat satu layanan, disebut web saya, dan itu membuat dua tugas, dan menerapkannya pada dua node berbeda, masing-masing node
‫tersebut memiliki -di load balancer pada alamat IP eksternal. Bagi saya, karena saya menggunakan DigitalOcean, alamat IP
‫itu adalah yang diberikan DigitalOcean kepada saya. Ketika saya menggunakan -p dan menerbitkannya pada port,
‫dalam contoh ini menggunakan port 80:80, lalu lintas apa pun yang masuk ke salah satu dari
‫tiga node hit ini yang memuat penyeimbang pada port 80:80. Penyeimbang beban memutuskan wadah mana yang harus mendapatkan lalu lintas dan
‫apakah lalu lintas itu pada node lokal, atau perlu mengirim lalu lintas melalui
‫jaringan ke node yang berbeda.
‫Sekali lagi, ini sebenarnya terjadi di latar belakang tanpa usaha khusus dari pihak kami.
‫Baiklah. Mari kita lihat Routing Mesh ini dalam aksi.
‫Kami sudah melihat contoh dengan Drupal dan bagaimana ia mendengarkan pada ketiga node.
‫Tetapi bagaimana jika kita memiliki banyak tugas yang membuat penyeimbang beban berfungsi.
‫Jika kita membuat layanan buruh
‫pelabuhan, yang akan kita lakukan adalah, kita akan menggunakan wadah Elasticsearch. Kami akan menyebutnya pencarian dan
‫memberikannya tiga replika. Dan ingin mempublikasikannya di port 9200, yang merupakan port default-nya.
‫Dalam hal ini, kami pasti menginginkan: 2 di sana karena ini adalah versi termudah
‫untuk digunakan saat ini. Sementara itu membuat,
‫saya hanya akan menyebutkan bahwa Elasticsearch sebenarnya adalah database pencarian yang dapat diakses melalui API web
‫JSON.
‫Jadi sangat mudah untuk memukul dengan ikal dan memberi kami contoh yang bagus tentang cara kerjanya.
‫Saya melakukan pencarian layanan buruh pelabuhan, kita dapat melihat bahwa setiap tugas dibuat dengan cerdas pada simpul yang berbeda.
‫Jika saya hanya melakukan ikal di localhost saya, pada node satu di port 9200 karena saya menerbitkan port itu,
‫saya akan mendapatkan kembali informasi dasar Elasticsearch. Bagian dari itu adalah itu benar-benar akan membuat nama
‫acak.
‫Itu hanya fitur dari Elasticsearch.
‫Jika saya menggulung ini berkali-kali, Anda akan melihat ini Patch, server Patch, dan
‫ketiga
‫kalinya, Jane Foster, dan kemudian akan mulai berulang seperti itu.
‫Itu sebenarnya IP virtual yang bertindak sebagai penyeimbang beban dan mendistribusikan beban saya di
‫tiga tugas.
‫Beberapa catatan lagi di jalur routing. Dalam 17 03, yang merupakan rilis yang saya tunjukkan
‫ini pada Anda, routing mesh dan load balancing saat ini adalah load balancer stateless.
‫Jika Anda pernah berurusan dengan State di dalam mungkin penyeimbang muatan klasik Amazon, atau teknologi penyeimbang beban
‫lainnya, Anda tahu apa ini.
‫Ini pada dasarnya mengatakan bahwa jika Anda harus menggunakan cookie sesi pada aplikasi Anda, atau mengharapkan wadah yang konsisten
‫untuk berbicara dengan klien yang konsisten, maka Anda mungkin perlu menambahkan beberapa hal lain untuk membantu
‫menyelesaikan masalah itu.
‫Di luar kotak, setiap kali Anda menekan layanan dengan banyak tugas, itu akan memberi Anda hasil yang
‫berpotensi berbeda.
‫Juga, jika Anda masuk ke rincian ini, itu sebenarnya penyeimbang beban lapisan-3, dan yang benar-benar
‫beroperasi pada lapisan IP dan port.
‫Itu sebenarnya tidak beroperasi pada lapisan DNS.
‫Jika Anda pernah menjalankan beberapa situs web pada port yang sama, pada server yang sama, ini belum akan
‫melakukannya.
‫Anda masih perlu bagian lain dari teka-teki di atas
‫itu jika Anda benar-benar ingin menjalankan beberapa situs web pada port yang sama, di gerombolan yang sama.
‫Untungnya, itu permintaan yang cukup umum, dan ada beberapa opsi yang dapat Anda lakukan untuk menyelesaikan
‫kedua masalah ini.
‫Salah satunya adalah dengan menggunakan Nginx atau HAProxy, yang ada contoh yang cukup bagus di luar sana dari wadah yang akan
‫duduk di depan dengan routing mesh Anda, dan benar-benar bertindak sebagai penyeimbang beban stateful atau lapisan untuk penyeimbang beban, yang juga
‫dapat melakukan caching dan banyak hal lainnya. Jika Anda membutuhkannya, Anda mungkin ingin
‫memeriksa beberapa dari mereka di sumber daya bagian ini.
‫Saya juga harus menyebutkan bahwa jika Anda membayar untuk berlangganan edisi Docker Enterprise, dengan itu muncul sesuatu yang
‫disebut UCP atau Docker Data Center, yang merupakan antarmuka web. Tetapi saya harus menyebutkan bahwa edisi Docker Enterprise,
‫jika Anda mendapatkan berlangganan untuk itu untuk node segerombolan Anda, itu benar-benar dilengkapi dengan
‫built-in layer untuk proxy web yang memungkinkan Anda untuk hanya membuang nama DNS di konfigurasi web layanan swarm
‫Anda dan semuanya hanya berfungsi.