web-dev-qa-db-ja.com

動的サブドメインルーティング

私はstackoverflowでこの質問をしましたが、ビューはほとんどありませんでした: https://stackoverflow.com/questions/2284917/route-web-requests-to-different-servers-based-on-subdomain

おそらく、それはこの群衆により適しています。ここでも便宜上です。

ユーザーがサブドメインを使用して新しいWebサイトを作成できるプラットフォームがあります。これらは何千もあります(例:abc.mydomain.com、def.mydomain.com)。うまくいけば、私たちが数十万人成功した場合。

特定のアプリサーバーを指すように、これらのドメインを別のIPにルーティングできるようにする必要があります。現在、データベースにこのマッピングがあります。

ここでのベストプラクティスと推奨テクノロジーは何ですか?

いくつかのオプションがあります。

  1. ワイルドカードCNAMEエントリを使用してDNSを設定し、すべてのリクエストが単一のIPに送信されるようにします。ここで、ハートビート(フェイルオーバー用)を使用する2台のマシンがデータベースでIPを検索し、適切なアプリサーバーへのhttpリダイレクトを実行する方法を知っています。これは私には不格好で遅いようです。
  2. 新しいサイトが作成されたときにDNSエントリが追加されるように、プログラムで管理できる独自のDNSサーバーを実行します。また、サイトを別のアプリサーバーに移動するため、DNSエントリをほぼリアルタイムで更新できる必要があります。誰か考えますか?

ありがとう。

Update2:リクエストをバックエンドサーバーにルーティングすることを目的とするHAProxyWebサーバーを指す外部ワイルドカードDNSを設定しました。マッピングは内部のPowerDNSサーバーに保存されます。ここでの質問は、HAProxyサーバー(または別のサーバー)に、構成ファイルやアクセスリストではなく内部DNSの値を使用させる方法です。 –

更新:以下のいくつかの提案に基づくと、リバースプロキシサーバーが進むべき道のようです。ドメイン->サーバーマッピングのバランスを取り直すので、これらはすぐに機能する必要があり、DNSソリューションのTTLが問題になる可能性があります。このドメインを考慮して使用するソフトウェアに関する推奨事項-> IPデータはDBに保存されますが、これを実行する必要がありますか?

5
Nader

サーバー間のリアルタイムフェイルオーバーの要件を考えると、DNSベースのソリューションをお勧めすることはできませんでした。クライアントが多すぎると、変更を見つけられないだけです。

これらのサーバーはすべて1つのサイトに配置されますか?顧客にアクセスできる復元力のあるフロントエンドの「リバースプロキシ」->サーバーマッピングテーブルが最も簡単なようです。

2
Alnitak

PowerDNS を使用して2番目のソリューションを使用します。これは パイプバックエンド です。クエリの読み取りと応答の書き込みが可能なソフトウェアを作成する必要があります。かなり 単純 プロトコルを介したstdin/stdout

0
mat

私が直接理解すれば、あなたは多くを持っているでしょう:

subdomains.domain.com

プロキシサーバーのセットアップはどうですか。

DNSでは、*。domain.comのワイルドカードを設定し、これをリバースプロキシサーバーにポイントします。

リバースプロキシで、独自のDNSを実行するか、Hostファイルを使用してリクエストを適切なバックエンドサーバーにマップします。

したがって、パスは次のようになります。クライアント->リバースプロキシ--->バックエンドサーバー

0
jeffatrackaid

ヒパチはまさにあなたが必要としているもののようです。サブドメインを動的に追加および削除できますが、redisエントリを追加および削除するだけです。

https://github.com/hipache/hipache

0