Skenario target ideal
Ya, Anda harus menggunakan penyeimbang beban dan memperbarui satu contoh sekaligus. Saya tidak yakin di mana komunikasi antar-wadah masuk.
Sebagai contoh, bayangkan Anda memiliki penyeimbang beban yang melayani situs Anda A. Pengguna hanya terhubung sebagai dan hanya tahu sebagai "A". Penyeimbang beban tahu bahwa ada dua atau lebih backend (B, C, dll.), Dan apakah itu VM atau kontainer tidak masalah.
Kemudian, Anda ingin memutakhirkan backend, yang dalam hal ini adalah instance Apache.
- keluarkan B dari backend yang memenuhi syarat untuk load balancer sehingga tidak lagi menerima lalu lintas apa pun.
- tunggu permintaan yang sekarang hidup untuk dilayani dan koneksi yang ada ditutup.
- perbarui wadah atau VM yang mendasarinya yang melayani B
- restart B, tunggu sampai memuat dan mulai bekerja
- uji B untuk memastikan itu melayani permintaan baru dengan benar
- tambahkan B kembali ke kumpulan backend penyeimbang beban untuk mengaktifkan kembali lalu lintas
Kemudian, lakukan proses yang sama untuk C, D, dll.
Perhatikan bahwa ada permintaan terbuka untuk peningkatan tempat-tempat kontainer Docker , mulai November 2013, tetapi tampaknya tidak ada banyak kemajuan sehingga solusi di atas adalah apa yang harus Anda lakukan dalam waktu yang berarti.
Apa yang harus dilakukan untuk situs langsung yang ada
Mungkin, Anda menanyakan hal ini karena Anda sudah menjalankan situs langsung dalam model ini dan Anda ingin memutakhirkannya tanpa downtime. Jadi, kita perlu mencapai kondisi target ideal di atas, tetapi secara bertahap.
Mari kita asumsikan bahwa:
- Anda memiliki nama DNS yang menunjuk ke wadah Anda
- kontainer Anda berjalan pada beberapa alamat IP
- pengguna Anda tidak tahu alamat IP kontainer dan itu bukan kode tempat
Jika asumsi ini salah, Anda harus memperbaikinya terlebih dahulu sehingga ini benar.
Kemudian, ikuti langkah-langkah ini:
- buat penyeimbang beban di IP baru dan arahkan ke wadah yang ada sebagai satu-satunya backend
- ubah DNS untuk menunjuk ke load balancer daripada IP kontainer secara langsung
- tambahkan backend Apache identik dengan setup wadah VM + yang sama
- sekarang Anda memiliki penyeimbang beban dengan dua backend B dan C, jadi ikuti petunjuk di bagian "skenario target ideal" untuk memutakhirkannya satu per satu
Cara memperbarui penyeimbang beban
Cara mudah (dihosting)
Opsi termudah adalah tidak menjalankan penyeimbang Anda sendiri. Misalnya, jika Anda menggunakan platform cloud yang menyediakan penyeimbangan beban sebagai layanan, pertimbangkan untuk menggunakannya dan kemudian pemeliharaan dan pembaruan penyeimbang beban tidak menjadi masalah.
Cara manual
Jika Anda menjalankan penyeimbang beban Anda sendiri, menambahkan lapisan tipuan lainnya (yaitu, DNS) akan membantu. Mari kita asumsikan sebagai berikut:
- bahwa kami memiliki nama host yang menyelesaikan IP dari load balancer A kami yang ingin kami perbarui
- penyeimbang beban kami memiliki kumpulan backend P1, P2, dll.
Kami melanjutkan sebagai berikut:
dan kamu sudah selesai.
Detail, diagram, dan perkakas
Lihat artikel dan alat ini yang dapat membantu Anda mengotomatiskan proses, tetapi gagasan umumnya sama:
Moral
"Semua masalah dalam ilmu komputer dapat diselesaikan dengan tingkat tipuan yang lain, kecuali tentu saja untuk masalah tipuan yang terlalu banyak." - David Wheeler