Saya ingin mengatur autoscaling di AWS. Saya tidak ingin menggunakan Elastic Load Balancer.
Autoscalling di Amazon menciptakan instance EC2 dengan mulus selama lonjakan permintaan untuk mempertahankan kinerja, dan menurun secara otomatis selama permintaan meninabobokan untuk meminimalkan biaya.
Karena instance EC2 ini dibuat secara otomatis, nama host mereka tidak diketahui oleh NGINX.
Saya tahu dan sudah memiliki pengaturan hulu di nginx hingga 10 contoh EC2.
Saya ingin dapat menambah / memperbarui / menghapus nama server secara otomatis ke konfigurasi hulu nginx saya, ketika autoscaling menambahkan / memperbarui / menghapus instance EC2.
nginx
amazon-ec2
amazon-web-services
autoscaling
Luis Lobo Borobia
sumber
sumber
Jawaban:
Ini dapat dicapai dengan menggunakan Amazon SDK (saya hampir selesai dengan itu, akan meletakkannya di github), memanfaatkan layanan SNS, EC2 dan Autoscaling.
Saya telah mengikuti langkah-langkah di bawah ini untuk mencapai ini:
Silakan temukan skrip di sini https://github.com/singhupendra/aws-autoscale
sumber
Terima kasih @alonx, saya telah melakukan riset, Amazon Autoscale memiliki api untuk menanyakan status grup autoscaling saat ini, dan menyebutkan anggotanya. Ia mengembalikan id instance ( http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/api_requests.html#query-example ), lalu Anda dapat menggunakan alat bantu uraian untuk mendapatkan nama server ( http: // docs .aws.amazon.com / AWSEC2 / latest / CommandLineReference / ApiReference-cmd-DescribeInstances.html ) dan akhirnya buat ulang file include upstream. Saya bisa merasakan notifikasi Autoscaling untuk meluncurkan proses yang melakukan tugas-tugas ini.
Saya masih belum menerapkannya tetapi cara untuk pergi.
Anda juga dapat menggunakan Autocaling dengan SNS http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASGettingNotifications.html
sumber
Saya belum menerapkan ini belum sendiri, tapi aku melihat ke menggunakan On-the-fly rekonfigurasi dari nginx Ditambah . Saya berpikir bahwa AMI, atau manajemen konfigurasi (Wayang, Garam, atau semacamnya) yang mengatur contoh Grup Penskalaan Otomatis, dapat mencapai API konfigurasi ulang NGiNX (mungkin, melalui nama domain Route53 internal sehingga tidak ada IP tetap yang akan perlu digunakan), dan menambahkan dirinya ke cluster hulu untuk proksi terbalik. Setelah itu pemeriksaan kesehatan bawaan NGiNX kemudian akan mengambil alih untuk contoh [ditambahkan] itu, dan lepaskan jika itu menjadi tidak tersedia. Ini tampaknya solusi terbersih dan tidak ada penundaan dalam menambahkan instance, dan hampir tidak ada penundaan dalam menjatuhkannya karena NGiNX Plus memiliki fitur pemeriksaan kesehatan out-of-band.
Pendekatan ini menghindari perlunya mengatur sistem penemuan otomatis (Konsul, Serf, atau semacamnya) yang untuk pengaturan yang lebih kecil sering tampak seperti banyak overhead baik dalam hal pengaturan / administrasi maupun instance EC2 yang diperlukan. Konsul, misalnya, mensyaratkan minimal tiga instance harus stabil. Budak mungkin dapat menjalankan instans ASG sendiri, tetapi masih ada overhead untuk mempertahankannya, dan jika ASG turun menjadi satu atau dua instance, Anda akan kehilangan kuorum.
Akhirnya, ini dapat digabungkan dengan pemberitahuan otomatis tentang perubahan Kelompok Penskalaan Otomatis, mungkin pada server NGiNX yang digunakan untuk menyeimbangkan beban. Seorang pendengar yang dipicu oleh notifikasi seperti itu (ini mungkin yang dimaksud Upendra) kemudian dapat secara instan menambahkan instance baru ke NGiNX melalui API modifikasi saat terbang. Selain biaya NGiNX Plus, ini membuat orang bertanya-tanya mengapa ada orang yang menggunakan Elastic Load Balancer dengan banyak masalah di tempat pertama.
Mengedit 2015/12/07: ngx_openresty 's penyeimbang-by-lua ( lihat thread GitHub ini ) menawarkan solusi sumber lain yang mungkin terbuka untuk hot-menambahkan / menghapus server dari nginx kelompok hulu. Saya belum bereksperimen dengan ini sendiri, tetapi ingin menambahkan disebutkan di sini untuk siapa pun yang menemukan posting ini.
sumber