Aplikasi N-tier dengan Apache Cassandra

Azure DNS
Azure Load Balancer
Azure Monitor
Azure Virtual Machines
Azure Virtual Network

Arsitektur referensi ini menunjukkan cara menyebarkan mesin virtual (VM) dan jaringan virtual yang dikonfigurasikan untuk aplikasi tingkat N, menggunakan Apache Cassandra di Linux untuk tingkat data.

Sistem

Diagram yang memperlihatkan arsitektur N-tingkat menggunakan Microsoft Azure.

Unduh file Visio arsitektur ini.

Alur kerja

Arsitektur memiliki komponen-komponen berikut.

Umum

  • Grup Sumber Daya. Grup sumber daya digunakan untuk mengelompokkan sumber daya Azure sehingga dapat dikelola menurut masa pakai, pemilik, atau kriteria lainnya.

  • Zona ketersediaan. Zona ketersediaan adalah lokasi fisik dalam wilayah Azure. Setiap zona terdiri dari satu atau beberapa pusat data dengan daya, pendingin, dan jaringan independen. Dengan menempatkan VM di seluruh zona, aplikasi menjadi tahan terhadap kegagalan dalam suatu zona.

Jaringan dan penyeimbangan beban

  • Jaringan dan subnet virtual. Setiap Azure VM disebarkan ke jaringan virtual yang dapat disegmentasi menjadi subnet. Buat subnet terpisah untuk setiap tingkat.

  • Application gateway. Application Gateway adalah penyeimbang beban layer 7. Dalam arsitektur ini, penyeimbang beban ini merutekan permintaan HTTP ke front end web. Application Gateway juga menyediakan firewall aplikasi web (WAF) yang melindungi aplikasi dari eksploitasi dan kerentanan umum.

  • Load balancer. Gunakan load balancer Azure Standard untuk mendistribusikan lalu lintas jaringan dari tingkat web ke tingkat bisnis.

  • Kelompok keamanan jaringan (NSG). Gunakan NSG untuk membatasi lalu lintas jaringan dalam jaringan virtual. Misalnya, dalam arsitektur tiga tingkat yang ditunjukkan di sini, tingkat database tidak menerima lalu lintas dari front end web, hanya dari tingkat bisnis dan subnet manajemen.

  • DDoS Protection. Meskipun platform Azure memberikan perlindungan dasar terhadap serangan penolakan layanan terdistribusi (DDoS), sebaiknya gunakan Azure DDoS Network Protection, yang telah meningkatkan fitur mitigasi DDoS. Lihat Pertimbangan keamanan .

  • Azure DNS. Azure DNS adalah layanan hosting untuk domain DNS. Layanan ini memberikan resolusi nama menggunakan infrastruktur Microsoft Azure. Dengan menghosting domain Anda di Azure, Anda bisa mengelola catatan DNS Anda menggunakan kredensial, API, alat, dan tagihan yang sama dengan layanan Azure lainnya.

Mesin virtual

  • Database Apache Cassandra. Menyediakan ketersediaan tinggi di tingkat data, dengan mengaktifkan replikasi dan failover.

  • OpsCenter. Gunakan solusi pemantauan seperti DataStax OpsCenter untuk memantau kluster Cassandra.

  • Jump box. Juga disebut host bastion. VM aman di jaringan yang digunakan administrator untuk tersambung ke VM lain. Jump box memiliki NSG yang memungkinkan lalu lintas jarak jauh hanya dari alamat IP publik pada daftar aman. NSG harus mengizinkan lalu lintas Remote Desktop Protocol (RDP).

Rekomendasi

Persyaratan Anda mungkin berbeda dari arsitektur yang dijelaskan di sini. Gunakan rekomendasi ini sebagai titik awal.

Mesin virtual

Untuk rekomendasi tentang mengonfigurasi VM, lihat Menjalankan VM Linux di Azure.

Jaringan virtual

Saat Anda membuat jaringan virtual, tentukan berapa banyak alamat IP yang dibutuhkan sumber daya Anda di setiap subnet. Tentukan subnet mask dan rentang alamat jaringan yang cukup besar untuk alamat IP yang diperlukan, menggunakan notasi [classless inter-domain routing (CIDR)]. Gunakan ruang alamat yang termasuk dalam blok alamat IP privat standar, yaitu 10.0.0.0/8, 172.16.0.0/12, dan 192.168.0.0/16.

