±à¼ÍƼö: |
±¾ÎÄÀ´Ô´Íõäì¿¡£¬Ãæ¶ÔÈÝÆ÷»¯µÄ´ó³±Ç÷ÊÆ£¬¸÷¼Ò¹«Ë¾¶¼ÔÚ»ý¼«µØÏìÓ¦ºÍʵ¼ù£¬Ð¯³ÌÒ²ÔÚÕâ·½Ãæ×öÁ˲»ÉÙ¹¤×÷£¬ÐγÉÁË×Ô¼ºµÄÈÝÆ÷ÔÆÆ½Ì¨¡£ |
|
Ëæ×Å΢·þÎñ¼Ü¹¹µÄÁ÷ÐУ¬°ÑÈÝÆ÷¼¼ÊõÍÆµ½ÁËÒ»¸öÖÁ¸ßµãÉÏ£»¶øËæ×ÅDocker£¬K8SµÈÈÝÆ÷¼¼ÊõµÄÈÕÇ÷³ÉÊ죬DevOpsµÄ¸ÅÄîÒ²ÔÙ´ÎÈȶÈÉÏÉý£»Ãæ¶ÔÈÝÆ÷»¯µÄ´ó³±Ç÷ÊÆ£¬¸÷¼Ò¹«Ë¾¶¼ÔÚ»ý¼«µØÏìÓ¦ºÍʵ¼ù£¬Ð¯³ÌÒ²ÔÚÕâ·½Ãæ×öÁ˲»ÉÙ¹¤×÷£¬ÐγÉÁË×Ô¼ºµÄÈÝÆ÷ÔÆÆ½Ì¨¡£
´ÓÈÝÆ÷ÔÆµÄ´òÔì˼·ÉÏ£¬Ð¯³Ì½«Æä»®·Ö³ÉÁËË®ÉÏ¡¢Ë®ÏÂÁ½´ó²¿·Ö£º
- ˮϲ¿·ÖÊÇÖ¸ÈÝÆ÷ÔÆ·þÎñµÄ»ù´¡¼Ü¹¹
- Ë®Éϲ¿·ÖÊÇÖ¸ÃæÏòÈÝÆ÷¶ø²úÉúµÄһϵÁй¤³Ìʵ¼ùÅäÌ×
ˮϲ¿·Ö¶ÔDevÀ´ËµÏà¶Ô͸Ã÷£¬¶øË®Éϲ¿·ÖÔò»á¶ÔDev¹¤×÷ÓÐÖ±½ÓÓ°Ï죬Ҳ¾ÍÊÇDevOps¸ÅÄîÀïËùÌáµ½¡°»ìÂÒ֮ǽ¡±ËùÔڵĵط½¡£ËùÒÔֻҪˮÉÏ¡¢Ë®ÏÂͬʱ×öºÃÁË£¬ÈÝÆ÷ÔÆ²ÅÄÜÕæÕýÂ䵨£¬²¢·ûºÏDevOpsÀíÄîµÄÉèÏë¡£
Ò»¡¢»ù´¡¼Ü¹¹
ÈÝÆ÷ÔÆÔÚЯ³ÌÖ÷Òª¾ÀúÁËÒÔÏÂ3¸ö½×¶Î£º

µÚÒ»½×¶Î£¬Ä£ÄâÐé»ú£¬Í¨¹ýOpenStack½øÐйÜÀí
ÔÚÕâ¸ö½×¶Î£¬Ö÷ÒªµÄÄ¿µÄÊÇÑé֤Я³ÌÒÑÓеÄÓ¦ÓÃÊÇ·ñÄܹ»ÔÚDockerÈÝÆ÷ÏÂÕý³£ÔËÐУ¬²¢ÌáÉýϵͳÓëÈÝÆ÷µÄ¼æÈÝÐÔ¡£Õâ¸ö¹ý³ÌÖÐϵͳµÄÖ÷Òª¼Ü¹¹»¹ÊÇʹÓÃOpenStackµÄnovaÄ£¿é£¬°ÑDockerÄ£Äâ³ÉÐé»úµÄÐÎʽ½øÐйÜÀí£¬³ýÁËÓ¦ÓÃʵ¼ÊÔËÐеĻ·¾³²úÉúÁ˱仯£¬ÆäËûÈκÎÁ÷³Ì£¬¹¤¾ß¶¼²»±ä£¬´Ó¶øÊ¹Ó°Ï췶Χ¿ØÖÆÔÚ×îС¡£
µÚ¶þ½×¶Î£¬ÊµÏÖ¾µÏñ·¢²¼£¬Ê¹ÓÃChronosÔËÐÐJobÓ¦ÓÃ
ÔÚÕâ¸ö½×¶Î£¬Ö÷ÒªµÄÄ¿µÄÊÇͨ¹ý¾µÏñµÄ·½Ê½ÊµÏÖÓ¦Óõķ¢²¼ºÍ±ä¸ü¡£ÕæÕýʵÏÖ Immutable Delivery£¬¼´Ò»µ©²¿Êðºó£¬²»ÔÙ¶ÔÈÝÆ÷½øÐб仯¡£²¢ÇÒÔÚÕâ¸ö¹ý³ÌÖУ¬¼Ü¹¹´Ó±È½Ï·±ÖصÄOpenStackÌåϵÖнâÍѳöÀ´¡£Ê¹ÓÃÇáÁ¿¼¶µÄMesos+ChronosÀ´µ÷¶ÈJobÓ¦Óã¬ÔÚÕâ¸ö¹ý³ÌÖÐÎÒÃÇͬʱȥµôÁ˶ÔLong RunningµÄServiceÀàÐÍÓ¦ÓõÄÖ§³Ö£¬ÒÔ·½±ã²âÊÔÔÚ¼«¶ËÇé¿öϵ÷¶ÈµÄÏûºÄ£¬ºÍÕû¸öϵͳµÄÎȶ¨ÐÔ¡£
´Ëʱ£¬Õû¸öÈÝÆ÷ÔÆµÄ¼Ü¹¹ÈçÏÂͼ£¬

