Score:1

NGINX TCP Load Balancing นั้น ip-sticky เมื่อควรจะสุ่มตามคำขอ

ธง my
A X

ฉันมีเซิร์ฟเวอร์ 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 วินาที;
    }

    
}
Score:-1
ธง za

เพราะคุณควรหยุดใช้ nginx เป็น TCP load balancer สำหรับเว็บเซิร์ฟเวอร์อื่นๆ และเปลี่ยนเป็น HTTP reverse-proxy แบบเต็ม ซึ่งก็คือ ด้วยวิธีนี้คุณจะได้รับ RR ตามคำขอที่คุณต้องการ (โดยปิดการเชื่อมต่อแบบถาวรตามค่าเริ่มต้น) แทนการกระจายเซสชัน TCP

A X avatar
my flag
A X
แต่มันไม่ควรกระจายคำขอในโหมด TCP ใช่ไหม @ดุ๊กกี้
drookie avatar
za flag
มันควรจะและไม่ ไม่ใช่แบบที่คุณต้องการเพราะคุณใช้มันผิด
A X avatar
my flag
A X
คำตอบนี้ไม่มีประโยชน์เลยและคลุมเครือเพราะไม่ได้ตอบคำถามจริงๆ คำถามคือจะแก้ไขปัญหาได้อย่างไร
drookie avatar
za flag
คุณจะไม่ได้รับคำถามอื่นๆ เนื่องจากคำถามเดิมเป็นตัวอย่างที่ผิดของการตั้งค่าสิ่งต่างๆ และนั่นคือส่วนการศึกษา
A X avatar
my flag
A X
คุณได้รับรางวัลสำหรับ "คำตอบที่แย่ที่สุดใน Server Fault"
drookie avatar
za flag
น่าเสียดายที่คุณต้องได้รับจำนวนเงินหรือชื่อเสียงที่ไม่มีที่สิ้นสุดเพื่อเสนอสิ่งนี้ ด้วยความรู้และทัศนคติของคุณ มันจะใช้... ให้ฉันคิด... ตลอดไป

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา