Bagaimana cara saya memperbarui file konfigurasi Nginx di banyak server yang identik secara bersamaan?

12

Kami memiliki armada server Nginx di Amazon EC2 di mana kami sesekali perlu memperbarui file konfigurasi untuk mengimplementasikan pengaturan baru.

Saat ini kami memiliki konfigurasi dalam AMI khusus dan jika kami perlu memperbarui kami harus membangun kembali AMI dan kemudian instance EC2. Kami memiliki beberapa skrip pembantu, tetapi masih cukup upaya untuk melakukannya. Apakah ada cara yang lebih baik?

Bububu
sumber
3
mungkin, tumpukan garam untuk beberapa nama.
poige

Jawaban:

26

Ada sejumlah konsep yang dapat Anda manfaatkan.

Kunci kesuksesan adalah otomatisasi

Opsi pertama adalah tetap melakukan apa yang Anda lakukan sekarang, yaitu membangun kembali EC2s dengan setiap perubahan konfigurasi . Hanya dengan cara yang sepenuhnya otomatis.

Saat Anda sedang melakukan pembaruan konfigurasi melalui AMI, Anda mengambil satu langkah ini lebih jauh dan membuat saluran pipa yang, setelah perubahan file konfigurasi di beberapa repositori, akan:

  1. Secara otomatis membangun AMI baru - salah satu alat paling populer untuk melakukan itu adalah Packer
  2. Secara otomatis membangun kembali armada Nginx Anda - Anda seharusnya sudah memiliki semua server Nginx di Grup Penskalaan Otomatis dengan Penyeimbang Beban Aplikasi di depan. Jika tidak, Anda harus melakukannya karena akan membuat pembaruan sesederhana memperbarui Konfigurasi Peluncuran ASG dan menunggu instans dibangun kembali dari AMI baru.

Opsi kedua adalah menjaga instans tetap di tempatnya dan hanya menyebarkan file konfigurasi , tanpa membangunnya kembali. Secara umum Anda dapat memperlakukan file konfigurasi sebagai kode dan menyebarkan perubahan konfigurasi dengan cara yang sama seperti menyebarkan rilis kode. AWS memiliki banyak alat untuk membantu itu.

  • AWS Elastic Beanstalk yang menggunakan Chef secara internal dan Anda dapat membuat skrip pembaruan Nginx Anda dengan cara ini.
  • AWS Code Deploy yang merupakan alat penyebaran sepenuhnya skrip yang terintegrasi dengan baik dengan bagian-bagian lain dari AWS Code Suite :
    • Code Commit tempat Anda dapat menyimpan file konfigurasi Nginx di Git.
    • Pipeline kode yang dapat secara otomatis memicu penyebaran setiap kali file konfigurasi diperbarui di Komit kode.
  • Kemungkinan atau Wayang yang merupakan alat non-AWS populer yang dapat membantu Anda menjaga semua server dikonfigurasi dengan cara yang sama.

Setelah Anda merasa nyaman dengan mengotomatisasi pembaruan konfigurasi Nginx ini, Anda mungkin ingin memperpanjang otomatisasi ke seluruh infrastruktur Anda.


Ada Ikhtisar whitepaper besar dari Opsi Penempatan di AWS yang akan memberi Anda tinjauan bagus.

Saya harap itu membantu :)

MLu
sumber
Alternatif untuk Ansible atau Puppet adalah Salt, yang dirancang untuk tipe master / minion dari pengaturan dan semacam dioptimalkan untuk penyebaran skala yang lebih besar.
Araho
5

Simpan konfigurasi Anda di EFS, dan pasang EFS di lokasi yang diharapkan konfigurasi Nginx. Secara bergantian letakkan di Amazon S3 dan jalankan sinkronisasi sesekali, atau gunakan s3fs (waspadalah s3fs mungkin tidak cukup baik untuk penggunaan produksi).

Ketika Anda perlu mengubah konfigurasi Anda, tingkatkan ukuran grup autoscaling yang Anda inginkan untuk menggandakan apa yang Anda butuhkan untuk memicu instance baru dengan konfigurasi baru, dan kemudian kembali ke apa yang Anda butuhkan yang akan menghapus instance lama. Sebagai alternatif, lakukan reboot server secara bergulir.

Pilihan lain adalah hanya mendorong konfigurasi baru ke server Anda menggunakan alat otomatisasi dasar, seperti penyebaran kode AWS.

Opsi yang sepenuhnya otomatis di atas secara teknis lebih baik dan lebih bersih, tetapi jika Anda jarang mengubah konfigurasi dan menginginkan solusi yang mudah, ini bisa membantu.

Tim
sumber
1

Membangun kembali AMI atau membuat jaringan penyebaran yang sepenuhnya lengkap seperti yang lainnya hanya untuk perubahan file konfigurasi sepertinya merupakan kerja keras. Anda harus menggunakan Ansible untuk mendorong perubahan dan menjaga agar semua node Anda tetap sinkron. Ada banyak modul Ansible yang dapat membantu Anda mengotomatiskan tugas-tugas umum.

IPX
sumber
Salah satu manfaat dari infrastruktur yang tidak dapat diubah adalah Anda tahu bahwa Anda tidak memiliki server "peliharaan" yang rapuh dan harus dipelihara. Itu memberi Anda keyakinan bahwa Anda dapat membuat lebih banyak server di prod / DR / pengujian tanpa masalah.
Tim