/ etc / hosts nie obsługuje round robin, ale możesz napisać prosty skrypt bash, aby zastąpić wpis oznaczony komentarzem #RoundRobin (lub dowolnym innym znacznikiem, którego chcesz użyć, po prostu odzwierciedl go w wierszu grep w skrypcie) .
#!/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
Powyższy skrypt pobiera dane wyjściowe nslookup dla sub.domain.com i przechowuje je w tablicy. Następnie drukuje najwyższą wartość do $ new i pobiera istniejącą wartość dla tagu #RoundRobin przypisanego w / etc / hosts ... na koniec wykonuje zamianę sed
Wpis pliku / etc / hosts wyglądałby tak
127.0.0.1 localhost
::1 localhost
11.12.13.14 sub.domain.com #RoundRobin
Na koniec umieść ten skrypt w crontabie roota, aby uruchamiał się co około godzinę, a teraz będziesz mieć okrągły / robin / etc / host.
Jest to szczególnie przydatne, jeśli masz zakodowaną stronę, która pobiera niektóre dane z interfejsu API, a wyszukiwanie DNS dla serwera API powoduje długi czas oczekiwania na wykonanie skryptu strony ... co powoduje wysokie zużycie procesora w stosunku do tego, co inaczej wydają się być prostą stroną. Aby uniknąć kosztownego wyszukiwania DNS (szczególnie jeśli twoja witryna robi setki z nich na minutę, aby zrobić duży ruch), powinieneś użyć / etc / hosts, aby rozwiązać FQDN zdalnego serwera API. Znacząco zmniejszy to użycie procesora do pobierania danych API i generowania strony.