Cara menjalankan WordPress di 2 VM untuk ketersediaan tinggi

12

Microsoft Azure mengharuskan aplikasi menggunakan dua contoh di beberapa pusat data untuk mencapai SLA "ketersediaan tinggi" mereka dan memastikan situs Anda tidak turun untuk pemeliharaan rutin. Mereka bahkan memberi tahu Anda pasangan pusat data mana yang tidak akan pernah pergi untuk pemeliharaan pada saat yang sama.

Itu semua baik dan bagus, tetapi bagaimana Anda melakukan ini dengan mudah dalam praktek untuk aplikasi seperti WordPress dengan database MySQL pada VM yang sama? Saya tidak asing dengan memuat penyeimbangan antara dua VM tetapi setup replikasi database menghindari saya. Kami tidak ingin dua versi data yang bisa keluar dari sinkronisasi. Replikasi MySQL tampaknya memerlukan pengaturan master-slave yang akan gagal menyinkronkan perubahan ke master DB jika pengguna mendarat di instance slave.

Apakah saya hanya salah memahami konsep ini? Bantuan apa pun sangat kami hargai!

Yaron
sumber
1
Mengapa Anda meng-host WordPress di Azure? Ada hosting yang lebih baik dan lebih murah untuk WordPress. Digital Ocean misalnya.
Alexus
1
Alexus, itu tidak benar-benar relevan di sini, tetapi kami memiliki tumpukan yang agak besar tersebar di infrastruktur Azure yang WordPress hanya satu komponen. Azure adalah platform yang fantastis dan kami sangat senang dengannya.
Yaron
1
kena kau. Anda harus melakukan apa yang harus Anda lakukan :) Saya juga suka Azure untuk sebagian besar barang .NET saya, tetapi selalu meng-host situs WP secara terpisah.
Alexus
Yaron, apakah Anda menemukan jawaban di bawah ini membantu? Sejauh ini telah menerima 3 upvotes, hanya ingin memeriksa apakah Anda menemukan konsep penting yang hilang sehingga saya dapat memperbarui untuk mengatasinya untuk kasus penggunaan khusus Anda.
Bryan 'BJ' Hoffpauir Jr.
1
Terima kasih banyak untuk jawaban menyeluruhnya @ Bryan'BJ'Hoffpauir dan maaf saya belum punya waktu untuk mencoba mengikuti instruksi Anda untuk melihat apakah mereka bekerja dengan implementasi kami. Saya menandai jawaban sebagai benar dan akan menjangkau lagi jika saya mengalami masalah. Terima kasih lagi!!
Yaron

Jawaban:

11

Berita Buruk: Basis inti open source Wordpress memang membuat beberapa asumsi tentang dijalankan di server tunggal (konten-wp, unggahan pengguna, dan perpustakaan media untuk menyebutkan beberapa)

Berita Baik: Hampir semua penyedia cloud (termasuk Azure) memiliki abstraksi yang memungkinkan Anda mengatasi keterbatasan desain ini.

Pada dasarnya, Anda akan mengatasi masalah berikut:

  • Load Balancing traffic antara dua (atau lebih) server web / aplikasi Wordpress "front-end". Tidak terlalu sulit karena Wordpress PALING stateless kecuali Anda membiarkan pengguna masuk ke situs. Ini dilakukan melalui kombinasi DNS dan Load Balancers. Anda akan memerlukan dukungan untuk 2 IP untuk server aplikasi Anda - 1 set akan terhubung ke subnet yang dapat dirutekan melalui Internet (meskipun mudah-mudahan dilindungi oleh firewall yang tidak diuraikan di bawah) dan dua lainnya akan berada di subnet BERBEDA yang diisolasi dari jaringan lain dan berisi Instance Server Database tetapi garis dasar seperti:
                     / - (10.0.0.1 - eth0) wp1.domain.com (10.0.1.1 - eth2)
(Public IP) wp.domain.com          
                     \ - (10.0.0.2 - eth1) wp2.domain.com (10.0.1.2 - eth3)
  • Mengelola sesi JIKA Anda membiarkan pengguna masuk ke situs. Jika demikian, Anda harus memastikan kapan mereka masuk ke server 1 bahwa semua permintaan masa depan mereka dialihkan ke server itu (sesi tempel) atau tidak masalah server mana yang mereka akses karena sesi dikelola melalui mekanisme lain (via Zend Server Session Clustering , misalnya).

  • Mengelola Login Admin JIKA Anda membiarkan beberapa pengguna masuk ke back-end untuk mengelola konten (mirip dengan di atas).

  • Memilih Sistem DB yang JUGA Sangat Tersedia. Tidak ada gunanya memiliki dua server ujung depan jika DB Anda menyebabkan seluruh sistem lumpuh. Anda harus memanfaatkan replikasi MySQL Master / Slave melalui ClearDB atau memodifikasi WordPress melalui plugin untuk memanfaatkan SQL Server sehingga Anda dapat menggunakan sistem pengelompokan asli . Ini berarti Anda membutuhkan setidaknya 4 VM jika Anda ingin mengelola sendiri layer DB (2 x App & 2 x DB). Begini tampilannya:

               / - wp1.domain.com (10.0.1.1) \ --- / (10.0.1.3) db1.domain.com (10.0.2.3) \
         wp.domain.com X |           
               \ - wp2.domain.com (10.0.1.2) / --- \ (10.0.1.4) db2.domain.com (10.0.2.3) /

  • CATATAN - untuk memastikan kegagalan yang andal & melindungi keamanan sistem, subnet jaringan KETIGA biasanya digunakan untuk menghubungkan dua node basis data satu sama lain melalui saluran pribadi yang terpisah dari jaringan komunikasi lain yang digunakan server aplikasi untuk berbicara dengan database & server aplikasi gunakan untuk berkomunikasi dengan dunia luar.

  • Mengaktifkan Koneksi Pooling untuk memaksimalkan kinerja dan keandalan koneksi database server aplikasi Anda.

  • Memanfaatkan plugin Caching seperti W3 Total Cache atau Super Cache untuk meminimalkan beban pada server ujung depan.

Panduan berikut menawarkan spesifik tentang bagaimana Anda dapat mengatasi setiap tantangan di atas. Ada beberapa cara untuk menangani masing-masing dalam Azure, jadi terserah kepada Anda untuk memutuskan bagaimana Anda ingin menyerang setiap tantangan kemudian berurusan dengan kendala masing-masing pilihan yang dikenakan saat Anda bekerja naik turun tumpukan.

Bryan 'BJ' Hoffpauir Jr.
sumber