±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚÁõÏþÃ÷,ÎÄÕÂÎ§ÈÆ¼¸¸öÎÄÕÂÕ¹¿ª£¬È»ºó½²½âÁËÈÝÆ÷¡¢²¿Êð¡¢»·¾³¡¢×¢²á¼°·þÎñ¡£ |
|
×÷Ϊ´´Òµ¹«Ë¾ºÍÍÆÐÐDevOps¹¤³ÌʦÃÇÀ´Ëµ£¬¶¼Óöµ½¹ýÕâÑùµÄÎÊÌ⣺
Ó²¼þ×ÊÔ´ÀûÓÃÂʵÄÎÊÌ⣬Ôì³É²¿·Ö³É±¾µÄÀË·Ñ
ÔÚÍøÕ¾¹¦ÄÜÖв»Í¬µÄÒµÎñ³¡¾°ÓмÆËãÐ͵ģ¬ÓÐIO¶ÁдÐ͵ģ¬ÓÐÍøÂçÐÍ£¬ÓÐÄÚ´æÐ͵쬼¯Öв¿ÊðÓ¦ÓþͻᵼÖÂ×ÊÔ´ÀûÓÃÂʲ»ºÏÀíµÄÎÊÌâ¡£±ÈÈ磬һ¸ö»úÆ÷Éϲ¿ÊðµÄ·þÎñ¶¼ÊÇÄÚ´æÃܼ¯ÐÍ£¬ÄÇôCPU×ÊÔ´¾Í¶¼ºÜÈÝÒ×ÀË·ÑÁË¡£
µ¥ÎïÀí»ú¶àÓ¦ÓÃÎÞ·¨¶ÔÎÞ·¨½øÐÐÓÐЧµÄ¸ôÀ룬µ¼ÖÂÓ¦ÓöÔ×ÊÔ´µÄÇÀÕ¼ºÍÏ໥ӰÏì
Ò»¸öÎïÀí»úÆ÷Åܶà¸öÓ¦Óã¬ÎÞ·¨½øÐÐËùʹÓõÄCPU£¬Äڴ棬½ø³Ì½øÐÐÏÞÖÆ£¬Èç¹ûÒ»¸öÓ¦ÓóöÏÖ¶Ô×ÊÔ´µÄÇÀÕ¼ÎÊÌ⣬¾Í»áÒýÆðÁ¬Ëø·´Ó¦£¬×îÖÕµ¼ÖÂÍøÕ¾²¿·Ö¹¦Äܲ»¿ÉÓá£
»·¾³¡¢°æ±¾¹ÜÀí¸´ÔÓ£¬ÉÏÏß²¿ÊðÁ÷³Ìȱ·¦£¬Ôö¼ÓÎÊÌâÅŲéµÄ¸´ÔÓ¶È
ÓÉÓÚÄÚ²¿¿ª·¢Á÷³ÌµÄ²»¹æ·¶£¬´úÂëÔÚ²âÊÔ»òÕßÉÏÏß¹ý³ÌÖУ¬¶ÔһЩÅäÖÃÏîºÍϵͳ²ÎÊý½øÐÐËæÒâµÄµ÷Õû£¬ÔÚ·¢²¼Ê±½øÐÐÔöÁ¿·¢²¼£¬Ò»µ©³öÏÖÎÊÌ⣬¾Í»áµ¼Ö²âÊԵĴúÂëºÍÏßÉÏÔËÐеĴúÂëÊDz»Ò»Öµģ¬Ôö¼ÓÁË·þÎñÉÏÏߵķçÏÕ£¬Ò²Ôö¼ÓÁËÏßÉÏ·þÎñ¹ÊÕÏÅŲéµÄÄѶȡ£
»·¾³²»Îȶ¨£¬Ç¨ÒƳɱ¾¸ß£¬Ôö¼ÓÉÏÏß·çÏÕ
ÔÚ¿ª·¢¹ý³ÌÖдæÔÚ¶à¸öÏîÄ¿²¢Ðпª·¢ºÍ·þÎñµÄÒÀÀµÎÊÌ⣬ÓÉÓÚ»·¾³ºÍ°æ±¾µÄ¸´ÔÓÐԺܸߣ¬²»ÄÜ¿ìËٴºÍÇ¨ÒÆÒ»¸ö»·¾³£¬µ¼ÖÂÎÞ·¨ÔÚ²âÊÔ»·¾³ÖÐÎÞ·¨Ä£Äâ³öÏßÉϵÄÁ÷³Ì½øÐвâÊÔ£¬ºÜ¶àͬѧÔÚÏßÉÏ»·¾³½øÐвâÊÔ£¬ÕâÀïÓкܸߵÄDZÔÚ·çÏÕ£¬Í¬Ê±µ¼Ö¿ª·¢Ð§ÂʽµµÍ¡£
´«Í³ÐéÄâ»úºÍÎïÀí»úÕ¼Óÿռä´ó£¬Æô¶¯Âý£¬¹ÜÀí¸´ÔÓµÈÎÊÌâ
´«Í³ÐéÄâ»úºÍÎïÀí»úÔÚÆô¶¯¹ý³Ì½øÐмÓÔØÄںˣ¬Ö´ÐÐÄں˺Íinit½øÐУ¬µ¼ÖÂÔÚÆô¶¯¹ý³ÌÕ¼Óúܳ¤Ê±¼ä£¬¶øÇÒÔÚ¹ÜÀí¹ý³ÌÖлáÓöµ½¸÷ÖÖ¸÷ÑùµÄ¹ÜÀíÎÊÌâ¡£
»ùÓÚDockerÈÝÆ÷¼¼Êõ£¬ÔËά¼¼ÊõÍŶӿª·¢ÁËÎå°¢¸çÍøÕ¾µÄÈÝÆ÷ÔÆÆ½Ì¨¡£Í¨¹ýÈÝÆ÷ÔÆÆ½Ì¨95%µÄÓ¦Ó÷þÎñÒѾʵÏÖÈÝÆ÷»¯²¿Êð¡£ÕâЩӦÓÃÖ§³ÖÒµÎñ°´ÐèÍØÕ¹£¬Ãë¼¶ÉìËõ£¬ÌṩÓëÓû§ÓѺõĽ»»¥¹ý³Ì£¬¹æ·¶Á˲âÊÔºÍÉú²úµÄ·¢²¼Á÷³Ì£¬Èÿª·¢ºÍ²âÊÔͬѧ´Ó»ù´¡µÄ»·¾³ÅäÖúͷ¢²¼½â·Å³öÀ´£¬Ê¹Æä¸ü¾Û½¹×Ô¼ºµÄÏîÄ¿¿ª·¢ºÍ²âÊÔ¡£½áºÏÎå°¢¸çÈÝÆ÷ÔÆÆ½Ì¨ºÍDockerÈÝÆ÷¼¼ÊõµÄʵ¼ù£¬±¾ÎÄÏȽéÉÜÈçºÎʵÏÖ7*24Сʱ¡°Ò»Õ¾Ê½¡±µÄ³ÖÐø½»¸¶£¬ÊµÏÖ²úÆ·µÄÉÏÏß¡£

