ວິທີການໃຊ້ Nginx ເປັນ HTTP Load Balancer ໃນ Linux


ໃນເວລາທີ່ມັນກ່ຽວກັບການຕັ້ງຄ່າຫລາຍໆເຄື່ອງແມ່ຂ່າຍຂອງໂປແກຼມ ສຳ ລັບການຊ້ ຳ ຊ້ອນ, ການດຸ່ນດ່ຽງການໂຫຼດແມ່ນກົນໄກທີ່ໃຊ້ທົ່ວໄປ ສຳ ລັບການແຈກຢາຍ ຄຳ ຮ້ອງຂໍການບໍລິການທີ່ເຂົ້າມາຢ່າງມີປະສິດຕິພາບຫລືການຈະລາຈອນເຄືອຂ່າຍທົ່ວກຸ່ມຂອງເຄື່ອງແມ່ຂ່າຍ back-end.

ການດຸ່ນດ່ຽງການໂຫຼດມີຂໍ້ໄດ້ປຽບຫຼາຍຢ່າງລວມທັງການເພີ່ມຄວາມພ້ອມຂອງແອັບພລິເຄຊັນຜ່ານຄວາມຊ້ ຳ ຊ້ອນ, ຄວາມ ໜ້າ ເຊື່ອຖືທີ່ເພີ່ມຂື້ນແລະຄວາມສາມາດປັບຂະ ໜາດ ໄດ້ (ມີເຄື່ອງແມ່ຂ່າຍຫລາຍຂື້ນສາມາດເພີ່ມໃນການປະສົມເມື່ອການຈະລາຈອນເພີ່ມຂື້ນ). ມັນຍັງ ນຳ ເອົາການປັບປຸງການປະຕິບັດການ ນຳ ໃຊ້ແລະຜົນປະໂຫຍດອື່ນໆອີກຫລາຍຢ່າງ.

ອ່ານທີ່ແນະ ນຳ: ຄູ່ມືສຸດທ້າຍໃນການຮັກສາຄວາມປອດໄພ, ຄວາມແຂງກະດ້າງແລະປັບປຸງການເຮັດວຽກຂອງ Nginx Web Server

Nginx ສາມາດຖືກ ນຳ ໃຊ້ເປັນຕົວຄວບຄຸມການໂຫຼດທີ່ມີປະສິດທິພາບຂອງ HTTP ໃນການແຈກຢາຍການຈາລະຈອນເຄືອຂ່າຍທີ່ເຂົ້າມາແລະ ໜ້າ ວຽກໃນກຸ່ມຂອງ server server, ໃນແຕ່ລະກໍລະນີສົ່ງຄືນ ຄຳ ຕອບຈາກ server ທີ່ເລືອກໃຫ້ກັບລູກຄ້າທີ່ ເໝາະ ສົມ.

ວິທີການດຸ່ນດ່ຽງການໂຫຼດທີ່ Nginx ແມ່ນ:

  • round-robin - ເຊິ່ງແຈກຢາຍການຮ້ອງຂໍໃຫ້ກັບ server server ໃນຮູບແບບຮອບລວຍ. ມັນຖືກ ນຳ ໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນເມື່ອບໍ່ມີວິທີການໃດ ກຳ ນົດ,
  • ເຊື່ອມຕໍ່ ໜ້ອຍ ທີ່ສຸດ - ມອບ ໝາຍ ການຮ້ອງຂໍຕໍ່ໄປໃຫ້ກັບເຊີບເວີທີ່ບໍ່ຄ່ອຍມີເວລາ (ເຊີຟເວີທີ່ມີ ຈຳ ນວນເຊື່ອມຕໍ່ ໜ້ອຍ ທີ່ສຸດ),
  • ip-hash - ບ່ອນທີ່ ໜ້າ ທີ່ hash ຖືກໃຊ້ເພື່ອ ກຳ ນົດວ່າ server ໃດຄວນຖືກຄັດເລືອກ ສຳ ລັບ ຄຳ ຮ້ອງຂໍຕໍ່ໄປໂດຍອີງໃສ່ທີ່ຢູ່ IP ຂອງລູກຄ້າ. ວິທີການນີ້ອະນຸຍາດໃຫ້ມີຄວາມອົດທົນຕໍ່ກອງປະຊຸມ (ຜູກມັດລູກຄ້າກັບເຄື່ອງແມ່ຂ່າຍຂອງໂປແກຼມສະເພາະ).

