±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËDocker
mesosÔÚÉú²ú»·¾³µÄÓ¦ÓÃ,ʵÏÖµÄÖ÷Òª¹¦ÄÜÌØÐÔ¡¢Âß¼¼Ü¹¹¡¢²¿Êð¼Ü¹¹¡¢ÍøÂç¼Ü¹¹¼°·þÎñ×Ô×¢²áºÍ·¢Ïֵȣ¬Ï£Íû¶Ô´ó¼ÒÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚCSDN£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
ÎÒÃÇÊÇÒ»¼Ò×öÉúÏʵçÉ̵Ĺ«Ë¾£¬´Óϵͳ´î½¨³õÆÚ£¬ÎÒÃǾͲÉÓÃ΢·þÎñµÄ¼Ü¹¹£¬»ùÓÚDEVOPSÌåϵÀ´²»¶ÏÌá¸ßÎÒÃǵĽ»¸¶µÄÖÊÁ¿ºÍЧÂÊ£¬
Ëæ×ÅÒµÎñºÍÍŶӹæÄ£µÄ·¢Õ¹£¬·þÎñÖð½¥½øÐвð·Ö£¬·þÎñÖ®¼äµÄ½»»¥Ô½À´Ô½¸´ÔÓ£¬Ä¿Ç°Õû¸ö΢·þÎñÒѾ½ü¼¸Ê®¸öÓ¦ÓÃÄ£¿é£¬
ÕûÌå¼Ü¹¹ÉϰüÀ¨¸ºÔؾùºâ¡¢APIÍø¹Ø¡¢»ùÓÚdubboµÄ΢·þÎñÄ£¿é¡¢»º´æ¡¢¶ÓÁС¢Êý¾Ý¿âµÈ£¬Ä¿Ç°Õû¸ö¼¯ÈºµÄ×ÊÔ´ÀûÓÃÂÊҲûÓÐÒ»¸öºÏÀíµÄ¹æ»®ÆÀ¹À£¬ÐéÄâ»úÉϲ¿Êð¶à¸öÓ¦Ó÷þÎñ¸ôÀëÐÔÒ²´æÔÚÎÊÌ⣬¿¼Âǵ½Ô½À´Ô½¶àÃŵêÒÔ¼°µÚÈý·½Á÷Á¿µÄ½ÓÈ룬ÐèÒª¿¼ÂÇϵͳµÄ¿ìËÙµÄÉìËõÄÜÁ¦£¬¶ø»ùÓÚͳһ×ÊÔ´¹ÜÀíµÄDockerÈÝÆ÷¼¼ÊõÔÚÕâЩ·½ÃæÓÐһЩÌìÈ»µÄÓÅÊÆ£¬²¢ÇÒºÍ΢·þÎñ¼Ü¹¹¡¢devopsÌåϵÍêÃÀÏνӡ£
¾¹ýµ÷ÑкͶԱȣ¬×îÖÕÎÒÃDzÉÓÃmesos×÷Ϊµ×²ã×ÊÔ´µÄ¹ÜÀíºÍµ÷¶È£¬marathon×÷ΪdockerÖ´ÐеĿò¼Ü£¬ÅäºÏzookeeper¡¢consul¡¢nginx×÷Ϊ·þÎñ×¢²á·¢ÏÖ¡£Ä¿Ç°ÒѾÓв¿·ÖµÄºËÐÄÒµÎñÒѾƽÎȵÄÔËÐÐÔÚ»ùÓÚdockerÈÝÆ÷µÄmesos×ÊÔ´¹ÜÀíÆ½Ì¨ÉÏ¡£
ʵÏÖµÄÖ÷Òª¹¦ÄÜÌØÐÔ
ƽ»¬ÓëÐéÄâ»ú¼¯Èº¹²´æ£¬ÈÝÆ÷¶ÀÁ¢IP£¬¿çÖ÷»úºÍÒÅÁôϵͳ»¥Í¨
ʵÏÖÎÞ·ì·¢²¼(¹ö¶¯·¢²¼)£¬·¢²¼¹ý³Ì²»Ó°ÏìÔÚÏßÒµÎñ£¬Æ½»¬Éý¼¶
Ó¦Óý¡¿µ¼ì²é£¬¿ìËÙÀ©ÈÝ£¬Éý¼¶£¬»ØÍË
·þÎñ×Ô¶¯×¢²áºÍ·¢ÏÖ£¬¸ºÔؾùºâ
Âß¼¼Ü¹¹
²¿Êð¼Ü¹¹
ÔÚ·¢²¼Á÷³ÌÖУ¬ÔÚ·¢²¼ÉÏÏß֮ǰµÄ»·½ÚÊÇÔ¤·¢²¼£¬Ô¤·¢²¼»·¾³ÑéÖ¤Íê³Éºó½øÐдò°ü£¬Éú³Édocker ¾µÏñºÍ»ùÓÚÐéÄâ»ú²¿ÊðµÄÓ¦Óò¿Êð°ü£¬pushµ½¸÷×Ô¶ÔÓ¦µÄ²Ö¿âÖУ¬²¢´òTag¡£
Éú²ú»·¾³·¢²¼¹ý³ÌÖУ¬Í¬Ê±·¢²¼µ½Mesos ¼¯ÈººÍÔÓеÄÐéÄâ»ú¼¯ÈºÉÏ£¬Á½Ì×¼¯ÈºÍøÂçÊÇ´òͨµÄ¡£
ÍøÂç¼Ü¹¹
ÔÚÍøÂç¼Ü¹¹Ñ¡ÐÍʱ£¬»á¿¼ÂÇһϼ¸¸öÔÔò
1¡¢Ò»ÈÝÆ÷Ò»IP
2¡¢¶àÖ÷»úÈÝÆ÷»¥Áª£¬Ö÷»úºÍÈÝÆ÷»¥Áª
3¡¢ÍøÂç¸ôÀ롢ϸÁ£¶ÈµÄACL
4¡¢ÐÔÄÜËðºÄµÍ
docker bridgeʹÓÃĬÈϵÄdocker0ÍøÇÅ£¬ÈÝÆ÷ÓжÀÁ¢µÄÍøÂçÃüÃû¿Õ¼ä£¬¿çÖ÷»úµÄÈÝÆ÷ͨÐÅÐèÒª×ö¶Ë¿ÚNATÓ³É䣻HostµÄ·½Ê½²ÉÓúÍËÞÖ÷»úÒ»ÑùµÄÍøÂçÃüÃû¿Õ¼ä£¬ÍøÂçÎÞ·¨×ö¸ôÀ룬µÈµÈÕâЩ·½Ê½Óзdz£¶àµÄ¶Ë¿ÚÕùÓÃÏÞÖÆ£¬Ð§ÂÊÒ²½ÏµÍ¡£
Docker OverlayµÄ·½Ê½£¬¿ÉÒÔ½â¾ö¿çÖ÷»úµÄͨÐÅ£¬ÏÖÓжþ²ã»òÈý²ãÍøÂçÖ®ÉÏÔÙ¹¹½¨ÆðÀ´Ò»¸ö¶ÀÁ¢µÄÍøÂ磬Õâ¸öÍøÂçͨ³£»áÓÐ×Ô¼º¶ÀÁ¢µÄIPµØÖ·¿Õ¼ä¡¢½»»»»òÕß·ÓɵÄʵÏÖ¡£
DockerÔÚ1.9ÖÐlibnetworkÍŶÓÌṩÁËmulti-hostÍøÂ繦ÄÜ£¬ÄÜÍê³ÉoverlayÍøÂç
Ö÷ÒªÓÐËíµÀºÍ·ÓÉÁ½ÖÖ·½Ê½£¬
ËíµÀÔÀíÊǶԻù´¡µÄÍøÂçÐÒé½øÐзâ°ü£¬´ú±íÊÇFlannel¡£
ÁíÍâÒ»ÖÖÊÇÔÚËÞÖ÷»úÖÐʵÏÖ·ÓÉÅäÖÃʵÏÖ¿çËÞÖ÷»úµÄÈÝÆ÷Ö®¼äµÄͨÐÅ£¬±ÈÈçcalico
calicoÊÇ»ùÓÚ´óÈý²ãµÄBGPÐÒé·ÓÉ·½°¸£¬Ã»ÓÐʹÓ÷â°üµÄËíµÀ£¬Ã»ÓÐNAT£¬ÐÔÄܵÄËðºÄºÜС£¬Ö§³Ö°²È«¸ôÀë·À»¤£¬Ö§³ÖºÜϸÖµÄACL¿ØÖÆ£¬¶Ô»ìºÏÔÆÇ׺ͶȱȽϸߡ£¾¹ý×ۺ϶Աȿ¼ÂÇ£¬ÎÒÃDzÉÓÃcalicoÀ´ÊµÏÖ¿çËÞÖ÷»úµÄÍøÂçͨѶ¡£

