Apakah cocok menaruh database mysql di nas

Lompati ke konten utama

Browser ini sudah tidak didukung.

Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.

Platform e-niaga Magento di Azure Kubernetes Service

Magento adalah platform e-commerce sumber terbuka yang ditulis dalam PHP. Contoh skenario ini menunjukkan Magento disebarkan ke Azure Kubernetes Service (AKS), dan menjelaskan praktik terbaik umum untuk menghosting Magento di Azure.

Arsitektur

Apakah cocok menaruh database mysql di nas

Alur kerja

  • Azure Kubernetes Service (AKS) menyebarkan kluster Kubernetes Varnish, Magento, Redis, dan Elasticsearch dalam pod yang berbeda.
  • AKS membuat jaringan virtual untuk menyebarkan node agen. Buat jaringan virtual terlebih dahulu untuk menyiapkan konfigurasi subnet, tautan pribadi, dan pembatasan egress.
  • Varnish menginstal di depan server HTTP untuk bertindak sebagai cache halaman penuh.
  • Azure MySQL Database menyimpan data transaksi seperti pesanan dan katalog. Versi 8.0 direkomendasikan.
  • Azure Files Premium atau sistem network-attached storage (NAS) yang setara menyimpan file media seperti gambar produk. Magento memerlukan sistem file yang kompatibel dengan Kubernetes yang dapat memasang volume dalam mode ReadWriteMany, seperti Azure Files Premium atau Azure NetApp Files.
  • Jaringan pengiriman konten (CDN) menyajikan konten statis seperti CSS, JavaScript, dan gambar. Menyajikan konten melalui CDN meminimalkan latensi jaringan antara pengguna dan pusat data. Sebuah CDN dapat menghapus beban yang signifikan dari NAS dengan penembolokan dan penyajian konten statis.
  • Redis menyimpan data sesi. Menghosting Redis di kontainer direkomendasikan karena alasan performa.
  • AKS menggunakan identitas Azure Active Directory (Azure AD) untuk membuat dan mengelola sumber daya Azure lainnya seperti penyeimbang beban Azure, autentikasi pengguna, kontrol akses berbasis peran, dan identitas terkelola.
  • Azure Container Registry menyimpan gambar Docker pribadi yang disebarkan ke kluster AKS. Anda dapat menggunakan registri kontainer lain seperti Docker Hub. Perhatikan bahwa penginstalan Magento default menulis beberapa rahasia pada gambar.
  • Azure Monitor mengumpulkan dan menyimpan metrik dan log, termasuk metrik platform layanan Azure dan telemetri aplikasi. Azure Monitor terintegrasi dengan AKS untuk mengumpulkan metrik pengontrol, node, dan kontainer, serta log node kontainer dan master.

Komponen

  • Azure Kubernetes Service (AKS)
  • AKS membuat jaringan virtual
  • Azure Database untuk MySQL
  • Azure Files Premium
  • Azure NetApp Files.
  • CDN
  • Azure Active Directory (Azure AD)
  • Azure Container Registry
  • Azure Monitor

Detail skenario

Untuk informasi selengkapnya tentang Magento, lihat Magento - Dapatkan perangkat lunak.

Potensi penggunaan kasus

Solusi ini dioptimalkan untuk industri ritel.

Pertimbangan

Pertimbangan ini mengimplementasikan pilar Azure Well-Architected Framework, yang merupakan serangkaian prinsip panduan yang dapat digunakan untuk meningkatkan kualitas beban kerja. Untuk informasi selengkapnya, lihat Microsoft Azure Well-Architected Framework.

Keamanan

Berikut adalah beberapa pertimbangan keamanan untuk skenario ini:

  • Konfigurasikan tautan pribadi untuk MySQL sehingga lalu lintas antara klien dan MySQL tidak terpapar ke internet publik. Untuk informasi selengkapnya, lihat Apa itu Azure Private Link.

  • Anda dapat menambahkan ingress Azure Application Gateway untuk mendukung penghentian secure socket layer (SSL).

Kontrol akses berbasis peran (RBAC)

Kubernetes dan Azure memiliki mekanisme untuk kontrol akses berbasis peran (RBAC).

  • Azure RBAC mengontrol akses ke sumber daya Azure, termasuk kemampuan untuk membuat sumber daya. Azure RBAC dapat menetapkan izin kepada pengguna, grup, atau perwakilan layanan, yang merupakan identitas keamanan yang digunakan oleh aplikasi.

  • RBAC Kubernetes mengontrol izin ke API Kubernetes. Misalnya, membuat pod dan mencantumkan pod adalah tindakan yang dapat diotorisasi oleh RBAC Kubernetes kepada pengguna.

AKS mengintegrasikan mekanisme RBAC Azure dan Kubernetes. Untuk menetapkan izin AKS kepada pengguna, buat peran dan pengikatan peran:

  • Peran adalah sekumpulan izin yang berlaku dalam namespace layanan. Izin didefinisikan sebagai kata kerja seperti get, update, create, atau delete, pada sumber daya seperti pod atau penyebaran.

  • Pengikatan peran menetapkan peran kepada pengguna atau grup.

  • Objek ClusterRole mendefinisikan peran yang berlaku untuk seluruh kluster AKS, di semua namespace layanan. Untuk menetapkan pengguna atau grup ke ClusterRole, buat ClusterRoleBinding.

Saat membuat kluster AKS, Anda dapat mengonfigurasinya untuk menggunakan Azure AD untuk autentikasi pengguna.

  • Untuk detail tentang cara menyiapkan integrasi Azure AD, lihat Integrasi Azure Active Directory yang dikelola AKS.

  • Untuk informasi selengkapnya tentang mengontrol akses ke sumber daya kluster menggunakan identitas RBAC Kubernetes dan Azure AD, lihat Menggunakan RBAC Kubernetes dengan Azure AD.

Skalabilitas

Ada beberapa cara untuk mengoptimalkan skalabilitas untuk skenario ini:

Media dan file statis

  • Memprovisikan Azure Files atau sistem NAS lainnya secara memadai. Magento dapat menyimpan ribuan file media seperti gambar produk. Pastikan untuk menyediakan Azure Files atau produk NAS lainnya dengan operasi input/output per detik (IOPS) yang cukup untuk menangani permintaan.

  • Minimalkan ukuran konten statis seperti HTML, CSS, dan JavaScript. Minification dapat mengurangi biaya bandwidth dan memberikan pengalaman yang lebih responsif bagi pengguna.

Koneksi Database

  • Aktifkan koneksi persisten ke database MySQL, jadi Magento terus menggunakan kembali koneksi yang ada alih-alih membuat koneksi baru untuk setiap permintaan. Untuk mengaktifkan koneksi persisten, tambahkan baris berikut ke db bagian file Magento env.php :

    'persistent' => '1'

  • Jika MySQL menggunakan terlalu banyak CPU, kurangi penggunaan dengan menonaktifkan jumlah produk dari navigasi berlapis dalam konfigurasi Magento:

    magento config:set -vvv catalog/layered_navigation/display_product_count 0

Penembolokan

  • Konfigurasikan OPcache untuk penembolokan dan pengoptimalan kode PHP.

    Pastikan arahan berikut diatur dan tidak dibiarkan tanpa komentar di php.ini:

    opcache.enable=1

    opcache.save_comments=1

    opcache.validate_timestamps=0

  • Seimbangkan beban cache Varnish dengan menjalankan beberapa instans pada pod sehingga dapat menskalakan.

Pembuatan Log

Batasi pengelogan akses, untuk menghindari masalah performa dan mencegah mengekspos data sensitif seperti alamat IP klien.

  • Gunakan perintah Varnish berikut untuk membatasi pembuatan log ke tingkat kesalahan:

    varnishd -s malloc,1G -a :80 -f /etc/varnish/magento.vcl && varnishlog -q "RespStatus >= 400 or BerespStatus >= 400"

  • Jika Anda menggunakan server web Apache untuk masuk, batasi pengelogan Apache ke tingkat kesalahan dengan menambahkan baris berikut ke entri VirtualHost Magento dalam konfigurasi server Apache:

    CustomLog /dev/null common

  • Nonakifkan log akses PHP-FPM dengan mengomentari pengaturan access.log di semua konfigurasi PHP-FPM.

Ketersediaan

Pertimbangkan cara-cara ini untuk mengoptimalkan ketersediaan untuk skenario ini:

Pemeriksaan kesehatan

Kubernetes mendefinisikan dua jenis probe kesehatan:

  • Probe kesiapan memberi tahu Kubernetes apakah pod siap menerima permintaan.
  • Probe keaktifan memberi tahu Kubernetes apakah pod harus dihapus dan instans baru dimulai.

Sesuaikan probe kesehatan Kubernetes dan gunakan untuk mengetahui apakah pod dalam keadaan sehat.

Zona Ketersediaan

Zona Ketersediaan adalah lokasi fisik unik di wilayah Azure yang membantu melindungi aplikasi dan data dari kegagalan pusat data. Setiap zona terdiri dari satu atau beberapa pusat data. Aplikasi di zona dapat tetap tersedia meskipun ada kegagalan fisik dalam satu pusat data.

Kluster AKS dapat disebarkan di beberapa Zona Ketersediaan, untuk memberikan tingkat ketersediaan yang lebih tinggi dan melindungi terhadap kegagalan perangkat keras atau peristiwa pemeliharaan yang direncanakan. Mendefinisikan kumpulan node kluster untuk menjangkau beberapa zona memungkinkan node terus beroperasi meskipun satu zona tidak berfungsi. Untuk informasi selengkapnya tentang penyebaran AKS ke Zona Ketersediaan, lihat Membuat kluster AKS yang menggunakan zona ketersediaan.

Batasan sumber daya

  • Ketidaksesuaian sumber daya dapat memengaruhi ketersediaan layanan. Menetapkan batasan sumber daya kontainer sehingga tidak ada satu kontainer pun yang dapat membanjiri memori kluster dan sumber daya CPU. Anda dapat menggunakan diagnostik AKS untuk mengidentifikasi masalah apa pun di kluster.

  • Gunakan batas sumber daya untuk membatasi total sumber daya yang diizinkan untuk kontainer, sehingga satu kontainer tertentu tidak dapat membuat kontainer lain kekurangan.

DevOps

Berikut adalah beberapa pertimbangan operasional untuk skenario ini:

  • Dalam skenario ini, MySQL tidak mengekspos titik akhir publik. Jika server build menyimpan pengaturan konfigurasi ke database MySQL backend, pastikan untuk menyebarkan server tersebut ke subnet jaringan virtual yang sama dengan yang terhubung MySQL melalui titik akhir layanan.

  • Gunakan Azure Container Registry atau registri kontainer lain seperti Docker Hub untuk menyimpan gambar Docker pribadi yang disebarkan ke kluster. AKS dapat mengautentikasi dengan Azure Container Registry dengan menggunakan identitas Azure AD-nya.

Pemantauan

Azure Monitor menyediakan metrik utama untuk semua layanan Azure, termasuk metrik kontainer dari AKS. Buat dasbor untuk menampilkan semua metrik di satu tempat.

Apakah cocok menaruh database mysql di nas

Opsi pemantauan lainnya adalah menggunakan dasbor Grafana:

Apakah cocok menaruh database mysql di nas

Pengujian performa

Gunakan Magento Performance Toolkit untuk pengujian performa. Toolkit ini menggunakan Apache JMeter untuk menyimulasikan perilaku pelanggan seperti proses masuk, mencari produk, dan checkout.

Pengoptimalan biaya

Optimalisasi biaya adalah tentang mencari cara untuk mengurangi pengeluaran yang tidak perlu dan meningkatkan efisiensi operasional. Untuk informasi selengkapnya, lihat Gambaran umum pilar pengoptimalan biaya.

  • Lakukan perencanaan kapasitas berdasarkan pengujian performa.

  • Gunakan kalkulator harga Azure untuk memperkirakan biaya.

  • Lihat pertimbangan biaya lainnya dalam Prinsip optimalisasi biaya dalam Microsoft Azure Well-Architected Framework.

Langkah berikutnya

  • Repositori kode Magento 2 GitHub
  • Dokumentasi Pengembang Magento

Saran dan Komentar

Kirim dan lihat umpan balik untuk