
同じマシンで 2 つの VM をホストしています。1 つは本質的にアクティブで、つまりサービスをホストし、クライアントに接続されています (クライアントはホスト マシンで直接実行されています)。フォールト トレランス サービスを実装する必要があります。つまり、プライマリ VM に障害が発生した場合、両方の VM が同じサービスをホストしていることを前提として、クライアントは自動的にセカンダリ VM に接続されます。
どこかでフローティング IP について読んだのですが、調べてみると有料サービスであることがわかりました。お金をかけずにこれを実現する簡単な方法はありますか?
マシンは Linux ベースで、具体的には、ホストは ubuntu 20.*、VM は ubuntu 18.* です。
答え1
次のいずれかの方法で、「フローティング IP」(VIP または仮想 IP とも呼ばれる) を実現できます。
- キープアライブ (VRRP)
- ペースメーカー/コロシンク
- 鯉(http://manpages.ubuntu.com/manpages/precise/man4/carp.4freebsd.html)
参考までに: リストから正常なサーバーを選択できるようにすることで、クライアントの冗長性を実現することもできます。
VM間の冗長性を実装する際には、同じホスト推奨されません。(ホストは単一障害点です)
答え2
アプリケーション/VMの前にあるロードバランサーとしてリバースプロキシを使用することをお勧めします。次のようなものを使用できますnginx
。haproxy
nginx の設定は以下のようになります:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server 192.0.0.1 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
}
上流ホストのヘルスチェックを自動的に実装するため、上流ホストのいずれかがダウンすると、nginx によって自動的に検出され、正常でないホストへのリクエストの送信が停止されます。
詳細は以下をご覧ください: https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/