ÈÝÆ÷ÔÆÆ½Ì¨¼Ü¹¹Í¼
Docker¾µÏñ±ê×¼»¯
ÖÚËùÖÜÖª£¬DockerµÄ¾µÏñÊÇ·Ö²ãµÄ¡£¶Ô¾µÏñ·Ö²ã½øÐÐÔ¼¶¨£º
µÚÒ»²ãÊDzÙ×÷ϵͳ²ã£¬ÓÉCentOS/AlpineµÈ»ù´¡¾µÏñ¹¹³É£¬°²×°Ò»Ð©Í¨ÓõĻù´¡×é¼þ£»
µÚ¶þ²ãÊÇÖмä¼þ²ã£¬¸ù¾Ý²»Í¬µÄÓ¦ÓóÌÐò£¬°²×°ËüÃÇÔËÐÐʱÐèҪʹÓõ½µÄ¸÷ÖÖÖмä¼þºÍÒÀÀµÈí¼þ°ü£¬È磬Nginx¡¢TomcatµÈ£»
µÚÈý²ãÊÇÓ¦Óò㣬Õâ²ã½ö°üº¬ÒѾ´òºÃ°üµÄ¸÷Ó¦ÓóÌÐò´úÂë¡£

Docker Image·Ö²ã
¾Ñé×ܽ᣺ÈçºÎÈÃ×Ô¼ºµÄ¾µÏñ±äµÄ¸üС£¬PUSHµÄ¸ü¿ì£¿

