web-dev-qa-db-ja.com

HA用にTraefikをセットアップする方法Traefikの前にリバースプロキシが必要ですか?

本番サイトでTraefikをセットアップしようとしていますが、高可用性の問題に悩んでいます。 Traefikクラスターの前にリバースプロキシがまだ必要だと思います。私が検討した潜在的なセットアップと、リバースプロキシが必要と思われる理由は次のとおりです。

  1. 負荷分散とフェイルオーバーのために、各Traefikノードを指すようにDNS Aレコードをセットアップします。

    • this SO question および this SF question を含む複数のサイトによると、この方法は推奨されません。

    • DNSMadeEasyのようなサービスを使用する場合でも、DNSキャッシュとTTL問題があるため、推奨されません。

  2. 1つのDNSレコードがTraefikを実行しているノードの1つを指すようにします。

    • そのノードはSPOFになります。私のノードはCoreOSで実行されており、更新のたびに再起動するため、毎週数分のダウンタイムが発生することが保証されます。

    • ダウンタイムが予想されるときはいつでも、DNSレコードを代替ノードに移動できます。これは手動で管理するのは面倒です。これを自動的に処理するlocksmithdと組み合わせたソリューションを想像できますが、実際には構築したくなく、予期しないダウンタイムを処理しません。

    • Docker Swarm(またはKubernetes)を使用する根拠の一部は、ノードを交換可能にすることです。

  3. ロードバランサー/リバースプロキシをTraefikクラスターの前に置きます。リバースプロキシは、すべてのTraefikノード間にフェイルオーバーを提供でき、DNSはリバースプロキシをポイントします。

    • はい、これはSPOFですが、私の経験では、この設定で良好な稼働時間を得るのは非常に簡単です。定期的なメンテナンスが必要な場合は、DNSレコードで新しいプロキシを指定できます。

私は何かを逃したり、これを考えすぎていますか?

5
Mark Grimes

ソリューションにはさまざまな種類があります。

1)Swarm/Kubernetesクラスターの前に独自のHAロードバランサーを構築して、トラフィックを分散し、フェイルオーバーを実行します。

さまざまなアプライアンスがたくさんあります。

  1. ネットスケーラー
  2. ケンプ
  3. F5

このアプローチはHAですが、通常は安くはありません。

これのより安価な代替案は、Nginx/Haproxy + Keepalivedセットアップです。

ただし、もちろんフローティングIPが必要であり、arpキャッシュを処理する必要があります。

2)「Cloud Loadbalancer」を利用します。 Digital Ocean、AWS、GKE、Openstackはすべてこのような機能を提供します。 (ほとんどの場合)セットアップは簡単ですが、安価な場合は計算する必要があります。

DigitalOceanでは、LBはわずか20ドルであり、Kubernetesクラスターを管理するベータ版があります。調べてみてください。すべてのコンポーネントがしっかりと接続されているhttps://www.digitalocean.com/products/kubernetes/

3)アプリが100%重要ではない場合、これまでに使用した特別なソリューションを提案できます。

Cloudflare +低TTL + https://github.com/Berndinox/cloudflare-ddns

簡単に動作します: https://github.com/Berndinox/compose-v3-collection/blob/master/wordpress/www.yml 方法:スピンアップWordPressとDNSコンテナを含むすべての要件。 DNSコンテナがCloudflareのドメインのDNSレコードを更新しています(コンテナが起動するホストによって異なります。IPは異なります)。 1つのホストが再起動された場合、またはコンテナーのヘルスチェックが失敗した場合、コンテナーは再スケジュールされます。再スケジュールされ、最初に取得されたホストがオフラインの場合、コンテナは別のホストで開始され、新しいIPをCloudflareにプッシュします。それはすべて、何もせずに自動的に行われます。 :)

Cloudflare TTLは非常に低いため、数秒のダウンタイムが発生する可能性があります。

0
Berndinox