±³¾°
ÒµÎñÏß¿ª·¢»·¾³µÄÀ§ÈÅ
Äê³õµÄʱºò»úƱµÄͬÊÂÏòÎÒÃÇ·´À¡£¬Ï£Íû¿ÉÒÔÌṩDocker»·¾³°ïÖúËûÃÇ¿ìËÙ¹¹½¨¿ª·¢»·¾³£¬¼ÓËÙ¹¦Äܵĵü´ú¡£ÕýºÃÎÒÃÇOpsDevÍŶÓÒ²ÔÚΪÈÝÆ÷ѰÕÒÊԵ㣬˫·½Ò»Åļ´ºÏ£¬Á¢¼´¿ªÊ¼ÁËǰÆÚµÄµ÷Ñй¤×÷¡£
Ëæ×Ž»Á÷µÄÉîÈ룬ÎÒÃÇ·¢ÏÖ¶ÔÓÚÒ»¸ö°üº¬Á˼¸Ê®¸öÄ£¿é£¬¿ìËÙµü´úµÄϵͳ£¬¿ª·¢ÍŶÓÏëÒª½¨Á¢Ò»¸öÏà¶ÔÎȶ¨µÄ£¬Äܸ²¸ÇÖܱßÄ£¿éµÄ¿ª·¢ºÍ×Բ⻷¾³ÊǷdz£À§Äѵ쬳ýÁËÒªÉêÇëÐéÄâ»úÍ⣬»¹ÒªÐÂÔöprofile£¬´´½¨jenkins
job£¬·¢²¼£¬·þÎñÒÀÀµµÈһϵÁеÄÁ÷³Ì¡£
¼´Ê¹½â¾öÁËÒÔÉÏÎÊÌ⣬ÔËάÕâÌ×»·¾³ÓÖÊǸö´óÂé·³£ºÏîĿ֮¼äµÄÒÀÀµ¹ØÏµÐ´ÔÚÅäÖÃÎļþÖУ¬Çл»»·¾³Ê±ÐèÒªÊÖ¹¤Ð޸ģ»¶àÌײ»Í¬°æ±¾µÄ»·¾³Î¬»¤ÆðÀ´·Ñʱ·ÑÁ¦£»¶ÔÓÚÉæ¼°Ãæ½Ï¹ãµÄÁªµ÷£¬ÐèÒªÆäËû×éµÄͬÊÂÅäºÏÍê³É£¬¸ü²»ÓÃ˵ÕâЩģ¿é¼äµÄ°æ±¾ÈçºÎÓÐЧµÄ±£Ö¤Ò»ÖÂÁË¡£¡£
ÕûÀíÎÊÌâ
¾¹ý¶à´ÎµÄÌÖÂۺ͵÷ÑУ¬×îÖÕË«·½ÍŶÓÈ·Èϳö¼¸¸öÒµÎñÏß×î¹ØÐĵŦÄÜ£¬ÓÅÏȽâ¾ö£º
1.°æ±¾Ò»Ö£¬¼´´úÂë°æ±¾£¬ÅäÖð汾ºÍÊý¾Ý¿âschemaÒ»Ö£¬¼õÉÙÁªµ÷ʱ²»±ØÒªµÄÊÊÅäºÍµ÷Õû¡£
2.¿ìËÙÇл»¶àÌ×»·¾³¡£
3.·þÎñÒÀÀµ£¬¿ª·¢ÐÂÈËÒ²¿ÉÒÔÇáËɲ¿ÊðÕûÌ׸´ÔӵĻ·¾³¡£
4.ά»¤¼òµ¥£¬ÀýÈçÐÂÔöÏîĿʱ£¬×Ô¶¯¼ÓÈëµ½ÕûÌ×»·¾³ÖС£
5.µÍѧϰ³É±¾£¬½ÚԼʱ¼äÈ¥¿ª·¢ÒµÎñ¡£
6.»·¾³¸ôÀ룬×îºÃÿ¸öÈËÒ»Ì×ÍêÕû»·¾³£¬²»»¥ÏàÓ°Ïì¡£
ÔÝʱÐÔ½â¾ö0ºÍ1µÄÎÊÌâ
ÒµÎñÏßµÄͬÊÂÓÃdocker-composeÁÙʱ´î½¨ÁËÒ»Ì׿ª·¢»·¾³£¬µ«ÊÇÐèÒªÊÖ¹¤Î¬»¤°æ±¾ÒÔ¼°nginxµÄת·¢£¬Í¬Ê±Ò²±©Â¶³öÁ˸ü¶àµÄÎÊÌ⣺
1.ÄÜÖ§³ÅÈç´Ë¶àÄ£¿éµÄcompose£¬Ö»ÄÜÊÇʵÌå»ú£¬×ÊÔ´ÏÞÖÆ½Ï´ó¡£
2.À©ÈÝÄ£¿éʱµÄ¶Ë¿Ú³åÍ»ÎÊÌâ¡£
3.Êý¾Ý¿â³ÖÐø¼¯³É
4.ÈÝÆ÷¹Ì¶¨IP
ÐèÒªÕÒµ½Ò»¸öÖαêÓÖÖα¾µÄ·½°¸½â¾öÒµÎñÏßµÄÎÊÌâ¡£
ѰÇó½â¾öÖ®µÀ
²Î¿¼ÁËÏÖÓеÄÈÝÆ÷¼¯Èº·½°¸ºó£¬×îÖÕ½¹µã¼¯ÖÐÔÚÁËApache Mesos£¨ºó¼ò³ÆMesos£©ºÍGoogle
KubernetesÉÏ¡£KubernetesµÄpodºÍservice¸ÅÄî¸üÌù½üÒµÎñÏßµÄËßÇó£¬Í¬Ê±£¬MesosÔÚ×ÊÔ´¹ÜÀíºÍµ÷¶ÈÁé»îÐÔÉÏÏÔÈ»¾µÃÆðÉú²úµÄ¿¼Ñé¡£×îÖÕÍŶӾö¶¨Á½Õß²¢ÐвâÊÔ£¬ÔÚ¸÷×ÔµÄÓÅÊÆ·½ÏòѰÕÒÊÔµãÏîÄ¿×öÑéÖ¤¡£
ÏîÄ¿ÊÔµã
×Ðϸ¿¼Á¿ºó£¬ÎÒÃÇÑ¡ÔñÁË»ùÓÚELK¹¹½¨µÄÈÕ־ƽ̨×÷ΪÑéÖ¤Mesos + DockerµÄÇÐÈëµã£¬»ýÀÛÏà¹ØµÄ¿ª·¢ºÍÔËά¾Ñé¡£