ນອກຈາກນີ້, ທ່ານສາມາດ ນຳ ໃຊ້ນ້ ຳ ໜັກ ຂອງເຊີບເວີເພື່ອໃຫ້ມີອິດທິພົນຕໍ່ການຄິດໄລ່ດຸ່ນດ່ຽງການໂຫຼດຂອງ Nginx ໃນລະດັບທີ່ກ້າວ ໜ້າ ກວ່າເກົ່າ. Nginx ຍັງສະ ໜັບ ສະ ໜູນ ການກວດສຸຂະພາບເພື່ອ ໝາຍ ເຄື່ອງແມ່ຂ່າຍທີ່ລົ້ມເຫລວ (ສຳ ລັບ ຈຳ ນວນເວລາທີ່ສາມາດຕັ້ງໄດ້, ຄ່າເລີ່ມຕົ້ນແມ່ນ 10 ວິນາທີ) ຖ້າການຕອບສະ ໜອງ ຂອງມັນລົ້ມເຫລວດ້ວຍຂໍ້ຜິດພາດ, ດັ່ງນັ້ນຫລີກລ້ຽງການເລືອກເອົາເຊີບເວີນັ້ນ ສຳ ລັບການຮ້ອງຂໍການເຂົ້າມາຕໍ່ມາໃນບາງຄັ້ງ.

ຄູ່ມືພາກປະຕິບັດນີ້ສະແດງໃຫ້ເຫັນວິທີການໃຊ້ Nginx ເປັນຕົວຄວບຄຸມການໂຫຼດ HTTP ເພື່ອແຈກຢາຍການຮ້ອງຂໍຂອງລູກຄ້າທີ່ເຂົ້າມາລະຫວ່າງສອງເຊີບເວີເຊິ່ງແຕ່ລະຄົນມີຕົວຢ່າງຂອງໂປແກຼມດຽວກັນ.

ສຳ ລັບຈຸດປະສົງໃນການທົດສອບ, ຕົວຢ່າງການ ນຳ ໃຊ້ແຕ່ລະອັນແມ່ນຕິດປ້າຍ (ຢູ່ໃນອິນເຕີເຟດຜູ້ໃຊ້) ເພື່ອຊີ້ບອກເຖິງເຊີບເວີທີ່ມັນ ກຳ ລັງໃຊ້ງານຢູ່

Load Balancer: 192.168.58.7
Application server 1: 192.168.58.5
Application server 2: 192.168.58.8

ໃນແຕ່ລະເຄື່ອງແມ່ຂ່າຍຂອງໂປແກຼມ, ຕົວຢ່າງການ ນຳ ໃຊ້ແຕ່ລະອັນແມ່ນຖືກ ກຳ ນົດໃຫ້ເຂົ້າໃຊ້ໂດຍໃຊ້ໂດເມນ tecmintapp.lan ສົມມຸດວ່ານີ້ແມ່ນໂດເມນທີ່ຈົດທະບຽນເຕັມທີ່, ພວກເຮົາຈະເພີ່ມສິ່ງຕໍ່ໄປນີ້ໃນການຕັ້ງຄ່າ DNS.

A Record   		@   		192.168.58.7