Docker ImageÓÅ»¯Ç°ºó¶Ô±È
Dockerfile¹¹½¨Ó¦ÓþµÏñ£¬ÔÚÖмä¼þ²ãÓöµ½Ò»Ð©ÐèÒª°²×°µÄÈí¼þ°üʱ£¬¾¡¿ÉÄܵÄʹÓðü¹ÜÀí¹¤¾ß£¨Èçyum£©»òÒÔgit
clone·½Ê½ÏÂÔØÔ´Âë°ü½øÐа²×°£¬Ä¿µÄÊǽ«Èí¼þ°üµÄcopyºÍ°²×°¿ØÖÆÔÚͬһ²ã£¬Èí¼þ²¿Êð³É¹¦ºóÇå³ýһЩÎÞÓõÄrpm°ü»òÔ´Âë°ü£¬Èûù´¡¾µÏñµÄ³ß´ç¸üС¡£
JavaÓ¦ÓþµÏñÖв¢Ã»Óн«JDKÈí¼þ°ü´òÈë¾µÏñ£¬½«JDK²¿ÊðÔÚÿ̨ËÞÖ÷ÉÏ£¬ÔÚÔËÐоµÏñʱ£¬Í¨¹ý¹ÒÔØÄ¿Â¼µÄ·½Ê½½«ËÞÖ÷»úÉϵÄJava¼ÒĿ¼¹ÒÔØÖÁÈÝÆ÷Ö¸¶¨Ä¿Â¼Ï¡£ÒòΪËü»á°Ñ»ù´¡¾µÏñ³ÅµÃ·Ç³£´ó¡£
ÔÚ¹¹½¨Ó¦ÓþµÏñʱ£¬Docker»á¶ÔÕâÁ½²ã½øÐлº´æ²¢Ö±½ÓʹÓ㬽ö»áÖØÐ´´½¨´úÂë³öÏֱ䶯µÄÓ¦Óò㣬ÕâÑù¾ÍÌá¸ßÁËÓ¦ÓþµÏñµÄ¹¹½¨ËٶȺ͹¹½¨³É¹¦ºóÏò¾µÏñ²Ö¿âÍÆË͵ÄËÙ¶È£¬´ÓÕûÌåÁ÷³ÌÉÏÌáÉýÁËÓ¦ÓõIJ¿ÊðЧÂÊ¡£
ÈÝÆ÷µÄ±àÅŹÜÀí
±àÅŹ¤¾ßµÄÑ¡ÐÍ£º

Docker±àÅŹ¤¾ß¶Ô±È
RancherͼÐλ¯¹ÜÀí½çÃæ£¬²¿Êð¼òµ¥¡¢·½±ã£¬¿ÉÒÔÓëAD¡¢LDAP¡¢GitHub¼¯³É£¬»ùÓÚÓû§»òÓû§×é½øÐзÃÎÊ¿ØÖÆ£¬¿ìËÙ½«ÏµÍ³µÄ±àÅŹ¤¾ßÉý¼¶ÖÁKubernetes»òÕßSwarm£¬Í¬Ê±ÓÐרҵµÄ¼¼ÊõÍŶӽøÐÐÖ§³Ö£¬½µµÍÈÝÆ÷¼¼ÊõÈëÃŵÄÄѶȡ£

Rancher¼Ü¹¹Í¼
»ùÓÚÒÔÉÏÓŵãÎÒÃÇÑ¡ÔñRancher×÷ΪÎÒÃÇÈÝÆ÷ÔÆÆ½Ì¨µÄ±àÅŹ¤¾ß£¬ÔÚ¶ÔÓ¦ÓõÄÈÝÆ÷ʵÀý½øÐÐͳһµÄ±àÅŵ÷¶Èʱ£¬ÅäºÏDocker-Compose×é¼þ£¬¿ÉÒÔÔÚͬһʱ¼ä¶Ô¶ą̀ËÞÖ÷»úÖ´Ðе÷¶È²Ù×÷¡£Í¬Ê±£¬ÔÚ·þÎñ·ÃÎʳöÏÖ·åÖµºÍµÍ¹Èʱ£¬ÀûÓÃÌØÓеÄrancher-compose.ymlÎļþµ÷Óá°SCALE¡±ÌØÐÔ£¬¶ÔÓ¦Óü¯ÈºÖ´Ðж¯Ì¬À©ÈݺÍËõÈÝ£¬ÈÃÓ¦Óð´ÐèÇó´¦Àí²»Í¬µÄÇëÇó¡£https:/zhuanlan.zhihu.com/p/29093407
ÈÝÆ÷ÍøÂçÄ£ÐÍÑ¡ÐÍ£º

