ÈçºÎ×öµ½·þÎñµÄzero down_timeµÄ¸üÐÂ
ÔÚ¸üзþÎñµÄʱºò£¬ÔõôÄÜ×öµ½ÈÃ×Ô¼ºµÄ·þÎñ²»¶Ïµô£¬ÓÖÅÄÔÆ×ö¸üеÄʱºò£¬²»ÔÊÐíÓÐʧ°Ü£¬Èç¹û˵ÒòΪÎÒÃǵÄʧ°Ü¶øµ¼ÖÂÇëÇóʧ°Ü£¬¼´Ê¹ÄãµÄÇëÇó·Ç³£ÉÙ£¬Ê×ÏÈ´Ó¿Ú±®ÉϾͺܲ»ºÃ£»ÁíÍâÒ»¸öÔÒò£ºÈç¹ûÔì³ÉÁËʹʣ¬ÊÇÒªÅâÇ®µÄ¡£ÕâÒ²ÊÇÎÒÃÇ×ö¶¯Ì¬·þÎñ·ÓɵÄÖØÒªÔÒò¡£
˵µ½·þÎñ·ÓÉ£¬´ó¼Ò¶¼»áÏëµ½Èý¸ö·½Ã棺
1.·þÎñ×¢²á¡¢·þÎñ·¢ÏÖ¡¢¸ºÔؾùºâ£¬·þÎñ×¢²á˵µÄÊÇ·þÎñÌṩÕßÔÚÆðÀ´µÄʱºò£¬µÃÈ¥·þÎñ·¢ÏÖ×¢²áһϣ¬ÒÔ±íÃ÷ÎÒÌṩÁ˵ķþÎñ¡¢¶Ë¿Ú¡¢IPÊǶàÉÙ£¬·þÎñÃûÓÖÊÇʲô£»
2.·þÎñ·¢ÏÖ¾ÍÊÇÒ»¸ö¼¯ÖйÜÀí·þÎñµÄµØ·½£¬ÉÏÃæ¼Ç¼ÁËÓÐÄÄЩ·þÎñ£¬ËüÃÇÔÚÄÄЩµØ·½£»
3.¸ºÔؾùºâ£¬ÒòΪÓкܶàͬÑùµÄÈÝÆ÷ÌṩÁËͬÑùµÄÒ»¸ö·þÎñ£¬ÔõôÔÚÕâЩÈÝÆ÷Àï×ö¸ºÔؾùºâ£¬Ò²ÊÇÒª¿¼Âǵġ£
·þÎñ·¢ÏÖÓкܶ෽°¸£¬ETC¸úConsulËãÊǺóÆðÖ®Ð㣬±È½Ï³£¼û¡£ZooKeeperÊÇÒ»¸ö±È½ÏÀÏÅÆµÄ¿ªÔ´ÏîÄ¿£¬±È½Ï³ÉÊ죬¶Ô×ÊÔ´µÄÒªÇó±È½Ï¸ß£¬Ïà¶Ô±È½ÏÇ¿´óÒ»µã¡£Consul²»µ«Ö§³ÖKV´æ´¢£¬»¹ÓÐÔÉúµÄ·þÎñ¼à¿Ø¡¢¶àÊý¾ÝÖÐÐÄ¡¢DNS¹¦Äܵȣ¬ËùÒÔÎÒÃÇÑ¡ÁËConsulÕâ¸ö·½°¸¡£
¸ºÔؾùºâÒ²ÊÇÓкܶ෽°¸£¬±ÈÈç˵Nginx£¬LVSÀ©Õ¹ÆðÀ´·Ç³£ÄÑ£»Ôٸ߼¶Ò»µãµÄÓÐHA_PROXY£¬Ëü¿ÉÒÔ×öµ½¸ß²ãµÄ£¬Ò²¿ÉÒÔ×öµ½»ù²ãµÄ£¬NginxרעÓÚ×öHTTP£¬ºóÐøÒ²Ö§³ÖÁËTCP¡£´Ó¸ºÔؾùºâ³ö·¢£¬Ñ¡ÔñÁËNginx¡£