ͼһ µäÐ͵ÄMesos + Docker½á¹¹£¨source from google)
Ê×ÏÈÈÝÆ÷»¯µÄÊÇLogstashºÍKibana£¬Kibana±¾Éí×÷ΪElasticSearchµÄÊý¾Ý¾ÛºÏչʾ²ã£¬×ÔÉí¾ÍÊÇÎÞ״̬»¯µÄ£¬Logstash¶ÔSIGTERMÓÐרÃŵĴ¦Àí£¬docker
stopµÄʱºò¿ÉÒÔ´ÓÈÝ´¦ÀíÍê¶ÓÁÐÖеÄÏûÏ¢ÔÙÍ˳ö¡£¶øElasticSearch²¿ÊðÔÚMesos¼¯ÈºÍ⣬Ö÷Òª¿¼Âǵ½Êý¾Ý³Ö¾Ã»¯µÄÎÊÌâÒÔ¼°×ÊÔ´ÏûºÄ¡£²ÉÓÃMarathonºÍChronosµ÷¶ÈLogstashºÍKibana£¬ÒÔ¼°Ïà¹ØµÄ¼à¿Ø¡¢Í³¼ÆºÍÈÕÖ¾ÈÝÆ÷¡£

ͼ¶þ ÈÕ־ƽ̨µÄ½á¹¹
Êý¾ÝÀ´×Ô¶àÖÖ·½Ê½£¬Õë¶Ô²»Í¬µÄÈÕÖ¾ÀàÐÍ£¬²ÉÈ¡²»Í¬µÄ·¢ËͲßÂÔ¡£ÏµÍ³ÈÕÖ¾£¬±ÈÈçmail.log¡¢sudo.log¡¢dmesgµÈͨ¹ýrsyslog·¢ËÍ¡£ÒµÎñÈÕÖ¾²ÉÓÃflume£¬ÈÝÆ÷ÈÕÖ¾ÔòʹÓÃhekaºÍfluentd¡£»ã×ܵ½¸÷¸ö»ú·¿µÄKafka¼¯Èººó£¬´ÖÂԵĽâÎöºó»ã×ܵ½ÖÐÑëKafka£¬ÔÙͨ¹ýLogstash¼¯Èº½âÎöºó´æÈëElasticSearch¡£Í¬Ê±£¬¼à¿ØÊý¾Ýͨ¹ýstatsd·¢Ë͵½ÄÚ²¿µÄ¼à¿ØÆ½Ì¨£¬±ãÓÚºóÐøµÄ֪ͨºÍ±¨¾¯¡£
Ëæ×ÅÒµÎñÏßÈÕÖ¾µÄÖð²½½ÓÈ룬Õâ¸öƽ̨ÒѾÔö³¤³ÉΪµ¥ÈÕ´¦Àí60ÒÚÌõÈÕÖ¾/6TBÊý¾ÝµÄÅÓ´óƽ̨¡£
ÎÊÌâºÍ¾Ñé×ܽá
1. Daemon OOM
×î³õÎÒÃÇʹÓõÄDocker°æ±¾ÊÇ1.6£¬docker attach½Ó¿Ú´æÔÚÄÚ´æÐ¹Â¶£¬ÈÝÆ÷µÄstdoutÊä³ö½Ï¶àÈÕ־ʱ£¬±È½ÏÈÝÒ×Ôì³ÉdaemonµÄOOM¡£
{code} fatal error: runtime: out of memory
runtime stack:
runtime.SysMap(0xc2c9760000, 0x7f310000, 0x7f453c96b000,
0x13624f8)
/usr/local/go/src/runtime/mem_linux.c:149 +0x98
runtime.MHeap_SysAlloc(0x1367be0, 0x7f310000,
0x43b8f2)
/usr/local/go/src/runtime/malloc.c:284 +0x124
runtime.MHeap_Alloc(0x1367be0, 0x3f986, 0x10100000000,
0x0)
/usr/local/go/src/runtime/mheap.c:240 +0x66
......
{code} |
Õâ¸öÎÊÌâÊDZȽÏÑÏÖØµÄ£¬daemon¹ÒµôºóÈÝÆ÷¸ú×Ŷ¼å´»úÁË£¬Ëä˵ÉϲãµÄMarathon»áÖØÐ²¿ÊðÓ¦Ó㬵«ÊÇÆµÂʽϸߵϰÈÝÒ×Ôì³É¼¯Èº²»Îȶ¨¡£
Ê×ÏÈÏëµ½µÄ°ì·¨¾ÍÊÇÓÃrunsvÆô¶¯daemon£¬±£Ö¤½ø³Ìå´µôºó¿ÉÒÔÖØÐ±»ÀÆð¡£Æä´Î£¬²Î¿¼ÁËKubernetesµÄ×ö·¨£¬ÔÚdaemonÆô¶¯ºóÐÞ¸Äoom_adjµÄֵΪ-15£¬·ÀÖ¹daemon±»×îÏÈkillµô¡£
×îÖαêµÄ°ì·¨»¹ÊÇÉý¼¶DockerµÄ°æ±¾£¬»òÕß×Ô¼ºpatchÕâ¸öbug
£¨https://github.com/docker/docker/issues/9139£©¡£
2. HekaµÄDockerEventInput²»ÊÍ·Åsocket
DockerEventInputʹÓõÄgo-dockerclientÓÐbug£¬hekaÒì³£ÍÆ³öºó²»»á¹Ø±Õsocket£¬ÈÝÒ×µ¼ÖÂÎļþ¾ä±úй¶£¬×îÖÕµ¼ÖÂdaemon²»ÔÙ½ÓÊÜÈκÎÃüÁÕâ¸öBUGÔÚv0.10.0b1ÈÔÈ»»¹´æÔÚ¡£
{code} time="2015-09-30T15:25:00.254779538+08:00" level=error msg="attach: stdout: write unix @: broken pipe" time="2015-09-30T15:25:00.254883039+08:00" level=error msg="attach: stdout: write unix @: broken pipe" time="2015-09-30T15:25:00.256959458+08:00" level=error msg="attach: stdout: write unix @: broken pipe" {code} |
Ïà¹ØÎÊÌ⣺https://github.com/fsouza/go-dockerclient/issues/202¡£
3. ¶ÔмÓÈ뼯ȺµÄslave¡°Ô¤ÈÈ¡±
ͬÔÚ¾ÖÓòÍøÄÚ£¬µÚÒ»´ÎÏÂÔØ¾µÏñÒ²ÊDZȽÏÂýµÄ£¬ÍƼöÔÚslave²¿ÊðÍê±Ïºó£¬Ö÷¶¯pullÒ»Åú³£ÓõľµÏñ£¬¼õÉÙµÚÒ»´ÎÆô¶¯µÄʱ¼ä¡£Õâ¸ö¹¤×÷ÎÒÃÇ·ÅÔÚsalt¡¢ansible½Å±¾Àï×Ô¶¯²¿Êð¡£ÁíÍ⣬¶ÔÓÚ»ù´¡¼à¿ØÀàµÄÈÝÆ÷£¬MarathonĿǰ»¹Î´Ö§³Ö×Ô¶¯scale£¬ÐèÒª×Ô¼ºÊµÏÖ¡£
Ïà¹ØÌÖÂÛ£ºhttps://github.com/mesosphere/marathon/issues/846
4. DistributionÒýÆðµÄdaemonå´»ú
Éý¼¶1.7.1ºó·¢ÏÖµÄÎÊÌ⣬ÆðÒòÊÇÒ»¸öÊÖÎóµ¼ÖÂMarathonµÄÅäÖÃûÓдøÉÏ×Ô¼ºµÄregistry£¬daemonÈ¥pullÁ˹ٷ½µÄ¾µÏñ¡£Õâ¸ö¿ÓÐҺ÷¢ÉúÔÚÎÒÃǵÄregistry×¼±¸Ç¨ÒÆV2µÄ֮ǰ£¬Ïà¹ØµÄ´úÂ뻹ûÓÐpatchµ½ÎÒÃÇ×Ô¼ºµÄdockerÉÏ£¬ÔÝʱ»¹ÊÇʹÓÃV1¡£
Ïà¹ØÎÊÌ⣺https://github.com/docker/docker/issues/15724
5. MesosµÄ×ÊÔ´ÇÀÕ¼
×ÊÔ´ÇÀÕ¼ÊÇÔÚMesos 0.23.0°æ±¾ÒýÈëµÄ£¬¹Ù·½»¹²»½¨ÒéÔÚÉú²ú»·¾³Ê¹Óã¬ÈçºÎÓÐЧµÄÇÀÕ¼×ÊÔ´Ò»Ö±ÊÇÎÒÃÇÔÚʹÓùý³ÌÖбȽϹØ×¢µÄ¡£
MesosµÄ×ÊÔ´ÊÇÖ±½ÓÓ³Éäµ½roleÉϵģ¬ÎÒÃÇÒÔ´ËΪÇÐÈëµã£¬Ìáǰ»®·Ö¶à¸örole£¬Ã¿¸örole·ÖÅ侲̬×ÊÔ´¡£±ÈÈ磬opsµÄroleÔËÐлù´¡·þÎñ£¬Ã¿¸öslaveÉÏ×î¶àÕ¼ÓÃ4¸öCPU£¬logstashÔòÔÚÿ̨»úÆ÷ÉÏ¿ÉÒÔÕ¼ÓÃ32¸öCPU£¬ÒÔÕâÖÖ·½Ê½±äÏ೬ÊÛCPU×ÊÔ´¡£
MESOS_resources="cpus(logstash):32;" MESOS_resources="${MESOS_resources}cpus(common):4;" MESOS_resources="${MESOS_resources}cpus(kibana):4;" MESOS_resources="${MESOS_resources}cpus(ops):4;" MESOS_resources="${MESOS_resources}cpus(spark):16;" MESOS_resources="${MESOS_resources}cpus(storm):16;" MESOS_resources="${MESOS_resources}cpus(rebuild):32;" MESOS_resources="${MESOS_resources}cpus(mysos):16;" MESOS_resources="${MESOS_resources}cpus(others):16;" MESOS_resources="${MESOS_resources}cpus(universe):1;" MESOS_resources="${MESOS_resources}cpus(test):8;" MESOS_resources="${MESOS_resources}mem(*):126976;ports(*):[8000-32000]" |
ÔÚʹÓÃʱ£¬²»ÔÙ¸ù¾ÝÈÝÆ÷µÄ×ÊԴʹÓÃÇé¿ö¶¯Ì¬µ÷ÕûʵÀýÊýÁ¿£¬¶øÊǽ»Ìæ·¢²¼ÈÎÎñÇÀÕ¼CPU¡£±ÈÈçÁ賿2µãÖÁ6µãÊÇÒµÎñµÍ·å£¬ÈÕÖ¾Á¿ÉÙ£¬Ðí¶àlogstashÈÝÆ÷²¢Î´Âú¸ººÉ¹¤×÷£¬ÕýÊʺϷ¢²¼SparkµÄjob¡£ÕâÖÖµ÷¶È·½Ê½ÊµÏÖ¼òµ¥£¬»ùÓÚʱ¼äµ÷¶È£¬¸üÈÝÒ×¼à¿Ø¡£
ȱµãÒ²ÊÇÏÔ¶øÒ×¼ûµÄ£¬ÐèÒªÌáǰ¹æ»®role£¬¾¡Á¿¶ÔÿÖÖ×ÊÔ´ÏûºÄ´ó»§¶¼·ÖÅäµ½Ò»¸ö¶ÔÓ¦µÄrole£¬À©Õ¹ÐԽϲÊʺÏÉϲãÓ¦ÓýÏÎȶ¨µÄϵͳ¡£µÈMESOS-3791ºÏ²¢ºó£¬¾Í¿ÉÒÔ¶¯Ì¬µÄ¹ÜÀírole£¬ÄÇôMesosµÄ×ÊÔ´µÄ¹ÜÀí¾Í»á¸ü¼ÓÁé»îÁË¡£
6. °æ±¾Éý¼¶
Ö÷ÒªÊÇMesos¡¢DockerµÄ°æ±¾Éý¼¶£¬ÓÉÓÚÖÚËùÖÜÖªµÄÔÒò£¬DockerµÄÉý¼¶ÊDZȽÏÍ´¿àµÄ£¬ÐèҪֹͣËùÓеÄÈÝÆ÷ºóÔÙÉý¼¶daemon¡£ÎÒÃǵÄÏßÉÏ»·¾³¾ÀúÁËMesos
0.22.0µ½0.25.0£¬Docker 1.4.1µ½1.7.1µÄÑݽø£¬×ܽá³öÁËÒ»ÌױȽÏÓÐЧµÄÉý¼¶²ßÂÔ£¬Éϲã·þÎñÎÞ¸ÐÖª¡£Ê×ÏÈMesosÒª¿ªÆô°×Ãûµ¥£¨--whitelist£©¹¦ÄÜ£º
1) ÏȽ«ÒªÉý¼¶µÄ»úÆ÷Ìß³ö°×Ãûµ¥£¬ÕâÒ»²½±£Ö¤ÁËÉϲãµÄFrameworkÔÚÊÕµ½statusUpdate²»»áµ÷¶Èµ½Õą̂»úÆ÷ÉÏ£»
2) È»ºóÖð¸östopÈÝÆ÷£¬ÈÝÆ÷ÄÚµÄÓ¦Óý¨Òé´¦ÀíSIGTERMÐźÅ×öÇåÀí¹¤×÷£»
3) ½Ó×ÅÍ£Ö¹docker daemonºÍmesos slave£»
4) Éý¼¶dockerºÍmesos°æ±¾£»
5) ÖØÆôdockerºÍmesos²¢½«»úÆ÷ÖØÐ¼ÓÈëµ½°×Ãûµ¥¡£
¿ª·¢»·¾³¿ìËÙrebuild
ÓÐÁËÈÕ־ƽ̨µÄ¾Ñ飬ÎÒÃǵŤ×÷ÖÐÐÄ¿ªÊ¼Ïòʵ¼ÊÐèÇóÇãб£¬¾¡¿ìÂú×ãÒµÎñÏߵĻ·¾³ÒªÇó¡£¹²¾ÀúÁËÈý´Î±È½Ï´óµÄ±ä¸ü£¬Ö÷Òª´Ó¼æÈÝÐÔ£¬¹«Ë¾Äڵķ¢²¼Á÷³ÌºÍ¿ª·¢ÈËÔ±Ò×ÓÃÐԵĽǶȿ¼Á¿£¬Öð²½Ñݽø£º
1) OpenStack + nova-docker + VLAN
2) Mesos + Marathon + Docker(--net=host)
+ Ëæ»ú¶Ë¿Ú
3) Mesos + Marathon + Docker + Calico
µÚÒ»½×¶Î£ºÈÝÆ÷µ±×÷ÐéÄâ»úÓÃ
ÈÝÆ÷µÄʹÓúÍÐÐΪ¾¡Á¿Ä£ÄâÐéÄâ»úÊÇÎÒÃǵÚÒ»½×¶Î¿¼ÂǵÄÖØµã£¬Í¬Ê±»¹Òª¿¼Âǵ½·¢²¼ÏµÍ³¸ÄÔìµÄ³É±¾£¬OpenStackÌṩµÄnova-docker×ÔÈ»³ÉÁËÊ×Ñ¡¡£ÔÙ´Ë»ù´¡ÉÏ£¬ÎªÈÝÆ÷ÌṩÍⲿ¿É·ÃÎʵĶÀÁ¢IP£¨VLAN£©¡£nova-dockerºÍnova-networkÒѾÌṩÁ˴󲿷ֹ¦ÄÜ£¬ÕûºÏµÄËÙ¶ÈÒ²±È½Ï¿ì¡£
ÈÝÆ÷Æô¶¯ºó»áÓжà¸ö½ø³Ì£¬±ÈÈçsalt-minionºÍsshd£¬ÕâÑùʹÓÃÕß¿ÉÒÔsshµ½ÈÝÆ÷ÄÚdebug£¬¶ø²¿ÊðµÄ¹¤×÷Ôò½»¸øsaltͳһ¹ÜÀí¡£
µÚ¶þ½×¶Î£ºÒÔ·þÎñΪºËÐÄ
Öð½¥Ç¿»¯ÒÔ·þÎñΪºËÐĵÄÓ¦Ó÷¢²¼ºÍ¹ÜÀíÁ÷³Ì£¬ÏòͳһµÄ·þÎñÊ÷¿¿Â£¡£ÔÚµÚÒ»½×¶ÎµÄ³É¹ûµÄ»ù´¡ÉÏ£¬ÍêÉÆ·þÎñÊ÷µÄ½á¹¹ºÍ¹æÔò£¬ÎªºóÃæ´òͨ¼à¿ØÊ÷£¬Ó¦ÓÃÊ÷µÈÄ£¿é×öºÃ³ä·ÖµÄ×¼±¸¡£
ͬʱ£¬ÈÝÆ÷¿ªÊ¼´ÓOpenStack + nova-dockerµÄ½á¹¹ÏòMesos
+ Marathon + DockerÇ¨ÒÆ£¬ÕûÌ×»·¾³µÄ·¢²¼Ñ¹Ëõµ½ÁË7¡«9·ÖÖÓ£¬ÆäÖл¹°üº¬ÁËhealthcheckµÄʱ¼ä£¬»¹ÓÐÉîÈëÓÅ»¯µÄ¿Õ¼ä¡£
1.ÒÀÀµ·ÅÔÚQAECIÖÐά»¤£¬·¢²¼Ê±¸ù¾ÝÍØÆËÅÅÐòºóµÄ½á¹ûÑ¡Ôñ×Ô¶¯Çл»²¢ÐУ¬´®Ðз¢²¼¡£
2.´úÂëºÍÅäÖÃÔÚÈÝÆ÷Æô¶¯ºóÔÙÀÈ¡£¬¼õÉÙά»¤¾µÏñµÄ³É±¾£¬·½±ãÉý¼¶ÔËÐл·¾³£¬±ÈÈçÉý¼¶JDK»òTomcat¡£
3.·þÎñ¶Ë¿ÚÈ«²¿Ëæ»úÉú³É£¬²¢Í¨¹ý»·¾³±äÁ¿×¢Èëµ½ÒÀÀµµÄÈÝÆ÷Öв¢Ìæ»»ÅäÖã¬ÕâÑù¾Í½â¾öÁË--net=hostģʽ϶˿ڷÖÅäµÄÎÊÌâ¡£dubbo·þÎñ×¢²áµÄÊÇËÞÖ÷»úµÄIPºÍPORT£¬Èç¹ûÊÇbridgeģʽµÄ»°£¬¼ÇµÃҪע²áËÞÖ÷»úµÄIPºÍÓ³ÉäµÄPORT¡£
4.Êʵ±»º´æ±àÒëºóµÄ´úÂ룬¼õÉÙÖØ¸´¹¹½¨µÄʱ¼äÀË·Ñ¡£
5.Openresty + lua½Å±¾¶¯Ì¬proxy_pass µ½¼¯ÈºÄÚµÄTomcat£¬Íⲿ¼´¿Éͨ¹ý·ºÓòÃûµÄ·½Ê½·ÃÎÊMarathon·¢²¼µÄÓ¦Óã¬ÀýÈçapp1.marathon.corp.qunar.com¼´¿É·ÃÎʵ½app1¶ÔÓ¦µÄWEB·þÎñ¡£
6.ÐÞ¸ÄlogbackºÍtomcatµÄÅäÖã¬ËùÓÐÈÕÖ¾¶¼Êä³öµ½stdoutºÍstderr£¬²¢¸½´øÎļþÃûǰ׺×öÇø·Ö¡£²¢Í¨¹ýheka£¬ÅäºÏfields_from_envÇø·ÖÊÇÄÄÒ»¸öMesos
taskµÄÈÕÖ¾£¬Í³Ò»·¢ÏòÈÕ־ƽ̨»ã×ÜºÍ¼à¿Ø¡£
µÚÈý½×¶Î
ΪÈÝÆ÷·ÖÅä¹Ì¶¨IP£¬´òͨ¼¯ÈºÄÚÍâµÄ·þÎñͨÐÅ£¬Èÿª·¢ÈËÔ±ÎÞÕϰµÄ·ÃÎÊÈÝÆ÷¡£Îª´ËÎÒÃÇÒýÈëÁËCalico×÷Ϊ½â¾ö·½°¸¡£CalicoÕûºÏMesos±È½Ï¼òµ¥£¬Í¨¹ýMesos
slaveÆô¶¯Ê±Ö¸¶¨--modulesºÍ-isolation¼´¿ÉʹÓãº
{code} ./bin/mesos-slave.sh --master=master_ip:port --namespaces='network' \ --modules=file://path/to/slave_gssapi.json \
--isolation="com_mesosphere_mesos_MetaswitchNetworkIsolator" \ --executor_environment_variables={¡°DOCKER_HOST¡±: ¡°localhost:2377¡±}
{ "libraries": [ { "file":
"/path/to/libmetaswitch_network_isolator.so
"modules": [
{ "name": "com_mesosphere_mesos_MetaswitchNetworkIsolator",
"parameters": [
{ "key": "initialization_command",
"value": "python /path/to/initialization_script.py
arg1 arg2" },
{ "key": "cleanup_command",
"value": "python /path/to/cleanup_script.py
arg1 arg2" } ] } ] } ] }
{code} |
ÕâÑùMesosÔÚÖ´ÐÐDockerÃüÁîµÄʱºò£¬ËùÓеÄÇëÇó¶¼±»calicoÈÝÆ÷½Ù³Ö²¢×ª·¢¸ødocker daemon£¬Í¬Ê±¸øÈÝÆ÷·ÖÅäIP£¬ÉϲãµÄMarathonÖ»ÐèÒª¶îÍâÌí¼ÓÁ½¸öenvÅäÖãº
CALICO_IP=auto|ip
CALICO_PROFILE=test
½áºÏÎÒÃÇ×ÔÉíµÄÍøÂç½á¹¹£¬ÎÒÃÇÔÚ½»»»»úÉÏÔ¤ÁôÁËÒ»¸öIP¶Î£¬È«²¿Ö¸ÏòÁËcalicoµÄÁ½Ì¨gateway£¬×ª·¢µ½Mesos¼¯ÈºÄÚ²¿£º

ͬʱÕûºÏ¹«Ë¾ÄÚµÄDNSDB·þÎñ£¬½«ÈÝÆ÷µÄÃû³ÆºÍIP×Ô¶¯×¢²áµ½DNSDBÄÚ£¬ÕâÑùÈ«¹«Ë¾µÄÈ˶¼¿ÉÒÔ·ÃÎʵ½Õâ¸öÈÝÆ÷£¬´òͨ¼¯ÈºÄÚÍâµÄͨÐÅ¡£¶ÔÓÚһЩÓÐÌØÊâÒªÇóµÄÇé¿ö£¬È翪·¢»úµÄÃû³Æ±ØÐë·ûºÏÒ»¶¨ÃüÃû¹æÔò£¬Í¨¹ý´«Èë--hostname¾Í¿ÉÒÔÄ£Äâһ̨¿ª·¢»ú¡£
×ܽá
¾¹ý½ü1ÄêÀ´µÄʹÓúÍÔËά£¬ÔÚDockerºÍMesosÉϲÈÁ˲»ÉٵĿӣ¬¶à¿÷ÁËÉçÇøµÄ¹±Ï×ÕßÃÇ£¬»ýÀÛÁËÐí¶à¾Ñé¡£Mesos±íÏÖ³öµÄÎȶ¨ÐÔ¡¢¿ÉÓÃÐÔºÍÀ©Õ¹ÐÔ×ã¹»µ£µ±Éú²ú»·¾³µÄ×ÊÔ´¹ÜÀíÕߣ¬ÃÀÖв»×ãµÄÊǵ÷¶È²ßÂÔÂÔÏÔµ¥Ò»£¬ÒÀÀµÉϲãFrameworkµÄ¶þ´Îµ÷¶È¡£
ºóÐøÎÒÃǽ«¿¼ÂÇÔÚµÚËĽ׶ε÷ÑÐSwarm on Mesos£¬ÀûÓÃDocker¹«Ë¾ÔÉúµÄ¼¯Èº·½°¸ÅäºÏMesosµÄ×ÊÔ´¹ÜÀí£¬ÎªÒµÎñÏßÌṩ¸ü¼ÓÎȶ¨£¬±ãÀûµÄÈÝÆ÷»·¾³¡£
|