Tailscaleロゴ

高可用性の設定

最終検証日:
翻訳: 竹洞 陽一郎

大規模なネットワークでサブネットルーターやアプリコネクタを運用する場合、ルーティングを担うデバイスが停止してもリソースへアクセスできるように、あるいは各地に分散した従業員に対する性能を高めるために、高可用性(HA)を構成できます。
Tailscaleは、冗長化のための方式を2つ提供しています。

フェイルオーバー

フェイルオーバーは、すべてのプランで利用できます。

リージョナルルーティング

リージョナルルーティングは、PremiumプランおよびEnterpriseプランで利用できます。

リージョン内の負荷分散(既定)

1つのDERPリージョン内に重複するコネクタが複数ある場合、負荷はベストエフォートで均等に分散されます。
各クライアントは、リージョン内のノードに対する優先順位を、安定した擬似乱数の順序で保持します。
最も優先順位の高いノードが利用できない場合、クライアントは次に優先されるノードへ誘導されます。
この仕組みにより、コネクタが利用できなくなるまでは、クライアントは同じコネクタを使い続けます。

リージョン内のフェイルオーバー

リージョナルルーティングを有効にしたうえで、リージョン内の負荷分散を無効にし、代わりにリージョン内でのフェイルオーバー動作にすることもできます。
この変更を希望する場合は、Tailscaleのサポートへ依頼してください。
動作は前述のフェイルオーバーと同じで、対象範囲が1つのDERPリージョン内に限定されます。

tailnetでリージョナルルーティングを有効にする

  1. 管理コンソールのGeneral settingsページを開きます。
  2. Regional Routingを有効にします。

有効にすると、Tailscaleクライアントのトラフィックは、稼働中の重複コネクタがある最寄りのリージョンへ自動的にルーティングされます。
この設定はtailnet全体に適用され、すべての重複コネクタに同じ設定が適用されます。

リージョナルルーティングの活用例

リモート勤務者をトランジット網へ接続する

サブネットルーターとリージョナルルーティングを組み合わせることで、リモート勤務者のトラフィックを、AWS Transit Gateway、Google Cloud Interconnect、Azure ExpressRouteなどのトランジットゲートウェイへ誘導できます。
各接続点の手前にサブネットルーターを配置すると、リージョナルルーティングによって、デバイスのトラフィックを可能な限り早くトランジット事業者の網へ引き渡せます。

グローバルに複製されたアプリケーションやVPCへ接続する

クラウドの複数リージョンや複数のクラウド事業者にまたがって複製されたアプリケーションやVPCにも、同じ考え方で接続できます。
各アプリケーションやVPCの手前にサブネットルーターを配置すると、デバイスのトラフィックが最寄りのものへ自動的にルーティングされます。
この構成では、アプリケーションが同一の高可用性サブネットルート内で、同じIPアドレスの集合から到達できる必要があります。
これにより、グローバルに分散したアプリケーションを、マルチクラウドでのフェイルオーバーを備えた形で展開できます。

グローバルな従業員からSaaSアプリへ接続する

アプリコネクタとリージョナルルーティングを組み合わせると、必要なアクセス制御を維持しながら、世界各地の従業員からSaaSアプリへの性能を改善できます。
各拠点の近くにアプリコネクタを配置することで、デバイスのトラフィックは最寄りのアプリコネクタを経由して対象のSaaSアプリへ到達します。

アプリコネクタの高可用性

ステップ1: 複数のアプリコネクタを設定する

アプリコネクタのセットアップの手順に従い、すべてのアプリコネクタに同じタグを割り当てます。
たとえばtag:connectorを使う場合、2台以上のマシンで次のコマンドを実行します。

sudo tailscale up --advertise-connector --advertise-tags="tag:connector"

ステップ2: アプリコネクタにアプリを割り当てる

同じtag:connectorタグを使って、複数のアプリコネクタに対象のアプリを割り当てます。

ステップ3: 完了

同じネットワーク上で同じアプリを公開するアプリコネクタが2台以上になると、Tailscaleのコントロールサーバーがフェイルオーバーを自動的に管理します。
フェイルオーバーのモードでは、アプリコネクタがコントロールプレーンから15秒を超えて切断されると、トラフィックは別のアプリコネクタへ切り替わります。
リージョナルルーティングのモードでは、コネクタが異なるリージョンにある場合、クライアントは利用可能な最寄りのDERPリージョンに基づいて割り当てられます。

サブネットルーターの高可用性

ステップ1: 複数のサブネットルーターを設定する

サブネットルーターの手順に従い、2台以上のデバイスで同じネットワークの同じルートを公開します。
たとえば10.0.0.0/24,10.1.0.0/24を公開する場合、2台以上のデバイスで次のコマンドを実行します。

sudo tailscale set --advertise-routes=10.0.0.0/24,10.1.0.0/24
# 2台以上のサブネットルーターで実行し、両方のプレフィックスでフェイルオーバーを有効にする
sudo tailscale set --advertise-routes=10.0.0.0/24,172.16.5.0/24

高可用性のためにサブネットルーターを構成する場合、--accept-routesフラグの扱いに注意してください。
同一リージョンで同じルートを共有するサブネットルーターで--accept-routesを有効にすると、待機系が現用系から自分のアドバタイズしたルートを受け入れてしまいます。
その結果、待機系は直結している192.168.1.0/24宛のトラフィックを、直接送らずに現用系経由で送るという非効率な経路になります。
多くの高可用性構成では、--advertise-routesのみを使用してください。

ステップ2: 管理コンソールでサブネットルーターを有効にする

  1. 管理コンソールのMachinesページを開きます。
  2. 対象のサブネットルーターを探します。
  3. 行末の三点メニューからReview subnet routesを選択し、Subnet settingsを開きます。
  4. 各ルートでEnableを選択し、Tailscaleがネットワーク内の他のノードへサブネットルートを配布するようにします。

サーバーでは、定期的な再認証を避けるためにキーの有効期限を無効にすることを検討してください。
詳細は、キーの有効期限を参照してください。

ステップ3: 完了

同じネットワーク上で同じルートを公開するサブネットルーターが2台以上になると、Tailscaleのコントロールサーバーがフェイルオーバーを自動的に管理します。
フェイルオーバーのモードでは、サブネットルーターがコントロールプレーンから15秒を超えて切断されると、トラフィックは別のサブネットルーターへ切り替わります。
リージョナルルーティングのモードでは、サブネットルーターが異なるリージョンにある場合、クライアントは利用可能な最寄りのDERPリージョンに基づいて割り当てられます。

制限事項

原文:Set up high availability(Tailscale公式ドキュメント)