nginx เป็นที่นิยมสำหรับประสิทธิภาพและความสามารถในการปรับขนาดสูง เป็นเว็บเซิร์ฟเวอร์โอเพ่นซอร์ส #1 ในบทช่วยสอนนี้เราจะเรียนรู้ที่จะใช้ Nginx เป็นตัวโหลดบาลานซ์
เว็บไซต์การจราจรสูงที่ทันสมัยให้บริการหลายแสนคนและในบางกรณีคำขอหลายล้านรายการที่เกิดขึ้นพร้อมกันจากผู้ใช้หรือลูกค้าและส่งคืนข้อความรูปภาพวิดีโอหรือข้อมูลแอปพลิเคชันที่ถูกต้องทั้งหมดในลักษณะที่รวดเร็วและเชื่อถือได้ เพื่อตอบสนองความต้องการของปริมาณที่สูงเหล่านี้และพลังการคำนวณที่คุณต้องการเซิร์ฟเวอร์มากขึ้น ด้วยเซิร์ฟเวอร์ที่มากขึ้นคุณต้องมีวิธีการโหลดสมดุลระหว่างการรับส่งข้อมูลระหว่างเซิร์ฟเวอร์เหล่านี้ ในบทช่วยสอนบล็อกนี้เราจะสำรวจว่าตัวโหลดบาลานซ์คืออะไรและเราสามารถใช้ Nginx เป็นตัวโหลดบัลแลนเซอร์ได้อย่างไร ในการกำหนดค่าการปรับสมดุลโหลด Nginx เป็นสิ่งที่จำเป็นต้องมีคุณจะต้องมีโฮสต์อย่างน้อยสองโฮสต์ที่มีซอฟต์แวร์เว็บเซิร์ฟเวอร์ที่ติดตั้งและกำหนดค่าเพื่อดูข้อดีของการโหลดบาลานซ์ด้วย Nginx หากคุณมีการตั้งค่าเว็บโฮสต์ที่กำลังทำงานอยู่แล้วให้ทำซ้ำโดยการสร้างภาพที่กำหนดเองและปรับใช้บนเว็บเซิร์ฟเวอร์ใหม่ ดังนั้นมาเรียนรู้วิธีตั้งค่าการกำหนดค่าการปรับสมดุลการโหลด Nginx ทีละขั้นตอนสำหรับเซิร์ฟเวอร์คลาวด์ของคุณ!
- Nginx Web Server
- load balancer
- การตั้งค่า nginx เป็น load balancer (Round Robin)
- เกี่ยวกับคำสั่งต้นน้ำที่แตกต่างกัน
- บทสรุป
เว็บเซิร์ฟเวอร์ nginx
Nginx เป็นเว็บเซิร์ฟเวอร์โอเพนซอร์ซที่มีประสิทธิภาพสูง นอกเหนือจากความสามารถของเซิร์ฟเวอร์ HTTP แล้ว NginX ยังสามารถทำหน้าที่เป็นพร็อกซีเซิร์ฟเวอร์สำหรับอีเมล (IMAP, POP3 และ SMTP) และพร็อกซีย้อนกลับและโหลดสมดุล Nginx สำหรับเซิร์ฟเวอร์ HTTP, TCP และ UDP ปรับปรุงประสิทธิภาพความน่าเชื่อถือและความปลอดภัยของแอปพลิเคชันของคุณ เป็นที่นิยมสำหรับชุดคุณสมบัติที่หลากหลายการกำหนดค่าที่เรียบง่ายและการใช้ทรัพยากรต่ำ Nginx ทำงานอย่างไร? NGINX มักใช้เป็นตัวโหลดพร็อกซีแบบย้อนกลับ NGINX เป็นจุดเริ่มต้นเดียวไปยังเว็บแอปพลิเคชันแบบกระจายที่ทำงานบนเซิร์ฟเวอร์หลายตัวแยกต่างหาก มันใช้วิธีการแบบอะซิงโครนัสและขับเคลื่อนด้วยเหตุการณ์เพื่อให้การใช้งานหน่วยความจำต่ำและพร้อมกันสูง คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ nginx ที่นี่
โหลดบาลานซ์
โหลดบาลานซ์เป็นกระบวนการของการแจกจ่ายทราฟฟิกเครือข่ายในหลายเซิร์ฟเวอร์ และ “ซอฟต์แวร์” หรือ “ฮาร์ดแวร์” ที่ดำเนินการตามกระบวนการแจกจ่ายนี้เรียกว่า Load Balancer ตัวโหลดบาลานซ์เป็นเหมือน“ ตำรวจจราจร” ที่ยืนอยู่หน้าเซิร์ฟเวอร์ของคุณและคำขอไคลเอนต์การกำหนดเส้นทางในเซิร์ฟเวอร์ทั้งหมด ช่วยให้มั่นใจได้ว่าแอปพลิเคชันของคุณยังคงใช้งานได้แม้ว่าเซิร์ฟเวอร์ใดเครื่องใดเครื่องหนึ่งจะลดลง
ฟังก์ชั่นหลักของตัวโหลดบาลานซ์กำลังติดตาม:
- แจกจ่ายคำขอไคลเอนต์หรือโหลดเครือข่ายอย่างมีประสิทธิภาพในหลายเซิร์ฟเวอร์
- สร้างความมั่นใจในความพร้อมใช้งานและความน่าเชื่อถือสูงโดยส่งคำขอไปยังเซิร์ฟเวอร์ที่ออนไลน์เท่านั้น
- ให้ความยืดหยุ่นในการเพิ่มหรือลบเซิร์ฟเวอร์เป็นคำสั่งอุปสงค์
การตั้งค่า nginx เป็น load balancer
ก่อนที่จะตั้งค่า Nginx Round Robin Load Balancing คุณควรติดตั้ง Nginx บนเซิร์ฟเวอร์ของคุณ คุณสามารถติดตั้งได้อย่างรวดเร็วด้วย APT-GET:
sudo apt-get install nginx
ในการตั้งค่า Load Balancer แบบกลมเราจะต้องใช้โมดูล upstream Nginx เราจะอัปเดตการกำหนดค่า Nginx Load Balancer ลงในการตั้งค่า NGINX มาเปิดการกำหนดค่าของเว็บไซต์ของคุณ เพื่อประโยชน์ของตัวอย่างนี้ฉันใช้ไฟล์กำหนดค่าเริ่มต้น
sudo vi /etc/nginx/sites-available/default
เราจำเป็นต้องเพิ่มการกำหนดค่าโหลดบาลานซ์ในไฟล์เพื่อกำหนดค่าโหลดบาลานซ์ด้วย Nginx ก่อนอื่นเราต้องรวมโมดูลต้นน้ำสำหรับการปรับสมดุลโหลดต้นน้ำ Nginx ซึ่งมีลักษณะเช่นนี้:
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
ใช้แบ็กเอนด์อัพสตรีมเป็นจุดสิ้นสุดพร็อกซีของคุณในบล็อกเซิร์ฟเวอร์ของคุณ:
server {
location / {
proxy_pass http://backend;
}
}
รีสตาร์ท nginx
sudo service nginx restart
ตราบใดที่คุณมีเซิร์ฟเวอร์ทั้งหมดในสถานที่คุณควรพบว่า Nginx Open Source Load Balancer จะเริ่มแจกจ่ายผู้เข้าชมไปยังเซิร์ฟเวอร์อย่างเท่าเทียมกัน การแจกแจงที่เท่าเทียมกันนี้เรียกว่าการปรับสมดุลของ Round-Robin
คำสั่งต้นน้ำ
ในตัวอย่างสุดท้ายของเราเราใช้โมดูลต้นน้ำที่เรียบง่ายเพื่อทำการปรับสมดุลการโหลดรอบโรบินเพื่อแจกจ่ายปริมาณการใช้งานอย่างเท่าเทียมกันระหว่างเซิร์ฟเวอร์ อย่างไรก็ตามมีสาเหตุหลายประการที่อาจไม่ใช่วิธีที่มีประสิทธิภาพที่สุดในการทำงานกับการจราจร มีคำสั่งหลายอย่างที่เราสามารถใช้เพื่อกำกับผู้เยี่ยมชมไซต์ได้อย่างมีประสิทธิภาพมากขึ้น
น้ำหนัก
วิธีหนึ่งในการเริ่มจัดสรรผู้ใช้ให้กับเซิร์ฟเวอร์ที่มีความแม่นยำมากขึ้นคือการจัดสรรน้ำหนักเฉพาะให้กับเครื่องบางเครื่อง Nginx ช่วยให้เราสามารถกำหนดตัวเลขที่ระบุสัดส่วนของการรับส่งข้อมูลที่ควรส่งไปยังเซิร์ฟเวอร์แต่ละเซิร์ฟเวอร์ การตั้งค่าที่สมดุลโหลดซึ่งรวมถึงน้ำหนักเซิร์ฟเวอร์อาจมีลักษณะเช่นนี้:
upstream backend {
server backend1.example.com weight=1;
server backend2.example.com weight=2;
server backend3.example.com weight=4;
}
น้ำหนักเริ่มต้นคือ 1. ด้วยน้ำหนัก 2, backend2.example จะถูกส่งไปยังการจราจรมากเป็นสองเท่าของแบ็กเอนด์ 1 และแบ็กเอนด์ 3 ด้วยน้ำหนัก 4 จะจัดการกับการจราจรสองเท่าของแบ็กเอนด์ 2 และสี่เท่า 1.
แฮช
IP Hash ช่วยให้เซิร์ฟเวอร์ตอบสนองต่อลูกค้าตามที่อยู่ IP ของพวกเขาส่งผู้เข้าชมกลับไปที่ VPS เดียวกันทุกครั้งที่พวกเขาเยี่ยมชม (เว้นแต่เซิร์ฟเวอร์นั้นจะหยุดทำงาน) หากเซิร์ฟเวอร์เป็นที่รู้กันว่าไม่ได้ใช้งานควรทำเครื่องหมายว่าลง IP ทั้งหมดที่ควรจะไปยังเซิร์ฟเวอร์ลงจะถูกนำไปยังทางเลือกอื่น การกำหนดค่าด้านล่างให้ตัวอย่าง:
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com down;
}
สูงสุดล้มเหลว
จากการตั้งค่ารอบเริ่มต้นเริ่มต้น Nginx แอปพลิเคชันแอปพลิเคชัน Load Balancer จะส่งข้อมูลไปยังเซิร์ฟเวอร์ส่วนตัวเสมือนจริงต่อไปแม้ว่าเซิร์ฟเวอร์จะไม่ตอบสนอง Max Fails สามารถป้องกันสิ่งนี้ได้โดยอัตโนมัติโดยการแสดงผลเซิร์ฟเวอร์ที่ไม่ตอบสนองที่ไม่ตอบสนองไม่ทำงานตามระยะเวลาที่กำหนด มีสองปัจจัยที่เกี่ยวข้องกับ Max Fails: Max \ _fails และ Fall \ _timeout Max ล้มเหลวหมายถึงจำนวนสูงสุดของความพยายามที่ล้มเหลวในการเชื่อมต่อกับเซิร์ฟเวอร์ที่ควรเกิดขึ้นก่อนที่จะพิจารณาไม่ใช้งาน Fall_timeout ระบุความยาวของเซิร์ฟเวอร์ที่พิจารณาไม่ทำงาน เมื่อเวลาหมดอายุความพยายามใหม่ในการเข้าถึงเซิร์ฟเวอร์จะเริ่มขึ้นอีกครั้ง ค่าหมดเวลาเริ่มต้นคือ 10 วินาที การกำหนดค่าตัวอย่างอาจมีลักษณะเช่นนี้:
upstream backend {
server backend1.example.com max_fails=3 fail_timeout=15s;
server backend2.example.com weight=2;
server backend3.example.com weight=4;
}
บทสรุป:
ในบทช่วยสอนการปรับสมดุลโหลด Nginx นี้เราได้เรียนรู้เกี่ยวกับ Ngnix, Load Balancing และวิธีการตั้งค่า Nginx Load Balancer เพื่อแจกจ่ายปริมาณการใช้งานของคุณไปยังเซิร์ฟเวอร์หลายตัว นอกจากนี้เรายังสำรวจอัลกอริธึมการปรับสมดุลการโหลดที่แตกต่างกันเช่น Round-Robin, Hash และ Max ล้มเหลว หากคุณใช้แอปพลิเคชันที่มีปริมาณสูงและคุณต้องแจกจ่ายโหลดข้ามเซิร์ฟเวอร์ที่แตกต่างกัน Nginx เป็นหนึ่งในตัวเลือกที่ดีที่สุดสำหรับคุณ และที่สำคัญที่สุดคือเว็บเซิร์ฟเวอร์ฟรีและโอเพ่นซอร์ส 100% _your สามารถเข้าร่วมกับเราได้ที่ Twitter, LinkedIn และหน้า Facebook ของเรา Load Balancer ที่ทรงพลังอื่น ๆ เพื่อปรับปรุงความพร้อมใช้งานของทรัพยากรเซิร์ฟเวอร์และประสิทธิภาพ __Do You . หากคุณมีคำถามหรือข้อเสนอแนะใด ๆ โปรด _ ติดต่อกลับ
สำรวจ
คุณอาจพบบทความด้านล่างที่เกี่ยวข้องมากขึ้น