ÈçÉÏͼ£¬ÎÒÃǰÑNginxºÍConsul·ÅÔÚÒ»ÕÅͼÀΪÁËÍ»³ö·þÎñÕâÒ»¿é£¬ÎÒ°ÑһЩ¸ú·þÎñ²»Ì«ÓйØÏµµÄ¶¼Ê¡ÂÔµôÁË¡£ÎÒÃÇ»ùÓÚMesos¡¢Docker»¹ÓÐMarathon×öÁË·þÎñ¹ÜÀí¡£ÆäÖÐÓÐÒ»¸ö·þÎñÊÇÌØÊâµÄ£¬¾ÍÊÇRegistrator£¬Ëü»áͨ¹ýDocker
APIÔÚÿ¸öÎïÀí»úÉÏÆðÒ»¸öÈÝÆ÷£¬Í¨¹ýDocker API£¬°ÑÈÝÆ÷µÄ״̬¶¨Ê±µÄ»ã±¨¸øConsul£¬ÉÏÃæµÄNginxÊÇ×ö¸ºÔؾùºâµÄ£¬ÒòΪÎÒÃǵķþÎñĿǰÀ´Ëµ¶¼ÊÇ»ùÓÚNginxÖ±½Óµ½ÈÝÆ÷ÀïÃæ¡£
ConsulÀïµÄ·þÎñÈçºÎ¸üе½Nginx?
ÔÚÕâ¸öͼÀïÃæ£¬Nginxµ½ÈÝÆ÷ÕâÒ»²½ÊÇûÓÐÎÊÌâµÄ£¬·þÎñ×¢²áµ½ÅäÖÃÎļþÒ²ÊÇûÓÐÎÊÌâµÄ£¬µ«ÊÇ´ÓConsulµ½NginxÊÇÓÐÎÊÌâµÄ£¬ÒòΪConsulÓÐËùÓеÄÐÅÏ¢£¬µ«ÊÇÕâЩÐÅÏ¢ÒªÈçºÎ֪ͨ¸øNginx£¬Ò»¸öеķþÎñÆðÀ´ÁË£¬»òÕßÊÇÒ»¸ö·þÎñ¹ÒµôÁË£¬ÕâЩÐÅÏ¢ConsulÖªµÀÁË£¬ÔõôÈÃNginx°ÑÓÐһЩÓÐÎÊÌâµÄ¸øÉ¾µô£¬ÔÙ°ÑһЩÐÂдµÄ¸ø¼Ó½øÈ¥£¬Õâ¾ÍÊÇÎÒÃÇÒª½â¾öµÄÒ»¸öÎÊÌâ¡£
ÃæÁÙµÄÎÊÌâ¾ÍÊÇConsulÀïµÄ·þÎñÈçºÎ¸üе½Nginx£¬Èç¹û½â¾öÁËÕâ¸öÎÊÌ⣬¸Õ²ÅÄǸöͼ¾ÍÒѾԲÂú¡£
Êг¡ÉÏÓкܶ෽°¸À´½â¾öÕâ¸öÎÊÌ⣺
1. Consul_template

¼àÌýConsulÀïµÄkey£¬»á´¥·¢Ö´ÐÐÒ»¸ö½Å±¾£¬ÀûÓÃÕâ¸öÌØÐԵķþÎñ£¬·þÎñ·¢Éú±ä¶¯£¬»á¸ù¾ÝÔ¤ÏÈÅäÖúõÄÄ£°åÈ¥ÖØÐÂÉú³ÉÅäÖã¬Õâ¸ö¾ÍÊÇ×îºóÒªÖ´ÐеÄÒ»¸ö½Å±¾¡£ÔÀí¾ÍÊÇÕâÑù£º

ÉÏͼÊÇÒ»¸öÀý×Ó£¬±ÈÈç˵һ¸öÄ£°åÊÇÕâÑùµÄ£¬È»ºóÖм䶼Êǽ«À´Òª±»äÖȾµÄһЩ±äÁ¿£¬Èç¹ûK/v·¢Éú±ä¶¯£¬Ä£°å»¯Éú³ÉÒ»·ÝÕæÊµµÄÅäÖÃÎļþ£¬È»ºóÔÙÖ´ÐÐÒ»¸ö±¾µØµÄÃüÁNginx
-s reload£¬ÖØÐÂÉú³ÉÅäÖÃÎļþ£¬Reloadһϣ¬ÕâÑùеķþÎñ¾ÍÒѾÉúЧÁË¡£µ±È»ÕâÑùÒ²ÓÐһЩÎÊÌ⣺
(1) Èç¹ûÄãÆµ·±µÄReload»áÓÐÐÔÄÜËðºÄ£»
(2) ³¤Ê±¼ä´¦ÓÚShutting downµÄ״̬£¬Èç¹ûÁ¬½ÓÀïÍ·Óг¤Á¬½Ó£¬¾ÉµÄ½ø³Ì»áÒ»Ö±´¦ÓÚÒ»¸öÖÐ¼ä½ø³Ì£¬Õâ¸öʱ¼äÊDz»¶¨µÄ£¬¾ÍÊÇ˵Äã²»ÖªµÀµ½µ×ʲôʱºòReloadÕæÕýÍê³É£»
(3) ½ø³ÌÄÚ»º´æÊ§Ð§£¬ÎÒÃÇ»á°ÑÊý¾Ý¿âµÄһЩÐÅÏ¢£¬Ò»Ð©´úÂëÈ«²¿»º´æ½ø±¾µØ£¬ÕâÑù»º´æ¾ÍÈ«²¿Ê§Ð§ÁË¡£
µ±È»Ç°ÃæÈýµãÒ²²»ÊǷdz£µÄÑÏÖØ£¬±Ï¾¹ReloadµÄ²Ù×÷²»ÊÇÌØ±ðµÄƵ·±¡£
×îºóÒ»µãÊÇÓëÉè¼Æ³õÖÔ²»·û£¬ÕâÒ²ÊÇÎÒÃÇ×î¹ØÐĵÄÒ»µã£¬ËüÉè¼ÆµÄ³õÖÔÊÇ×öÊ²Ã´ÄØ£¿¾ÍÊÇ·½±ãÔËά²»È¥Ó°Ï쵱ǰµÄÇëÇ󣬾ÍÏ൱ÓÚÎÒÃÇÄÃDocker×öÐéÄâ»úÓÃÒ»Ñù×ßÍáÁË£¬×ßÍáÁËÖ®ºó×îºóºÜ¿ÉÄÜ»áÅöµ½ºÜ¶àÆæ¹ÖµÄ¿Ó£¬ËùÒÔµ±Ê±Ã»ÓÐÓÃÕâ¸ö·½°¸¡£
2. ÄÚ²¿DNS·½°¸

