/ etc / hosts ไม่สนับสนุน round robin แต่คุณสามารถเขียนสคริปต์ bash ง่าย ๆ เพื่อ sed แทนที่รายการที่ติดแท็กด้วยความคิดเห็น #RoundRobin (หรือแท็กอื่น ๆ ที่คุณต้องการใช้เพียงแค่แสดงในบรรทัด grep ในสคริปต์) .
#!/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
สคริปต์ข้างต้นจะจับผลลัพธ์ของ nslookup สำหรับ sub.domain.com และเก็บไว้ในอาร์เรย์ จากนั้นจะพิมพ์มูลค่าสูงสุดอันดับสูงสุดเป็น $ new และคว้าค่าที่มีอยู่สำหรับแท็ก #RoundRobin ที่กำหนดใน / etc / hosts ... สุดท้ายจะทำการแทนที่ sed
รายการไฟล์ / etc / hosts จะมีลักษณะเช่นนี้
127.0.0.1 localhost
::1 localhost
11.12.13.14 sub.domain.com #RoundRobin
สุดท้ายให้วางสคริปต์นี้ไว้ใน crontab ของรูทเพื่อรันทุก ๆ ชั่วโมงและตอนนี้คุณจะมี / etc / host round-robin
สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณมีเพจที่เข้ารหัสซึ่งดึงข้อมูลบางอย่างจาก API และการค้นหา DNS สำหรับเซิร์ฟเวอร์ API ทำให้เวลาในการแฮงค์สคริปต์ของหน้าเว็บหยุดทำงานเป็นจำนวนมาก ... ทำให้ซีพียูใช้งานได้สูง ดูเหมือนจะเป็นหน้าเรียบง่าย เพื่อหลีกเลี่ยงการค้นหา DNS ที่มีค่าใช้จ่ายสูง (โดยเฉพาะหากไซต์ของคุณกำลังทำหลายร้อยรายการต่อนาทีสำหรับการรับส่งข้อมูลจำนวนมาก) คุณควรใช้ / etc / hosts เพื่อแก้ปัญหา FQDN ของเซิร์ฟเวอร์ API ระยะไกล สิ่งนี้จะลดการใช้งาน CPU อย่างมากสำหรับการดึงข้อมูล API และสร้างหน้า