°²×°ºÃETCD¼¯Èº£¬Í¨¹ý¸ºÔؾùºâVIP·½Ê½(LVS+keepalived)À´·ÃÎÊETCD¼¯Èº
ETCD_AUTHORITY=10.10.195.193:2379
export ETCD_AUTHORITY
¹¹½¨CalicoÍøÂ缯Ⱥ£¬Ôö¼Óµ±Ç°½Úµãµ½¼¯ÈºÖУ¬Calico ½ÚµãÆô¶¯ºó»á²éѯ Etcd£¬ºÍÆäËû Calico
½ÚµãʹÓà BGP ÐÒ齨Á¢Á¬½Ó
./calicoctl node ¨Clibnetwork ¨Cip=10.10.3.210 
Ôö¼Ó¿ÉÓõĵØÖ·³Øip pool
./calicoctl pool add 10.4.10.0/24 ¨Cnat-outgoing
./calicoctl pool show

´´½¨ÍøÂç
ͨ¹ýcalico IPAM²å¼þ(Driver£¨°üÀ¨IPAM£©¸ºÔðÒ»¸öNetworkµÄ¹ÜÀí£¬°üÀ¨×ÊÔ´·ÖÅäºÍ»ØÊÕ)£¬-dÖ¸¶¨Çý¶¯ÀàÐÍΪcalico£¬´´½¨Ò»¸öonline_netµÄdriverΪcalicoµÄÍøÂç
docker network create -d calico ¨Cipam-driver calico
¨Csubnet=10.4.10.0/24 online_net