DNSµÄ·½°¸Ò²ÊDZȽϳ£Óõ쬱ÈÈçÎÒ°Ñ֮ǰÊÇÒ»¸öIPµØÖ·µÄServer£¬ÏÖÔڸijÉÒ»¸öÓòÃû£¬Ö»Òª°ÑËü½âÎöµôÒ»ÅúIP¾ÍºÃÁË£¬Õâ¸öÌýÆðÀ´ÒѾºÜÍêÃÀÁË£¬¶øÇÒConsul±¾ÉíÖ§³ÖDNS£¬ÎÒÃÇÒ²²»ÓÃά»¤ÁíÍâµÄDNSÁË£¬Ö»Òª°ÑÕâ¸öID»»³ÉÓòÃû¾ÍºÃÁË¡£
ÕâÑù×öµÄ»°£¬ÎÒÃǸоõ»¹²»Èç×öReload£¬ÒòΪÊ×ÏȶàÁËÒ»²ãDNS½âÎöʱ¼ä£¬ÔÙÔõô¿ì¶¼ÊÇÐèÒª½âÎöʱ¼äµÄ£¬µÚ¶þ¸öÊÇÓÐDNS»º´æ£¬ÕâÊÇ×îÖ÷ÒªµÄÔÒò£¬ÒòΪ»º´æµÄ´æÔÚ£¬Ã»°ì·¨Á¢¼´°Ñһ̨ÓÐÎÊÌâµÄ»úÆ÷Çеô£¬Èç¹ûÄãÒª»º½âÕâ¸öÎÊÌ⣬¾ÍÒª°Ñ»º´æÉèµÃ¶ÌÒ»µã£¬µ«ÕâÑù½âÎö´ÎÊý¾Í¶àÁË¡£»¹ÓÐÒ»¸ö¾ÍÊǶ˿ںŻá¸Ä±ä£¬ÎïÀí»úÒ»°ãÎÒÃÇ»áÅäÖÃͬһ¸ö¶Ë¿Ú£¬ÔÚDockerÀïÃæÒ²¿ÉÒÔÕâô×ö£¬µ«¶ÔÓÚһЩ¶ÔÍøÂç²»ÊǺÜÃô¸ÐµÄÓ¦Ó㬱ÈÈç˵һЩǿCPUµÄÓ¦Óã¬ÎÒÃÇ»áÖ±½Ó°ÑÈÝÆ÷µÄÍøÂ磬ÓÃÇŽӵķ½Ê½Á¬½ÓÆðÀ´£¬¶øÕâʱºò¶Ë¿ÚÊÇËæ»ú·ÖÅäµÄ£¬¿ÉÄÜÿ¸öÈÝÆ÷·ÖÅäµÄ¶¼²»Ò»Ñù£¬ËùÒԾͲ»ÐС£
ÄÇÎÒÃǵ½µ×ÏëÒªÔõôÑùÄØ£¿ÎÒÃÇÏëÒªµÄ·Ç³£¼òµ¥£¬¾ÍÊÇҪͨ¹ýHTTP½Ó¿Ú£¬¶¯Ì¬ÐÞ¸ÄNginxµÄÉÏÓηþÎñÁÐ±í¡£ÕâÑùµÄ·½°¸ÎÒÃÇÕÒÁËÖ®ºó·¢ÏÖÓÐÒ»¸öÏֳɵ쬽Ðngx_http_dyups_module¡£
3. Ngx_http_dyups_module

ËüÄܸÉʲôÊÂÇéÄØ£¿¿ÉÒÔͨ¹ýGET½Ó¿Ú²éѯµ±Ç°µÄһЩÐÅÏ¢£»POST¿ÉÒÔ¸üÐÂÉÏÓΣ»Ò²ÄÜͨ¹ýDdeleteɾ³ýÉÏÓΡ£

