15

いくつかの Varnish サーバーの背後に一連の EC2 インスタンスを配置しようとしています。Varnish の構成が変更されることはめったにありません (年に 1 ~ 2 回) が、あらゆる種類の理由 (更新、問題、負荷の急増) のために、常に Web バックエンドを追加/削除/交換しています。Varnish の設定を常に更新しなければならないため、これは問題を引き起こします。

私がやりたいことは、Elastic Load Balancer にバックエンド サーバーを追加または削除するだけで、一連のバックエンド サーバーを管理することです。ELB エンドポイントをバックエンドとして指定しようとしましたが、次のエラーが発生します。

Message from VCC-compiler:
Backend host "XXXXXXXXXXX-123456789.us-east-1.elb.amazonaws.com": resolves to multiple IPv4 addresses.
Only one address is allowed.
Please specify which exact address you want to use, we found these:
123.123.123.1
63.123.23.2
31.13.67.3
('input' Line 2 Pos 17)
.host = "XXXXXXXXXXX-123456789.us-east-1.elb.amazonaws.com";

ELB が提供する唯一の一貫したパブリック インターフェイスは、その DNS 名です。この DNS 名が解決する IP アドレスのセットは、時間の経過と負荷によって変化します。

この場合、正確なアドレスを 1 つ指定するのではなく、DNS から返されたものをラウンドロビン処理したいと考えています。これは可能ですか?または、誰かが同じことを達成する別の解決策を提案できますか?

ありがとう、サム

4

8 に答える 8

5

NGINX Web サーバーを使用して、CNAME 解決の問題に対処できます。

User-> Varnish -> NGNIX -> ELB -> EC2 Instances
        (Cache Section)        (Application Section)

この投稿に設定例があります: http://blog.domenech.org/2013/09/using-varnish-proxy-cache-with-amazon-web-services-elastic-load-balancer-elb.html

ファン

于 2013-10-01T11:24:11.910 に答える
4

ELB を Varnish の後ろに配置することはお勧めしません。

問題は、Varnish が ELB に割り当てられた名前を解決していて、VCL がリロードされるまで IP アドレスをキャッシュしているという事実にあります。ELB の動的な性質により、cname にリンクされた IP はいつでも変更される可能性があり、その結果、正しい ELB にリンクされていない IP に Varnish ルーティング トラフィックが発生します。

これは興味深い記事です。ぜひお読みください

于 2013-01-10T10:48:21.400 に答える
1

通常、内部 ELB には 2 つの内部 IP があるため、内部 ELB を使用しても問題は解決しません。

バックエンド ホスト "internal-XXX.us-east-1.elb.amazonaws.com": 複数の IPv4 アドレスに解決されます。許可されるアドレスは 1 つだけです。使用する正確なアドレスを指定してください。次のアドレスが見つかりました: 10.30.10.134 10.30.10.46 ('input' Line 13 Pos 12)

この IP が常に同じままなのか、変更される可能性があるのか​​はわかりません。誰でも?

于 2015-07-13T21:11:59.263 に答える
1

それぞれの IP を解決する必要がある場合、10,000 の請願に到達することはありません。起動時に IP を解決し、再起動またはリロードしない限り更新しないでください。実際、マルチ az ELB で返される IP のように、バックエンド定義で dns 名の 2 つの IP が見つかった場合、ニスは開始を拒否します。

そのため、nginx の前にワニスを配置するという同様の問題を解決しました。Nginx は ELB をバックエンドとして定義できるため、Varnish バックエンドはローカル nginx であり、nginx バックエンドは ELB です。

しかし、私はこの解決策に満足していません。

于 2013-09-27T13:34:27.153 に答える