Pilih rentang alamat yang tidak tumpang tindih dengan jaringan lokal Anda, jika Anda perlu menyiapkan gateway antara jaringan virtual dan jaringan lokal Anda nanti. Setelah membuat jaringan virtual, Anda tidak dapat mengubah rentang alamat.

Desain subnet dengan mempertimbangkan persyaratan fungsionalitas dan keamanan. Semua VM dalam tingkat atau peran yang sama harus masuk ke subnet yang sama, yang dapat menjadi batas keamanan. Untuk informasi selengkapnya tentang mendesain VNet dan subnet, lihat Merencanakan dan mendesain Azure Virtual Networks.

Application Gateway

Untuk informasi tentang mengonfigurasi Application Gateway, lihat Ringkasan konfigurasi Application Gateway.

Penyeimbang muatan

Jangan mengekspos VM langsung ke Internet. Sebagai gantinya, berikan setiap VM alamat IP privat. Klien terhubung menggunakan alamat IP yang terkait dengan gateway aplikasi.

Tentukan aturan penyeimbang beban untuk mengarahkan lalu lintas jaringan ke VM. Misalnya, untuk mengaktifkan lalu lintas HTTP, buat aturan yang memetakan port 80 dari konfigurasi front-end ke port 80 di kumpulan alamat back-end. Ketika klien mengirimkan permintaan HTTP ke port 80, penyeimbang beban memilih alamat IP back-end dengan menggunakan algoritma hashing yang mencakup alamat IP sumber. Permintaan klien didistribusikan di semua VM.

Grup keamanan jaringan

Gunakan aturan NSG untuk membatasi lalu lintas antar tingkatan. Misalnya, dalam arsitektur tiga tingkat yang ditunjukkan di atas, tingkat web tidak berkomunikasi langsung dengan tingkat database. Untuk menerapkannya, tingkat database harus memblokir lalu lintas masuk dari subnet tingkat web.

  1. Tolak semua lalu lintas masuk dari jaringan virtual. (Gunakan tag VIRTUAL_NETWORK dalam aturan.)
  2. Izinkan lalu lintas masuk dari subnet tingkat bisnis.
  3. Izinkan lalu lintas masuk dari subnet tingkat database itu sendiri. Aturan ini memungkinkan komunikasi antara VM database, yang diperlukan untuk replikasi database dan failover.
  4. Izinkan lalu lintas SSH (port 22) dari subnet jumpbox. Aturan ini memungkinkan administrator tersambung ke tingkat database dari jumpbox.

Buat aturan 2 – 4 dengan prioritas lebih tinggi daripada aturan pertama, sehingga aturan tersebut akan mengambil alih.

Cassandra

Kami menyarankan DataStax Enterprise untuk penggunaan produksi, tetapi rekomendasi ini berlaku untuk edisi Cassandra apa pun. Untuk informasi selengkapnya tentang menjalankan DataStax di Azure, lihat Panduan Penyebaran DataStax Enterprise untuk Azure.

Konfigurasikan node dalam mode rack-aware. Petakan domain kesalahan ke rak dalam file cassandra-rackdc.properties.

Anda tidak memerlukan penyeimbang muatan di depan kluster. Klien terhubung langsung ke node di kluster.

Skrip penyebaran untuk arsitektur ini menggunakan resolusi nama untuk menginisialisasi node seed untuk komunikasi intrakluster (gosip). Untuk mengaktifkan resolusi nama, penyebaran membuat zona Azure Private DNS dengan rekaman A untuk node Cassandra. Tergantung pada skrip inisialisasi, Anda mungkin dapat menggunakan alamat IP statis sebagai gantinya.

Catatan

Azure Private DNS saat ini masih dalam pratinjau publik.

Jumpbox

Jangan izinkan akses SSH dari Internet publik ke VM yang menjalankan beban kerja aplikasi. Sebagai gantinya, semua akses SSH ke VM ini harus melalui jumpbox. Administrator masuk ke jumpbox, lalu masuk ke VM lain dari jumpbox. Jumpbox memungkinkan lalu lintas SSH dari Internet, tetapi hanya dari alamat IP yang diketahui dan aman.