ÉÏͼÊÇÒ»¸öÀý×Ó£¬Õâ¸öÀý×ÓÓÐÈý¸öÇëÇó£¬Ò²¾ÍÊÇ·¢ÁËÈý¸öÖ¸Á
µÚÒ»¸ö£¬¸ø8080Õâ¸ö·þÎñ¶Ë¿Ú·¢ÁËÇëÇóÖ®ºó£¬·¢ÏÖºóÃæ¸ù±¾¾ÍûÓÐÈκεÄÉÏÓηþÎñ£¬ËùÒÔËü¾Í502ÁË£»
µÚ¶þ¸ö£¬Í¨¹ýÒ»¸öCurlµÄÇëÇó°ÑÁ½¸ö·þÎñµØÖ·¸ø¼Ó½øÀ´£»
µÚÈý¸ö£¬ÖØÐ·ÃÎÊÁËһϣ¬µÚÈýÌõÖ¸Áî¸úµÚÒ»ÌõÖ¸ÁîÊÇһģһÑù£¬ÒòΪµÚ¶þÌõÒѾ°Ñ·þÎñ¼Ó½øÀ´ÁË£¬ËùÒÔÕâÊÇÒ»¸öÕý³£µÄÊä³ö¡£
ÔÚÕâ¸ö¹ý³ÌÀïͷûÓÐÈκεÄReloadµÄ²Ù×÷£¬Ò²Ã»ÓиÄÅäÖã¬Ëü¾ÍÍê³ÉÁËÒ»¸ö¹¦ÄÜ¡£
Õâ¸öÄ£¿éдµÃ·Ç³£ºÃ£¬ÎÒÃÇÓÃÁËÒ»¶Îʱ¼ä£¬µ«Ò»¶Îʱ¼äºó°ÑËüϵôÁË£¬Ö÷ÒªÔÒò²»ÊÇÒòΪËü²»ºÃ£¬Ö÷ÒªÊÇÎÒÃǽáºÏÁËһЩ×ÔÉíµÄÇé¿ö£¬·¢ÏÖÁËһЩÎÊÌ⣺
µÚÒ»£¬µ¼ÖÂÒÀÀµNginx±¾ÉíµÄ¸ºÔؾùºâËã·¨¡£Èç¹ûÎÒÃÇÄÚ²¿ÓÃNgx_luaдµÃ±È½Ï¶à£¬ÓÃÁËÕâ¸öÄ£¿éÖ®ºó£¬»áµ¼ÖÂÎÒÃǷdz£ÒÀÀµCÄ£¿é£¬Ò²¾ÍÊÇ×ÔÉíµÄһЩ¸ºÔؾùºâËã·¨£¬ÎÒÃÇÓÐ×Ô¼ºÌØÓеÄÐèÇ󣬱ÈÈç˵±¾»úÓÅÏÈ£¬¾ÍÊÇÓÅÏÈ·ÃÎʱ¾»úµÄ·þÎñ£¬ÕâÑùÌýÆðÀ´±È½ÏÆæ¹ÖµÄ¸ºÔؾùºâ£¬Èç¹ûÒª×öÕâЩÊÂÇéµÄ»°£¬ÎÒÃǾÍÒª¸ÄC´úÂ룻
µÚ¶þ£¬¶þ´Î¿ª·¢Ð§Âʵͣ¬CµÄ¿ª·¢Ð§ÂÊÔ¶²»¼°Lua£»
µÚÈý£¬´¿LuaµÄ·½°¸ÎÞ·¨Ê¹Óã¬ÎÒÃÇ×öÕâÑùÒ»¸ö·½°¸²¢²»ÊÇ˵ÎÒÔÆ´¦ÀíÄÜÓþÍÐÐÁË£¬ÓÐÒ»¸öÏîÄ¿ÄÜÓþÍÐÐÁË£¬×öÕâ¸ö·½°¸×îºÃÊÇÆäËûһЩÏîÄ¿¶¼¿ÉÒÔÓá£
Ôì×Ô¼ºµÄÂÖ×Ó
»ùÓÚÒÔÉÏÕâЩÔÒò£¬ÎÒÃÇ¿ªÊ¼Ôì×Ô¼ºµÄÂÖ×Ó¡£