Æô¶¯ÈÝÆ÷£¬ÍøÂçÖ¸¶¨¸Õ²Å´´½¨µÄonline_net£¬ÈÝÆ÷Æô¶¯Ê±£¬½Ù³ÖÏà¹Ø Docker API£¬½øÐÐÍøÂç³õʼ»¯¡£
²éѯ Etcd ×Ô¶¯·ÖÅäÒ»¸ö¿ÉÓà IP
´´½¨Ò»¶Ô veth ½Ó¿ÚÓÃÓÚÈÝÆ÷ºÍÖ÷»ú¼äͨѶ£¬ÉèÖúÃÈÝÆ÷ÄÚµÄ IP ºó£¬´ò¿ª IP ת·¢
ÔÚÖ÷»ú·ÓɱíÌí¼ÓÖ¸Ïò´Ë½Ó¿ÚµÄ·ÓÉ
ËÞÖ÷»ú10.10.3.210µÄ·ÓÉ±í£º 
ËÞÖ÷»ú10.10.50.145µÄ·ÓÉ±í£º 

ÈÝÆ÷°ü·¢ËͰüµÄ·Óɹý³ÌÈçÉÏͼ£¬
ËÞÖ÷»ú10.10.3.210ÉϵÄÈÝÆ÷IP 10.4.10.64ͨ¹ý·ÓÉ±í·¢ËÍÊý¾Ý°ü¸øÁíÍâÒ»¸öËÞÖ÷»ú10.10.50.145µÄÈÝÆ÷10.4.10.55
¶ÔÓÚÓÐ״̬µÄÊý¾Ý¿â£¬»º´æµÈ»¹ÊÇÓÃÎïÀí»ú(ÐéÄâ»ú)£¬À´µÄÓ¦Óü¯ÈºÓõÄÊÇÐéÄâ»ú£¬DockerÈÝÆ÷¼¯ÈºÐèÒªºÍËüÃÇ´òͨ£¬×ö·þÎñºÍÊý¾ÝµÄ·ÃÎʽ»»¥¡£ÄÇôֻÐèÒªÔÚÎïÀí»ú(ÐéÄâ»ú)Éϰѵ±Ç°½Úµã¼ÓÈëÈÝÆ÷ÍøÂ缯Ⱥ¼´¿É
ETCD_AUTHORITY=10.10.195.193:2379
export ETCD_AUTHORITY
./calicoctl node ¨Cip=10.10.16.201
·þÎñ×Ô×¢²áºÍ·¢ÏÖ 
APIÍø¹ØÌṩͳһµÄAPI·ÃÎÊÈë¿Ú£¬·ÖΪÁ½²ã£¬µÚÒ»²ãÌṩͳһµÄ·ÓÉ¡¢Á÷¿Ø¡¢°²È«¼øÈ¨¡¢WAF¡¢»Ò¶È¹¦ÄÜ·¢²¼µÈ¹¦ÄÜ£¬µÚ¶þ²ãÊÇwebÓ¦Óò㣬ͨ¹ýµ÷ÓÃdubbo·þÎñÀ´ÊµÏÖ·þÎñµÄ±àÅÅ£¬¶ÔÍâÌá¹©Íø¹ØµÄ±àÅÅ·þÎñ¹¦ÄÜ£¬ÆÁ±ÎÒµÎñ·þÎñ½Ó¿ÚµÄ±ä¸ü£»ÎªÁËÄܹ»¿ìËÙÎÞ·ìµÄʵÏÖweb²ã¿ìËÙ½ÓÈëºÍÀ©ÈÝ£¬ÎÒÃÇÓÃconsul×÷Ϊ·þÎñ×¢²áÖÐÐÄʵÏÖweb·þÎñµÄ×Ô¶¯×¢²áºÍ·¢ÏÖ¡£
¶ÔÓÚweb·þÎñ×¢²á£¬ÎÒÃÇ×Ô¼ºÊµÏÖÁËRegister£¬µ÷ÓÃconsulµÄapi½øÐÐ×¢²á£¬²¢Í¨¹ýttl»úÖÆ£¬¶¨ÆÚ½øÐÐÐÄÌø»ã±¨Ó¦ÓõĽ¡¿µ×´Ì¬¡£
¶ÔÓÚweb·þÎñµÄ·¢ÏÖ£¬ÎÒÃÇ»ùÓÚnetflix zuul½øÐÐÁËÀ©Õ¹ºÍ¸ÄÔ죬·ÓÉ·½ÃæÕûºÏconsulµÄ·¢ÏÖ»úÖÆ£¬²¢Ôö¼ÓÁË»ùÓÚÓòÃû½øÐзÓɵķ½Ê½£¬¶Ô·ÓɵÄÅäÖù¦ÄܽøÐÐÁËÔöÇ¿£¬ÊµÏÖÅäÖõĶ¯Ì¬reload¹¦ÄÜ¡£APIÍø¹ØÆô¶¯¶¨Ê±ÈÎÎñ£¬Í¨¹ýconsul
API»ñÈ¡web·þÎñʵÀýµÄ½¡¿µ×´Ì¬£¬¸üб¾µØµÄ·ÓÉ»º´æ£¬ÊµÏÖ¶¯Ì¬Â·Óɹ¦ÄÜ¡£
ƽ̨µÄ΢·þÎñ¿ò¼ÜÊÇ»ùÓÚdubbo RPCʵÏֵ쬶ødubboÒÀÀµzookeeper×ö·þÎñµÄ·¢ÏÖºÍ×¢²á¡£
ConsulÔÚmesos docker¼¯ÈºµÄ²¿Êð·½°¸£º 
²»½¨Òé°ÑConsul agent¶¼ºÍContainerÓ¦Óôò°ü³ÉÒ»¸ö¾µÏñ£¬Òò´Ëconsul agent²¿ÊðÔÚÿ¸ömesos
slaveËÞÖ÷»úÉÏ£¬ÄÇôcontainerÈçºÎ»ñÈ¡ËÞÖ÷»úµÄIPµØÖ·À´½øÐзþÎñµÄ×¢²áºÍ×¢Ïú£¬ÈÝÆ÷Æô¶¯¹ý³ÌÖУ¬Ä¬ÈÏÇé¿öÏ£¬»á°Ñµ±Ç°ËÞÖ÷»úIP×÷Ϊ»·¾³±äÁ¿´«µÝµ½containerÖУ¬ÕâÑùÈÝÆ÷Ó¦ÓõÄregisterÄ£¿é¾Í¿ÉÒÔ»ñÈ¡consul´úÀíµÄIp£¬µ÷ÓÃconsulµÄAPI½øÐзþÎñµÄ×¢²áºÍÐ¶ÔØ¡£
ÔÚÈÕ³£Ó¦Ó÷¢²¼ÖУ¬ÐèÒª±£ÕÏ·¢²¼¹ý³Ì¶ÔÔÚÏßÒµÎñûÓÐÓ°Ï죬×öµ½ÎÞ·ì¹ö¶¯µÄ·¢²¼£¬ÄÇôÔÚÍ£Ö¹Ó¦ÓÃʱӦ֪ͨµ½Â·ÓÉ£¬½øÐÐÁ÷Á¿Çл»¡£