ʵ¼ùÖ¤Ã÷Õâ¸ö¼Ü¹¹ÔÚÓ¦¶Ô´óÁ¿²¢·¢jobµÄµ÷¶Èʱ£¬Mesos×ÔÉíµ÷¶ÈÏûºÄ¹ý´ó£¬ÒòΪÿÆô¶¯Ò»´Îjob¶¼ÐèÒªÀÆðÒ»¸ödockerʵÀý£¬¿ªÏú¿Í¹Û¡£Í¬Ê±Ò²Ö¤Ã÷ÔÚЯ³ÌÕâÑùµÄÓ¦ÓÃÌåÁ¿Ï£¬Ö±½ÓʹÓÿªÔ´FrameworkÊÇÎÞ·¨Âú×ãÎÒÃǵÄÐèÇóµÄ£¬ÕâÒ²´ÙʹÎÒÃÇ¿ªÊ¼×ßÏò×ÔÑÐFrameworkµÄ·½Ïò¡£
µÚÈý½×¶Î£¬×ÔÑÐFramework
ÔÚÕâ¸ö½×¶Î£¬ÎÒÃÇÖ÷ÒªÒª½â¾öµÄÎÊÌâÓУº
- ͬʱ֧³ÖJobÓëServiceÁ½ÖÖÀàÐ͵ÄÓ¦ÓÃ
- Ϊÿ¸ödockerʵÀý·ÖÅä¶ÀÁ¢µÄIP
- Ö§³ÖstatefulµÄÓ¦ÓÃ
- ÍêÉÆÈÝÆ÷µÄ¼à¿ØÌåϵ
´ËʱµÄ×ÜÌå¼Ü¹¹ÈçÏÂͼ£º

ÓëµÚ¶þ½×¶ÎµÄ¼Ü¹¹²»Í¬Ö®´¦£º
- Ê×ÏÈ£¬ÖØÐ·â×°ÁËMesosµÄRest API²ã£¬Ê¹µÃ¶ÔÍâÌṩµÄAPI¸ü·á¸»£¨¿ÉÒÔÓëÆäËûÒÑÓÐϵͳ½áºÏ£¬Ìṩ¸ü¶àµÄ¹¦ÄÜ£©£¬Í¬Ê±»ùÓÚһЩ¹æ·¶Í³Ò»µÄ¿¼ÂÇ£¬ÊÕ£ÁËһЩ¸öÐÔ»¯²ÎÊýµÄʹÓᣳý´ËÖ®Í⣬¶ÀÁ¢³éÏóAPI²ãÒ²ÊÇΪÁ˽«À´Äܹ»¿ìËÙÊÊÅäÆäËû¼Ü¹¹Ìåϵ£¬ÈçK8Sʱ£¬¿ÉÒÔ×öµ½¶ÔÉÏÓ¦ÓÃ͸Ã÷¡£
- Æä´Î£¬¶ÔMesos×öÁ˼¯Èº»¯·Ö²¼£¬´Ó¶øÌá¸ßMesos±¾ÉíµÄ¿ÉÓÃÐÔ¡£
- ×îºó£¬ÎªÁËÓ¦¶Ô´óÁ¿JobÀàÓ¦Óõĵ÷¶È£¬²ÉÓÃÁËÓëlong runningÒ»ÑùµÄ·½Ê½£¬½«executor·ÅÖÃÓÚÈÝÆ÷ÄÚ²¿¡£×öµ½Jobµ÷¶Èʱ£¬²»ÖØÐÂÆô¶¯ÈÝÆ÷£¬¶øÊÇÔÚÈÝÆ÷ÄÚ²¿µ÷¶ÈÒ»¸ö½ø³Ì¡£
˵ÍêÁËϵͳ¼Ü¹¹ºó£¬»¹ÓÐ2¸ö±È½ÏÖØÒªµÄÎÊÌ⣺
ÍøÂç
Я³Ì¶ÔÈÝÆ÷ʵÀýµÄÒªÇóÊÇ£¬µ¥ÈÝÆ÷µ¥IP£¬ÇÒ¿É·ÓÉ£¬ËùÒÔÍøÂçÑ¡ÏîÉϲÉÓõÄÈÔ¾ÉÊÇNeutron+OVS+VLanÕâ¸öģʽ£¬Õâ¸öģʽ±È½ÏÎȶ¨£¬ÍøÂç¹ÜÀíÒ²±È½Ï͸Ã÷¡£ÔÚʵ¼Ê¶Ôÿ¸öÈÝÆ÷ÅäÖÃÍøÂçµÄ¹ý³ÌÖУ¬Ð¯³Ì×ÔÑÐÁËÒ»Ì׳õʼ»¯hook»úÖÆ£¬ÒÔͨ¹ý¸Ã»úÖÆÔÚÈÝÆ÷Æô¶¯ºó´ÓÍⲿ»ñÈ¡¶ÔÓ¦µÄÍøÂçÐÅÏ¢£¬ÈçÍø¶Î£¬»òÕßNeutronportµÈ£¬ÔÚÅäÖõ½ÈÝÆ÷ÄÚ£¬ÕâÑù¾ÍÍê³ÉÁËÍøÂçÅäÖõij־û¯¡£´óÖµĻúÖÆÈçÏÂͼËùʾ£º

µ±È»ÀûÓÃÕâ¸öhook»úÖÆ»¹ÄÜ´¦ÀíÆäËûÒ»Ð©ÌØÊâµÄcase£¬Ö®ºóÒ²»áÓÐÌáµ½¡£
¼à¿Ø

¼à¿Ø·ÖΪ2¸ö²¿·Ö£¬Ò»¿éÊǶÔMesos¼¯ÈºµÄ¼à¿Ø¡£Ð¯³ÌÓÃÁ˺ܶ࿪Դ¼¼Êõ£¬È磺Telegraf¡¢influxdb¡¢GrafanaµÈ£¬²¢×öÁËһЩÀ©Õ¹À´ÊµÏÖmesos¼¯ÈºµÄ¼à¿Ø£¬²É¼¯mesos-master״̬¡¢taskÖ´ÐÐÊýÁ¿¡¢executor״̬µÈµÈ£¬ÒԱ㵱mesos¼¯Èº³öÏÖÎÊÌâʱÄܵÚһʱ¼äÖªµÀÕû¸ö¼¯Èº×´Ì¬£¬½ø¶ø½øÐÐÐÞ¸´¡£
ÁíÒ»¿éÊǶÔÈÝÆ÷ʵÀýµÄ¼à¿Ø£¬Ð¯³Ì¼à¿ØÍŶӿª·¢ÁËÒ»Ì×¼à¿ØÏµÍ³hickwall£¬ ʵÏÖÁ˶ÔÈÝÆ÷µÄ¼à¿ØÖ§³Ö¡£ hickwall agent²¿ÊðÔÚÈÝÆ÷ÎïÀí»úÉÏ£¬Í¨¹ýDocker client ¡¢cgroupµÈ²É¼¯ÈÝÆ÷µÄÔËÐÐÇé¿ö£¬°üÀ¨ CPU ¡¢Memory¡¢Disk IOµÈ³£¹æ¼à¿ØÏÓÉÓÚÈÝÆ÷¾µÏñ·¢²¼»á·Ç³£Æµ·±µÄ´´½¨¡¢É¾³ýÈÝÆ÷£¬Òò´ËÎÒÃǰÑÈÝÆ÷µÄ¼à¿ØÒ²×ö³É×Ô¶¯·¢ÏÖ£¬ÓÉhickwall agent·¢ÏÖµ½ÐµÄÈÝÆ÷£¬·ÖÎöÈÝÆ÷µÄlabelÐÅÏ¢(±ÈÈç: appid¡¢°æ±¾µÈ£©À´ÊµÏÖ×Ô¶¯×¢²á¼à¿Ø£»ÔÚµ¥¸öÈÝÆ÷¼à¿ØµÄ»ù´¡ÉÏ£¬»¹¿ÉÒÔ°´ÕÕÓ¦Óü¯ÈºÀ´¾ÛºÏÏÔʾÕû¸ö¼¯ÈºµÄ¼à¿ØÐÅÏ¢£»

×ÔÑÐFrameworkµÄ¶¯»ú
¿ªÔ´FrameworkΪÁËÆÕÊÊÐÔ£¬ºÍÀ©Õ¹ÐÔ¿¼ÂÇ£¬Ïà¶Ô¶¼±È½ÏÖØ£¬¶øÐ¯³Ìʵ¼ÊµÄʹÓó¡¾°£¬²¢²»ÊÇÌØ±ð¸´ÔÓ£¬Ö»ÐèÒª×öºÃ×î»ù´¡µÄµ÷¶È¼´¿É¡£Òò´Ë×ÔÑеϰ¸ü¿ÉÒÔרעҵÎñ±¾ÉíµÄÐèÇó£¬Ò²¿ÉÒÔ¸üÇáÁ¿»¯¡£
ÓÉÓÚЯ³ÌÒѾÐγÉÁ˱ȽÏÍêÕûµÄÓ¦Óüܹ¹Ìåϵ£¬ÒÔ¼°¾¹ý¶àÄê´òÔìÒѾ³ÉÊìµÄÖмä¼þϵÁС£ËùÒÔ×ÔÑÐFramework¿ÉÒԺܺõØÈ¥ÊÊÅäÔÓеÄÕâЩ×ÊÔ´£¬Ê¹ÓÿªÔ´ÏîÄ¿·´¶øÊÊÅä¸ÄÔìµÄ³É±¾»á±È½Ï´ó£¬±ÈÈç·ÓÉϵͳ£¬¼à¿ØÏµÍ³£¬·þÎñÖÎÀíϵͳµÈµÈ¡£
×îºóÒ»µã¾Í±È½ÏʵÔÚÁË£¬¿ªÔ´ÏîĿʹÓõÄÓïÑÔ£¬¿ò¼Ü±È½Ï·ÖÉ¢£¬³¤Ô¶À´ËµÎ¬»¤³É±¾±È½Ï´ó
×ÔÑÐFrameworkµÄÌðÍ·
ÕýÈçÇ°ÃæËù˵£¬×ÔÑÐFrameworkÄܹ»ºÜ·½±ãµØ½â¾öһЩʵ¼ÊÎÊÌ⣬ÏÂÃæ¾Í¾ÙÒ»¸öÎÒÃÇÅöµ½µÄʵ¼ÊÀý×Ó¡£
ÎÒÃÇÖªµÀmesos±¾Éíµ÷¶È×ÊÔ´µÄ·½Ê½ÊÇÒÔofferµÄģʽÀ´´¦ÀíµÄ£¬¼òµ¥À´Ëµ¾ÍÊÇmesos½«Ê£Óà×ÊÔ´µÄ×ܺÍÒÔofferµÄÐÎʽ·¢ËͳöÀ´£¬Èç¹ûÓÐÐèÇóÔòÕ¼Óã¬Ã»ÓÐÐèÇóÔò»ØÊÕ£¬´ýÏ´η¢ËÍoffer¡£µ«ÊÇÈç¹ûÅöµ½ÏÂͼÕâÑùµÄÇé¿ö£¬¼´mesosÒ»Ö±¸ø³ö2ºËµÄ×ÊÔ´£¬²¢ÇÒÿ´Î¶¼±»Õ¼Óã¬ÄÇÒ»¸öÐèÒª4ºËµÄʵÀýʲôʱºòÄÜÄõ½×ÊÔ´ÄØ£¿

ÎÒÃǰÑÕâÖÖÇé¿ö½Ð×öofferË鯬£¬Ò²¾ÍÊÇÒ»¸öÏȵ½µÄ´ó×ÊÔ´ÉêÇ룬¿ÉÄÜÒ»Ö±ÎÞ·¨µÃµ½ºÏÊʵÄofferµÄÇé¿ö¡£
½â¾öÕâ¸öÎÊÌâµÄ°ì·¨ÆäʵºÜ¼òµ¥£¬ÎÞ·Ç2ÖÖ£º
1¡¢½«¶Ìʱ¼äÄÚµÄoffer½øÐкϲ¢£¬ÔÙ¿´×ÊÔ´ÉêÇëµÄÇé¿ö

2¡¢Ëõ¶ÌmesosofferµÄtimeoutʱ¼ä£¬Ê¹ÆäÇ¿ÖÆ»ØÊպϲ¢×ÊÔ´£¬ÔÙ´Îoffer

Я³ÌĿǰ²ÉÓõķ½°¸2£¬ÊµÏַdz£¼òµ¥¡£
ÒÔÉÏ´óÖ½éÉÜÁËÒ»ÏÂЯ³ÌÈÝÆ÷ÔÆµÄˮϲ¿·Ö£¬¼´»ù´¡¼Ü¹¹µÄÇé¿ö£¬ÒÔ¼°×ÔÑÐFramework´øÀ´µÄһЩºÃ´¦¡£¹ØÓÚk8s£¬ÓÉÓÚÎÒÃÇ·â×°ÁËÈÝÆ÷ÔÆ¶ÔÍâµÄAPI²ã£¬ËùÒÔÆäʵ¶ÔÓڵײã¼Ü¹¹µ½µ×ÓÃʲô£¬ÒѾ¿ÉÒԺܺõÄÕÆ¿Ø£¬ÎÒÃÇÒ²ÔÚÖð²½³¢ÊÔ½«Ò»Ð©statefulµÄÓ¦ÓÃÅÜÔÚk8sÉÏ£¬×öµ½2Ì׼ܹ¹µÄ²¢´æ£¬³ä·Ö·¢»Ó¸÷×ÔµÄÓÅÊÆ¡£
¶þ¡¢¹¤³Ìʵ¼ù
ÈÝÆ÷»¯µÄ¹ý³Ì³ýÁ˼ܹ¹ÌåϵµÄÉý¼¶£¬¶ÔÔÏȵŤ³Ìʵ¼ù»á´øÀ´±È½Ï´óµÄ³å»÷¡£Ò²»áÓöµ½Ðí¶àÀíÄîÓëÏÖʵÏà³åÍ»µÄµØ·½£¬ÏÂÃæ·Ö±ð½éÉÜЯ³ÌÓöµ½µÄһЩʵ¼ÊÎÊÌâºÍ½â¾ö˼·¡£
´úÂë°üµ½¾µÏñ£¬½»¸¶Á÷³ÌÈçºÎÊÊÅ䣬ÈçºÎÇ¨ÒÆ¹ý¶É£¿
DevOpsÀíÄîÌᳫ¡°Ë¿ª·¢£¬ËÔËÐС±£¬½èÖúdockerÕýºÃºÜ·½±ãµÄÂ䵨ÁËÕâ¸ö¸ÅÄЯ³ÌµÄCI/CDϵͳͬʱ֧³ÖÁË»ùÓÚ¾µÏñÓë´úÂë°üµÄ·¢²¼¡£ÕâÑù×öµÄºÃ´¦ÊÇÄܹ»ÔÚÈÝÆ÷»¯Ç¨ÒƵĹý³ÌÖÐ×öµ½ÎÞ·ìºÍ»Ò¶È¡£

ÄÜÏñÐé»úÒ»ÑùµÇ½»úÆ÷Âð£¿SSH£¿
docker±¾ÉíÌᳫµ¥ÈÝÆ÷µ¥½ø³Ì£¬ËùÒÔÊÇ·ñÐèÒªsshdÊǸöºÜÞÏÞεÄÎÊÌâ¡£µ«ÊǶÔÓÚdockerʵÀýµÄ¿ØÖÆ£¬ÒÔ¼°Ö´ÐÐһЩ±ØÐëµÄÃüÁÊǺÜÓбØÒªµÄ£¬ÖÁÉÙ¶ÔÓÚops¶øÑÔÊÇÒ»Öַdz£ÓÐЧµÄÅÅÕÏÊֶΡ£ËùÒÔ£¬Ð¯³Ì²ÉÓõķ½Ê½ÊÇ£¬Í¨¹ýweb consoleÓëËÞÖ÷»ú½¨Á¢Á¬½Ó£¬È»ºóͨ¹ýexecµÄ·½Ê½½øÈëÈÝÆ÷¡£

Tomcat ÄÜ·ñ×÷ΪÈÝÆ÷µÄÖ÷½ø³Ì£¿
ÎÒÃÇÖªµÀÖ÷½ø³Ì¹Òµô£¬ÔòÈÝÆ÷ʵÀýÒ²»á±»Ïú»Ù¡£¶øJava¿ª·¢¶¼ÖªµÀ£¬tomcatÆô¶¯Ê§°ÜÊǺÜÕý³£µÄcase¡£Óɴ˾ͲúÉúÁËÒ»¸öì¶Ü£¬tomcatÆô¶¯Ê§°Ü£¬²¢²»µÈͬÓÚÈÝÆ÷ʵÀýÆô¶¯Ê§°Ü£¬ÎÒÃÇÐèҪȥ׷²étomcatÆô¶¯Ê§°ÜµÄÔÒò¡£Óɴ˿ɼû£¬tomcat²»ÄÜ×÷ΪÈÝÆ÷µÄÖ÷½ø³Ì¡£Òò´Ë£¬Ð¯³ÌÈÔ¾ÉʹÓÃSupervisordÀ´Î¬»¤tomcat½ø³Ì¡£Í¬Ê±ÔÚÆô¶¯Ê±»á×¢²áһЩ×Ô¶¨Òåhook£¬ÒÔÓ¦¶ÔÒ»Ð©ÌØÊâµÄÓ¦Óó¡¾°¡£±ÈÈ磺ijЩӦÓÃÐèÒªÔÚtomcat³É¹¦Æô¶¯£¬»ò³É¹¦Í£Ö¹ºó½øÐÐһЩ¶îÍâµÄ²Ù×÷£¬µÈµÈ¡£

JVM ÅäÖÃÊÇ˵Ĺø£¿
ÈÝÆ÷ÉÏÏߺóÒ»¶Îʱ¼ä£¬ÍŶÓÒ»Ö±±»Ò»¸öJVM OOMµÄÎÊÌâËùÀ§ÈÅ£¬ÔÀ´ÔÚÐé»úÅܵĺúõÄÓ¦Óã¬ÎªÊ²Ã´µ½ÈÝÆ÷¾ÍOOMÁËÄØ£¿×îºó¶¨Î»µ½ÎÊÌâµÄÔÒòÊÇ£¬ÈÝÆ÷²ÉÓÃÁËcpu quotaµÄģʽ£¬µ«JVMÎÞ·¨×¼È·µÄ»ñÈ¡µ½cpuµÄÊýÁ¿£¬Ö»ÄÜ»ñÈ¡µ½ËÞÖ÷»úcpuµÄÊýÁ¿£»Í¬Ê±ÓÉÓÚһЩjava×é¼þ»á¸ù¾ÝcpuµÄÊýÁ¿À´¿ªÆôthreadÊýÁ¿£¬ÕâÑù¾ÍÔì³ÉÁ˶ÑÍâÄÚ´æ´ù¾¡£¬×îÖÕÔì³ÉOOM¡£
ËäÈ»£¬ÕÒµ½ÁËOOMµÄÔÒò£¬µ«ÊǶÔÓÚÈÝÆ÷ÔÆÀ´Ëµ£¬È´ÃæÁÙÁËÒ»¸ö¼¬ÊÖµÄÎÊÌâ¡£ÈÝÆ÷ʵÀý²»ÏñÐé»ú£¬ÔÚÐé»úÉÏ£¬Óû§¿ÉÒÔ°´Ð趨ÒåJVMÅäÖã¬È»ºóÔÙ½«´úÂë½øÐз¢²¼¡£ÔÚÈÝÆ÷ÔÆÉÏ£¬·¢²¼µÄÊǾµÏñ£¬JVMµÄÅäÖÃÔò±ä³ÉÁ˾µÏñµÄ°üº¬ÎÎÞ·¨ÔÚruntimeʱ½øÐÐÁé»îÐ޸ġ£
¶øÇÒ£¬ÈÝÆ÷±¾Éí²¢²»¿¼ÂÇÑз¢Á÷³ÌÉϵÄһЩÎÊÌâ¡£±ÈÈ磬ÎÒÃÇÓв»Í¬µÄ²âÊÔ»·¾³£¬²»Í¬µÄ²âÊÔ»·¾³¿ÉÄÜÓв»Í¬µÄJVMÅäÖã¬ÕâÏÔÈ»ÓëdockerÉèÏëµÄ£¬Ò»¸ö¾µÏñ×ßÌìϵÄÏ뷨ì¶ÜÁË¡£
×îºó£¬¶ÔÓÚÖÕ¶ËÓû§¶øÑÔ£¬ÔÚÑ¡ÔñÈÝÆ÷ʱ£¬ÍùÍùÌôÑ¡µÄÊÇflavor£¬Òò´ËÎÒÃÇÐèÒª¶ÔÓ¦²»Í¬µÄflavor¶¨ÒåÒ»Ì×±ê×¼µÄJVMÅäÖã¬ÀûÓÃ֮ǰÌáµ½µÄÈÝÆ÷Æô¶¯Ê±µÄhook»úÖÆ£¬´ÓÍⲿ»ñÈ¡¸ÃÈÝÆ÷Æ¥ÅäµÄ±ê×¼JVMÅäÖá£
ÎÒÃÇÒ²×ܽáÁËһЩ¶ÔÓÚ¶ÔÍâÄÚ´æµÄ×î¼Ñʵ¼ù£¬ÈçÏ£º
Xmx = Xms = Flavor * 80%
Xss = 256K
¶ÑÍâ×îС800£¬×î´ó2G£¬·ûºÏÕâ¸ö¹æÔòÖ®ÄÚ£¬ÒÔ20%¼Æ
ÎÊÌâÓÖÀ´ÁË£¬Óû§ÐèÒª×Ô¶¨ÒåJVM£¿
×îÖÕ£¬ÎÒÃǽ«JVMÅäÖû®·Ö³ÉÁË3¸ö²¿·Ö£º
1¡¢ÏµÍ³Ä¬ÈÏÍÆ¼ö²¿·Ö
2¡¢Óû§×Ô¶¨Òåoverride²¿·Ö
3¡¢ÏµÍ³Ç¿ÖƸ²¸Ç²¿·Ö
ÔÊÐíÓû§Í¨¹ý´úÂë»òÍⲿÅäÖÃϵͳ£¬¶ÔÓ¦ÓõÄJVM²ÎÊý½øÐÐÅäÖã¬ÕâЩÅäÖûḲ¸ÇµôϵͳĬÈÏÍÆ¼öµÄÅäÖ㬵«ÊÇÓÐһЩÅäÖÃÊǹ«Ë¾±ê×¼£¬²»ÔÊÐí¸²¸ÇµÄ£¬±ÈÈçͳһµÄjmx·þÎñµØÖ·µÈ£¬ÕâЩÄÚÈÝÔò»áÔÚ×îÖÕ±»°´±ê×¼Ìæ»»³É¹«Ë¾Í³Ò»µÄÖµ¡£

Dockerfile µÄÔ×ï
DockerfileÓкܶàºÃ´¦£¬µ«Í¬Ê±Ò²´æÔںܶ໵´¦£º
- ÎÞ·¨Ö´ÐÐÌõ¼þÔËËã
- ²»Ö§³Ö¼Ì³Ð
- ά»¤ÄѶȴó
- ¿ÉÄܳÉΪһ¸öºóÃæ£¬ÆÆ»µ»·¾³±ê×¼
Òò´Ë£¬Èç¹ûÔÊÐíPD¶Ôÿ¸öÓ¦Óö¼×Ô¶¨ÒådockerfileµÄ»°£¬ºÜÓпÉÄÜÆÆ»µÒÑÓеĺܶà±ê×¼£¬²úÉú¸÷ÖÖ¸÷ÑùµÄ¸öÐÔ»¯ÐÐΪ£¬Ê¹µÃͳһÔËά±ä³É²»¿ÉÄÜ£¬ÕâÖÖÇé¿öÔÚЯ³ÌÕâÑùµÄÔËάÌåÁÂÏ£¬ÊÇÎÞ·¨½ÓÊܵġ£
´òÔì¡°plugin¡±·þÎñƽ̨
ËùÒÔ£¬Ð¯³Ì¾ö¶¨Í¨¹ý ¡°plugin¡±·þÎñµÄ·½Ê½£¬°ÑdockerfileµÄʹÓÃ¹Ü¿ØÆðÀ´£¬½«Ò»Ð©³£¹æµÄͨ¹ýdockerfileʵÏֵŦÄÜÐγÉΪ¡°plugin¡±£¬ÔÚImage buildµÄ¹ý³ÌÖнøÐÐÖ´ÐС£ÕâÑù×öµÄºÃ´¦ÊÇ£¬ËùÌṩµÄ·þÎñ¿É±ê×¼»¯£¬²¢Çҿɸ´Ó㬻¹¿ÉÒÔÈÎÒâ×é×°¡£±ÈÈ磺ÎÒÃÇ·Ö±ðÌṩ¡°°²×°FTP¡±£¬¡°°²×°Jacoco¡±µÈ²å¼þ·þÎñ¡£Óû§ÔÚÍê³É×Ô¼ºµÄ´úÂëºó£¬½øÐÐimage buildʱ¾Í¿ÉÒÔµ¥Ñ¡»ò¶àÑ¡ÕâЩ·þÎñ£¬ÄÇ×îºóÐγɵÄimageÖоͻḽ´øÕâЩ²å¼þ¡£²¢ÇÒÕë¶Ô²»Í¬µÄ²âÊÔ»·¾³¿ÉÒÔÑ¡Ôñ²»Í¬µÄ²å¼þ£¬Ðγɲ»Í¬µÄ¾µÏñ¡£

¶ÔÓÚÒ»¸ö¡°plugin¡±¶øÑÔ£¬ÉõÖÁ¿ÉÒÔ¶¨ÒåһЩhook£¨×¢²ásupervisord hook£©£¬ÒÔ¼°Ò»Ð©¿ÉexecÖ´ÐеĽű¾£¬´Ó¶ø½øÒ»²½À©Õ¹ÁË¡°plugin¡±µÄÄÜÁ¦¡£±ÈÈç¿ÉÒÔ²åÈëÒ»¸ötomcatµÄÆôÍ£½Å±¾£¬´Ó¶ø»ñÈ¡´ÓÍⲿ¿ØÖÆÈÝÆ÷ÄÚtomcatµÄÄÜÁ¦¡£

¹«Ë¾ÄÚµÄÿ¸öPD¶¼¿ÉÒÔÉêÇë×¢²á¡°plugin¡±£¬ÉóºËͨ¹ýºó£¬¾Í¿ÉÒÔÔÚÆ½Ì¨Éϱ»ÆäËûÓ¦ÓÃËùʹÓá£×¢²á²½Ö裺
1¡¢Îª·þÎñ¶¨ÒåÃû³ÆºÍ˵Ã÷
2¡¢Ñ¡Ôñ·þÎñ¿ÉÖ§³ÖµÄ»·¾³£¨È磺²âÊÔ£¬Éú²ú£©
3¡¢ÉÏ´«×Ô¶¨ÒåµÄdockerfile
4¡¢ÉÏ´«×Ô¶¨ÒåµÄ¿ÉÔËÐнű¾


¡°Jacoco Plugin¡±µÄʵÀý
JacocoÊÇÒ»¸öÔÚ·þÎñ¶ËÊÕ¼¯´úÂ븲¸ÇÂʵŤ¾ß£¬ÒÔ°ïÖú²âÊÔÈËԱȷÈϲâÊÔ¸²¸ÇÂÊ¡£Õâ¸ö¹¤¾ßµÄʹÓÃÓÐÒÔϼ¸¸öÐèÇó£º
1¡¢ÐèÒªÔÚ´úÂëÔÊÐí»·¾³Öа²×°Jacoco agent
2¡¢Ö»ÐèÒªÔÚÌØ¶¨µÄ²âÊÔ»·¾³½øÐа²×°£¬Éú²ú»·¾³²»Äܰ²×°
3¡¢±»²âÓ¦ÓÃÆô¶¯ºó£¬ÐèÒªÍùJacocoºó¶Ë·þÎñ½øÐÐ×¢²á
4¡¢²âÊÔ¹ý³ÌÖпÉÒÔ·½±ã¿ØÖÆJacocoµÄÆôÍ££¨Í¨¹ýtomcatÆô¶¯²ÎÊý¿ØÖÆ£©
Õë¶ÔÒÔÉϵÄÐèÇ󣬶¨ÖÆÒ»¸ö¡°JacocoPlugin¡±µÄ¹¤×÷£¬ÈçÏÂͼ£º

1¡¢Í¨¹ýdockerfile°²×° jacoco agent
2¡¢×¢²áÒ»¸ösupervisord hook£¬ÔÚtomcatÆô¶¯³É¹¦ºóÏòJacoco service½øÐÐ×¢²á
3¡¢ÀûÓÃÒ»¸ö×Ô¶¨ÒåtomcatÖØÆô½Å±¾£¬²¢ÔÚÆ½Ì¨µÄweb serverÉϱ©Â¶apiÀ´¿ØÖÆjacocoµÄÆôÍ£
ÕâÑù£¬ËùÓÐÈÝÆ÷ÔÆÉϵÄÓ¦ÓÃÔÚimage buildʱ¾Í¶¼¿ÉÒÔ°´ÐèÑ¡ÔñÊÇ·ñÐèÒª¿ªÍ¨ jacoco ·þÎñÁË¡£

ÀûÓÃÕâÑùµÄƽ̨»úÖÆ£¬»¹ÌṩÁËһϵÁÐÆäËûÀàÐ͵ġ°plugin¡±·þÎñ£¬ÒÔ½â¾ö»·¾³¸öÐÔ»¯ÅäÖõÄÎÊÌâ¡£
Èý¡¢×ܽá
1¡¢devops»òÕßÈÝÆ÷»¯ÊÇÀíÄîµÄ±ä»¯£¬¸üÐèÒª½ÓµØÆøµÄʵʩ·½°¸
2¡¢»ù´¡¼Ü¹¹£¬¹¤³Ìʵ¼ùºÍÅäÌ×·þÎñ£¬ÐèÒª²¢½ø£¬²ÅÄÜÂ䵨
3¡¢ÊʺÏ×Ô¼ºµÄ·½°¸²ÅÊÇ×îºÃµÄ·½°¸
Я³ÌµÄÈÝÆ÷ÔÆ½ø³Ì»¹ÔÚ²»¶ÏµÄ½ø»¯Ö®ÖУ¬ºÜ¶àÐÂÏʵÄÊÂÎñºÍÎÊÌâµÈ´ý×ÅÎÒÃÇÈ¥·¢ÏÖºÍ̽Ë÷¡£
|