Õâ¸öÂÖ×ÓÊÇÕâÑùµÄ£¬ÓÐËĸö²¿·Ö£º
×î»ù´¡µÄNginx£¬ÎÒÃÇÏ£ÍûÓÃһЩÔÉúµÄÖ¸ÁîºÍÖØÊԵIJßÂÔ£»
LuaµÄÄ£¿é£»
lua_resty_checkups£¬ÕâÊÇÎÒÃÇLua°æµÄ¹ÜÀíÄ£¿é£¬ÊµÏÖÁ˶¯Ì¬µÄupstream¹ÜÀí£¬Õâ¸öÄ£¿éʵÏÖÁË´ó¸Å30%µÄ¹¦ÄÜ£¬¶øÇÒ»¹ÓÐһЩÖ÷¶¯µÄ½¡¿µ¼ì²é¹¦ÄÜ£¬ËüµÄ´úÂëÁ¿´ó¸ÅÒ²¾ÍÊÇ1500×óÓÒ£¬ÄÇCÄ£¿é¹À¼ÆÖÁÉÙÓÐ1ÍòÐУ»
luasocket£¬Ç§Íò²»ÄÜÔÚNginxÔÚ´¦ÀíÇëÇóµÄʱºòÓá£
¼òµ¥½éÉÜÒ»ÏÂlua_resty_checkupsÕâ¸öÄ£°å£¬ËüÓм¸¸ö¹¦ÄÜ£º
¶¯Ì¬upstream¹ÜÀí£¬»ùÓÚ¹²ÏíÄÚ´æÊµÏÖworker¼äͬ²½£»
±»¶¯½¡¿µ¼ì²é£¬Õâ¸öÊÇNginx×ÔÉíµÄÒ»¸öÌØÐÔ£»
Ö÷¶¯½¡¿µ¼ì²é£¬Õâ¸öÄ£¿é»áÖ÷¶¯¸øÄãµÄºó¶Ë·¢ÐÄÌø°ü£¬¿ÉÒÔ¶¨Ê±£¬15Ãë·¢Ò»´Î£¬Äãºó¶ËµÄ·þÎñÊDz»ÊÇ´æ»î¡£ÎÒÃÇ»¹¿ÉÒÔÓÐһЩ¸öÐÔ»¯µÄ¼ì²é£¬È»ºóheratbeat¶¨Ê±¸øÉÏÓη¢ËÍÐÄÌø°ü¼ì²â·þÎñÊÇ·ñ´æ»î£»
¸ºÔؾùºâËã·¨£¬±¾µØÓÅÏȿɽÚÔ¼ÄÚÍøÁ÷Á¿µÈ¡£

ÒÔHostÇø·Ö·þÎñ£º±ÈÈç˵ÕâÁ½¸öcurlÍùͬһ¸öµØÖ·È¥·¢£¬ÕâÁ½ÕßÖ®¼äÊDz»Ò»ÑùµÄ¡£

Õâ¸öͼ¼òµ¥½²Ò»Ï£¬ËüÊÇÒ»¸öÇëÇóµÄÁ÷³Ì£¬¿ÉÒÔ·ÖΪÈý¸ö²¿·Ö£¬×îÉÏÃæÊǽÓÊÕÇëÇó£¬ÎÒÃÇ»á¼ÓÔØÒ»¸öworker´úÂ룬ÔÚworker´úÂëÖ´ÐÐÍêÖ®ºó£¬»á¸ù¾ÝÕâ¸öhostÕÒ¶ÔÓ¦µÄÁÐ±í£¬È»ºó°ÑÕâ¸öÇëÇó´úÀí¸ø·þÎñ¶Ë¡£

Õâ¸ö¸údyupsµÄCÄ£¿éÒ»Ñù£¬Ò²ÊÇͨ¹ýHTTP½Ó¿Ú¶¯Ì¬¸üÐÂupstreamÁÐ±í£¬¼ÓÍêÖ®ºó£¬¿ÉÒÔÔÚ¹ÜÀíÒ³Ãæ¿´Ò»Ï£¬¾Í¿ÉÒÔ¿´µ½¸Õ¸Õ¼Ó½øÈ¥µÄÁ½¸ö·þÎñ£¬ÕâÀïÃæÓÐserverµØÖ·£¬Ò»Ð©½¡¿µ¼ì²éµÄÏûÏ¢£¬»¹ÓÐËüµÄ״̬±ä¸üµÄʱ¼ä£¬ÒÔ¼°Ëüʧ°ÜµÄ´ÎÊý£¬ÕâÊÇÖ÷¶¯½¡¿µ¼ì²éµÄÒ»¸ö¼Ç¼¡£ÄÇΪʲô»áÓÐÖ÷¶¯½¡¿µ¼ì²éÄØ£¿ÎÒÉÔ΢½éÉÜһϣ¬´ó¼ÒƽʱÓõľÍÊÇһЩ±»¶¯µÄ½¡¿µ¼ì²é£¬¾ÍÊÇ˵ÎÒÕâ¸öÇëÇó·¢³öÈ¥Ö®ºóʧ°ÜÁ˲ÅÖªµÀʧ°ÜÁË£¬Ö÷¶¯µÄ¾ÍÊÇÎÒ·¢ÐÄÌø°ü£¬ÔÚÇëÇó֮ǰ£¬ÎҾͿÉÒÔÖªµÀÄãÕâ¸ö·þÎñÊDz»ÊdzöÎÊÌâÁË¡£
¶¯Ì¬Lua¼ÓÔØ£¬Õâ¸öÔÚ×öÓÎÏ·µÄʱºò»á¾³£Óõ½£¬ÔÚÒ»¿ªÊ¼µÄʱºò£¬ÎÒÃǵijÌÐòÀïÃæÅÜÁËһЩLuaµÄ´úÂ룬¸øºó¶ËµÄ³ÌÐò×ö²ÎÊýת»¯ºÍ×ö¼æÈÝÓ㬱ÈÈçÓÐÒ»¸öСµ÷Õû²»ÀÖÒâÈ¥¸Ä£¬¾ÍÄÃÇ°ÃæµÄ·ÓÉÈ¥×ö£¬Ê×ÏÈÎÒ¿ÉÒÔ¶ÔÇëÇó×ö¸Äд£¬ÒòΪÎÒ¿ÉÒÔÄõ½Õû¸öµÄÇëÇóµÄ£¬ËüµÄÇëÇóÌå¿ÉÒÔ×öÈÎÒâµÄÊÂÇ飬ÕâÑùµÄ»°£¬ÎÒ¿ÉÒÔ¸úһЩȨÏÞ¿ØÖƽáºÏÆðÀ´£¬»¹ÓÐÒ»¸ö¾ÍÊÇ¿ÉÒÔ×öһЩ¼òµ¥µÄ²ÎÊý¼ì²é¡£¾ÝÎÒÃǵÄͳ¼Æ£¬ÎÒÃÇ´ó¸ÅÓÐÖÁÉÙ10%ÊÇÖØ¸´µÄÇëÇó£¬ÄÇÕâÐ©ÖØ¸´ÇëÇóÈç¹û¶¼È¥×öµÄ»°¾ÍÊÇÎÞνµÄÏûºÄ£¬ÎÒÃǻ᷵һ¸ö304£¬±íʾ½á¹û¸ú֮ǰµÄÒ»Ñù£¬ÓÃ֮ǰµÄ½á¹û¾ÍºÃÁË¡£ÔÚ·µ304µÄʱºò£¬Èç¹û˵ÎÒÃÇÊÇÐèÒªºó¶ËµÄ·þÎñÈ¥Åжϣ¬ÊƱػá°ÑÕû¸öÇëÇó¸øÊÕÏÂÀ´£¬È»ºóÔÙÍùºóÃæ·¢£¬Ï൱ÓÚÊÇÄÚÍø´ø¿íÒªÔö¼ÓһЩ£¬ÕâÑùÆäʵ¾ÍÒѾ½ÚÊ¡ÁË´ø¿í£¬¿ÉÒÔ²»ÍùºóÃæ·¢ÁË£¬Ö÷ÒªÊÇÕ⼸¸öÔÒò¡£