Jumpbox memiliki persyaratan performa minimal, jadi pilih ukuran VM yang kecil. Buat alamat IP publik untuk jumpbox. Tempatkan jumpbox di jaringan virtual yang sama dengan VM lainnya, tetapi di subnet manajemen terpisah.

Untuk mengamankan jumpbox, tambahkan aturan NSG yang memungkinkan koneksi SSH hanya dari sekumpulan alamat IP publik yang aman. Konfigurasikan NSG untuk subnet lain untuk memungkinkan lalu lintas SSH dari subnet manajemen.

Pertimbangan

Skalabilitas

Kumpulan skala

Untuk tingkat web dan bisnis, pertimbangkan untuk menggunakan Virtual Machine Scale Sets, alih-alih menyebarkan VM terpisah ke dalam set ketersediaan. Satu set skala memudahkan penyebaran dan pengelolaan satu set VM yang identik, dan menskalakan VM secara otomatis berdasarkan metrik performa. Saat beban pada VM meningkat, VM tambahan akan otomatis ditambahkan ke penyeimbang muatan.

Ada dua cara dasar untuk mengonfigurasi VM yang disebarkan dalam satu set skala:

  • Gunakan ekstensi untuk mengonfigurasi VM setelah disebarkan. Dengan pendekatan ini, instans VM baru mungkin akan dimulai dalam waktu yang lebih lama daripada VM tanpa ekstensi.

  • Sebarkan disk terkelola dengan gambar disk kustom. Opsi ini mungkin lebih cepat untuk disebarkan. Namun, opsi itu mengharuskan Anda untuk terus memperbarui gambar.

Untuk informasi selengkapnya, lihat Pertimbangan desain untuk set skala.

Tip

Saat menggunakan solusi skala otomatis apa pun, uji dengan beban kerja tingkat produksi terlebih dahulu.

Batas langganan

Setiap langganan Azure memiliki batas default, termasuk jumlah maksimum VM per wilayah. Anda dapat meningkatkan batas dengan mengajukan permintaan dukungan. Untuk informasi selengkapnya, lihat Batas, kuota, dan batasan langganan dan layanan Azure.

Application Gateway

Application Gateway mendukung mode kapasitas tetap atau mode penskalaan otomatis. Mode kapasitas tetap berguna untuk skenario dengan beban kerja yang konsisten dan dapat diprediksi. Sebaiknya gunakan mode penskalaan otomatis untuk beban kerja dengan lalu lintas variabel. Untuk informasi selengkapnya, lihat Penskalaan otomatis dan Zona redundan Application Gateway v2.

Efisiensi kinerja

Untuk mendapatkan performa terbaik dari Cassandra di VM Azure, lihat rekomendasi di Menjalankan Apache Cassandra di VM Azure.

Ketersediaan

Zona ketersediaan memberikan ketahanan terbaik dalam satu wilayah. Jika membutuhkan ketersediaan yang lebih tinggi, pertimbangkan untuk mereplikasi aplikasi di dua wilayah.

Tidak semua wilayah mendukung zona ketersediaan, dan tidak semua ukuran VM didukung di semua zona. Jalankan perintah Azure CLI berikut ini untuk menemukan zona yang didukung untuk setiap ukuran VM dalam wilayah:

az vm list-skus --resource-type virtualMachines --zone false --location <location> \
    --query "[].{Name:name, Zones:locationInfo[].zones[] | join(','@)}" -o table

Jika Anda menerapkan arsitektur ini ke wilayah yang tidak mendukung zona ketersediaan, letakkan VM untuk setiap tingkat di dalam satu set ketersediaan. VM dalam ketersediaan yang sama disebarkan di beberapa server fisik, rak komputasi, unit penyimpanan, dan sakelar jaringan untuk redundansi. Set skala secara otomatis menggunakan grup penempatan, yang berfungsi sebagai set ketersediaan implisit.

Saat melakukan penyebaran ke zona ketersediaan, gunakan SKU Standar Azure Load Balancer dan SKU v2 Application Gateway. SKU ini mendukung redundansi lintas zona. Untuk informasi selengkapnya, lihat:

Satu penyebaran Application Gateway dapat menjalankan beberapa instans gateway. Untuk beban kerja produksi, jalankan setidaknya dua instans.