docker stopÃüÁîÔÚÖ´ÐеÄʱºò£¬»áÏÈÏòÈÝÆ÷ÖÐPIDΪ1µÄ½ø³Ì·¢ËÍϵͳÐźÅSIGTERM£¬È»ºóµÈ´ýÈÝÆ÷ÖеÄÓ¦ÓóÌÐòÖÕÖ¹Ö´ÐУ¬Èç¹ûµÈ´ýʱ¼ä´ïµ½É趨µÄ³¬Ê±Ê±¼ä£¬»òÕßĬÈϵÄ10Ã룬»á¼ÌÐø·¢ËÍSIGKILLµÄϵͳÐźÅÇ¿ÐÐkillµô½ø³Ì¡£ÕâÑùÎÒÃÇ¿ÉÒÔÈóÌÐòÔÚ½ÓÊÕµ½SIGTERMÐźźó£¬ÓÐÒ»¶¨µÄʱ¼ä´¦Àí¡¢±£´æ³ÌÐòÖ´ÐÐÏÖ³¡£¬ÓÅÑŵÄÍ˳ö³ÌÐò£¬ÎÒÃÇÔÚÓ¦ÓÃµÄÆô¶¯½Å±¾ÖÐʵÏÖÒ»¶Î½Å±¾À´ÊµÏÖÐźŵĽÓÊܺʹ¦Àí£¬
½ÓÊÕµ½Ðźźó£¬ÕÒµ½Ó¦ÓõÄPID£¬×öÓ¦Óýø³ÌµÄƽ»¬kill¡£¼ûÉÏÃæÍ¼ÖеĽű¾¡£
Ó¦ÓõÄÎÞ·ì¹ö¶¯·¢²¼¡¢å´»ú»Ö¸´
MarathonΪÔËÐÐÖеÄÓ¦ÓÃÌṩÁËÁé»îµÄÖØÆô²ßÂÔ¡£µ±Ó¦ÓÃÖ»ÓÐÒ»¸öʵÀýÔÚÔËÐУ¬ÕâʱºòÖØÆôµÄ»°£¬Ä¬ÈÏÇé¿öÏÂMarathon»áÐÂÆðÒ»¸öʵÀý£¬ÔÚÐÂʵÀýÖØÆôÍê³ÉÖ®ºó£¬²Å»áÍ£µôÔÓÐʵÀý£¬´Ó¶øÊµÏÖÆ½»¬µÄÖØÆô£¬Âú×ãÓ¦ÓÃÎÞ·ì¹ö¶¯·¢²¼µÄÒªÇó¡£
µ±È»£¬¿ÉÒÔͨ¹ýMarathonÌṩµÄ²ÎÊýÀ´ÉèÖÃ×Ô¼ºÏëÒªµÄÖØÆô²ßÂÔ£º
¡°upgradeStrategy¡±:{ ¡°minimumHealthCapacity¡±: N1, ¡°maximumOverCapacity¡±:
N2 }
ÈçºÎÅжÏеÄʵÀýÊÇ·ñÆô¶¯Íê³É¿ÉÒÔÌṩ·þÎñ£¬»òÕßµ±Ç°ÈÝÆ÷µÄÓ¦ÓÃʵÀýÊÇ·ñ½¡¿µ£¬ÊÇ·ñʵÀýÒѾ²»¿ÉÓÃÁËÐèÒª»Ö¸´£¬marathonÌṩÁËhealthchecks½¡¿µ¼à²âÄ£¿é
"healthChecks":
[{ "protocol": "COMMAND",
"command":{ "value":"sh
/data/soft/healthcheck.sh app 10.10.195.193"
}, "gracePeriodSeconds": 90,
"intervalSeconds": 60, "timeoutSeconds":
50, "maxConsecutiveFailures": 3
}] |