ÕâÊÇÒ»¸ö¶¯Ì¬¸ºÔؼÓÔØµÄÀý×Ó£¬ÎÒÈç¹û°ÑÕâ¶Î´úÂëÍÆµ½SlardarÀïÃæµÄ»°£¬Ëü»áÖ´ÐУ¬Èç¹ûÄã½øÐÐÒ»¸öɾ³ý²Ù×÷£¬Ëü»á·µ403£¬Ò²¾ÍÊÇ˵¿ÉÒÔÁ¢¼´Í¨¹ýÕâ¸ö´úÂë½ûµôÕâ¸ö²Ù×÷£¬ÄÇ»¹ÓÐʲô¹¦ÄÜÄØ£¿Äã¿ÉÒÔÏëÏ󵽵ŦÄܶ¼¿ÉÒÔ×ö£¬¶øÇÒÕâ¸ö¹ý³ÌÊǶ¯Ì¬µÄ£¬Èç¹û´úÂë¼ÓÔØ£¬Ò²¿ÉÒÔ´Ó״̬ҳÀï¿´µ½ËüµÄÐÅÏ¢¡£
¸Õ¸Õ½²µÄ¶¼ÊÇÕâ¸öÏîÄ¿µÄÌØÐÔ£¬½ÓÏÂÀ´Ïë¼òµ¥½éÉÜÒ»ÏÂʵÏÖ¹ý³Ì£¬ÓÐһЩ¿ÉÄܱȽÏÉîÈ룬ÎÒ¾¡Á¿°ÑһЩÉîÈëµÄµØ·½´ø¹ýÈ¥£¬¶¯Ì¬upstream¹ÜÀí£¬·ÖÈý¸ö²¿·Ö£¬Èý¸ö²½Öè¡£
1. ¶¯Ì¬upstream¹ÜÀí
Æô¶¯Ê±´ÓConsul¼ÓÔØÅäÖÃÎļþ£¬Èç¹ûÄãûÓÐÈκÎÀíÓɵĹÒÁË£¬¹ÒÁËÖ®ºóÄã¸ÕÆðÀ´Ê±£¬ÄãÔõô֪µÀÄã¸Õ¸ÕÔõôÁËÄØ£¿ËùÒÔµÃÓÐÒ»¸öµØ·½È¥¹Ì»¯ÕâЩ¶«Î÷£¬¶øÎÒÃÇÑ¡µÄ¾ÍÊÇConsul£¬ËùÒÔËüÆô¶¯µÄʱºò±ØÐë´ÓConsul¼ÓÔØ£¬Æô¶¯Ö®ºóÒ»¸ö¾ÍÊǼàÌý¹ÜÀíµÄ¶Ë¿Ú£¬»¹ÓÐÒ»¸ö¾ÍÊÇÒªÆô¶¯Ò»¸ö¶¨Ê±Æ÷£¬Õâ¸ö¶¨Ê±Æ÷×öworker¼äͬ²½µÄ£¬¶¨Ê±´Ó¹²ÏíÄÚ´æ¿´Ò»ÏÂÓÐûÓиüУ¬ÓиüÐµĻ°¿ÉÒÔͬ²½ÔÚ×Ô¼ºµÄworkerÀïÍ·¡£

