ハートビートや、haproxy ロード バランサーがダウンしたときにフェールオーバーするための keepalived などの高可用性ソリューションを検討してきました。私たちは高可用性を望んでいますが、現時点では、2 つのロード バランサー インスタンスを同時に実行するための支出の範囲で高可用性を実現する必要はないことに気付きました。私たちのセットアップでは冗長になります)。
私の別の解決策は、現在のロード バランサーが機能しなくなった場合に AMI から新しいロード バランサー EC2 インスタンスを起動し、それをドメイン名が指すエラスティック IP に関連付けることです。これにより、ダウンタイムが新しいインスタンスを起動してエラスティック IP を関連付けるのにかかる時間に制限されるようになります。これは、現在の状況を考えると、特にマルチ AV を簡単に実行できるため、高可用性に対する合理的な費用対効果の高いソリューションのように思えます。ゾーン。次の手順を使用してこれを行うことを検討しています。
- ロードバランサーの AMI を準備する
- ロードバランサーとして機能する単一の ec2 インスタンスを起動し、それに Elastic IP を割り当てます
- マイクロ サーバーが現在のロード バランサーに定期的に ping を実行するようにします (いずれにせよ、追加のマイクロ サーバーが常に実行されています)。
- ping がタイムアウトした場合は、ロード バランサー AMI を使用して新しい EC2 インスタンスを起動します。
- Elastic IP を新しいインスタンスに関連付ける
- 古いロード バランサ インスタンスをシャットダウンする
- 新しいインスタンスで手順 3 以降を繰り返します。
スクリプトでコマンドを実行して EC2 インスタンスを起動およびシャットダウンし、エラスティック IP アドレスをインスタンスに関連付け、サーバーに ping を実行する方法を知っています。
私の質問は、ここで適切な ping は何でしょうか? 標準的な ping は一定の間隔で十分でしょうか? また、適切な間隔はどれくらいでしょうか? それとも、これはかなり単純化されたアプローチであり、私が行うべきよりスマートなヘルスチェックがありますか?
また、誰かがこのアプローチで問題を予見する場合は、お気軽にコメントしてください