healthcheck.shͨ¹ý¸ºÔؾùºâµ÷ÓÃHealthMonitorÀ´»ñȡӦÓÃʵÀýµÄ¼à¿Ø×´Ì¬£¬
HealthMonitorÊÇÎÒÃǵĽ¡¿µ¼ì²éÖÐÐÄ£¬¿ÉÒÔ»ñȡӦÓÃʵÀýµÄÕû¸öÍØÆËÐÅÏ¢¡£
ÈÝÆ÷¼à¿Ø¡¢ÈÕÖ¾
ÏÂͼÊÇÎÒÃǵÄÕûÌåÆ½Ì¨¼à¿ØµÄÌåϵ¼Ü¹¹ 
¼à¿ØÆ½Ì¨º¸ÇÁËϵͳ¸÷¸ö²ãÃæµÄÖ¸±êÌåϵ£¬Õâ¿éºóÐøµ¥¶ÀÁÐÕ½ÚÏêϸ½éÉÜ¡£
¶ÔÓÚÈÝÆ÷µÄ¼à¿Ø£¬ÓÉÓÚÎÒÃÇÊDzÉÓÃmesos dockerµÄÈÝÆ÷×ÊÔ´¹ÜÀíµÄ¼Ü¹¹£¬Òò´Ë²ÉÓÃmesos-exporter+Prometheus+grafanaµÄ¼à¿Ø·½°¸£¬mesos-exporterµÄÌØµãÊÇ¿ÉÒԲɼ¯
task µÄ¼à¿ØÊý¾Ý£¬¿ÉÒÔ´ÓtaskµÄ½Ç¶ÈÀ´Á˽â×ÊÔ´µÄʹÓÃÇé¿ö£¬¶ø²»ÊÇÒ»¸öÒ»¸öûÓйØÁª¹ØÏµµÄÈÝÆ÷¡£mesos-exporterµ¼³ömesos¼¯ÈºµÄ¼à¿ØÊý¾Ýµ½prometheus£¬prometheusÊÇÒ»Ì×¼à¿Ø±¨¾¯¡¢Ê±ÐòÊý¾Ý¿â×éºÏ£¬ÌṩÁ˷dz£Ç¿´ó´æ´¢ºÍ¶àά¶ÈµÄ²éѯ£¬Êý¾ÝµÄÕ¹ÏÖͳһ²ÉÓÃgrafana¡£ |