Docker ÍøÂç¶Ô±È
ÓÉÓÚºó¶Ë¿ª·¢»ùÓÚ°¢ÀïµÄHSF¿ò¼Ü£¬Éú²úÕߺÍÏû·ÑÕßÖ®¼äÐèÒªÍøÂç¿É´ï£¬¶ÔÍøÂçÒªÇó±È½Ï¸ß£¬ÐèÒªÒÔÕæÊµIPµØÖ·½øÐÐ×¢²áºÍÀÈ¡·þÎñ¡£ËùÒÔÔÚÑ¡ÔñÈÝÆ÷ÍøÂçʱ£¬ÎÒÃÇʹÓÃÁËHostģʽ£¬ÔÚÈÝÆ÷Æô¶¯¹ý³ÌÖлáÖ´Ðнű¾¼ì²éËÞÖ÷»ú²¢·ÖÅ䏸ÈÝÆ÷Ò»¸ö¶ÀÁ¢µÄ¶Ë¿Ú£¬À´±ÜÃâ³åÍ»µÄÎÊÌâ¡£
³ÖÐø¼¯³ÉÓë³ÖÐø²¿Êð
³ÖÐø¼¯³É£¬¼à²â´úÂëÌύ״̬£¬¶Ô´úÂë½øÐгÖÐø¼¯³É£¬ÔÚ¼¯³É¹ý³ÌÖÐÖ´Ðе¥Ôª²âÊÔ£¬´úÂëSonarºÍ°²È«¹¤¾ß½øÐо²Ì¬É¨Ã裬½«½á¹û֪ͨ¸ø¿ª·¢Í¬Ñ§Í¬Ê±²¿Ê𼯳ɻ·¾³£¬²¿Êð³É¹¦ºó´¥·¢×Ô¶¯»¯²âÊÔ£¨×Ô¶¯»¯²âÊÔ²¿·ÖºóÐø»á¸üУ©¡£

³ÖÐø¼¯³É
¾²Ì¬É¨Ãè½á¹û£º

¾²Ì¬É¨Ãè½á¹û
³ÖÐø²¿Êð£¬ÊÇÒ»ÖÖÄÜÁ¦£¬ÕâÖÖÄÜÁ¦·Ç³£ÖØÒª£¬°ÑÒ»¸ö°ü¿ìËÙ²¿ÊðÔÚÄãÏëÒªµÄµØ·½¡£Æ½Ì¨²ÉÓ÷ֲ¼Ê½¹¹½¨¡¢²¿Êð£¬Master¹ÜÀí¶à¸öSlave½Úµã£¬Ã¿¸öSlave½Úµã·ÖÊô²»Í¬µÄ»·¾³¡£ÔÚMasterÉϰ²×°²¢¸üвå¼þ¡¢´´½¨job¡¢¹ÜÀí¸÷¿ª·¢ÍŶÓȨÏÞ¡£SlaveÓÃÓÚÖ´ÐÐjob¡£

