/ etc / hostsはラウンドロビンをサポートしていませんが、#RoundRobinコメントでタグ付けされたエントリ(またはスクリプト内のgrep行に反映するだけの他のタグ)をsedに置き換える単純なbashスクリプトを書くことができます。
#!/bin/bash
fqdnips=( $(nslookup sub.domain.com|grep Address:|awk -F\ '{ print $2 }'|grep -v '#') )
new=`printf "${fqdnips[@]}"`
old=`grep "#RoundRobin" /etc/hosts|awk -F\ '{ print $1 }'`
sed -i "s/$old/$new/g" /etc/hosts
上記のスクリプトは、sub.domain.comのnslookupの出力を取得し、配列に保存します。次に、最上位の値を$ newに出力し、/ etc / hostsで割り当てられたタグ#RoundRobinの既存の値を取得します...最後に、sed replaceを実行します
/ etc / hostsファイルのエントリは次のようになります
127.0.0.1 localhost
::1 localhost
11.12.13.14 sub.domain.com #RoundRobin
最後に、このスクリプトをルートのcrontabに配置して1時間ごとに実行すると、/ etc / hostラウンドロビンが作成されます。
これは、APIから一部のデータをプルするコード化されたページがあり、APIサーバーのDNSルックアップがページのスクリプト実行で多くのハング時間を引き起こしている場合に特に役立ちます。シンプルなページのように見えます。コストのかかるDNSルックアップを回避するには(特に、サイトで1分間に大量のトラフィックを処理している場合)、/ etc / hostsを使用してリモートAPIサーバーのFQDNを解決する必要があります。これにより、APIデータを取得してページを生成するためのCPU使用量が大幅に削減されます。