ある VM の IP を別の VM に移動する

ある VM の IP を別の VM に移動する

同じマシンで 2 つの VM をホストしています。1 つは本質的にアクティブで、つまりサービスをホストし、クライアントに接続されています (クライアントはホスト マシンで直接実行されています)。フォールト トレランス サービスを実装する必要があります。つまり、プライマリ VM に障害が発生した場合、両方の VM が同じサービスをホストしていることを前提として、クライアントは自動的にセカンダリ VM に接続されます。

どこかでフローティング IP について読んだのですが、調べてみると有料サービスであることがわかりました。お金をかけずにこれを実現する簡単な方法はありますか?

マシンは Linux ベースで、具体的には、ホストは ubuntu 20.*、VM は ubuntu 18.* です。

答え1

次のいずれかの方法で、「フローティング IP」(VIP または仮想 IP とも呼ばれる) を実現できます。

参考までに: リストから正常なサーバーを選択できるようにすることで、クライアントの冗長性を実現することもできます。

VM間の冗長性を実装する際には、同じホスト推奨されません。(ホストは単一障害点です)

答え2

アプリケーション/VMの前にあるロードバランサーとしてリバースプロキシを使用することをお勧めします。次のようなものを使用できますnginxhaproxy

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/

関連情報