³ÖÐø²¿Êð
»ùÓÚÉÏÊö¼Ü¹¹£¬ÎÒÃǶ¨ÒåÁ˳ÖÐø²¿Êð¹æ·¶µÄÁ÷³Ì£º
¿ª·¢Í¬Ñ§ÏòGitLabÌá½»´úÂ룻
ÀÈ¡ÏîÄ¿´úÂëºÍÅäÖÃÏîÎļþ£¬Ö´ÐбàÒëÈÎÎñ£»
ÀÈ¡»ù´¡¾µÏñ£¬½«±àÒëºÃµÄÓ¦Óðü´òÈëÉú³É×îеÄÓ¦ÓþµÏñ£¬ÍÆË͵½¾µÏñ²Ö¿â£»
¸ù¾Ýµ±Ç°Ó¦Óü°ËùÊô»·¾³¶¨ÖÆ»¯Éú³Édocker-compose.ymlÎļþ£¬»ùÓÚÕâ¸öÎļþÖ´ÐÐrancher-composeÃüÁ½«Ó¦ÓþµÏñ²¿Êðµ½Ô¤·¢»·¾³£¨·¢²¼Éú²úǰµÄ²âÊÔ»·¾³£¬Ïà¹ØÅäÖᢷþÎñÒÀÀµ¹ØÏµºÍÉú²ú»·¾³Ò»Ö£©¡£
Ô¤·¢»·¾³²âÊÔͨ¹ýºó½«Ó¦ÓþµÏñ²¿ÊðÖÁÏßÉÏ»·¾³£¬²âÊÔ½á¹û֪ͨºó¶Ë²âÊÔͬѧ¡£
ÈÝÆ÷µÄÔËÐйÜÀí
Ó¦ÓÃÈÝÆ÷ÏÖÔÚÒѾ²¿Êðµ½ÏßÉÏ»·¾³£¬ÄÇôÔÚÕû¸öÈÝÆ÷µÄÉúÃüÖÜÆÚÖУ¬»¹ÐèÒª½â¾öÏÂÃæÁ½¸öÎÊÌ⣺
ÈçºÎ±£´æÓ¦ÓóÌÐò²úÉúµÄÔËÐÐÈÕÖ¾ºÍÆäËüÒµÎñÈÕÖ¾£»
ÈçºÎÔÚºó¶Ë·þÎñ³öÏֱ仯ºónginxÄܹ»×Ô¶¯·¢ÏÖ²¢Íê³ÉÅäÖøüС£
ÈÕÖ¾¹ÜÀí
ÈÝÆ÷ÔÚÔËÐÐʱ»áÔÚÖ»¶Á²ãÖ®ÉÏ´´½¨¶Áд²ã£¬ËùÓжÔÓ¦ÓóÌÐòµÄд²Ù×÷¶¼ÔÚÕâ²ã½øÐС£µ±ÈÝÆ÷ÖØÆôºó£¬¶Áд²ãÖеÄÊý¾Ý£¨°üº¬ÈÕÖ¾£©Ò²»áÒ»²¢±»Çå³ý¡£ËäÈ»¿ÉÒÔͨ¹ý½«ÈÝÆ÷ÖÐÈÕ־Ŀ¼¹ÒÔØµ½ËÞÖ÷»ú½â¾ö´ËÀàÎÊÌ⣬µ«µ±ÈÝÆ÷ÔÚ¶à¸öËÞÖ÷»ú¼äƵ·±Æ¯ÒÆÊ±£¬Ã¿¸öËÞÖ÷»úÉ϶¼»áÓÐÁô´æÓ¦ÓÃÃûµÄ²¿·ÖÈÕÖ¾£¬Ôö¼ÓÁË¿ª·¢Í¬Ñ§²é¿´¡¢ÅŲéÎÊÌâµÄÄѶȡ£
×ÛÉÏËùÊô£¬ÈÕÖ¾·þÎñƽ̨×÷ΪÎå°¢¸çÍøÕ¾ÈÕÖ¾²Ö¿â£¬½«Ó¦ÓÃÔËÐйý³ÌÖвúÉúµÄÈÕ־ͳһ´æ´¢£¬²¢ÇÒÖ§³Ö¶àÖÖ·½Ê½µÄ²éѯ²Ù×÷¡£