ÕâÊÇÒ»¸ö¼òµ¥µÄÁ÷³Ìͼ£¬×ʼµÄʱºò´ÓConsul¼ÓÔØ£¬ÔÚÍê³ÉforkÖ®ºó£¬¾Íµ½ÁËworker½ø³Ì£¬Ò²¾ÍÊǸոÕÄã³õʼ»¯¼ÓÔØµÄÄÇЩÿ¸öworker¶¼ÓÐÁË£¬ÁíÍâÒ»²¿·ÖÆô¶¯¶¨Ê±Æ÷£¬Ò»µ©ÓиüÐÂ¾Í»á½øÈëµ½Õâ¸öÀïÃæ¡£
2. ¸ºÔؾùºâ
ÎÒÃÇÖ÷ÒªÓõ½ÁËbalance_by_lua_£¬Ò»¸öÇëÇó¹ýÀ´£¬Í¨¹ýupstreamµÄCÄ£¿é£¬È»ºó°ÑÕâ¸öÇëÇóÍùÕâÀï·¢£¬ÏÂͼÕâ¸öÅäÖÃÎļþ£¬¸Õ¸ÕÒ²ÓÐÒ»¸öÀàËÆµÄ£¬¾ÍÊÇÔÚÕâÀïдÁ˵ØÖ·¡£Í¨¹ýbalance_by_lua_Ö¸ÁÎÒÃÇ»á°ÑËüÀ¹µ½Õâ¸öÎļþÀ¾Í¿ÉÒÔÔÚÕâ¸öLuaÎļþÀïÍ·ÓÃLua´úÂëѡһ¸ö£¬Õâ¾ÍÊÇ×ÔÉíµÄÒ»¸öcheckupsµÄÑ¡ÔñµÄ¹ý³Ì¡£

´ó¸ÅµÄÁ÷³Ì¼ûÏÂͼ£¬¿ÉÒÔÏÈ¿´Ï±߲¿·Ö£¬Ò»¿ªÊ¼µÄʱºò£¬checkups.select_peerÊÇÎÒÃǵÄÄ£¿é£¬È»ºó¸ù¾ÝÕâ¸öhostÔÙµ½µ±Ç°µÄpeer£¬¾ÍÌø³öÈ¥ÁË£¬ÕâÑù¾ÍʵÏÖÁËÓÃLua¿ØÖÆ¡£ÉÏÃæ²¿·ÖÊÇÒªÖªµÀËüÊdzɹ¦»¹ÊÇʧ°ÜµÄ£¬Èç¹ûËüʧ°ÜÁË£¬ÎÒÒª¶ÔÕâ¸ö״̬½øÐз´À¡¡£

3. ¶¯Ì¬Lua¼ÓÔØ
Õâ¸öÖ÷ÒªÊÇÓõ½LuaµÄÈý¸öº¯Êý£¬·Ö±ðÊÇloadfile¡¢loadstringºÍsetfenv¡£loadfileÊǼÓÔØ±¾µØLua´úÂ룬loadstringÊÇ´ÓConsul»òHTTPÇëÇóbody¼ÓÔØ´úÂ룬setfenvÉèÖôúÂëµÄÖ´Ðл·¾³£¬Í¨¹ýÕâÈý¸öº¯Êý¾Í¿ÉÒÔ¼ÓÔØ£¬¾ßÌåµÄʵ¼ùϸ½ÚÎҾͲ»ÔÙ½éÉÜ¡£
ÕâÊÇÎÒÃÇ×öµÄÂÖ×Ó£¬Ö÷ÒªÓõ½checkupsµÄÄ£¿éºÍbalance_by_lua_£¬ËüÓÐÕâЩÓÅÊÆ£º
Ê×ÏÈ£¬´¿LuaʵÏÖ£¬²»ÒÀÀµµÚÈý·½CÄ£¿é£¬¶þ´Î¿ª·¢·Ç³£¸ßЧ£¬¼õÉÙά»¤¸ºµ£¡£
µÚ¶þÊÇ¿ÉÒÔÓÃNginxÔÉúµÄProxy£¬ÒòΪÎÒÃÇÖ»ÔÚÇëÇóµÄÑ¡peerµÄÄǸö½×¶Î×ö£¬peerÑ¡ÍêÖ®ºó£¬·¢Êý¾ÝµÄÄǸö½×¶ÎÊÇÖ±½Ó×ßNginx×Ô¼ºµÄÖ¸ÁîµÄ£¬ËùÒÔËü¿ÉÒÔÓõ½NginxÔÉúµÄProxyÖ¸Áî¡£
×îºó£¬ËüÊÊÓÃÓÚ¼¸ºõÈκεÄngx_luaÏîÄ¿¡£
ÔÚ΢·þÎñ¼Ü¹¹ÀslardarÄÜ×öʲô£¿
ÎÒÃÇĿǰҲÔÚ°Ñ֮ǰµÄһЩ·þÎñ¸ÄÔì³É΢·þÎñģʽ¡£Î¢·þÎñÆäʵ¾ÍÊÇÔ´ÓÚÒ»¸ö±È½Ï´óµÄ·þÎñ£¬°ÑËü²ð·Ö³ÉһЩСµÄ·þÎñ£¬ËüµÄÀ©ÈݸúÇ¨ÒÆÒ²²»Ò»Ñù£¬Î¢·þÎñµÄÀ©ÈÝ¿ÉÒÔÖ»À©ÈÝÆäÖÐÒ»²¿·Ö£¬Èç¹ûÐèÒªµÄ¹¦ÄܱȽ϶࣬¾ÍÀ©µÃ¶àÒ»µã£¬ÐèÒªÉٵ쬾ÍÀ©µÃÉÙÒ»µã¡£