ບັນທຶກນີ້ບອກການຮ້ອງຂໍຂອງລູກຄ້າບ່ອນທີ່ໂດເມນຄວນຊີ້ ນຳ, ໃນກໍລະນີນີ້, ການດຸ່ນດ່ຽງການໂຫຼດ (192.168.58.7). ບັນທຶກຂໍ້ມູນ DNS A ພຽງແຕ່ຍອມຮັບຄ່າ IPv4 ເທົ່ານັ້ນ. ອີກທາງເລືອກ ໜຶ່ງ, ເອກະສານ/etc/hosts ໃນເຄື່ອງຂອງລູກຄ້າຍັງສາມາດຖືກ ນຳ ໃຊ້ເພື່ອຈຸດປະສົງການທົດສອບ, ໂດຍມີລາຍການຕໍ່ໄປນີ້

192.168.58.7  	tecmintapp.lan

ການຕັ້ງຄ່າດຸ່ນດ່ຽງການໂຫຼດ Nginx ໃນ Linux

ກ່ອນທີ່ຈະສ້າງຕັ້ງການດຸ່ນດ່ຽງການໂຫຼດ Nginx, ທ່ານຕ້ອງຕິດຕັ້ງ Nginx ໃນເຄື່ອງແມ່ຂ່າຍຂອງທ່ານໂດຍໃຊ້ຕົວຈັດການຊຸດເລີ່ມຕົ້ນ ສຳ ລັບການແຈກຈ່າຍຂອງທ່ານຕາມທີ່ສະແດງ.

$ sudo apt install nginx   [On Debian/Ubuntu]
$ sudo yum install nginx   [On CentOS/RHEL]   

ຕໍ່ໄປ, ສ້າງເອກະສານ block server ທີ່ມີຊື່ວ່າ /etc/nginx/conf.d/loadbalancer.conf (ໃຫ້ຊື່ຂອງຕົວເລືອກຂອງທ່ານ).

$ sudo vi /etc/nginx/conf.d/loadbalancer.conf

ຫຼັງຈາກນັ້ນຄັດລອກແລະວາງການຕັ້ງຄ່າຕໍ່ໄປນີ້ໃສ່ມັນ. ການຕັ້ງຄ່ານີ້ຕັ້ງຄ່າໃຫ້ກັບຮອບຮອບເຊິ່ງບໍ່ມີວິທີການດຸ່ນດ່ຽງການໂຫຼດ.

 
upstream backend {
        server 192.168.58.5;
        server 192.168.58.8;
    }
	
    server {
        listen      80 default_server;
        listen      [::]:80 default_server;
        server_name tecmintapp.lan;

        location / {
	        proxy_redirect      off;
	        proxy_set_header    X-Real-IP $remote_addr;
	        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
	        proxy_set_header    Host $http_host;
		proxy_pass http://backend;
	}
}

ໃນການຕັ້ງຄ່າຂ້າງເທິງນີ້, ຄຳ ສັ່ງ proxy_pass (ເຊິ່ງຄວນຈະຖືກ ກຳ ນົດພາຍໃນສະຖານທີ່, / ໃນກໍລະນີນີ້) ຖືກໃຊ້ເພື່ອສົ່ງ ຄຳ ຮ້ອງຂໍໄປທີ່ HTTP proxied server ທີ່ອ້າງອີງໂດຍໃຊ້ ຄຳ ວ່າ backend, ໃນ ຄຳ ແນະ ນຳ ທີ່ຢູ່ເບື້ອງເທິງ (ໃຊ້ເພື່ອ ກຳ ນົດກຸ່ມຂອງເຊີຟເວີ). ພ້ອມກັນນີ້, ຄຳ ຮ້ອງຂໍຈະຖືກແຈກຢາຍລະຫວ່າງເຊີບເວີໂດຍ ນຳ ໃຊ້ກົນໄກການດຸ່ນດ່ຽງຮອບລະດັບນໍ້າ ໜັກ.

ເພື່ອໃຊ້ກົນໄກການເຊື່ອມຕໍ່ ໜ້ອຍ ທີ່ສຸດ, ໃຊ້ການຕັ້ງຄ່າຕໍ່ໄປນີ້

upstream backend {
        least_conn;
        server 192.168.58.5;
        server 192.168.58.8;
    }

