ฉันมีเซิร์ฟเวอร์ NGINX ที่ใช้เป็นตัวจัดสรรภาระงาน TCP เป็นค่าเริ่มต้นสำหรับการจัดสรรภาระงานแบบ Round-robin ดังนั้นความคาดหวังของฉันคือสำหรับ IP ไคลเอนต์ที่กำหนด ทุกครั้งที่พวกเขาไปถึงปลายทาง พวกเขาจะได้รับเซิร์ฟเวอร์อัพสตรีมแบ็คเอนด์ที่แตกต่างกันสำหรับแต่ละคำขอ แต่สิ่งที่เกิดขึ้นคือพวกเขาได้รับเซิร์ฟเวอร์อัปสตรีมเดียวกันทุกครั้งและแต่ละครั้ง แตกต่าง IP ไคลเอ็นต์กำลังได้รับเซิร์ฟเวอร์ต้นน้ำที่แตกต่างกัน สิ่งนี้ไม่ดีเพราะไคลเอ็นต์ของฉันสร้างทราฟฟิกจำนวนมากและทำให้เกิดฮอตสปอตเนื่องจากไคลเอ็นต์ใดๆ ก็ตามสามารถใช้เซิร์ฟเวอร์อัพสตรีมได้เพียงเครื่องเดียวเท่านั้น ดูเหมือนว่าจะหมุน IP ไคลเอนต์ที่กำหนดอย่างช้าๆผ่านเซิร์ฟเวอร์อัปสตรีม อีกครั้งฉันต้องการให้มันสุ่มกำหนดแต่ละคำขอให้กับอัปสตรีมต่อคำขอ
ฉันจะทำให้ NGINX กำหนดเซิร์ฟเวอร์อัพสตรีมแบบสุ่มได้อย่างไร ทุกคำขอ? ฉันลองใช้คำหลักแบบสุ่ม และไม่มีผลกระทบใดๆ ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.
ผู้ใช้ nginx;
worker_processes อัตโนมัติ
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# โหลดโมดูลไดนามิก ดู /usr/share/nginx/README.dynamic
รวม /usr/share/nginx/modules/*.conf;
เหตุการณ์ {
worker_connections 1024;
}
ลำธาร {
ต้นน้ำ api_backend_http {
เซิร์ฟเวอร์ node1.mydomain.com:80;
เซิร์ฟเวอร์ node2.mydomain.com:80;
เซิร์ฟเวอร์ node6.mydomain.com:80;
เซิร์ฟเวอร์ node14.mydomain.com:80;
เซิร์ฟเวอร์ node18.mydomain.com:80;
เซิร์ฟเวอร์ node19.mydomain.com:80;
เซิร์ฟเวอร์ node21.mydomain.com:80;
เซิร์ฟเวอร์ node22.mydomain.com:80;
เซิร์ฟเวอร์ node24.mydomain.com:80;
}
ต้นน้ำ api_backend_https {
เซิร์ฟเวอร์ node1.mydomain.com:443;
เซิร์ฟเวอร์ node2.mydomain.com:443;
เซิร์ฟเวอร์ node6.mydomain.com:443;
เซิร์ฟเวอร์ node14.mydomain.com:443;
เซิร์ฟเวอร์ node18.mydomain.com:443;
เซิร์ฟเวอร์ node19.mydomain.com:443;
เซิร์ฟเวอร์ node21.mydomain.com:443;
เซิร์ฟเวอร์ node22.mydomain.com:443;
เซิร์ฟเวอร์ node24.mydomain.com:443;
}
เซิร์ฟเวอร์ {
ฟัง 80;
proxy_pass api_backend_http;
proxy_buffer_size 16k;
proxy_connect_timeout 1 วินาที;
}
เซิร์ฟเวอร์ {
ฟัง 443;
proxy_pass api_backend_https;
proxy_buffer_size 16k;
proxy_connect_timeout 1 วินาที;
}
}