ÎÒÃÇÏÖÔÚÕýÔÚ³¢ÊÔµÄÒ»¸ö·½°¸£¬Õâ¸ö·½°¸±³¾°ÊÇÕâÑù£¬ÎÒÃÇÓÐһЩ×öͼµÄÐèÇó£¬×öͼÕâ¸ö¹¦ÄÜÓкܶ࣬±ÈÈçÃÀ»¯µÈ¸÷ÖÖÐèÇó£¬Èç¹ûÒª¶ÔÕâ¸ö×öͼµÄ·þÎñ½øÐÐÓÅ»¯ÊǷdz£À§Äѵģ¬ÒòΪËü¹¦ÄÜÌ«¶àÁË£¬Èç¹ûÎÒÃǰÑËü²ð³É΢·þÎñ¾Í²»Ò»ÑùÁË£¬±ÈÈç˵Õâ¸öÐéÏßÉÏÃæµÄÊÇÎÒÃÇÏÖÔڵķþÎñ£¬Õâ¸öÊÇ΢·þÎñµÄÒ»¸öÍø¹Ø£¬ÏÂÃæÊÇһЩСµÄ·þÎñ¡£
±ÈÈç˵ÃÀ»¯£¬ËüµÄÔËËã±È½Ï¸´ÔÓ£¬ºÄCPU±È½Ï¶à£¬ÎÒÃǿ϶¨Ñ¡ÔñһЩCPU±È½ÏºÃµÄ»úÆ÷£»ÓÃGPUÀ´×öËõÂÔͼ£¬Õâ¸öÐÔÄÜ¿ÉÄÜÌá¸ß¼¸Ê®±¶£»×îºóÊÇÒ»¸öÖйæÖоصÄ×öͼ£¬ÄÇ¾ÍÆÕͨµÄһЩ¾Í¹»ÁË¡£
»¹ÓÐһЩ±È½ÏÆ«Ãŵ쬱ÈÈç˵Ìݶȣ¬¿ÉÄÜÖ»Òª±£Ö¤Ï·þÎñ¿ÉÒÔÓþÍÐÐÁË£¬Í¨¹ýÕâ¸ö΢·þÎñµÄ·ÓÉ£¬ÎÒÃǸù¾ÝºóÃæµÄÇø·Ö°Ñ֮ǰµÄÒ»¸ö·þÎñ£¬ÒÔ¼°ËüµÄ²ÎÊý²ð³ÉÈý¸öСµÄ·þÎñ£¬ÕâÑùͨ¹ýÈý¸ö²½Öè¿ÉÒÔÍê³ÉÒ»¸ö×öͼµÄ·þÎñ¡£
µ±È»ÎÒÃÇÔÚ³¢ÊÔµÄÕâ¸ö·½°¸ÆäʵҲÓкܶàÎÊÌ⣬±ÈÈçÒ»¸ö·þÎñÔÀ´ÓÃÒ»¸ö³ÌÐò¾Í¿ÉÒÔ×öÁË£¬ÏÖÔÚ±ä³ÉÁËÈý¸ö£¬ÊƱØÄÚÍøµÄ´ø¿íÒªÔö¼ÓÁË£¬ÖмäµÄͼƬҪ±»µ¼À´µ¼È¥£¬ÕâÔõô°ì£¿ÎÒÃÇÏÖÔÚÏëµ½µÄ°ì·¨¾ÍÊÇ×öһЩ±¾µØÓÅÏȵĵ÷¶È²ßÂÔ£¬¾ÍÊÇ˵Äã×öÍêÖ®ºó£¬±¾µØÓÐһЩˮӡµÄ£¬ÄǾÍÓÅÏÈÓñ¾µØµÄ¡£
Ì×ÓôóʦµÄÒ»¾ä»°£ºTalk is cheap£¬Show me the code¡£¿ªÔ´£¡ |