ແລະເພື່ອເປີດໃຊ້ກົນໄກການຕໍ່ສູ້ຂອງພາກຕໍ່, ໃຫ້ໃຊ້:

upstream backend {
	ip_hash;
        server 192.168.58.5;
        server 192.168.58.8;
    }

ທ່ານຍັງສາມາດມີອິດທິພົນຕໍ່ການຕັດສິນໃຈດຸ່ນດ່ຽງການໂຫຼດໂດຍໃຊ້ນໍ້າ ໜັກ ຂອງເຊີບເວີ. ການ ນຳ ໃຊ້ການຕັ້ງຄ່າຕໍ່ໄປນີ້, ຖ້າມີຫົກ ຄຳ ຮ້ອງຂໍຈາກລູກຄ້າ, ໂປແກຼມໃຊ້ server 192.168.58.5 ຈະຖືກ ກຳ ນົດ 4 ຄຳ ຮ້ອງແລະ 2 ອັນຈະໄປ 192.168.58.8.

upstream backend {
        server 192.168.58.5	weight=4;
        server 192.168.58.8;
    }

ບັນທຶກເອກະສານແລະອອກຈາກມັນ. ຫຼັງຈາກນັ້ນ, ຮັບປະກັນວ່າໂຄງສ້າງການຕັ້ງຄ່າ Nginx ແມ່ນຖືກຕ້ອງຫຼັງຈາກເພີ່ມການປ່ຽນແປງ ໃໝ່, ໂດຍການເຮັດວຽກຕາມ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ sudo nginx -t

ຖ້າການຕັ້ງຄ່າບໍ່ຖືກຕ້ອງ, ໃຫ້ເລີ່ມຕົ້ນ ໃໝ່ ແລະເປີດໃຊ້ບໍລິການ Nginx ເພື່ອ ນຳ ໃຊ້ການປ່ຽນແປງ.

$ sudo systemctl restart nginx
$ sudo systemctl enable nginx

ການທົດສອບການດຸ່ນດ່ຽງການໂຫຼດ Nginx ໃນ Linux

ເພື່ອທົດສອບຄວາມສົມດຸນຂອງການໂຫຼດຂອງ Nginx, ເປີດໂປແກຼມທ່ອງເວັບແລະໃຊ້ທີ່ຢູ່ຕໍ່ໄປນີ້ເພື່ອ ນຳ ທາງ.

http://tecmintapp.lan

ເມື່ອການໂຕ້ຕອບຂອງເວບໄຊທ໌ໂຫລດ, ໃຫ້ສັງເກດຕົວຢ່າງຂອງແອັບພລິເຄຊັນທີ່ໂຫລດແລ້ວ. ຫຼັງຈາກນັ້ນ, ໂຫຼດຫນ້າຈໍຄືນຢ່າງຕໍ່ເນື່ອງ. ໃນບາງຈຸດ, ແອັບ should ຄວນຈະຖືກໂຫລດຈາກເຄື່ອງແມ່ຂ່າຍທີສອງທີ່ຊີ້ໃຫ້ເຫັນຄວາມສົມດຸນຂອງການໂຫຼດ.

ທ່ານຫາກໍ່ໄດ້ຮຽນຮູ້ວິທີການຕັ້ງ Nginx ເປັນເຄື່ອງປັບສົມດຸນການໂຫຼດ HTTP ໃນ Linux. ພວກເຮົາຢາກຮູ້ຄວາມຄິດຂອງທ່ານກ່ຽວກັບຄູ່ມືນີ້, ແລະໂດຍສະເພາະກ່ຽວກັບການຈ້າງ Nginx ເປັນຜູ້ຄວບຄຸມການໂຫຼດ, ຜ່ານແບບຟອມ ຄຳ ຕິຊົມຂ້າງລຸ່ມນີ້. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ, ເບິ່ງເອກະສານ Nginx ກ່ຽວກັບການນໍາໃຊ້ Nginx ເປັນການໂຫຼດດຸ່ນດ່ຽງການໂຫຼດ HTTP.