ラボのVMで実行されている3つのUbuntuノードのクラスターがあり、今すぐ本番環境に移行したいと考えています。 Hetzner Online hetzner.deはお得な専用サーバーをいくつか提供しているので、ギガビットスイッチに接続された3台のマシンをレンタルしました。
私の意図は、2台のHAProxyサーバーの前に2台のkeepalivedを備えたHA-Setupを作成することです。 Keepalivedは、セットアップ内でVIPで構成されています。残念ながら、これはHetznerでは機能しません。ただし、スクリプトを使用して他のサーバーに切り替えることができるフェイルオーバーIPと呼ばれるシステムを提供します。 http://wiki.hetzner.de/index.php/Failover_Skript
Keepalivedの設定は次のようになります。
vrrp_script chk_haproxy {
script "killall -0 haproxy" # cheaper than pidof
interval 2 # check every 2 seconds
weight 2 # add 2 points of prio if OK
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
virtual_ipaddress {
192.168.56.101/24 # this is the shared IP I was using
}
track_script {
chk_haproxy
}
}
では、フェイルオーバースクリプトはこれにどのように適合しますか?
問題を抱えているのは私だけではないようです。解決策はそれほど明白ではありません。 https://www.howtoforge.com/community/threads/hetzner-to-stop-support-for-high-availability-setups.19988/
これは古い答えなので、あなたがまだ答えを探しているかどうかはわかりません。しかし、私はこれを行うための最良の方法を探してそれに遭遇しました。
HetznerがフェイルオーバーIPを専用サーバーに割り当てる方法は、サーバー上でフェイルオーバーIPを構成できるようにするのではなく、トラフィックを元のサーバーIPにルーティングすることです。したがって、サーバー上の何も変更せず、管理インターフェースで手動でIPを切り替えることができます。しかしながら;手動でフェイルオーバーするためにベッドから出たくないので、これはほとんどの人にとって適切な解決策ではありません。これは自動的に実行され、フェイルオーバーが完了したことを管理者に通知する必要があります。たぶん、システムが見た問題とそれがフェイルオーバーした理由を示す小さなレポートがあっても。
Keepalivedはこれを実行できます。必要なのは、フェイルオーバー中にスクリプトを実行するようにkeepalivedを構成することだけです。しかし、フェイルオーバーするIPがない場合、どうすればフェイルオーバーできますか?
シンプル;サーバー間に内部ネットワークを作成し、ルーティングされていない独自の内部IPをkeepalivedに割り当てます。この内部ネットワークは外部ネットワークと同じインターフェースを使用するため、実際には問題ではありません。このアプローチの利点は、この内部VIPを使用して、すべての内部トラフィックを100%内部に保つことができることです。
Keepalivedがフェイルオーバーしたら、Hetznerからスクリプトを実行して、次を使用して外部IPを切り替えるように指示します。notify
例:
vrrp_script chk_haproxy {
script "killall -0 haproxy" # cheaper than pidof
interval 2 # check every 2 seconds
weight 2 # add 2 points of prio if OK
}
vrrp_instance VI_1 {
state MASTER
interface enp0s31f6.4000
virtual_router_id 51
priority 101
virtual_ipaddress {
192.168.100.3/24 # this is the shared IP I was using
}
track_script {
chk_haproxy
}
notify /usr/sbin/hetzner_failoverIP.sh database set $THIS_SERVER_IP
}
もちろん、Hetznerスクリプトは、サーバーIPを単独で選択するなど、よりスマートになるように調整できます。
注意すべき欠点は、外部IPに40〜60秒かかることです。私にとって、最小40秒、最大1分は長すぎます。
もう1つのオプションは、フェイルオーバーIPと上記のスクリプトを使用せずに、Hetznerクラウドインスタンスを使用してHAを有効にすることです。クラウドには別の解決策があります: クラウドフローティングIP 。
このオプションを使用すると、次の場合に月額約€8,50ユーロに戻ります。
次に、keepalivedを使用してクラウドフローティングIP(virtual_ipaddressセクション)を管理し、HAProxyを使用してすべてのトラフィックを専用サーバーに送信します。その後、HAProxyがヘルスチェックを実行するため、次のことを心配する必要はありません。
Hetznerクラウドサーバー サポートしていません 内部ネットワークについて言及する価値があります。ただし、このように使用する場合は必須ではなく、内部トラフィックは無料であるため、追加料金はかかりません。セキュリティのために、ロードバランサー(Keepalived + HAProxyクラウドインスタンス)をSELinux/AppArmorとFirewalldで保護します。 2つのクラスター(クラウド<->専用)間で暗号化されたトラフィックを使用して、パケットスニッフィングを優先します。プライベートVLANを使用している場合でも、専用サーバー間のトラフィックを暗号化します。トラフィックは同じNICを介して送信されます。覚えておくべきこと。
使用されたソース: