Bagikan melalui


Mengatur layanan mikro dan aplikasi multikontainer untuk skalabilitas dan ketersediaan tinggi

Petunjuk / Saran

Konten ini adalah kutipan dari eBook, .NET Microservices Architecture for Containerized .NET Applications, tersedia di .NET Docs atau sebagai PDF yang dapat diunduh gratis dan dapat dibaca secara offline.

Arsitektur Layanan Mikro .NET untuk thumbnail sampul eBook Aplikasi .NET Dalam Kontainer.

Penggunaan orkestrator untuk aplikasi yang siap produksi sangat penting jika aplikasi Anda didasarkan pada layanan mikro atau hanya dibagi di beberapa kontainer. Seperti yang diperkenalkan sebelumnya, dalam pendekatan berbasis layanan mikro, setiap layanan mikro memiliki model dan datanya sehingga akan bersifat otonom dari sudut pandang pengembangan dan penyebaran. Tetapi bahkan jika Anda memiliki aplikasi yang lebih tradisional yang terdiri dari beberapa layanan (seperti SOA), Anda juga akan memiliki beberapa kontainer atau layanan yang terdiri dari satu aplikasi bisnis yang perlu disebarkan sebagai sistem terdistribusi. Jenis sistem ini kompleks untuk diskalakan dan dikelola; oleh karena itu, Anda benar-benar memerlukan orkestrator jika ingin memiliki aplikasi multi-kontainer yang siap produksi dan dapat diskalakan.

Gambar 4-23 berikut mengilustrasikan penyebaran ke dalam kluster aplikasi yang terdiri dari beberapa layanan mikro (kluster).

Diagram memperlihatkan aplikasi Docker yang Disusam dalam kluster.

Gambar 4-23. Kluster kontainer

Anda menggunakan satu kontainer untuk setiap instans layanan. Kontainer Docker adalah "unit penyebaran" dan kontainer adalah instans gambar Docker. Host menangani banyak kontainer. Tindakan tersebut terlihat seperti pendekatan logis. Tetapi bagaimana Anda menangani penyeimbangan beban, perutean, dan mengatur aplikasi yang tersusun ini?

Docker Engine biasa dalam host Docker tunggal memenuhi kebutuhan mengelola instans gambar tunggal pada satu host, tetapi singkatnya dalam mengelola beberapa kontainer yang disebarkan pada beberapa host untuk aplikasi terdistribusi yang lebih kompleks. Dalam kebanyakan kasus, Anda memerlukan platform manajemen yang akan secara otomatis memulai kontainer, menskalakan kontainer dengan beberapa instans per gambar, menangguhkannya atau mematikannya saat diperlukan, dan idealnya juga mengontrol bagaimana mereka mengakses sumber daya seperti jaringan dan penyimpanan data.

Untuk melampaui manajemen kontainer individual atau aplikasi yang disusun sederhana dan beralih ke aplikasi perusahaan yang lebih besar dengan layanan mikro, Anda harus beralih ke platform orkestrasi dan pengklusteran.

Dari sudut pandang arsitektur dan pengembangan, jika Anda membangun perusahaan besar yang terdiri dari aplikasi berbasis layanan mikro, penting untuk memahami platform dan produk berikut yang mendukung skenario lanjutan:

Kluster dan orkestrator. Ketika Anda perlu menskalakan aplikasi di banyak host Docker, seperti ketika aplikasi berbasis layanan mikro besar, sangat penting untuk dapat mengelola semua host tersebut sebagai satu kluster dengan mengabstraksi kompleksitas platform yang mendasar. Itulah yang disediakan kluster kontainer dan orkestrator. Kubernetes adalah contoh orkestrator, dan tersedia di Azure melalui Azure Kubernetes Service.

Penjadwal.Penjadwalan berarti memiliki kemampuan bagi administrator untuk meluncurkan kontainer dalam kluster sehingga mereka juga menyediakan UI. Penjadwal kluster memiliki beberapa tanggung jawab: untuk menggunakan sumber daya kluster secara efisien, untuk mengatur batasan yang disediakan oleh pengguna, untuk secara efisien menyeimbangkan beban kontainer di seluruh node atau host, dan untuk kuat terhadap kesalahan sambil memberikan ketersediaan tinggi.

Konsep kluster dan penjadwal terkait erat, sehingga produk yang disediakan oleh vendor yang berbeda sering menyediakan kedua set kemampuan. Daftar berikut menunjukkan platform dan pilihan perangkat lunak terpenting yang Anda miliki untuk kluster dan penjadwal. Orkestrator ini umumnya ditawarkan di cloud publik seperti Azure.

Platform perangkat lunak untuk pengklusteran kontainer, orkestrasi, dan penjadwalan

Plattform Deskripsi
Kubernetes
Gambar logo Kubernetes.
Kubernetes adalah produk sumber terbuka yang menyediakan fungsionalitas yang berkisar dari infrastruktur kluster dan penjadwalan kontainer hingga kemampuan orkestra. Ini memungkinkan Anda mengotomatiskan penyebaran, penskalaan, dan operasi kontainer aplikasi di seluruh kluster host.

Kubernetes menyediakan infrastruktur yang berfokus pada kontainer yang mengelompokkan kontainer aplikasi ke dalam unit logis untuk manajemen dan penemuan yang mudah.

Kubernetes matang di Linux, kurang matang dalam Windows.
Azure Kubernetes Service (AKS)
Gambar logo Azure Kubernetes Service.
AKS adalah layanan orkestrasi kontainer Kubernetes terkelola di Azure yang menyederhanakan manajemen, penyebaran, dan operasi kluster Kube.
Azure Container Apps
Gambar logo Azure Container Apps Service.
Azure Container Apps adalah layanan kontainer tanpa server terkelola untuk membangun dan menyebarkan aplikasi modern dalam skala besar.