ÈÕÖ¾¹ÜÀí
ͨ¹ýÔÚÈÕÖ¾·þÎñµÄ¹ÜÀí½çÃæÅäÖÃÈÕÖ¾²É¼¯Â·¾¶£¬ÔÚÈÝÆ÷Öв¿ÊðAgent°ÑÓ¦ÓÃÈÕ־ͳһͶµÝµ½LogstoreÖУ¬ÔÙÔÚLogstoreÖÐÅäÖÃÈ«ÎÄË÷ÒýºÍ·Ö´Ê·û£¬ÒԱ㿪·¢Í¬Ñ§Äܹ»Í¨¹ý¹Ø¼ü×ÖËÑË÷¡¢²éѯÏëÒªµÄÈÕÖ¾ÄÚÈÝ¡£
¾Ñé×ܽ᣺ÈçºÎ±ÜÃâÈÕÖ¾µÄÖØ¸´²É¼¯ÎÊÌ⣿
ÈÕÖ¾·þÎñµÄagentÐèÒªÔÚÅäÖÃÎļþ¡°ilogtailconfig.json¡±ÖÐÔö¼ÓÅäÖòÎÊý¡°checkpoint_filename¡±£¬Ö¸¶¨checkpointÎļþÉú³ÉµÄ¾ø¶Ô·¾¶£¬²¢ÇÒ½«´Ë·¾¶¹ÒÔØÖÁËÞÖ÷»úĿ¼Ï£¬È·±£ÈÝÆ÷ÔÚÖØÆôʱ²»»á¶ªÊ§checkpointÎļþ£¬²»»á³öÏÖÖØ¸´²É¼¯ÎÊÌâ¡£
·þÎñµÄ×¢²á
etcdÊÇÒ»¸ö¾ß±¸¸ß¿ÉÓÃÐÔºÍǿһÖÂÐԵļüÖµ´æ´¢²Ö¿â£¬ËüʹÓÃÀàËÆÓÚÎļþϵͳµÄÊ÷Ðνṹ£¬Êý¾ÝÈ«²¿ÒÔ¡°/¡±¿ªÍ·¡£etcdµÄÊý¾Ý·ÖΪÁ½ÖÖÀàÐÍ£ºkeyºÍdirectories£¬ÆäÖÐkeyÏ´洢µ¥¶ÀµÄ×Ö·û´®Öµ£¬directoriesÏÂÔò´æ·ÅkeyµÄ¼¯ºÏ»òÕ߯äËû×ÓĿ¼¡£

Ó¦ÓÃ×¢²á
ÔÚÎå°¢¸ç»·¾³ÖУ¬Ã¿¸öÏòetcd×¢²áµÄÓ¦Ó÷þÎñ£¬ËüÃǵĸùĿ¼¶¼ÒÔ¡±/${APPNAME}${ENVIRONMENT}¡±ÃüÃû¡£¸ùĿ¼Ï´洢ÿ¸öÓ¦ÓÃʵÀýµÄKeyÐÅÏ¢£¬ËüÃǶ¼ÒÔ¡°${IP}-${PORT}¡±µÄ·½Ê½ÃüÃû¡£
ÏÂͼÊÇʹÓÃÉÏÊöÔ¼¶¨£¬´æ´¢ÔÚetcdÉÏijӦÓÃʵÀýµÄÊý¾Ý½á¹¹£º

