±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ¸öÈ˲©¿Í£¬±¾ÎÄÖ÷Òª½éÉÜÁËÈçºÎ¼¯Èº°²×°½¨Á¢£¬·þÎñ¹¹½¨ºÍ0½Úµã¹ÜÀí¡£ |
|
SwarmÊÇDocker¹Ù·½ÌṩµÄÒ»¿î¼¯Èº¹ÜÀí¹¤¾ß£¬ÆäÖ÷Òª×÷ÓÃÊǰÑÈô¸Ę́DockerÖ÷»ú³éÏóΪһ¸öÕûÌ壬²¢ÇÒͨ¹ýÒ»¸öÈë¿Úͳһ¹ÜÀíÕâЩDockerÖ÷»úÉϵĸ÷ÖÖDocker×ÊÔ´¡£SwarmºÍKubernetes±È½ÏÀàËÆ£¬µ«ÊǸü¼ÓÇᣬ¾ßÓеŦÄÜÒ²½Ïkubernetes¸üÉÙһЩ¡£
SwarmµÄ»ù±¾¼Ü¹¹ÈçÏÂͼËùʾ£¬

Õâ¸öͼ×÷Ϊһ¸öÕûÌåʵ¼ÊÉ϶¼´¦ÓÚÒ»¸öËùνµÄ¼¯ÈºÖУ¬Ëü¿ÉÄܶÔÓ¦ÁËÒ»µ½¶ą̀µÄʵ¼Ê·þÎñÆ÷¡£Ã¿Ì¨·þÎñÆ÷É϶¼×°ÓÐDocker²¢ÇÒ¿ªÆôÁË»ùÓÚHTTPµÄDockerAPI¡£Õâ¸ö¼¯ÈºÖÐÓÐÒ»¸öSwarmManagerµÄ¹ÜÀíÕߣ¬ÓÃÀ´¹ÜÀí¼¯ÈºÖеÄÈÝÆ÷×ÊÔ´¡£¹ÜÀíÕߵĹÜÀí¶ÔÏó²»ÊÇ·þÎñÆ÷²ãÃæ¶øÊǼ¯Èº²ãÃæµÄ£¬Ò²¾ÍÊÇ˵ͨ¹ýManager£¬ÎÒÃÇÖ»ÄÜÁýͳµØÏò¼¯Èº·¢³öÖ¸Áî¶ø²»ÄܾßÌ嵽ij̨¾ßÌåµÄ·þÎñÆ÷ÉÏÒª¸Éʲô£¨ÕâÒ²ÊÇSwarmµÄ¸ù±¾ËùÔÚ£©¡£ÖÁÓÚ¾ßÌåµÄ¹ÜÀíʵÏÖ·½Ê½£¬ManagerÏòÍⱩ¶ÁËÒ»¸öHTTP½Ó¿Ú£¬ÍⲿÓû§Í¨¹ýÕâ¸öHTTP½Ó¿ÚÀ´ÊµÏÖ¶Ô¼¯ÈºµÄ¹ÜÀí¡£¶ÔÓÚÉÔ΢´óÒ»µãµÄ¼¯Èº£¬×îºÃÊÇÄóöһ̨ʵ¼ÊµÄ·þÎñÆ÷×÷ΪרÃŵĹÜÀíÕߣ¬×÷Ϊѧϰ¶øÑÔ£¬Ò²¿ÉÒ԰ѹÜÀíÕߺͱ»¹ÜÀíÕß·ÅÔÚһ̨·þÎñÆ÷ÉÏ¡£
ÏÂÃæ¾ÍÀ´½²Ò»ÏÂÈçºÎ¼òµ¥µØÍ¨¹ýswarm´î½¨Ò»¸ö¼¯Èº
°²×°Óë¼òµ¥¼¯Èº½¨Á¢
¿ªÆô´øÓÐHTTPAPIµÄDocker·þÎñ
ÎÒµÄÐéÄâ»ú»·¾³ÊÇCentOS7µÄ£¬DockerÔòÊÇͨ¹ýyumÀ´°²×°µÄ¡£ÈçҪʹÓÃswarm£¬Ôò±ØÐëÈÃDocker¿ª·ÅÆäHTTPµÄAPI¡£Ä¬ÈÏÇé¿öÏÂÕâ¸öAPIûÓпªÆô£¬¶ø¿ªÆô´ËAPIÐèÒªÔÚÆô¶¯Ê±¼ÓÈë-H²ÎÊý¡£
ÍøÉÏÓеÄÈË˵ÔËÐÐ/usr/bin/dockerµÄʱºòÖ±½Ó¼Ó£¬ÓеÄÓÖ˵ÐÞ¸Ä/etc/sysconfig/dockerÖ®ÀàµÄÎļþ£¬¶¼²»ÊÊÓÃÓÚÎÒ£¬¿ÉÄÜÊÇÓÉÓÚϵͳÒÔ¼°docker±¾ÉíµÄ°æ±¾µÄÔµ¹Ê¡£¶øÎÒµÄÕýÈ·×ËÊÆÊÇÐÞ¸Ä/lib/systemd/system/docker.serviceÕâ¸öÎļþÖеIJÎÊý£¬²¢ÇÒÓÃsystemctlÀ´¹ÜÀíÆô¶¯docker·þÎñ¡£
ÉÏÊöÕâ¸öÎļþµÄExecStartºÜÃ÷ÏÔÊÇÖ¸³öÁËdockerµÄÆô¶¯²ÎÊý£¬ÔÚµÚÒ»ÐеĺóÃæÖ±½Ó¼ÓÉÏ£º
£¨ÓÐЩÎÄÕÂÒ²Ö¸³ö¶ÔÓÚCentOS6»¹ÐèÒª¼ÓÉÏ-H unix:///var/run/docker.sock£©ÐÞ¸ÄÍê³ÉÖ®ºó±ðÍüÁËÔËÐÐÒ»ÏÂsystemctl
daemon-reloadË¢ÐÂÅäÖÃ
È»ºóÔÙÖØÆô/Æô¶¯Docker·þÎñ£¬´Ëʱͨ¹ýnetstat -ntlp¿ÉÒÔ¿´µ½Ò»¸öпªµÄ2375¶Ë¿Ú£¬´ËÄËĬÈϵÄDockerHTTPAPIµÄ¶Ë¿Ú¡£Èç¹ûÊÇÒ»¸ö¼¯ÈºÔòÐèҪעÒ⼯ȺÖÐËùÓÐÏà¹ØµÄÖ÷»ú¶¼¼ÇµÃÒªÆô¶¯´øÕâ¸ö¶Ë¿ÚµÄDocker·þÎñ¡£
ûÓÐÕýÈ·Í˳öswarm¼¯ÈºÊ±Òý·¢µÄÎÊÌâ
Í˳öswarm¼¯ÈºÓõÄÃüÁîÊÇdocker swarm leave£¬È»¶ø´æÔÚÕâÑùÒ»ÖÖÇé¿ö£ºÃ»ÓÐÍêÈ«Í˳öswarm¼¯ÈºÊ±¾Í¹ØµôÁËDocker·þÎñ¡£ËæºóÍøÂç»·¾³±ä»¯ÁË£¨Ö÷»úµÄIP±äÁË£©¡£´ËʱÈôÔÙsystemctl
start docker½«»á±¨´í£¬Í¨¹ýsystemctl status docker -l¿ÉÒԲ鿴ÍêÕûµÄ±¨´íÐÅÏ¢£¬ÌáʾÕÒ²»µ½ÀÏIPµØÖ·ÔÆÔÆ¡£ÆäʵÕâÊÇÆô¶¯swarmʱ±¨µÄ´íÎó¡£
googleÁËÒ»ÏÂÖ®ºó£¬·¢ÏֱȽϷ½±ãµÄ½â¾ö°ì·¨ÊÇÊÖ¶¯ÐÞ¸Ä/var/lib/docker/swarmÏÂÃæµÄdocker-state.jsonºÍstate.jsonÁ½¸öÎļþ¡£°ÑÕâÁ½¸öjsonÎļþÖÐÔÀ´µÄÀϵØÖ·¶¼¸Ä³ÉÏÖÔÚµÄеØÖ·¡£Ó¦¸Ã¾Í¿ÉÒÔ˳ÀûÆô¶¯ÁË¡£
´´½¨Ð¡¼¯Èº
Ç°ÃæÌáµ½µÄSwarm Manager£¬Æä±¾ÉíÆäʵÊÇÒ»¸öÈÝÆ÷£¬ÆäËûһЩswarmµÄ½ÇÉ«»ù±¾ÉÏҲͨ¹ýÈÝÆ÷µÄ·½Ê½À´ÊµÏÖ¡£SwarmÔ´ÓÚDocker¶ø»ùÓÚDocker¡£µ«ÊÇDockerÔÚ¸Õ°²×°µÄʱºòÊÇûÓÐswarmÖ§³ÖµÄ£¬ÐèÒªÎÒÃÇdocker
pull swarmÈ¥DockerHubÀïÏÂÔØswarmµÄ¾µÏñ¡£Õâ¸ö¾µÏñ±¾Éí²»´ó£¬×îаæµÄ´ó¸Å15MB×óÓÒ£¬Ò»»á¶ù¾ÍÏÂÔØÍêÁË¡£
µ±È»£¬Èç¹ûÊǼ¯ÈºµÄ»°ÄÇôÐèÒªÔÚËùÓÐÏà¹ØµÄÖ÷»úÉ϶¼pullµ½Õâ¸ö¾µÏñ¡£
µÚÒ»²½£¬½¨Á¢Ò»¸ö¼¯Èº²¢ÇÒÈ¡µÃ¼¯Èº±êÖ¾¡£SwarmÖ§³Ö×Ô¶¯·¢ÏÖ¹¦ÄÜ£¬Èç¹ûÔÚÒ»¸öÍøÂçÖдæÔÚ¶à¸ö¼¯Èº£¬ÄÇô¾ÍÐèҪÿ¸ö¼¯Èº¶¼ÓÐÒ»¸öÇø±ðÓÚÆäËû¼¯ÈºµÄ±êÖ¾À´·ÀÖ¹»ìÏý¡£Õâ¸ö±êÖ¾¾ÍÊÇËùνµÄ¼¯Èºtoken£¬ÔÚ¼¯Èº´´Á¢Ö®³õ¾Í±»Ö¸¶¨ÇÒÎÞ·¨¸ü¸Ä¡£ÔÚ±»Ñ¡Îª¹ÜÀíÕß½ÇÉ«µÄ·þÎñÆ÷ÉÏÔËÐÐÃüÁ
docker
run --rm swarm create |
Õâ¸öÃüÁî·µ»ØÖдøÓÐÒ»´®token×Ö·û´®(ÒÔdfb4fb3a8767835d799ce429fb4d7c4dΪÀý)£¬Õâ¸öÐÅÏ¢ÐèÒª¼Ç¼ÏÂÀ´£¬Ö®ºóËùÓвÙ×÷Öж¼ÐèÒªÓõ½ËüÀ´Ö¸³öÎÒÃǶÔÄĸö¼¯Èº²Ù×÷¡£¶øÇÒĿǰ»¹Ã»ÕÒµ½ÈçºÎ²é¿´Ò»¸ö¼È´æ¼¯ÈºµÄtoken£¬ËùÒÔÒ»¶¨Òª¼Ç¼һÏ¡£¡£
´´½¨¼¯Èº¹ýºóʵ¼ÊÉϲ¢Ã»ÓÐÕæµÄÔö¼ÓʲôDocker×ÊÔ´£¬ÈÔÈ»ÊÇÒ»¸ö¿ÕµÄ¼¯Èº¡£
µÚ¶þ²½£¬´´½¨¼¯Èº»ñÈ¡µ½¼¯ÈºtokenÖ®ºó£¬Ä¿Ç°ÎÒÃÇÊÖÉÏÄÃ×ŵϹÊÇÒ»¸ö¿Õ¼¯Èº£¬½ÓÏÂÀ´¾ÍÍùÀïÃæ¼ÓÈë½ÚµãÖ÷»ú°É¡£¼ÓÈë½ÚµãÖ÷»úµÄ·½·¨ÊÇÔÙ¸÷¸ö½ÚµãÖ÷»úÉÏÔËÐÐÕâÌõÃüÁ
docker
run -d swarm join --addr=192.168.1.102:2375
token://dfb4fb3a8767835d799ce429fb4d7c4d |
ÆäÖÐ--addr²ÎÊýÖ¸³öµÄÊDZ¾Ö÷»úµÄDocker·þÎñµÄsocket£¬×ÔÈ»£¬IPÒªºÍ¸÷¸öÖ÷»ú×ÔÉíµÄIPÒ»Ö¡£ÁíÍâÎÒ³¢ÊÔÁËһϣ¬ÈôÔÚ±¾»úÖ¸¶¨addrΪlocalhost»òÕß0.0.0.0Ö®ÀàµÄIP£¬×îÖÕÊÇÎÞ·¨Õý³£¹¤×÷µÄ¡£ËùÒÔ¼´±ãÊÇÔÚ¹ÜÀíÕß±¾»ú£¬Ò²ÒªÀÏÀÏʵʵд³öIP¡£Íê³Éºó¿ÉÒÔÔÚµ±Ç°Ö÷»úÉÏdocker
ps¿´Ò»Ï£¬Ó¦¸Ã¿ÉÒÔ¿´µ½Ò»¸öÔÚÔËÐÐÖеÄswarmÈÝÆ÷¡£Õâ¸öÈÝÆ÷°çÑݵĽÇÉ«¾ÍÊÇÏòÉϺ͹ÜÀíÕßÈÝÆ÷ͨÐÅ£¬ÏòϹÜÀíËùÔÚ±¾»úµÄdocker×ÊÔ´£¬Ëùν±»¹ÜÀíÖ÷»úµÄ´úÀí¡£
´´½¨Íêºó£¬¿ÉÒÔͨ¹ý
docker
run -d swarm list token://dfb4fb3a8767835d799ce429fb4d7c4d |
À´²é¿´Õâ¸öÖ¸¶¨µÄ¼¯Èº£¨ÓÉtokenÖ¸³ö£©ÖдæÔÚÄÄЩjoin½øÀ´µÄ½Úµã¡£ÐèҪעÒâµÄÊÇ£¬swarm
joinÃüÁîÖ»ÊǼòµ¥µÄ¼ÓÈ뼯ȺµÄÉùÃ÷£¬swarm²¢²»»áÈ¥ÑéÖ¤¸ø³öµÄµØÖ·ºÍ¶Ë¿ÚÊÇ·ñÕæµÄ¿ÉÒÔ·ÃÎʵ½Ò»¸öDocker·þÎñ¡£¶ÔÓÚûÓз¢ÏÖÕý³£Docker·þÎñµÄ½Úµã£¬½«ÖÃ״̬ΪPending¶ø²»ÊÇHealthy£¬Õâ¸ö״̬ÒÔ¼°ÆäËû½ÚµãÏà¹ØÐÅÏ¢Ôõô¿´ÏÂÃæ»á˵¡£
µÚÈý²½£¬¿ªÆô¹ÜÀíÕßÈÝÆ÷¡£ÉÏÃæ½¨Á¢Á˼¯Èº¿ò¼Ü£¬²¢ÇÒÍù¼¯ÈºÖмÓÈëÁËjoin½Úµã£¨¼´±»¹ÜÀíÖ÷»úµÄ´úÀí£©£¬µ«ÊÇ»¹Ã»ÓгöÏÖ¹ÜÀíÕßÈÝÆ÷£¨¹ÜÀíÖ÷»úµÄ´úÀí£©¡£´´½¨¹ÜÀíÕßÈÝÆ÷µÄ·½·¨ÊÇÔÚ¹ÜÀíÕßÖ÷»úÉÏ£º
docker
run -d -p 8888:2375 swarm manage token://dfb4fb3a8767835d799ce429fb4d7c4d |
ͬÑù£¬docker psÖ®ºó¿ÉÒÔ¿´µ½¹ÜÀíÈÝÆ÷¡£-p±íÃû¹ÜÀíÕßÈÝÆ÷×öÁËÒ»¸ö¶Ë¿ÚÓ³Éä¡£ÒòΪ2375¶Ë¿ÚÔÚ±¾»úÉÏÒѾ±»Docker½ø³ÌÕ¼Ó㨵±È»Æô¶¯Ê±Ö¸¶¨µÄ¶Ë¿Ú²»ÊÇĬÈϵÄ2375¾ÍÁíµ±±ðÂÛÁË£©£¬¶ø¹ÜÀíÈÝÆ÷±©Â¶µÄÕâ¸ö¶Ë¿ÚÒªÌṩ³öÀ´£¬ÊµÏÖÍâ½ç¶Ô¼¯ÈºµÄ¹ÜÀí£¬ËùÒÔ×öÁËÒ»¸ö¶Ë¿ÚÓ³Éä¡£Õâ¸ö8888,Ò²¿ÉÒÔ»»³ÉÆäËûÈκκÏÀíµÄ¶Ë¿ÚºÅ¡£
ÓÐÁ˹ÜÀíÈÝÆ÷£¬²¢ÇÒ¹ÜÀíÈÝÆ÷¸ø³öÁË8888¶Ë¿Ú×÷Ϊ¹ÜÀíµÄÈë¿Ú£¬ÎÒÃǾͿÉÒÔÔËÐÐÒÔÏÂÕâЩÃüÁîÁË£º
docker
-H 192.168.1.101:8888 info
docker -H 127.0.0.1:8888 ps
docker -H 192.168.1.101:8888 images |
ÓÉÓÚÕâ¸ö8888¶Ë¿Ú¾Í¿ÉÒÔ¿´×öÊÇÒ»¸öÍøÂçÖÐµÄÆÕͨ¶Ë¿Ú£¬ÔÚ±¾»úÉÏ·ÃÎʵϰ×ÔÈ»IPд127.0.0.1Ò²ÊÇ¿ÉÒԵġ£µ«ÊÇ×¢Òâ²»ÄÜд³Élocalhost£¬²»È»»á±¨´í¡£
ÕâÈýÌõÃüÁȥµô-H²ÎÊýµÄ»°¾ÍÊÇÒ»°ãµÄdockerÓÃÀ´²é¿´ÐÅÏ¢µÄÃüÁî¡£¼ÓÉÏ-HÖ®ºó£¬±ÈÈç-H
192.168.1.101:8888Ö®ºó£¬ÆäÒâÒå¾Í±ä³ÉÁË£¬²é¿´Ò»¸ö¼¯ÈºµÄÏà¹ØÐÅÏ¢¡£Õâ¸ö¼¯ÈºÊÇ192.168.1.101µÄ8888¶Ë¿Ú¶ÔÓ¦µÄ¹ÜÀíÈÝÆ÷Ëù¶ÔÓ¦µÄÄǸö¼¯Èº¡£
ͨ¹ýÕ⼸ÌõÃüÁî³ÊÏÖ³öÀ´µÄdocker×ÊÔ´ÈçÈÝÆ÷ºÍ¾µÏñÊDz»Ç¿µ÷¾ßÌå´¦ÓÚÄÇ̨Ö÷»úÉϵģ¬Õâ¾ÍʹµÃ¼¯ÈºµÄ¸ÅÄîµÃÒÔ·¢Ñï¹â´ó¡£ÁíÍâͨ¹ýÕâ¸ösocketµÃµ½µÄ¼¯ÈºµÄÐÅÏ¢»á°Ñswarm±¾Éí³ýÍâ¡£±ÈÈçĿǰÕâ¸ö״̬ͨ¹ý-H
xxx ps¿´µ½µÄÈÝÆ÷ÁбíÓ¦¸ÃÊǿյġ£ÒòΪÎÒÃÇ»¹Ã»ÓÐÈü¯ÈºÔËÐÐÈκÎÈÝÆ÷¡£µ«ÊÇdocker ps»áÓÐswarmµÄÈÝÆ÷ÏÔʾ³öÀ´¡£Èç¹ûÏëÔÚ-HµÄʱºò£¨Ëùν¼¯ÈºÊÓͼ£©Ò²¿´µ½swarmÈÝÆ÷ÐÅÏ¢¿ÉÒÔÓÃps
-a¡£
˳±ã£¬infoÃüÁîµÄ½á¹ûºÍÆÕͨµÄdocker infoÃüÁî½á¹û²»Ì«Ò»Ñù£¬×îÖ÷ÒªµÄÊÇÓÐÁËnodesÕâ¸ö×ֶΡ£Õâ¸ö×ֶΰüº¬Á˸÷¸ö½ÚµãµÄÐÅÏ¢£¬°üÀ¨Ç°ÃæÌáµ½µÄ½Úµã״̬µÈÐÅÏ¢¡£
¼¯Èº¼òµ¥Ê¹ÓÃ
ÏÂÃæÕýʽʹÓü¯ÈºÀ´ÅܸöÈÝÆ÷ÊÔÊÔ¿´¡£ÆäʵºÍÔÉúdockerÃüÁîÏà±È£¬¾ÍÊǶàÁ˸ö-H²ÎÊýÀ´Ö¸Ã÷Ò»¸ö¼¯Èº¹ÜÀíÈë¿Ú¶øÒÑ£º
docker
-H 127.0.0.1:8888 run -d -p 10022:22 --name
swarmtest tomcatssh:v1 |
tomcatsshÊÇÎÒ±¾µØÒ»¸ö×Ô¶¨ÒåµÄ¾µÏñ£¬ºÍdocker runÀàËÆµÄ£¬ÆäËûµÄºÜ¶àÃüÁîÈçdocker
start/stop/rmµÈµÈÒ²¶¼¿ÉÒÔͨ¹ý¼¯Èº¹ÜÀíµÄÈë¿ÚÀ´¶Ô¼¯Èº×ö³ö¡£
Èç¹ûÎÒÃǵļ¯ÈºÖÐÓжà̬»úÆ÷ÓÃÓÚÅÜÈÝÆ÷£¬¼´Óжà¸ö±»¹ÜÀíÖ÷»úµÄ»°£¬ÄÇôͨ¹ýÕâÑùµÄ·½Ê½Æô¶¯ÆðÀ´µÄÈÝÆ÷»áͨ¹ýÒ»¶¨µÄ²ßÂÔÑ¡Ôñһ̨ºÏÊʵÄÖ÷»ú×÷ÎªÕæÊµµÄÅÜÈÝÆ÷µÄƽ̨À´ÔËÐÐÈÝÆ÷¡£²ßÂԷֳɺöàÖÖ£¬Ä¬ÈÏÊÇspread£¨Õâ¸ö×Ö¶ÎÔÚdocker
-H xxx infoÖеÄStrategyÖÐÓÐÏÔʾ£©£¬¾ßÌåÊÇÖ¸µ±¼¯ÈºÒªÔËÐÐÒ»¸öеÄÈÝÆ÷£¬½«»á¸ù¾ÝËã·¨ºÍÊÕ¼¯µ½µÄ¸÷¸ö±»¹ÜÀíÖ÷»úCPU£¬ÄÚ´æµÈÐÅÏ¢½øÐÐÖÇÄܵÄÑ¡Ôñ£¬Ê¹µÃ¸÷¸öÔËÐÐÈÝÆ÷µÄÖ÷»ú¾¡Á¿¾ùºâ¡£
¼ÈÈ»Äܹ»×öµ½×Ô¶¯Ñ¡Ôñһ̨Ö÷»ú×÷ΪÈÝÆ÷ÔËÐеļÄÍУ¬ÄÇô×ÔȻҲ¿ÉÒÔ»Ö¸´ÊÖ¶¯Ä£Ê½¡£ÕâÔÚswarmÖоÍÊÇËùνµÄfilter¹¦ÄÜ¡£filter¿ÉÒԷֳɶàÖÖ£¬
Ô¼Êø¹ýÂËÆ÷£¨Constraint Filter£©
Ô¼Êø¹ýÂËÆ÷ͨ¹ýÆô¶¯DockerÊØ»¤½ø³Ìʱָ¶¨µÄ±êÇ©labelÀ´²éÕÒºÏÊʵı»¹ÜÀíÖ÷»ú¡£labelÊÇͨ¹ýÆô¶¯²ÎÊýµÄ·½Ê½ÔÚÆô¶¯Ê±±»¹Ì¶¨µÄ£º
--label
datacenter=us-east1 |
Õâ¸ö²ÎÊý¼ÓÈ뵽֮ǰ˵¹ýµÄdocker.service£¬»òÕßÊÖ¶¯¼ÓÔÚÆô¶¯dockerµÄÃüÁîºóÃæµÈµÈ¡£
¶øÔÚÆô¶¯ÈÝÆ÷ʱͨ¹ýÕâÑùµÄ·½Ê½À´Ö¸¶¨¹ýÂËÆ÷£º
docker
-H 127.0.0.1:8888 run -e constraint:datacenter==us-east1
-d --name www-use1 nginx |
-eºóÃæ¸ú¹ýÂËÆ÷£¬constraintÖ¸³öÁËÔ¼Êø¹ýÂËÆ÷£¬ºóÃæµÄÔ¼Êø±êǩ֧³Ö==£¬!=Á½ÖÖÅжϣ¬ºóÃæ¿ÉÒÔд×Ö·û´®ºÍÕýÔò±í´ïʽÈçus-east*¡£
Ç׺͹ýÂËÆ÷£¨Affinity Filter£©
Ç׺͹ýÂËÆ÷ÒÔÏÖÓеÄij¸öÈÝÆ÷Ϊ»ù×¼£¬ÈÃÐÂÈÝÆ÷ÔËÐÐÔÚ/²»ÔÚÒѾÔËÐÐÁËij¸öÏÖÓÐÈÝÆ÷µÄÖ÷»úÉÏÔËÐС£
±ÈÈçÉÏÃæÕâÌõÃüÁî˵µÄ¾ÍÊÇÒª¸ù¾Ýmysql¾µÏñÆô¶¯Ò»¸öÃûΪdbµÄÈÝÆ÷£¬µ«ÊÇÕâ¸öÈÝÆ÷²»ÄÜÔÚÒѾԤwww-use1ÈÝÆ÷ÔËÐеÄÖ÷»úÉÏÔËÐС£
docker
run -d -e --name db affinity:container!=www-use1
mysql |
¶Ë¿Ú¹ýÂËÆ÷
¶Ë¿Ú¹ýÂËÆ÷ÑϸñÀ´Ëµ²¢²»ÊÇÒ»¸öÕæµÄ¹ýÂËÆ÷¡£¡£ËüÖ»ÊÇÔÚÆô¶¯ÈÝÆ÷ʱͨ¹ý-p²ÎÊýÀ´ÉêÇë¶ÔÒ»¸öÖ÷»ú¶Ë¿ÚµÄʹÓÃȨ¡£Èç¹ûһ̨Ö÷»úÉÏÕâ¸ö¶Ë¿ÚÕýÔÚ±»Ê¹ÓÃÄÇô×ÔÈ»ÊDz»ÄܰÑÈÝÆ÷·Åµ½Õâ¸öÖ÷»úÉÏÔËÐеġ£
³ýÁËÉÏÊöÈýÖÖ£¬¹ýÂËÆ÷»¹Óкܶ࣬¿ÉÒÔͨ¹ýswarm manage --help»òÕßÈ¥¹ÙÍø²é¡£×ܵÄÀ´Ëµ£¬¹ýÂËÆ÷ÊÇÒ»ÖÖÖ÷¶¯Ö¸¶¨Ö÷»úµÄÊֶΣ¬ÅäºÏswarm×ÔÉíµÄ×Ô¶¯·ÖÅä»úÖÆ£¬¿ÉÒÔÁé»îµØÈ·¶¨Ò»Ì¨Ö÷»úÀ´ÔËÐÐÈÝÆ÷¡£
Èç¹ûµ±Ç°¼¯ÈºÖÐswarmÕÒ²»µ½Ò»Ì¨·ûºÏÌõ¼þµÄÖ÷»úÀ´ÔËÐÐÈÝÆ÷£¬ÄÇôswarm»áÃ÷È·Ö¸³öÄĸö¹ýÂËÆ÷Ìõ¼þµÃ²»µ½Âú×㣬´Ó¶øÆô¶¯ÈÝÆ÷ʧ°Ü¡£
Òâʶµ½£¬ÉÏÃæµÄswarm½éÉܾÓÈ»ÊÇÀϰ汾µÄ£¡orz
ÏÖÔÚµÄDocker£¨1.12°æ±¾ÒÔºóµÄ£©¶¼ÊÇ´øÁËÔÉúµÄswarmÃüÁҲ¾ÍÊÇ˵²»ÐèÒª²»ÐèÒª½øÐи´ÔÓµÄswarm
createÖ®ÀàµÄ²Ù×÷£¬½öÐèÒª¼òµ¥¼¸ÌõÃüÁî¼´¿É¡£
а汾ÉϹ¹½¨swarm¼¯ÈººÍ½Úµã
Æô¶¯Ò»¸öswarm¼¯ÈºÊ®·Ö¼òµ¥£¬Ö»ÐèÒªÖ´ÐÐ
docker
swarm init --listen-addr 192.168.1.112:8888
--advertise-addr 192.168.1.112 |
Á½¸ö²ÎÊýÒ²ºÜºÃ¶®£¬--listen-addrÖ¸³öµÄÊÇÕâ¸ö¼¯Èº±©Â¶¸øÍâ½çµ÷ÓõÄHTTPAPIµÄsocketµØÖ·¡£Õâ¸ö¾ÍÊÇÀàËÆÓÚÉÏÃæÀϰ汾ÖÐswarm
manageʱ-pÖ¸¶¨µÄ¶Ë¿Ú¡£Ìí¼Ó--advertise-addr²ÎÊýµÄÔÒòÊÇ´ó¶àÊýÇé¿öÏÂÎÒÃǵÄÖ÷»ú¶¼²»Ö»ÓÐÒ»ÕÅÍø¿¨¡£¶øÒ»¸öswarm¼¯ÈºÐèÒª±æÃ÷¼¯ÈºËùÔÚµÄ×ÓÍøÂçÊÇÄÄÕÅÍø¿¨µÄ¡£
ÁíÍâÐèҪעÒ⣬ÔÚа汾µÄswarmÏ£¬manage½Úµã×ÔÉíÒ²×÷Ϊ±»worker½ÚµãµÄÒ»¸ö£¬×Ô¶¯¼ÓÈ뽨Á¢ÆðÀ´µÄswarm¼¯ÈºÖС£
ÃüÁîÔËÐгɹ¦µÄ»°»áÌáʾһ´®ÀàËÆÓÚÕâÑùµÄÐÅÏ¢£º
docker swarm join \
--token SWMTKN-1-2vndbzp43eff6vaiornhbafew242arz29qngrql0slqg4zmi4j-1hpha7vnelkbg4gg1d293qus4
\
192.168.1.112:8888 |
ÕâÊÇÔÚ˵Ã÷£¬Í¨ÍøÂçϵı»¹ÜÀíÖ÷»úÉÏ£¬Ö»ÒªÔËÐÐÕâ´®ÃüÁî¾Í¿ÉÒÔ½«¸ÃÖ÷»ú¼ÓÈ뼯Ⱥ¡£Èç¹û²»Ð¡ÐÄÍüÁËÕâ¸öÃüÁîÄÇô¿ÉÒÔÔÚmanagerÉÏÔËÐÐdocker
swarm join-token managerÃüÁî£¬ËæÊ±µ÷È¡³öÕⲿ·ÖÐÅÏ¢À´¿´¡£ÎÒÌØÒâ¶à½¨ÁËÁ½Ì¨ÐéÄâ»ú£¬×°ÉÏdocker×÷Ϊ±»¹ÜÀí»úÆ÷¡£Îª·½±ãÏÂÃæ³Æ¹ÜÀíÕß½ÇÉ«µÄ»úÆ÷ΪA£¬ÁíÁ½Ì¨ÎªB¡¢C¡£
ÔÚB¡¢CÉÏ·Ö±ðÔËÐÐÉÏÃæÕâ¸öÃüÁÓÐʱ¿ÉÒÔÔÚÃüÁîºó¼ÓÉÏ--listen-addr²ÎÊý£¬µ¹²»ÊÇ˵±»¹ÜÀíÖ÷»úÒ²ÐèÒª¼àÌý£¬¶øÊÇ´æÔÚһЩ½«±»¹ÜÀíÖ÷»úÉý¼¶Îª¹ÜÀíÖ÷»úµÄ³¡¾°£©ºó£¬ÔÚAÉÏÖ´ÐÐÃüÁ
¿ÉÒԲ鿴swarm¸÷¸ö½ÚµãµÄÇé¿ö¡£Í¬ÑùµÄdocker info ÖÐÒ²»á¶à³öSwarm:
TrueÒÔ¼°Ò»ÏµÁÐÏà¹Ø×ֶΡ£docker node lsµÄ·µ»ØÀàËÆÓÚ£º
ID
HOSTNAME STATUS AVAILABILITY MANAGER STATUS
2hzmnrb0vddow7jlr7zdx86s0 localhost.localdomain
Ready Active
444w5u9i9tf8h1dmvp404tluy * localhost.localdomain
Ready Active Leader
89z0l64mitjyhwijj6o0ps3m3 localhost.localdomain
Ready Active |
½ÚµãidºóµÄÐǺžÝ˵±íʾµÄÊÇÄ㵱ǰÁ¬½Ó×ŵĽڵ㡣
ÓÚÊÇ£¬ÎÒÃǾ͵õ½ÁËÒ»¸öÓÉÈý¸ö½Úµã×é³ÉµÄswarmС¼¯Èº¡£ÔÚÕâ¸ö¼¯ÈºÖÐÓÐÒ»¸ömanager½ÚµãºÍÈý¸öworker½Úµã£¨±ðÍüÁËmanager±¾Éí×Ô¶¯×÷ΪworkerÒ»Ô±¼ÓÈ뼯Ⱥ£©¡£
Ïà±È½ÏÓÚ֮ǰ»¹ÐèÒªÊÖ¶¯pull¾µÏñ£¬È»ºóÇúöàdocker runÃüÁа汾ÏÂÕûºÏµ½dockerÄÚ²¿µÄswarmÃ÷ÏÔ¾ÍÒªºÃ¶àÁË¡£È»¶øÎÒÃÇÏÖÔÚÒ²Ö»ÊǴÁËÒ»¸öС¼¯Èº£¬²¢Ã»ÓÐʵÖÊÄÚÈÝÔÚÆäÖÐÔËÐС£
¹¹½¨·þÎñ
˵µ½ÊµÖÊÄÚÈÝ£¬ÓÉÓÚswarm»á×Ô¶¯µØ×öһЩÈç¸ºÔØ¾ùºâ£¬±£³ÖÈÝÆ÷¸±±¾ÊýÁ¿µÈ¹¤×÷£¬ËùÒÔswarm¶ÔÍâÌṩµÄºÍk8sÀàËÆÒ²ÊÇÊôÓÚÒ»¸ö¡°·þÎñ¡±µÄ¸ÅÄî¡£
docker
service create --replicas 1 --name swarmtest
tomcatssh:v1 |
ͨ¹ýÉÏÃæÕâ¸öÃüÁî¿ÉÒÔ´´½¨Ò»¸ö·þÎñ£¨tomcatsshÊÇÎÒ×Ô¼ºµÄ¾µÏñ£©¡£--replicas²ÎÊýÖ¸³öÏ£Íû±£³ÖÕâ¸ö·þÎñʼÖÕÓжàÉÙÈÝÆ÷ÔÚÔËÐУ¬name²ÎÊýÖ¸¶¨µÄÊÇ·þÎñµÄÃû×Ö¶ø·ÇÈÝÆ÷µÄÃû×Ö£¬ËäÈ»Á½Õß×îÖÕ»áºÜÏñ¡£
´´½¨Íê³ÉµÄ·þÎñ¿ÉÒÔÔÚmanage½ÚµãÉÏͨ¹ýdocker service
lsÃüÁî²é¿´£¬¿ÉÄÜreplicasÊÇ0/1£¬Õâ±íʾ·þÎñÈÔÔÚ´´½¨¹ý³ÌÖС£ÉÔµÈÒ»»á¶ù¾Í»á±ä³É1/1ÁË¡£¸ü¼ÓÏêϸµÄÐÅÏ¢£¬Ôò¿ÉÒÔͨ¹ýdocker
service inspect --pretty swarmtestÀ´²é¿´¡£pretty²ÎÊýʹÊä³ö¸ü¼ÓÓѺ㬲»¼Ó´Ë²ÎÊýµÄÊä³öÊÇJSON¸ñʽµÄ¡£
ͬʱҲ¿ÉÒÔ˳±ãµ½¸÷̨workerÉÏÈ¥docker ps¿´ÏÂÈÝÆ÷µÄÔËÐÐÇé¿ö¡£Ò»°ãÇé¿öÏÂÔÙmanagerÉÏ»á³öÏÖÒ»¸öÕýÔÚÔËÐеÄÈÝÆ÷£¬Èç¹ûÄãÍ£µô»òÕßɾµôÕâ¸öÈÝÆ÷£¬ÄÇôswarm»á×Ô¶¯ÖØÆôËü¡£
½øÒ»²½µÄdocker service ps swarmtest£¬¿ÉÒԲ鿴swarmtestÕâ¸öServiceµÄ¸÷¸öÈÝÆ÷µ½µ×ÔÚÄĸö½ÚµãÉÏÔËÐÐÇÒÔËÐÐ״̬ÈçºÎ¡£±ÈÈçÎҸղލÁ¢ÁËÒ»¸öreplicasΪ3µÄswarmtest·þÎñ£¬docker
service ps swarmtestºóµÄ½á¹ûÊÇ£º
ID
NAME IMAGE NODE DESIRED STATE CURRENT STATE
ERROR
a6ubuiush8l821rncxkd231le \_ swarmtest.1 tomcatssh:v1
localhost.localdomain Shutdown Rejected 8 minutes
ago "No such image: tomcatssh:v1"
3sk5cowp4bve0zklvydwdgwba swarmtest.2 tomcatssh:v1
localhost.localdomain Running Running 6 minutes
ago
8tku51hecc6pza21urs5oz5zk swarmtest.3 tomcatssh:v1
localhost.localdomain Running Preparing 32 seconds
ago |
¿ÉÒÔ¿´µ½£¬ÔÚÒªÇóÆô¶¯3¸öÈÝÆ÷×÷Ϊswarmtest·þÎñµÄÖ§³Åʱ£¬swarm·Ö±ðÊÔͼÔÚ¼¯Èº£¨½©Ó²µÄÊÇÎÒ¼¯ÈºÖÐÈý¸öÖ÷»úµÄÖ÷»úÃû¶¼ÊÇlocalhost.localdomain¡£¡£¡£Òâ˼һϰɣ¬×ÜÖ®ÖªµÀÕâÀïËäȻдµÄÒ»Ñùµ«ÊÇÀïÃæÊÇÈý̨²»Í¬µÄ»ú×Ó£©ÖÐÈ¥Æô¶¯swarmtest.1£¬swarmtest.2ÒÔ¼°swarmtest.3Èý¸öÈÝÆ÷£¬¿ÉÒÔ¿´µ½swarm.1ÊÓͼÔËÐеÄÖ÷»úÉÏûÓÐtomcatssh:v1¾µÏñÒò´ËÆô¶¯Ê§°Ü£¬swarm.2Æô¶¯³É¹¦£¬¿ªÊ¼ÔËÐУ»swarm.3ÈÔÔÚ×¼±¸ÖС£¿ÉÒÔÏëµ½µÄÊÇ£¬ÒòΪswarm.1ÒѾÆô¶¯Ê§°Ü£¬ËùÒÔswarm»á¼ÌÐøÑ°ÕÒ»ú»áÆô¶¯Ëü£¬¾¡Á¿±£Ö¤Æô¶¯·þÎñʱreplicasΪ3µÄÒªÇó¡£
ÁíÍâ·þÎñ»¹ÓÐÒ»¸öÖØÒªµÄ¹¦ÄܾÍÊÇÉìËõ¡£Í¨¹ýÃüÁ
docker
service scale swarmtest=5 |
¿ÉÒÔ½«·þÎñÏÖÓеÄreplicaΪ3µÄ״̬À©Õ¹µ½5£¬ÆÚ¼äÒѾÆô¶¯µÄÈÝÆ÷²»ÊÜÓ°Ïì¡£
¶ÔÓÚ²»ÐèÒªµÄ·þÎñ£¬¿ÉÒÔdocker service rm swarmtestÀ´É¾³ý¡£É¾³ýºóËùÓнڵãÉϵÄÏà¹ØÈÝÆ÷¶¼»á±»É¾³ý¡£
¶ÔÓÚÒ»¸ö·þÎñÀ´Ëµ£¬³£»áÓöµ½µÄÒ»¼þÊÂÊǹö¶¯¸üУ¬swarmΪÎÒÃÇ·â×°ÁËÃüÁîdocker
service update¡£Ö»Òª¸øÕâ¸öÃüÁî¼ÓÉÏ--image²ÎÊýÖ¸¶¨Ò»¸öоµÏñ£¬ÄÇô¸Ã·þÎñÖеÄËùÓÐÈÝÆ÷¶¼»á±»¸üгÉÕâ¸öоµÏñµÄÄÚÈÝ¡£µ«ÎªÁ˱£Ö¤¿ÉÓÃÐÔ£¬±ØÈ»²»ÄÜͬʱ¸üÐÂËùÓÐÈÝÆ÷¡£swarm¾ÍÄÚÖÃÁËÒ»¸ö¹ö¶¯¸üеĻúÖÆ£¬¿ÉÒÔÈÃÎÒÃÇÒÀ´Î¸üи÷¸öÈÝÆ÷´Ó¶ø±ÜÃâ¸üÐÂÆÚ¼äµÄ²»¿ÉÓá£ÔÚdocker
service create µÄʱºò¿ÉÒÔÖ¸³ö--upgrade-delay²ÎÊý£¬±íʾ¸üзþÎñ¶ÔÓ¦µÄÈÎÎñ»òÒ»×éÈÎÎñÖ®¼äµÄʱ¼ä¼ä¸ô¡£Ê±¼ä¼ä¸ôÓÃÊý×ÖºÍʱ¼äµ¥Î»±íʾ£¬m
±íʾ·Ö£¬h ±íʾʱ£¬ËùÒÔ 10m30s ±íʾ 10 ·Ö 30 ÃëµÄÑÓʱ¡£ÁíÍâ--update-parallelism²ÎÊý±êÖ¾ÅäÖõ÷¶ÈÆ÷ÿ´Îͬʱ¸üеÄ×î´óÈÎÎñÊýÁ¿£¬Ä¬ÈÏÇé¿öÏ´˲ÎÊýֵΪ1£¬¼´Ò»¸öÒ»¸öÈÝÆ÷µØ¸üС£
ÔÚÓÐÁ˹ö¶¯¸üеı£ÕÏÖ®ºó£¬ÔÙÀ´Ö´ÐÐdocker service update£¬±ÈÈçdocker
service update --image tomcatssh:v2 swarmtest£¬Ôòswarm»á×Ô¶¯µØÈ¥°´ÕÕ¹ö¶¯¸üеIJßÂÔ¸üи÷¸öÈÝÆ÷£¨Êµ¼ÊÉϾÍÊǰѾÉÈÝÆ÷¹ØÍ£²¢Æô¶¯ÐÂÈÝÆ÷£©¡£ÔÚ¸üйý³ÌÖÐdocker
service ps swarmtest¿ÉÒԲ鿴¸üеÄʵʱÇé¿ö£¬×îÖÕ¸üÐÂÍê³ÉºóÕâÌõÃüÁî¿´µ½µÄ½á¹ûÓ¦¸ÃÊÇÀàËÆÓÚÕâÑù×ӵģº
ID
NAME IMAGE NODE DESIRED STATE CURRENT STATE
ERROR
5v3purlp28bg93ngkmp9x1dy9 swarmtest.1 tomcatssh:v2
worker1 Running Running 45 seconds ago
055xxourdnlsylmnjgwvs718t \_ swarmtest.1 tomcatssh:v1
worker1 Shutdown Shutdown 49 seconds ago
4b1am22wx1w0abo3ylxt7qcfe swarmtest.2 tomcatssh:v2
localhost.localdomain Running Running 11 seconds
ago
euyu700dikpqmgzq8hyoijvdq \_ swarmtest.2 tomcatssh:v1
worker2 Shutdown Shutdown 7 minutes ago
efgfvp2wd0x655dy136qrt47y swarmtest.3 tomcatssh:v2
worker2 Running Running 7 minutes ago
1m7muogeuitfsllhcyu942ac1 \_ swarmtest.3 tomcatssh:v1
localhost.localdomain Shutdown Shutdown 32 seconds
ago |
¹ý³ÌÖУ¬swarmÏÈShutdownÁËһ̨½ÚµãÉϵÄÀÏÈÝÆ÷²¢ÇÒÆô¶¯ÐÂÈÝÆ÷£¬Èç¹ûÐÂÈÝÆ÷Æô¶¯³É¹¦ºó¾ÍÔÙµÈ10Ã루´´½¨serviceʱָ¶¨µÄ²ÎÊý£©£¬È»ºó¿ªÊ¼²Ù×÷ÏÂһ̨¡£ÁíÍ⣬Èç¹û²Ù×÷һ̨µÄ¹ý³ÌÖз¢Éú´íÎóµ¼ÖÂÐÂÈÝÆ÷ûÓÐÕýÈ·ÔËÐÐÆðÀ´£¬ÄÇô¸üÐÂÈÎÎñ»áµ½´ËÔÝÍ££¬²»»á¼ÌÐøÍùÏ¡£docker
service updateºóÃæµÄ--update-failure-action²ÎÊý¿ÉÒÔÖ¸¶¨ÊÇ·ñÒªÌø¹ý´íÎó¡£
½Úµã¹ÜÀí
֮ǰËùÓеÄÑÝʾÖУ¬Èý¸ö½ÚµãʼÖÕ¶¼±£³Ö×ÅActiveµÄ¿ÉÓÃÐÔ¡£Swarm¹ÜÀíÆ÷»á×Ô¶¯¸ù¾ÝËã·¨½«ÈÎÎñ£¨ÆôÍ£ÈÝÆ÷µÈ£©·ÖÅ䏸ActiveµÄ½Úµã¡£
³ýÁËActive£¬ÆäËû³£¼ûµÄ¿ÉÓÃÐÔ״̬»¹ÓÐDrain£¬´¦ÓÚDrainµÄ½Úµã²»»á±»·ÖÅäÐÂÈÎÎñ£¬¶øÇÒµ±Ç°ÔËÐÐ×ŵÄÈÝÆ÷Ò²¶¼»á±»Í£Ö¹£¬swarm¹ÜÀíÆ÷Ôò»áÔÚÆäËû½ÚµãÉÏн¨ÕâЩÈÎÎñ¡£
ÔËÐÐÃüÁî
docker
node update --availability drain worker2 |
¿ÉÒÔÊÖ¶¯½«Ä³¸ö½ÚµãµÄ¿ÉÓÃÐÔÉèÖÃΪDrain£¬±ÈÈçÕâÀォÃûΪworker2µÄ½ÚµãÉèÖÃΪdrainÁËÖ®ºó£¬¿ÉÒÔ¿´µ½ÔÚdocker
service ps swarmtestÖгöÏÖµÄÐÂÐÅÏ¢£º
anrqum9q6zg0jw12ds5jnloyb
swarmtest.3 tomcatssh:v2 localhost.localdomain
Running Running 9 seconds ago
efgfvp2wd0x655dy136qrt47y \_ swarmtest.3 tomcatssh:v2
worker2 Shutdown Shutdown 7 minutes ago |
ÓÉÓÚworker2²»ÔÙ½ÓÊÜÈÎÎñ²¢¹ØÍ£ÏÖÓÐÈÎÎñ£¬ËùÒÔswarmtest.3Õâ¸öÈÝÆ÷±»×ªÒƵ½ÁËlocalhost£¨¼´manage½ÚµãËùÔÚ£©¡£docker
node ls»òÕßdocker node inspect --pretty worker2¾Í¿ÉÒÔ¿´µ½Æð¿ÉÓÃÐԵıä¸üÁË¡£
Èç¹ûʹÓÃdocker node updateÔٴν«worker2µÄ¿ÉÓÃÐÔÉèÖÃΪactive£¬ÄÇôworker2½Úµã¾Í¿ÉÒÔÔٴλñÈ¡ÈÎÎñÁË£¨¸Õ²Å±»×ªÒƵ½localhostÉϵÄÈÎÎñÊDz»»áÓÐÔÙת»ØÀ´µÄ£¬ËùÒÔworker2µÄÈÎÎñÖ»ÓÐÔÚ½ÓÏÂÀ´µÄ·ÖÅäÖлñµÃ£©¡£×ܵÄÀ´Ëµ£¬Ò»¸ö´¦ÓÚActive״̬µÄ½ÚµãÔÚÕâЩÇé¿öÏ¿ÉÄÜÊÕµ½ÐÂÈÎÎñ£ºµ±·þÎñ¹æÄ£À©´óʱ£»¹ö¶¯¸üÐÂʱ£»ÆäËû½Úµã±»ÉèÖÃΪDrain¶ø±¾½ÚµãÐèÒªµ£µ±Ê±£»ÆäËû½ÚµãÉÏÈÎÎñÆô¶¯Ê§°Üʱ¡£
|