Menggunakan orkestrator berbasis kontainer di Microsoft Azure

Beberapa vendor cloud menawarkan dukungan kontainer Docker ditambah kluster Docker dan dukungan orkestrasi, termasuk Microsoft Azure, Amazon EC2 Container Service, dan Google Container Engine. Microsoft Azure menyediakan kluster Docker dan dukungan orkestrator melalui Azure Kubernetes Service (AKS).

Menggunakan Azure Kubernetes Service

Kluster Kubernetes mengumpulkan beberapa host Docker dan mengeksposnya sebagai host Docker virtual tunggal, sehingga Anda dapat menyebarkan beberapa kontainer ke dalam kluster dan memperluas skala dengan sejumlah instans kontainer. Kluster akan menangani semua pipa manajemen yang kompleks, seperti skalabilitas, kesehatan, dan sebagainya.

AKS menyediakan cara untuk menyederhanakan pembuatan, konfigurasi, dan manajemen kluster komputer virtual di Azure yang telah dikonfigurasi sebelumnya untuk menjalankan aplikasi kontainer. Menggunakan konfigurasi yang dioptimalkan dari alat penjadwalan dan orkestrasi sumber terbuka populer, AKS memungkinkan Anda menggunakan keterampilan yang ada atau menggambar tubuh keahlian komunitas yang besar dan berkembang untuk menyebarkan dan mengelola aplikasi berbasis kontainer di Microsoft Azure.

Azure Kubernetes Service mengoptimalkan konfigurasi alat dan teknologi sumber terbuka pengklusteran Docker populer khusus untuk Azure. Anda mendapatkan solusi terbuka yang menawarkan portabilitas untuk kontainer dan konfigurasi aplikasi Anda. Anda memilih ukuran, jumlah host, dan alat orkestrator, dan AKS menangani yang lain.

Diagram memperlihatkan struktur kluster Kubernetes.

Gambar 4-24. Struktur dan topologi kluster Kubernetes yang disederhanakan

Pada gambar 4-24, Anda dapat melihat struktur kluster Kubernetes di mana simpul master (VM) mengontrol sebagian besar koordinasi kluster dan Anda dapat menyebarkan kontainer ke node lainnya, yang dikelola sebagai satu kumpulan dari sudut pandang aplikasi dan memungkinkan Anda untuk menskalakan ke ribuan atau bahkan puluhan ribu kontainer.

Lingkungan pengembangan untuk aplikasi Kubernetes

Di lingkungan pengembangan, Docker mengumumkan pada Juli 2018 bahwa Kubernetes juga dapat berjalan dalam satu komputer pengembangan (Windows 10 atau macOS) dengan menginstal Docker Desktop. Anda nantinya dapat menyebarkan ke cloud (AKS) untuk pengujian integrasi lebih lanjut, seperti yang ditunjukkan pada gambar 4-25.

Diagram yang menunjukkan Kubernetes pada komputer pengembang kemudian disebarkan ke AKS

Gambar 4-25. Menjalankan Kubernetes di komputer dev dan cloud

Mulai menggunakan Azure Kubernetes Service (AKS)

Untuk mulai menggunakan AKS, Anda menyebarkan kluster AKS dari portal Azure atau dengan menggunakan CLI. Untuk informasi selengkapnya tentang menyebarkan kluster Kubernetes di Azure, lihat Menyebarkan kluster Azure Kubernetes Service (AKS).

Tidak ada biaya untuk salah satu perangkat lunak yang diinstal secara default sebagai bagian dari AKS. Semua opsi default diimplementasikan dengan perangkat lunak sumber terbuka. AKS tersedia untuk beberapa komputer virtual di Azure. Anda hanya dikenakan biaya untuk VM Azure yang Anda sebarkan, dan untuk sumber daya infrastruktur dasar tambahan yang digunakan, seperti penyimpanan dan jaringan. Tidak ada biaya tambahan untuk AKS itu sendiri.

Opsi penyebaran produksi default untuk Kubernetes adalah menggunakan bagan Helm, yang diperkenalkan di bagian berikutnya.

Menyebarkan dengan bagan Helm ke dalam kluster Kubernetes

Saat menyebarkan aplikasi ke kluster Kubernetes, Anda dapat menggunakan alat kubectl.exe CLI asli menggunakan file penyebaran berdasarkan format asli (file.yaml), seperti yang sudah disebutkan di bagian sebelumnya. Namun, untuk aplikasi Kubernetes yang lebih kompleks seperti saat menyebarkan aplikasi berbasis layanan mikro yang kompleks, disarankan untuk menggunakan Helm.

Bagan Helm membantu Anda menentukan, membuat versi, menginstal, berbagi, meningkatkan, atau memutar kembali bahkan aplikasi Kubernetes yang paling kompleks.

Selanjutnya, penggunaan Helm juga direkomendasikan karena lingkungan Kubernetes lainnya di Azure, seperti Azure Dev Spaces juga didasarkan pada bagan Helm.

Helm dikelola oleh Cloud Native Computing Foundation (CNCF) - bekerja sama dengan Microsoft, Google, Bitnami, dan komunitas kontributor Helm.

Untuk informasi implementasi selengkapnya tentang bagan Helm dan Kubernetes, lihat Menggunakan Bagan Helm untuk menyebarkan eShopOnContainers ke postingan AKS.

Sumber Daya Tambahan: