⛩️
DockerでnginxのstreamプロキシのDNS解決設定
nginxのupstreamのDNSによる名前解決は起動時のみでキャッシュされる。
そのためDNSを利用したフェールオーバーや負荷分散に課題があります。
※商用版ではupstreamの機能で解決可能です。
nginxのstreamの設定
次のような設定で対処した。
確認用に接続先はwww.yahoo.co.jpで実施している。
stream {
resolver 127.0.0.11 valid=1s;
error_log /log/nginx/stream.log info;
map "" $backend_server {
default www.yahoo.co.jp:80;
}
server {
listen 0.0.0.0:8888;
proxy_pass $backend_server;
}
}
実行時のログ
実際に接続されるIPが変化することを確認
[info] 9#9: *14 proxy 172.18.0.22:45222 connected to 182.22.16.251:80
[info] 9#9: *16 proxy 172.18.0.22:45228 connected to 182.22.16.251:80
[info] 9#9: *18 proxy 172.18.0.22:48756 connected to 183.79.219.252:80
[info] 9#9: *20 proxy 172.18.0.22:48824 connected to 183.79.219.252:80
[info] 9#9: *22 proxy 172.18.0.22:50624 connected to 183.79.250.251:80
[info] 9#9: *42 proxy 172.18.0.22:42474 connected to 183.79.250.123:80
[info] 9#9: *60 proxy 172.18.0.22:44254 connected to 182.22.25.124:80
参考ページ
調べるといくつか対応方法がでてくる。
Discussion