ÏêϸÏÈÈÝNginx·´ÏòÊðÀíЧÀÍÆ÷µÄ¸ß¿ÉÀ©Õ¹ÐÔºÍÁ÷Á¿·ÖÁ÷Õ½ÂÔ¿ØÖÆÒªÁì
nginx·´ÏòÊðÀíЧÀÍÆ÷µÄ¸ß¿ÉÀ©Õ¹ÐÔºÍÁ÷Á¿·ÖÁ÷Õ½ÂÔ¿ØÖÆÒªÁì
СÐò£º
ÔÚÏÖÔÚ»¥ÁªÍøÓ¦ÓÃÈÕÒæÔöÌíµÄÅä¾°Ï£¬Ð§À͸߿ÉÓÃÐԺ͸ºÔØƽºâ³ÉΪÁËÖ÷ÒªµÄ¿ÎÌ⡣ΪÁËÖª×ãÕâЩÐèÇó£¬Nginx·´ÏòÊðÀíЧÀÍÆ÷Ó¦Ô˶øÉú¡£Nginx×÷Ϊһ¸ö¸ßÐÔÄÜµÄ HTTP ºÍ·´ÏòÊðÀíЧÀÍÆ÷£¬ÒÔÆ侫²ÊµÄ¿ÉÀ©Õ¹ÐÔºÍÎÞаµÄÁ÷Á¿·ÖÁ÷Õ½ÂÔ¿ØÖÆÒªÁì¶ø±¸ÊÜÍÆÐí¡£
Ò»¡¢Nginx·´ÏòÊðÀíЧÀÍÆ÷µÄ¸ß¿ÉÀ©Õ¹ÐÔ
¸ß¿ÉÀ©Õ¹ÐÔÊÇNginxµÄÒ»´óÌص㣬Ëü¿ÉÒÔÇáËÉÓ¦¶Ô¸ßÁ÷Á¿ºÍ´ó¹æÄ£»á¼ûµÄÓ¦Óó¡¾°¡£NginxµÄ¸ß¿ÉÀ©Õ¹ÐÔÖ÷ÒªÌåÏÖÔÚÒÔϼ¸¸ö·½Ã棺
Òì²½ÊÂÎñÇý¶¯£º
Nginx½ÓÄɵÄÊÇÒì²½ÊÂÎñÇý¶¯µÄ´¦Öóͷ£Ä£×Ó£¬¼´Ã¿¸öÅþÁ¬ÔÚ×ÔÁ¦µÄÊÂÎñÉϾÙÐвÙ×÷£¬Í¨¹ý·ÇÛÕ±ÕI/O£¬¿ÉÒÔ´¦Öóͷ£³ÉǧÉÏÍò¸ö²¢·¢ÅþÁ¬¡£ÕâÖÖÒì²½ÊÂÎñÇý¶¯Ä£×ÓʹµÃNginxÔÚÃæÁٸ߲¢·¢ÇéÐÎÏÂÈÔÈ»Äܹ»Î¬³ÖÓÅÒìµÄÐÔÄÜ¡£
·´ÏòÊðÀíЧÀÍÆ÷¼¯Èº£º
NginxÖ§³Ö·´ÏòÊðÀíЧÀÍÆ÷µÄ¼¯Èº°²ÅÅ£¬Í¨¹ýºáÏòÀ©Õ¹¶à¸öNginxʵÀý£¬¿ÉÒÔÌá¸ßϵͳµÄ¿ÉÓÃÐԺͿ¹Ñ¹ÄÜÁ¦¡£·´ÏòÊðÀíЧÀÍÆ÷¼¯Èº¿ÉÒÔ½«ÇëÇó·Ö̯µ½¶à¸öЧÀÍÆ÷ÉÏ£¬´Ó¶øʵÏÖ¸ºÔØƽºâ¡£
¶þ¡¢Á÷Á¿·ÖÁ÷Õ½ÂÔ¿ØÖÆÒªÁì
ÂÖѯսÂÔ£º
ÂÖѯսÂÔÊÇ×î»ù±¾ºÍ×î³£ÓõĸºÔØƽºâÕ½ÂÔ£¬Ëü»á½«ÇëÇóÒÀ´Î·ÖÅɵ½Ã¿¸öЧÀÍÆ÷ÉÏ£¬ÊµÏÖÇëÇóƽºâ·ÖÁ÷µÄЧ¹û¡£ÔÚNginxµÄÉèÖÃÖУ¬¿ÉÒÔʹÓÃupstreamÖ¸Áî½ç˵һ×éЧÀÍÆ÷£¬²¢Ê¹ÓÃserverÖ¸ÁîΪÿ¸öЧÀÍÆ÷ÉèÖÃȨÖØÖµ£¬ÒÔ¿ØÖÆÿ¸öЧÀÍÆ÷µÄÁ÷Á¿Õ¼±È¡£ÀýÈ磺
http { upstream backend { server backend1.example.com weight=3; server backend2.example.com weight=2; server backend3.example.com; } server { location / { proxy_pass http://backend; } } }
µÇ¼ºó¸´ÖÆ
ÔÚÉÏÊöÉèÖÃÖУ¬Nginx»á½«ÇëÇóƾ֤ȨÖØÖµ·ÖÅɵ½ºó¶ËµÄÈý¸öЧÀÍÆ÷ÉÏ£¬ÆäÖÐbackend1.example.comµÄÁ÷Á¿½«ÊÇbackend2.example.comµÄ1.5±¶¡£
IP¹þÏ£Õ½ÂÔ£º
IP¹þÏ£Õ½ÂÔ»á»ùÓÚ¿Í»§¶ËµÄIPµØµã½«ÇëÇó·ÖÅɵ½Ö¸¶¨µÄЧÀÍÆ÷ÉÏ¡£Õâ¸öÕ½ÂÔÊÊÓÃÓÚÐèÒªÔÚÓû§»á»°Öмá³Ö״̬µÄÇéÐΣ¬ÀýÈ繺Îï³µ»òÓû§µÇ¼ÐÅÏ¢µÈ¡£ÔÚNginxµÄÉèÖÃÖУ¬¿ÉÒÔʹÓÃip_hashÖ¸ÁÆôIP¹þÏ£Õ½ÂÔ¡£ÀýÈ磺
http { upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { location / { proxy_pass http://backend; } } }
µÇ¼ºó¸´ÖÆ
ÔÚÉÏÊöÉèÖÃÖУ¬Nginx»áͨ¹ýÅÌËã¿Í»§¶ËµÄIPµØµã£¬½«Í³Ò»¸ö¿Í»§¶ËµÄÇëÇó·ÖÅɵ½Í³Ò»Ì¨Ð§ÀÍÆ÷ÉÏ£¬¼á³ÖÓû§»á»°×´Ì¬µÄÒ»ÖÂÐÔ¡£
×îСÅþÁ¬ÊýÕ½ÂÔ£º
×îСÅþÁ¬ÊýÕ½ÂԻὫÇëÇó·ÖÅɵ½ÅþÁ¬Êý×îÉÙµÄЧÀÍÆ÷ÉÏ£¬ÒÔʵÏÖ¸ºÔØƽºâ¡£ÔÚNginxµÄÉèÖÃÖУ¬¿ÉÒÔʹÓÃleast_connÖ¸ÁÆô×îСÅþÁ¬ÊýÕ½ÂÔ¡£ÀýÈ磺
http { upstream backend { least_conn; server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { location / { proxy_pass http://backend; } } }
µÇ¼ºó¸´ÖÆ
ÔÚÉÏÊöÉèÖÃÖУ¬Nginx»á½«ÇëÇó·ÖÅɵ½ÅþÁ¬Êý×îÉÙµÄЧÀÍÆ÷ÉÏ£¬ÒÔ¼á³ÖЧÀÍÆ÷µÄ¸ºÔØƽºâ¡£
×ܽ᣺
Nginx×÷Ϊһ¸ö¸ßÐÔÄܵķ´ÏòÊðÀíЧÀÍÆ÷£¬¾ß±¸¾«²ÊµÄ¿ÉÀ©Õ¹ÐÔºÍÁ÷Á¿·ÖÁ÷Õ½ÂÔ¿ØÖÆÒªÁ졣ͨ¹ýÒì²½ÊÂÎñÇý¶¯µÄ´¦Öóͷ£Ä£×Ӻͷ´ÏòÊðÀíЧÀÍÆ÷¼¯ÈºµÄ°²ÅÅ£¬¿ÉÒÔÇáËÉÓ¦¶Ô¸ßÁ÷Á¿ºÍ´ó¹æÄ£»á¼ûµÄÓ¦Óó¡¾°¡£Í¬Ê±£¬Í¨¹ýÂÖѯ¡¢IP¹þÏ£ºÍ×îСÅþÁ¬ÊýµÈ¶àÖÖ·½·¨µÄ¸ºÔØƽºâÕ½ÂÔ£¬¿ÉÒÔʵÏÖÁ÷Á¿µÄƽºâ·ÖÅÉ£¬Ìá¸ßϵͳµÄ¿ÉÓÃÐÔºÍÐÔÄÜ¡£
£¨×¢£ºÒÔÉÏÖ»ÊǶÔNginx·´ÏòÊðÀíЧÀÍÆ÷¸ß¿ÉÀ©Õ¹ÐÔºÍÁ÷Á¿·ÖÁ÷Õ½ÂԵļòÆÓÏÈÈÝ£¬ÏÖʵӦÓÃÖл¹ÐèҪƾ֤ÏêϸÐèÇó¾ÙÐиüÏêϸµÄÉèÖúÍÓÅ»¯¡££©
ÒÔÉϾÍÊÇÏêϸÏÈÈÝNginx·´ÏòÊðÀíЧÀÍÆ÷µÄ¸ß¿ÉÀ©Õ¹ÐÔºÍÁ÷Á¿·ÖÁ÷Õ½ÂÔ¿ØÖÆÒªÁìµÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