nginx เป็นที่นิยมสำหรับประสิทธิภาพและความสามารถในการปรับขนาดสูง เป็นเว็บเซิร์ฟเวอร์โอเพ่นซอร์ส #1 ในบทช่วยสอนนี้เราจะเรียนรู้ที่จะใช้ Nginx เป็นตัวโหลดบาลานซ์

วิธีใช้ nginx เป็น load balancer

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

เว็บเซิร์ฟเวอร์ nginx

Nginx เป็นเว็บเซิร์ฟเวอร์โอเพนซอร์ซที่มีประสิทธิภาพสูง นอกเหนือจากความสามารถของเซิร์ฟเวอร์ HTTP แล้ว NginX ยังสามารถทำหน้าที่เป็นพร็อกซีเซิร์ฟเวอร์สำหรับอีเมล (IMAP, POP3 และ SMTP) และพร็อกซีย้อนกลับและโหลดสมดุล Nginx สำหรับเซิร์ฟเวอร์ HTTP, TCP และ UDP ปรับปรุงประสิทธิภาพความน่าเชื่อถือและความปลอดภัยของแอปพลิเคชันของคุณ เป็นที่นิยมสำหรับชุดคุณสมบัติที่หลากหลายการกำหนดค่าที่เรียบง่ายและการใช้ทรัพยากรต่ำ Nginx ทำงานอย่างไร? NGINX มักใช้เป็นตัวโหลดพร็อกซีแบบย้อนกลับ NGINX เป็นจุดเริ่มต้นเดียวไปยังเว็บแอปพลิเคชันแบบกระจายที่ทำงานบนเซิร์ฟเวอร์หลายตัวแยกต่างหาก มันใช้วิธีการแบบอะซิงโครนัสและขับเคลื่อนด้วยเหตุการณ์เพื่อให้การใช้งานหน่วยความจำต่ำและพร้อมกันสูง คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ nginx ที่นี่

โหลดบาลานซ์

โหลดบาลานซ์เป็นกระบวนการของการแจกจ่ายทราฟฟิกเครือข่ายในหลายเซิร์ฟเวอร์ และ “ซอฟต์แวร์” หรือ “ฮาร์ดแวร์” ที่ดำเนินการตามกระบวนการแจกจ่ายนี้เรียกว่า Load Balancer ตัวโหลดบาลานซ์เป็นเหมือน“ ตำรวจจราจร” ที่ยืนอยู่หน้าเซิร์ฟเวอร์ของคุณและคำขอไคลเอนต์การกำหนดเส้นทางในเซิร์ฟเวอร์ทั้งหมด ช่วยให้มั่นใจได้ว่าแอปพลิเคชันของคุณยังคงใช้งานได้แม้ว่าเซิร์ฟเวอร์ใดเครื่องใดเครื่องหนึ่งจะลดลง

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 . หากคุณมีคำถามหรือข้อเสนอแนะใด ๆ โปรด _ ติดต่อกลับ

สำรวจ

คุณอาจพบบทความด้านล่างที่เกี่ยวข้องมากขึ้น