Kluster Cassandra

Untuk kluster Cassandra, skenario failover tergantung pada tingkat konsistensi yang digunakan oleh aplikasi dan jumlah replika. Untuk tingkat konsistensi dan penggunaan di Cassandra, lihat Mengonfigurasi konsistensi data dan Cassandra: Berapa banyak node yang diajak berkomunikasi dengan Quorum? Ketersediaan data di Cassandra ditentukan oleh tingkat konsistensi yang digunakan oleh aplikasi dan mekanisme replikasi. Untuk replikasi di Cassandra, lihat Penjelasan tentang Replikasi Data di Database NoSQL.

Pemeriksaan kesehatan

Application Gateway dan Load Balancer sama-sama menggunakan probe kesehatan untuk memantau ketersediaan instans VM.

  • Application Gateway selalu menggunakan probe HTTP.
  • Load Balancer dapat menguji HTTP atau TCP. Umumnya, jika VM menjalankan server HTTP, gunakan probe HTTP. Jika tidak, gunakan TCP.

Jika probe tidak dapat menjangkau instans dalam periode batas waktu, gateway atau penyeimbang beban akan berhenti mengirimkan lalu lintas ke VM tersebut. Probe terus memeriksa dan akan mengembalikan VM ke kumpulan back-end jika VM tersedia lagi.

Probe HTTP mengirimkan permintaan HTTP GET ke jalur yang ditentukan dan mendengarkan respons HTTP 200. Jalur ini dapat berupa jalur root ("/"), atau titik akhir pemantauan kesehatan yang menerapkan logika kustom tertentu untuk memeriksa kesehatan aplikasi. Titik akhir harus mengizinkan permintaan HTTP anonim.

Untuk informasi selengkapnya tentang probe kesehatan, lihat:

Untuk pertimbangan tentang mendesain titik akhir probe kesehatan, lihat Pola Pemantauan Titik Akhir Kesehatan.

Pengoptimalan biaya

Gunakan Kalkulator Harga Azure untuk memperkirakan biaya. Berikut beberapa pertimbangan lainnya.

Kumpulan skala komputer virtual

Virtual Machine Scale Sets tersedia pada semua ukuran VM Linux. Anda hanya dikenakan biaya untuk VM Azure yang disebarkan serta sumber daya infrastruktur dasar tambahan yang digunakan, seperti penyimpanan dan jaringan. Tidak ada biaya tambahan untuk layanan Virtual Machine Scale Sets itu sendiri.

Untuk opsi harga VM tunggal, Lihat Harga VM Linux.

Penyeimbang muatan

Anda hanya dikenakan biaya untuk jumlah aturan keluar dan penyeimbangan muatan yang dikonfigurasi. Aturan terjemahan alamat jaringan masuk (NAT) gratis. Tidak ada biaya per jam untuk load balancer Standar ketika tidak ada aturan yang dikonfigurasi.

Untuk informasi selengkapnya, lihat bagian biaya di Microsoft Azure Well-Architected Framework.

Keamanan

Jaringan virtual adalah batas isolasi lalu lintas di Azure. VM dalam satu jaringan virtual tidak dapat berkomunikasi langsung dengan VM di jaringan virtual yang berbeda. VM dalam jaringan virtual yang sama dapat berkomunikasi, kecuali Anda membuat kelompok keamanan jaringan (NSG) untuk membatasi lalu lintas. Untuk informasi selengkapnya, lihat Keamanan jaringan dan layanan cloud Microsoft.

Untuk lalu lintas Internet yang masuk, aturan penyeimbang muatan menentukan lalu lintas mana yang dapat mencapai ujung belakang. Namun, aturan penyeimbang muatan tidak mendukung daftar aman IP, jadi jika Anda ingin menambahkan alamat IP publik tertentu ke daftar aman, tambahkan NSG ke subnet.

DMZ. Sebaiknya tambahkan appliance virtual jaringan (NVA) untuk membuat DMZ antara Internet dan jaringan virtual Azure. NVA adalah istilah umum untuk appliance virtual yang dapat melakukan tugas terkait jaringan, seperti firewall, inspeksi paket, audit, dan perutean kustom. Untuk informasi selengkapnya, lihat Menerapkan DMZ antara Azure dan Internet.

Enkripsi. Enkripsikan data tidak aktif saat diam dan gunakan Azure Key Vault untuk mengelola kunci enkripsi database. Key Vault dapat menyimpan kunci enkripsi dalam modul keamanan perangkat keras (HSM). Sebaiknya simpan juga rahasia aplikasi, seperti string koneksi database, di Key Vault.

Proteksi DDoS. Platform Azure menyediakan DDoS Protection dasar secara default. Perlindungan dasar ini ditargetkan untuk melindungi infrastruktur Azure secara keseluruhan. Meskipun DDoS Protection dasar diaktifkan secara otomatis, sebaiknya gunakan Azure DDoS Network Protection. Perlindungan Jaringan menggunakan penyetelan adaptif, berdasarkan pola lalu lintas jaringan aplikasi Anda, untuk mendeteksi ancaman. Dengan demikian, perlindungan ini dapat menerapkan mitigasi terhadap serangan DDoS yang mungkin tidak terdeteksi oleh kebijakan DDoS di seluruh infrastruktur. Perlindungan Jaringan juga menyediakan pemberitahuan, telemetri, dan analitik melalui Azure Monitor. Untuk informasi selengkapnya, lihat Azure DDoS Protection: Praktik terbaik dan arsitektur referensi.

Keunggulan operasional

Karena semua sumber daya utama dan dependensinya berada dalam jaringan virtual yang sama dalam arsitektur ini, sumber daya tersebut diisolasi dalam beban kerja dasar yang sama. Fakta itu memudahkan untuk mengaitkan sumber daya khusus beban kerja ke tim DevOps, sehingga tim dapat mengelola semua aspek sumber daya tersebut secara independen. Isolasi ini memungkinkan Tim dan Layanan DevOps untuk melakukan integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD).

Selain itu, Anda dapat menggunakan templat penyebaran yang berbeda dan mengintegrasikannya dengan Azure DevOps untuk memprovisikan lingkungan yang berbeda dalam hitungan menit. Misalnya untuk mereplikasi skenario mirip produksi atau memuat lingkungan pengujian hanya jika diperlukan, sehingga akan menghemat biaya.

Dalam skenario ini, komputer virtual Anda dikonfigurasi dengan menggunakan Ekstensi Komputer Virtual, karena mereka menawarkan kemungkinan menginstal perangkat lunak tambahan tertentu, seperti Apache Cassandra. Secara khusus, Ekstensi Skrip Kustom memungkinkan pengunduhan dan eksekusi kode arbitrer pada Mesin Virtual, memungkinkan penyesuaian Sistem Operasi VM Azure tanpa batas. Ekstensi VM diinstal dan dijalankan hanya pada waktu pembuatan VM. Itu berarti jika Sistem Operasi dikonfigurasikan secara tidak benar pada tahap selanjutnya, akan diperlukan intervensi manual untuk memindahkannya kembali ke status yang benar. Alat Manajemen Konfigurasi dapat digunakan untuk mengatasi masalah ini.

Pertimbangkan untuk menggunakan Azure Monitor untuk Menganalisis dan mengoptimalkan performa infrastruktur Anda, Memantau dan mendiagnosis masalah jaringan tanpa masuk ke komputer virtual Anda. Application Insights sebenarnya adalah salah satu komponen Azure Monitor, yang memberi Anda metrik dan log yang kaya untuk memverifikasi status lanskap Azure lengkap Anda. Azure Monitor akan membantu Anda mengikuti status infrastruktur Anda.

Pastikan tidak hanya untuk memantau elemen komputasi Anda yang mendukung kode aplikasi, tetapi juga platform data Anda, khususnya database, karena performa rendah dari tingkat data aplikasi dapat berdampak serius.

Untuk menguji lingkungan Azure tempat aplikasi berjalan, versi aplikasi harus dikontrol dan disebarkan melalui mekanisme yang sama dengan kode aplikasi, lalu aplikasi dapat diuji dan divalidasi menggunakan paradigma pengujian DevOps juga.

Untuk informasi selengkapnya, lihat bagian Keunggulan Operasional di Kerangka Kerja Microsoft Azure yang Dirancang dengan Baik.

Langkah berikutnya