etcdÊý¾Ý´æ´¢½á¹¹
¿ÉÒÔ¿´µ½ÎÒÊÇʹÓÃget·½·¨Ïòetcd·¢ËÍÇëÇóµÄ£¬ÇëÇóµÄÊDz¿ÊðÔÚÔ¤·¢»·¾³£¨PRE£©µÄËÑË÷·þÎñ£¨search£©£»ÔÚËüµÄ¸ùĿ¼¡°/search_PRE¡±Ï£¬½ö´æ´¢ÁËÒ»¸öÓ¦ÓÃʵÀýµÄÐÅÏ¢£¬Õâ¸öʵÀýµÄkeyÊÇ¡°172.18.100.31-86¡±£»¶ÔÓ¦µÄvalueÊÇ¡°172.18.100.31:86¡®¡¯£¬Õû¸ö×¢²á¹ý³ÌÊÇÕâÑùµÄ£º
ͨ¹ý´úÂëΪÈÝÆ÷Ó¦ÓóÌÐòÉú³ÉËæ»ú¶Ë¿Ú£¬ºÍËÞÖ÷»úÕýÔÚʹÓõĶ˿ڽøÐбȶԣ¬È·±£¶Ë¿ÚûÓгåÍ»ºóдÈë³ÌÐòÅäÖÃÎļþ£»
°Ñͨ¹ýPythonºÍetcdÄ£¿é±àдµÄ·þÎñ×¢²á¹¤¾ß¼¯³ÉÔڽű¾ÖУ¬½«IPµØÖ·ºÍÉÏÒ»²½»ñÈ¡µÄËæ»ú¶Ë¿ÚÒÔ²ÎÊýµÄ·½Ê½´«µÝ¸ø·þÎñ×¢²á¹¤¾ß£»
´ýÓ¦ÓóÌÐòÍêÈ«Æô¶¯ºó£¬ÓÉ·þÎñ×¢²á¹¤¾ßÒÔÔ¼¶¨ºÃµÄÊý¾Ý½á¹¹½«Ó¦ÓÃʵÀýµÄдÈëetcd¼¯Èº£¬Íê³É·þÎñ×¢²á¹¤×÷£»
ÈÝÆ÷¶¨Ê±Ïòetcd·¢ËÍÐÄÌø£¬±¨¸æ´æ»î²¢Ë¢ÐÂTTLʱ¼ä£»
ÈÝÆ÷½Å±¾²¶»ñRancher·¢ËÍÖÁÓ¦ÓÃʵÀýµÄsingnal terminalÐźţ¬ÔÚ½ÓÊÕµ½ÐźźóÏòetcd·¢ËÍdeleteÇëÇóɾ³ýʵÀýµÄÊý¾Ý¡£
×¢£ºÔÚTTL»ù´¡ÉÏÔö¼ÓÖ÷¶¯Çå³ý¹¦ÄÜ£¬ÔÚ·þÎñÕý³£ÊÍ·Åʱ£¬¿ÉÒÔÁ¢¿ÌÇå³ýetcdÉÏ×¢²áÐÅÏ¢£¬²»±ØµÈ´ýttlʱ¼ä¡£
¾Ñé×ܽ᣺ÈÝÆ÷ÔÚÖØÆô»òÕßÒâÍâÏú»Ùʱ£¬ÈÃÎÒÃÇÒ»Æð¿´Ò»ÏÂÕâ¸ö¹ý³ÌÖÐÈÝÆ÷ºÍ×¢²áÖÐÐͼ×öÁËʲôÊÂÇ飿
Ó¦ÓÃÔÚ×¢²áÊÇЯ´økeyºÍvalueʱЯ´øÁËTTL³¬Ê±ÊôÐÔ£¬¾ÍÊÇ¿¼Âǵ½µ±·þÎñ¼¯ÈºÖеÄʵÀýå´»úºó£¬ËüÔÚetcdÖÐ×¢²áµÄÐÅÏ¢Ò²ËæÖ®Ê§Ð§£¬Èô²»ÓèÇå³ý£¬Ê§Ð§µÄÐÅÏ¢½«»á³ÉΪÀ¬»øÊý¾Ý±»Ò»Ö±±£´æ£¬¶øÇÒÅäÖùÜÀí¹¤¾ß»¹»á°ÑËüµ±×öÕý³£Êý¾Ý¶ÁÈ¡³öÀ´£¬Ð´Èëweb
serverµÄÅäÖÃÎļþÖС£Òª±£Ö¤´æ´¢ÔÚetcdÖеÄÊý¾ÝʼÖÕÓÐЧ£¬¾ÍÐèÒªÈÃetcdÖ÷¶¯ÊÍ·ÅÎÞЧµÄʵÀýÐÅÏ¢£¬À´¿´Ò»ÏÂ×¢²áÖÐÐÄˢеĻúÖÆ£¬´úÂëÖ±½Ó·îÉÏ£º
#!/usr/bin/env
python
import etcd
import sys
arg_l=sys.argv[1:]
etcd_clt=etcd.Client(host='172.18.0.7')
def
set_key(key,value,ttl=10):
try:
return
etcd_clt.write(key,value,ttl)
except TypeError:
print 'key or vlaue is null'
def
refresh_key(key,ttl=10):
try:
return
etcd_clt.refresh(key,ttl)
except TypeError:
print 'key is null'
def
del_key(key):
try:
return etcd_clt.delete(key)
except TypeError:
print 'key is null'
if arg_l:
if len(arg_l) == 3:
key,value,ttl=arg_l
set_key(key,value,ttl)
elif len(arg_l) == 2:
key,ttl=arg_l
refresh_key(key,ttl)
elif len(arg_l) == 1:
key=arg_l[0]
del_key(key)
else:
raise TypeError,'Only three
parameters are needed here'
else:
raise Exception('args is null') |
·þÎñµÄ·¢ÏÖ
ConfdÊÇÒ»¸öÇáÁ¿¼¶µÄÅäÖùÜÀí¹¤¾ß£¬Ö§³Öetcd×÷Ϊºó¶ËÊý¾ÝÔ´£¬Í¨¹ý¶ÁÈ¡Êý¾ÝÔ´Êý¾Ý£¬±£Ö¤±¾µØÅäÖÃÎļþΪ×îУ»²»½öÈç´Ë
£¬Ëü»¹¿ÉÒÔÔÚÅäÖÃÎļþ¸üк󣬼ì²éÅäÖÃÎļþÓï·¨ÓÐЧÐÔ£¬ÒÔÖØÐ¼ÓÔØÓ¦ÓóÌÐòʹÅäÖÃÉúЧ¡£ÕâÀïÐèҪ˵Ã÷µÄÊÇ£¬ConfdËäȻ֧³Örancher×÷ΪÊý¾ÝÔ´£¬µ«¿¼ÂÇÒ×ÓÃÐÔºÍÀ©Õ¹ÐÔµÈÔÒò£¬×îÖÕÎÒÃÇ»¹ÊÇÑ¡ÔñÁËetcd¡£
ºÍ´ó¶àÊý²¿Êð·½Ê½Ò»Ñù£¬ÎÒÃǰÑConfd²¿ÊðÔÚweb serverËùÔÚµÄECSÉÏ£¬±ãÓÚConfdÔÚ¼à²âµ½Êý¾Ý±ä»¯ºó¼°Ê±¸üÐÂÅäÖÃÎļþºÍÖØÆô³ÌÐò¡£ConfdµÄÏà¹ØÅäÖÃÎļþºÍÄ£°åÎļþ²¿ÊðÔÚĬÈÏ·¾¶/etc/confdÏ£¬Ä¿Â¼½á¹¹ÈçÏ£º
/etc/confd/
©À©¤©¤ conf.d
©À©¤©¤ confd.toml
©¸©¤©¤ templates |
confd.tomlÊÇConfdµÄÖ÷ÅäÖÃÎļþ£¬Ê¹ÓÃTOML¸ñʽ±àд£¬ÒòΪÎÒÃÇetcdÊǼ¯Èº²¿Êð£¬Óжà¸ö½Úµã£¬¶øÎÒÓÖ²»Ïë°ÑConfdµÄÖ¸Áî¸ãµÄÓÖ³ôÓÖ³¤£¬ËùÒÔ½«interval¡¢nodesµÈÑ¡Ïîдµ½ÁËÕâ¸öÅäÖÃÎļþÀï¡£
cond.dĿ¼´æ·Åweb serverµÄÄ£°åÅäÖÃÔ´Îļþ£¬Ò²Ê¹ÓÃTOML¸ñʽ±àд¡£¸ÃÎļþÓÃÓÚÖ¸¶¨Ó¦ÓÃÄ£°åÅäÖÃÎļþ·¾¶£¨src£©¡¢Ó¦ÓÃÅäÖÃÎļþ·¾¶£¨dest£©¡¢Êý¾ÝÔ´µÄkeyÐÅÏ¢£¨keys£©µÈ¡£
TemplatesĿ¼´æ·Åweb serverÏÂÿ¸öÓ¦ÓõÄÄ£°åÅäÖÃÎļþ¡£ËüʹÓÃGoÖ§³ÖµÄtext/templateÓïÑÔ¸ñʽ½øÐбàд¡£ÔÚconfd´ÓetcdÖжÁÈ¡µ½×îÐÂÓ¦ÓÃ×¢²áÐÅÏ¢ºó£¬Í¨¹ýÏÂÃæµÄÓï¾äдÈëÄ£°åÅäÖÃÎļþÖУº
{{range getvs
"/${APP_NAME}/*"}}
server {{.}};
{{end}} |

·þÎñ·¢ÏÖ
ͨ¹ýSupervisor¹ÜÀíConfd½ø³Ì¡£ConfdÔÚÔËÐкó»áÿ¸ô5Ãë¶Ôetcd½øÐÐÂÖѯ£¬µ±Ä³¸öÓ¦Ó÷þÎñµÄK/V¸üкó£¬Confd»á¶ÁÈ¡¸ÃÓ¦Óô洢ÔÚetcdÖеÄÊý¾Ý£¬Ð´È뵽ģ°åÅäÖÃÎļþÖУ¬Éú³ÉÕâ¸öÓ¦ÓÃÅäÖÃÎļþ£¬×îºóÓÉConfd½«ÅäÖÃÎļþдÈ뵽Ŀ±ê·¾¶Ï£¬ÖØÐ¼ÓÔØNginx³ÌÐòʹÅäÖÃÉúЧ¡£ |