±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½²½âÁËQunar ÈÝÆ÷»¯·¢Õ¹Ê±¼äÏß¡¢Â䵨¹ý³ÌÓëʵ¼ù¡¢ÈÝÆ÷»¯Â䵨¹ý³ÌÖÐÅöµ½µÄÎÊÌâ¼°¶ÔδÀ´µÄÕ¹Íû¡£
±¾ÎÄÀ´×ÔÓÚ΢ÐŹ«ÖÚºÅÇàÔÆ¼¼ÊõÉçÇø£¬ÓÉLinda±à¼¡¢ÍƼö¡£ |
|
±³¾°
½ü¼¸Äê£¬ÔÆÔÉúºÍÈÝÆ÷¼¼Êõ·Ç³£»ð±¬£¬ÇÒÈÕÇ÷³ÉÊ죬ÖÚ¶àÆóÒµÂýÂý¿ªÊ¼ÈÝÆ÷»¯½¨É裬²¢ÔÚÔÆÔÉú¼¼Êõ·½ÏòÉϲ»¶ÏµÄ̽Ë÷ºÍʵ¼ù¡£»ùÓÚÕâ¸ö´óµÄÇ÷ÊÆ£¬
2020 Äêµ× Qunar Ò²ÏòÔÆÔÉúÂõ³öÁ˵ÚÒ»²½¡ª¡ªÈÝÆ÷»¯¡£
ÔÆÔÉúÊÇһϵÁпÉÒÔΪҵÎñ¸³Äܵļ¼Êõ¼Ü¹¹×¼Ôò£¬×ñÑËü¿ÉÒÔʹӦÓþßÓÐÀ©Õ¹ÐÔ¡¢ÉìËõÐÔ¡¢ÒÆÖ²ÐÔ¡¢ÈÍÐÔµÈÌØµã¡£ÔÆÔÉúÒ²ÊÇÏÂÒ»´ú¼¼ÊõÕ»µÄ±ØÑ¡ÏËü¿ÉÒÔÈÃÒµÎñ¸üÃô½Ý¡£Í¨¹ýʵ¼ù
DevOps¡¢Î¢·þÎñ¡¢ÈÝÆ÷»¯¡¢¿É¹Û²âÐÔ¡¢·´´àÈõÐÔ(chaos engineering)¡¢ServiceMesh¡¢Serverless
µÈÔÆÔÉú¼¼ÊõÕ»£¬ÎÒÃDZã¿ÉÒÔÏíÊܵ½ÔÆÔÉú´øÀ´µÄ¼¼ÊõºìÀû¡£
Qunar ÈÝÆ÷»¯·¢Õ¹Ê±¼äÏß
Ò»Ïîм¼ÊõÒªÔÚÆóÒµÄÚ²¿Â䵨´ÓÀ´¶¼²»ÊÇÒ»õí¶ø¾ÍµÄ£¬Qunar µÄÈÝÆ÷»¯ÂäµØÒ²Í¬ÑùÈç´Ë¡£Qunar µÄÈÝÆ÷ºóÂ䵨Ö÷Òª¾ÀúÁË
4 ¸öʱ¼ä½Úµã:
2014 - 2015:
ÒµÎñÏßͬѧ¿ªÊ¼³¢ÊÔͨ¹ý Docker¡¢Docker-Compose À´½â¾öÁªµ÷»·¾³´î½¨À§ÄѵÄÎÊÌ⣬²»¹ýÓÉÓÚ
Docker-Compose µÄ±àÅÅÄÜÁ¦ÓÐÏÞ¡¢ÎÞ·¨½â¾öÕæÊµµÄ»·¾³ÎÊÌ⣬Òò´ËÈÝÆ÷»¯×îºóҲûÓÐÍÆÐÐÆðÀ´¡£
2015 - 2017:
ops ÍŶӰÑΪÁËÌá¸ß ELK ¼¯ÈºµÄÔËάЧÂÊ£¬°Ñ ES ¼¯ÈºÇ¨ÒƵ½ÁË Mesos ƽ̨ÉÏ¡£ºóÀ´Ëæ×Å
K8s Éú̬µÄ³ÉÊ죬°Ñ ES ¼¯Èº´Ó Mesos Ç¨ÒÆµ½ÁË K8s ƽ̨£¬ÔËάЧÂʵõ½Á˽øÒ»²½µÄÌáÉý¡£
2018 - 2019:
ÔÚÒµÎñÐèÇó²»¶ÏÔö¼ÓµÄ¹ý³ÌÖУ¬ÒµÎñ¶Ô²âÊÔ»·¾³µÄ½»¸¶ËٶȺÍÖÊÁ¿ÓÐÁ˸ü¸ßµÄÒªÇó£¬ÎªÁ˽â¾ö MySQL µÄ½»¸¶Ð§ÂÊÎÊÌâ(
²¢·¢Á¿´óʱ£¬ÍøÂç IO ³ÉΪÁËÆ¿¾±£¬µ¼Öµ¥¸öʵÀý½»¸¶Ê±³¤ÔÚ·ÖÖÓ¼¶)£¬ÎªÁ˽âÕâ¸öÎÊÌ⣬ÎÒÃÇ°Ñ MySQL
ÈÝÆ÷»¯£¬Í¨¹ý Docker on host µÄģʽ¿ÉÒÔÔÚ 10 ÃëÖ®ÄھͿÉÒÔ½»¸¶Ò»¸ö MySQL ʵÀý¡£
2020 - 2021:
ÔÆÔÉú¼¼ÊõÒѾ·Ç³£³ÉÊìÁË£¬Qunar Ò²¾ö¶¨Í¨¹ýÓµ±§ÔÆÔÉúÀ´ÎªÒµÎñÔö¼ÓÊÆÄÜ¡£ÔÚ¸÷¸öÍŶӯëÐÄÐÁ¦µÄŬÁ¦Ï£¬300+
µÄ P1¡¢P2 Ó¦ÓÃÒѾÍê³ÉÁËÈÝÆ÷»¯£¬²¢ÇҼƻ®ÔÚ 2021 ÄêÄêµ×È«²¿ÒµÎñÓ¦ÓÃʵÏÖÈÝÆ÷»¯¡£
Â䵨¹ý³ÌÓëʵ¼ù
ÈÝÆ÷»¯ÕûÌå·½°¸½éÉÜ
Qunar ÔÚ×öÈÝÆ÷»¯¹ý³ÌÖУ¬¸÷¸öϵͳ Portal ƽ̨¡¢Öмä¼þ¡¢ops »ù´¡ÉèÊ©¡¢¼à¿ØµÈ¶¼×öÁËÏàÓ¦µÄÊÊÅä¸ÄÔ죬¸ÄÔìºóµÄ¼Ü¹¹¾ØÕóÈçÏÂͼËùʾ¡£

Portal£ºQunar µÄ PaaS ƽ̨Èë¿Ú£¬Ìṩ CI/CD ÄÜÁ¦¡¢×ÊÔ´¹ÜÀí¡¢×ÔÖúÔËά¡¢Ó¦ÓûÏñ¡¢Ó¦ÓÃÊÚȨ(db
ÊÚȨ¡¢Ö§¸¶ÊÚȨ¡¢Ó¦ÓüäÊÚȨ)µÈ¹¦ÄÜ¡£
ÔËά¹¤¾ß£ºÌṩӦÓõĿɹ۲âÐÔ¹¤¾ß, °üÀ¨ watcher£¨¼à¿ØºÍ±¨¾¯£©¡¢bistoury £¨Java
Ó¦ÓÃÔÚÏß Debug£©¡¢qtrace£¨tracing ϵͳ£©¡¢loki/elk£¨ÌṩʵʱÈÕÖ¾/ÀëÏßÈÕÖ¾²é¿´£©¡£
Öмä¼þ£ºÓ¦ÓÃÓõ½µÄËùÓÐÖмä¼þ£¬mq¡¢ÅäÖÃÖÐÐÄ¡¢·Ö²¼Ê½µ÷¶Èϵͳ qschedule¡¢dubbo ¡¢mysql
sdk µÈ¡£
ÐéÄ⻯¼¯Èº£ºµ×²ãµÄ K8s ºÍ OpenStack ¼¯Èº¡£
Noah£º²âÊÔ»·¾³¹ÜÀíÆ½Ì¨£¬Ö§³ÖÓ¦Óà KVM/ÈÝÆ÷»ìºÏ²¿Êð¡£
CI/CD Á÷³Ì¸ÄÔì

CI/CD ¸ÄÔìǰ

CI/CD ¸ÄÔìºó
Ö÷Òª¸ÄÔìµã:
Ó¦ÓûÏñ: °ÑÓ¦ÓÃÏà¹ØµÄÔËÐÐʱÅäÖᢰ×Ãûµ¥ÅäÖᢷ¢²¼²ÎÊýµÈÊÕÁ²µ½Ò»Æð£¬ÎªÈÝÆ÷·¢²¼ÌṩͳһµÄÉùÃ÷ʽÅäÖá£
ÊÚȨϵͳ: Ó¦ÓÃËùÓеÄÊÚȨ²Ù×÷¶¼Í¨¹ýÒ»¸öÈë¿Ú½øÐУ¬²¢ÊµÏÖ×Ô¶¯»¯µÄÊÚȨ¡£
K8s ¶à¼¯Èº·½°¸: ͨ¹ýµ÷ÑжԱȣ¬KubeSphere ¶ÔÔËάÓÅ»¯¡¢Ñ¹²âÆÀ¹ÀºóÒ²Âú×ãÎÒÃǶÔÐÔÄܵÄÒªÇó£¬×îÖÕÎÒÃÇѡȡÁË
KubeSphere ×÷Ϊ¶à¼¯Èº·½°¸¡£
Öмä¼þÊÊÅä¸ÄÔì
¸ÄÔì¹Ø×¢µã£ºÓÉÓÚÈÝÆ÷»¯ºó£¬IP ¾³£±ä»¯Êdz£Ì¬£¬ËùÒÔ¸÷¸ö¹«¹²×é¼þºÍÖмä¼þÒªÊÊÅäºÍ½ÓÊÜÕâÖֱ仯¡£

Ó¦ÓÃÆ½»¬Ç¨ÒÆ·½°¸Éè¼Æ
ΪÁ˰ïÖúÒµÎñ¿ìËÙÆ½»¬µØÇ¨ÒƵ½ÈÝÆ÷£¬ÎÒÃÇÖÆ¶¨ÁËһЩ¹æ·¶ºÍ×Ô¶¯»¯²âÊÔÑéÖ¤µÈ²Ù×÷À´ÊµÏÖÕâ¸öÄ¿±ê¡£

ÈÝÆ÷»¯µÄǰÖÃÌõ¼þ: Ó¦ÓÃÎÞ״̬¡¢²»´æÔÚ post_offline hook£¨·þÎñÏÂÏߺóÖ´ÐеĽű¾£©¡¢check_url
Öв»´æÔÚÔ¤ÈȲÙ×÷¡£
²âÊÔ»·¾³ÑéÖ¤: ×Ô¶¯Éý¼¶ SDK¡¢×Ô¶¯Ç¨ÒÆ¡£ÎÒÃÇ»áÔÚ±àÒë½×¶Î°ïÖúÒµÎñ×Ô¶¯Éý¼¶ºÍ¸ü¸Ä pom ÎļþÀ´Íê³É
SDK µÄÉý¼¶£¬²¢ÔÚ²âÊÔ»·¾³²¿ÊðºÍÑéÖ¤£¬Èç¹ûÉý¼¶Ê§°Ü»á֪ͨÓû§²¢Ìáʾ¡£
ÏßÉÏÑéÖ¤: µÚÒ»²½ÏßÉÏ·¢²¼£¬µ«²»½ÓÏßÉÏÁ÷Á¿£¬È»ºóͨ¹ý×Ô¶¯»¯²âÊÔÑéÖ¤£¬Ñé֤ͨ¹ýºó½ÓÈëÏßÉÏÁ÷Á¿¡£
ÏßÉÏ KVM ÓëÈÝÆ÷»ì²¿Ê𣺱£ÏÕÆð¼û£¬ÏßÉϵÄÈÝÆ÷ºÍ KVM »áͬʱÔÚÏßÒ»¶Îʱ¼ä£¬µÈÑéÖ¤ÆÚ¹ýºóÔÙÖð²½ÏÂÏß
KVM¡£
ÏßÉÏÈ«Á¿·¢²¼: È·ÈÏ·þÎñûÎÊÌâºó£¬ÏÂÏß KVM¡£
¹Û²ì: ¹Û²ìÒ»¶Îʱ¼ä£¬Èç¹ûûÓÐÎÊÌâÔò»ØÊÕ KVM¡£
ÈÝÆ÷»¯Â䵨¹ý³ÌÖÐÅöµ½µÄÎÊÌâ
ÈçºÎ¼æÈݹýÈ¥ KVM µÄʹÓ÷½Ê½£¬²¢Ö§³Ö preStart¡¢preOnline hook ×Ô¶¨Òå½Å±¾£¿
KVM ³¡¾°ÖÐ hook ½Å±¾Ê¹Óó¡¾°½éÉÜ£º
preStart hook : Óû§ÔÚÕâ¸ö½Å±¾Öлá×Ô¶¨ÒåÃüÁ±ÈÈç»·¾³×¼±¸¡£
preOnline hook£ºÓû§»á¶¨ÒåһЩÊý¾ÝÔ¤ÈȲÙ×÷µÈ£¬Õâ¸ö¶¯×÷ÐèÒªÔÚÓ¦Óà checkurl
ͨ¹ý²¢ÇÒ½ÓÈëÁ÷Á¿Ç°Ö´ÐС£
ÎÊÌâµã£º
K8s ÔÉúÖ»ÌṩÁË preStop¡¢postStart 2 ÖÖ hook, ËüÃǵÄÖ´ÐÐʱ»úûÓÐÂú×ãÉÏÊö
2 ¸ö KVM ³¡¾°ÏÂÒµÎñÓõ½µÄ hook¡£
·ÖÎöÓë½â¾ö¹ý³Ì:
preStart hook£ºÔÚ entrypoint ÖÐ×¢Èë preStart hook ½×¶Î£¬ÈÝÆ÷Æô¶¯¹ý³ÌÖз¢ÏÖÓÐ×Ô¶¨ÒåµÄ
preStart ½Å±¾ÔòÖ´Ðиýű¾£¬ÖÁÓÚÕâ¸ö½Å±¾µÄλÖÃĿǰ¹æ·¶ÊǶ¨ÒåÔÚ´úÂëÖ¸¶¨Ä¿Â¼Ï¡£
preOnline hook£ºÓÉÓÚ preOnline ½Å±¾Ö´ÐÐʱ»úÊÇÔÚÓ¦Óà checkurl ͨ¹ýºó£¬¶øÓ¦ÓÃÈÝÆ÷Êǵ¥½ø³Ì£¬ËùÒÔÔÚÓ¦ÓÃÈÝÆ÷ÖÐÖ´ÐÐÕâ¸öÊÇÐв»Í¨µÄ¡£¶ø
postStart hook µÄÉè¼Æ¾ÍÊÇÒì²½µÄ£¬ÓëÓ¦ÓÃÈÝÆ÷µÄÆô¶¯Ò²ÊǽâñîµÄ£¬ ËùÒÔÎÒÃdzõ²½µÄ·½°¸Ñ¡ÔñÁË
postStart hook ×öÕâ¸öÊÂÇ顣ʵʩ·½°¸ÊÇ postStart hook Ö´Ðкó»á²»¶ÏÂÖѯӦÓõĽ¡¿µ×´Ì¬£¬Èç¹û½¡¿µ¼ì²â
checkurl ͨ¹ýÁË, ÔòÖ´ÐÐ preOnline ½Å±¾¡£½Å±¾³É¹¦ºóÔò½øÐÐÉÏÏß²Ù×÷, ¼´ÔÚÓ¦ÓÃĿ¼Ï´´½¨
healthcheck.html Îļþ£¬OpenResty ºÍÖмä¼þ·¢ÏÖÕâ¸öÎļþºó¾Í»á°ÑÁ÷Á¿½ÓÈëµ½Õâ¸öʵÀýÖС£
°´ÕÕÉÏÃæµÄ·½°¸£¬Pod µÄ×é³ÉÉè¼ÆÈçÏ£º

·¢²¼¹ý³Ì¶Á²»µ½±ê×¼ÊäÈëÊä³ö
³¡¾°½éÉÜ£º
ÔÚÈÝÆ÷·¢²¼¹ý³ÌÖÐÈç¹ûÓ¦ÓÃÆô¶¯Ê§°Ü£¬ÎÒÃÇͨ¹ý K8s API ÊÇÄò»µ½ÊµÊ±µÄ±ê×¼ÊäÈëÊä³öÁ÷£¬Ö»Äܵȵ½·¢²¼ÉèÖõij¬Ê±ãÐÖµ£¬Õâ¸ö¹ý³ÌÖз¢²¼ÈËÔ±ÐÄÀïÊǺܽ¹¼±µÄ£¬ÒòΪ²»È·¶¨·¢ÉúÁËʲô¡£ÈçÏÂͼËùʾ£¬²¿Êð¹ý³ÌÖÐÓ¦Óõĸüй¤×÷Á÷ÖÐʲô¶¼¿´²»µ½¡£


ÎÊÌâµã:
K8s API ΪʲôÄò»µ½±ê×¼ÊäÈëÊä³ö£¿
·ÖÎöÓë½â¾ö¹ý³Ì£º
ͨ¹ý kubectl logs ²é¿´µ±Ê±µÄ Pod ÈÕÖ¾£¬Ê²Ã´¶¼Ã»ÓÐÄõ½£¬³¬Ê±Ê±¼ä¹ýºó²ÅÄõ½¡£ËµÃ÷ÎÊÌâ²»ÔÚ³ÌÐò±¾Éí£¬¶øÊÇÔÚ
K8s µÄ»úÖÆÉÏ£»
²é¿´ postStart Hook µÄÏà¹ØÎĵµ£¬ÓÐÒ»¶Î½éÉÜÌáµ½ÁË postHook Èç¹ûÖ´ÐÐʱ¼ä³¤»òÕß
hang ס£¬ÈÝÆ÷µÄ״̬Ҳ»á hang ס£¬²»»á½øÈë running ״̬, ¿´µ½ÕâÌõÐÅÏ¢£¬´ó¸Å²Â²âµ½×ï¿ý»öÊ×¾ÍÊÇÕâ¸ö
postStart hook ÁË¡£

»ùÓÚÉÏÃæµÄ²Â²â£¬°Ñ postStart hook È¥µôºó²âÊÔ£¬Ó¦ÓÃÈÝÆ÷µÄ±ê×¼ÊäÈë¿ÉÒÔʵʱÄõ½ÁË¡£
ÕÒµ½ÎÊÌâºó£¬½â¾ö·½·¨Ò²¾Í¼òµ¥ÁË£¬°Ñ postStart hook ÖÐʵÏֵŦÄܷŵ½ Sidecar
ÖоͿÉÒÔ½â¾ö¡£ÖÁÓÚ Sidecar ÈçºÎÔÚÓ¦ÓÃÈÝÆ÷µÄĿ¼Öд´½¨ healthcheck.html Îļþ£¬¾ÍÐèÒªÓõ½¹²Ïí¾íÁË¡£Ðµķ½°¸Éè¼ÆÈçÏ£º

ʹÓÃÉÏÊö·½°¸ºó£¬·¢²¼Á÷³ÌµÄ±ê×¼ÊäÈëÊä³ö¡¢×Ô¶¨Òå hook ½Å±¾µÄÊä³ö¡¢Pod ʼþµÈ¶¼ÊÇʵʱ¿É¼ûµÄÁË,
·¢²¼¹ý³Ì¸ü͸Ã÷ÁË¡£
²¢·¢ÀÈ¡¾µÏñ³¬Ê±
³¡¾°½éÉÜ£º
ÎÒÃǵÄÓ¦ÓÃÊǶà»ú·¿¶à¼¯Èº²¿ÊðµÄ£¬µ±Ò»¸öÓ¦ÓõÄа汾·¢²¼Ê±£¬ÓÉÓÚÓ¦ÓõÄʵÀýÊý½Ï¶à£¬ÓÐ 50+ ¸ö²¢·¢´Ó
harbor ÀÈ¡¾µÏñʱ£¬ÆäÖÐһЩÈÎÎñÊÕµ½Á˾µÏñÀÈ¡³¬Ê±µÄ±¨´íÐÅÏ¢£¬½ø¶øµ¼ÖÂÕû¸ö·¢²¼ÈÎÎñʧ°Ü¡£³¬Ê±Ê±¼äÊÇ
kubelet ĬÈÏÉèÖÃµÄ 1 ·ÖÖÓ¡£
·ÖÎöÓë½â¾ö£º
ͨ¹ýÅŲé×îÖÕÈ·ÈÏÊÇ harbor ÔÚ²¢·¢ÀÈ¡¾µÏñʱ´æÔÚÐÔÄÜÎÊÌ⣬ÎÒÃDzÉÈ¡µÄÓÅ»¯·½°¸ÊÇͨÓÃµÄ p2p
·½°¸£¬DragonFly + Harbor¡£

²¢·¢´óʱÊÚȨ½Ó¿Ú¿¹²»×¡
³¡¾°½éÉÜ£º
Ó¦Ó÷¢²¼¹ý³ÌÖе÷ÓÃÊÚȨ½Ó¿Úʧ°Ü£¬K8s µÄ×ÔÓú»úÖÆ»á²»¶ÏÖØ½¨ÈÝÆ÷²¢ÖØÐÂÊÚȨ£¬²¢·¢Á¿±È½Ï´ó£¬×îÖÕ°ÑÊÚȨ·þÎñÍϿ塣
ÎÒÃǵÄÈÝÆ÷ÊÚȨ·½°¸ÈçÏÂ:
Pod init ÈÝÆ÷Æô¶¯Ê±½øÐе÷ÑÐÊÚȨ½Ó¿Ú½øÐÐÊÚȨ²Ù×÷£¬°üÀ¨ ACL ºÍ mysql µÄ°×Ãûµ¥¡£
ÈÝÆ÷Ïú»Ùʱ»áÖ´ÐÐ Sidecar ÈÝÆ÷µÄ preStop hook ÖÐÖ´ÐÐȨÏÞ»ØÊÕ²Ù×÷¡£

ÎÊÌâµã:
ACL ÊÚȨ½Ó¿ÚÉæ¼°µ½ÁË·À»ðǽ£¬QPS ±È½ÏµÍ£¬´óÁ¿ÈÝÆ÷½øÐÐ ACL ÊÚȨʱ°Ñ·þÎñÍÏ¿å ¡£
·ÖÎöÓë½â¾ö£º
ΪÁ˽â¾öÉÏÊöµÄÎÊÌ⣬ÏÞÁ¿ºÍ½µµÍÊÚȨ½Ó¿Úµ÷ÓôÎÊýÊÇÓÐЧµÄ½â¾ö·½Ê½¡£ÎÒÃDzÉÈ¡ÁËÏÂÃæ¼¸¸ö´ëÊ©:
init ÈÝÆ÷ÖеÄÖØÊÔ´ÎÊýÏÞÖÆÎª 1 ´Î¡£
ÊÚȨ½Ó¿Ú°´Ó¦ÓÃºÍ IP ÏÞÁ÷£¬ ³¬¹ý 3 ´ÎÔòÖ±½Ó·µ»ØÊ§°Ü£¬²»»áÔÙ½øÐÐÊÚȨ²Ù×÷¡£
ACL ÖÐÉæ¼°µÄһЩͨÓõĶ˿ڣ¬ÎÒÃÇͳһ×öÁ˰×Ãûµ¥£¬Ó¦ÓÃÎÞÐèÔÙ½øÐÐÊÚȨ²Ù×÷¡£
Java Ó¦ÓÃÔÚÈÝÆ÷³¡¾°ÏÂÈçºÎÖ§³ÖÔ¶³Ì Debug
KVM ³¡¾° Debug ½éÉÜ£º
ÔÚ¿ª·¢ Java Ó¦ÓõĹý³ÌÖУ¬Í¨¹ýÔ¶³Ì Debug ¿ÉÒÔ¿ìËÙÅŲ鶨λÎÊÌ⣬Òò´ËÊÇ¿ª·¢ÈËÔ±±Ø²»¿ÉÉÙµÄÒ»¸ö¹¦ÄÜ¡£Debug
¾ßÌåÁ÷³Ì: ¿ª·¢ÈËÔ±ÔÚ Noah »·¾³¹ÜÀíÆ½Ì¨µÄ½çÃæµã»÷¿ªÆô Debug, Noah »á×Ô¶¯Îª¸Ã Java
Ó¦ÓÃÅäÖÃÉÏ Debug Ñ¡Ï-Xdebug -Xrunjdwp: transport=dt_socket,
server=y, suspend=n, address=127.0.0.1:50005£¬²¢ÖØÆô¸Ã
Java Ó¦Óã¬Ö®ºó¿ª·¢ÈËÔ±¾Í¿ÉÒÔÔÚ IDE ÖÐÅäÖÃÔ¶³Ì Debug ²¢½øÈëµ÷ÊÔģʽÁË¡£

ÈÝÆ÷³¡¾°µÄ Debug ·½°¸£º
²âÊÔ»·¾³µÄ Java Ó¦ÓÃĬÈÏ¿ªÆô Debug ģʽ£¬ÕâÑùÒ²±ÜÃâÁ˸ü¸Ä Debug ÖØ½¨ Pod
µÄ¹ý³Ì£¬ËÙ¶È´Ó KVM µÄ·ÖÖÓ¼¶µ½ÏÖÔÚµÄÃë¼¶¡£µ±Óû§Ï뿪Æô Debug ʱ£¬Noah »áµ÷Óà K8s
exec ½Ó¿ÚÖ´ÐÐ socat Ïà¹ØÃüÁî½øÐж˿ÚÓ³Éäת·¢£¬Èÿª·¢ÈËÔ±¿ÉÒÔͨ¹ý socat ¿ªµÄ´úÀíÁ¬½Óµ½
Java Ó¦ÓÃµÄ Debug ¶Ë¿Ú¡£
ÎÊÌâµã£º
ÈÝÆ÷³¡¾°ÏÂÔÚÓû§ Debug ¹ý³ÌÖУ¬µ±ÇëÇó×ßµ½ÁËÉèÖõĶϵãºó£¬Debug ¹¦ÄÜʧЧ¡£
·ÖÎöÓë½â¾ö¹ý³Ì£º
¸´ÏÖÈÝÆ÷³¡¾°Ï Debug£¬¹Û²ì¸Ã Pod µÄ¸÷ÏîÖ¸±ê£¬·¢ÏÖ Debug ¹¦ÄÜʧЧµÄʱºòϵͳÊÕµ½ÁËÒ»¸ö
liveness probe failed£¬kill pod µÄʼþ¡£¸ù¾ÝÕâ¸öʼþ¿ÉÒÔÅжϳöµ±Ê± liveness
check ʧ°Ü£¬Ó¦ÓÃÈÝÆ÷²Å±» kill µÄ£¬Ó¦ÓÃÈÝÆ÷ÖØÆô´úÀí½ø³ÌÒ²¾ÍËæÖ®ÏûʧÁË£¬Debug Ò²¾ÍʧЧÁË¡£
¹ØÓÚ Debug ¹ý³Ì checkurl Ϊʲôʧ°ÜµÄÎÊÌ⣬µÃµ½µÄ´ð°¸ÊÇ Debug ʱµ±ÇëÇó×ßµ½¶Ïµãʱ£¬Õû¸ö
JVM ÊÇ hang סµÄ£¬Õâ¸öʱºòÈκÎÇëÇó¹ýÀ´Ò²»á±» hang ס£¬µ±È»Ò²°üÀ¨ checkurl£¬ÓÚÊÇÎÒÃÇÒ²ÌØµØÔÚ
KVM ³¡¾°ºÍÈÝÆ÷³¡¾°·Ö²¼×öÁ˲âÊÔ£¬½á¹ûҲȷʵÊÇÕâÑùµÄ¡£
ÁÙʱ½â¾ö·½°¸ÊǰѶϵãµÄ×è¶Ï¼¶±ð¸ÄΪÏ̼߳¶µÄ£¬ÕâÑù¾Í²»»á×è¶Ï checkurl ÁË, idea ÖÐĬÈϵÄÑ¡ÏîÊÇ
Suspend All£¬¸ÄΪ Suspend Thread ¼´¿É¡£²»¹ýÕâ¸öÒ²²»ÊÇ×îÓŽ⣬ÒòΪÕâ¸öÐèÒªÓû§ÊÖ¹¤ÅäÖÃ×è¶Ï¼¶±ð£¬ÓÐÈÏ֪ѧϰ³É±¾¡£

»Øµ½×î³õµÄÎÊÌâÉÏ£¬ÎªÊ²Ã´ÈÝÆ÷³¡¾°ÏÂÓöµ½Õâ¸öÎÊÌ⣬¶ø KVM ûÓУ¬Ö÷ÒªÊÇÒòΪÈÝÆ÷³¡¾° K8s ÌṩÁË×ÔÓúÄÜÁ¦£¬K8s
»á¶¨Ê±Ö´ÐÐ liveness check, µ±Ê§°Ü´ÎÊý´ïµ½Ö¸¶¨µÄãÐֵʱ£¬K8s »á kill µôÈÝÆ÷²¢ÖØÐÂÀÆðÒ»¸öеÄÈÝÆ÷¡£
ÄÇÎÒÃÇÖ»ºÃ´Ó K8s µÄ liveness ̽ÕëÉÏ×ÅÊÖÁË£¬Ì½ÕëĬÈÏÖ§³Ö exec¡¢tcp ¡¢httpGet
3 ÖÖģʽ£¬µ±Ç°Ê¹ÓõÄÊÇ httpGet£¬ÕâÖÖ·½Ê½Ö»Ö§³ÖÒ»¸ö url, ÎÞ·¨Âú×ãÕâ¸ö³¡¾°ÐèÇó¡£¾¹ý×éÄÚÌÖÂÛ£¬
×îºó´ó¼Ò¾ö¶¨ÓÃÕâ¸ö±í´ïʽ (checkurl == 200) || (socat process &&
java process alive) ÔÚ×÷ΪӦÓÃµÄ liveness ¼ì²â·½Ê½£¬µ± Debug ×ßµ½¶ÏµãµÄʱºò,
Ó¦ÓÃÈÝÆ÷¾Í²»»á×è¶ÏÁË£¬ ÍêÃÀµÄ½â¾öÁËÕâ¸öÎÊÌâ¡£
ÒÔÉϾÍÊÇÎÒÃÇÂ䵨ÈÝÆ÷»¯¹ý³ÌÖÐÓöµ½µÄ¼¸¸öÎÊÌâÓëÎÒÃǵĽâ¾ö˼·¡£ÆäÖкÜÖØÒªµÄÒ»µãÊÇ´Ó KVM Ç¨ÒÆµ½ÈÝÆ÷ʱÐèÒª¿¼ÂÇÓû§µÄʹÓÃϰ¹ß¡¢ÀúÊ·¹¦ÄܼæÈݵÈÒªµã£¬Òª×öºÃ¼æÈݺÍÈ¡ÉᣬֻÓÐÕâÑùÈÝÆ÷»¯Â䵨²Å»á¸ü˳³©¡£
δÀ´Õ¹Íû
¶à¼¯ÈºÎȶ¨ÐÔÖÎÀí
Èÿɹ۲âÐÔÊý¾Ý¸üÈ«Ãæ¡¢¸²¸Ç¶È¸ü¹ã£¬½ø¶øÍêÉÆÎÒÃÇµÄ APM ϵͳ£¬ÌáÉýÅŲéÎÊÌâЧÂÊ¡£
ͨ¹ýʵʩ»ìã繤³ÌÀ´ÑéÖ¤¡¢·¢ÏÖºÍÏû³ýÈÝÆ÷»¯³¡¾°µÄÎȶ¨ÐÔÃ¤Çø¡£
Ìá¸ß×ÊÔ´ÀûÓÃÂÊ
¸ù¾ÝÒµÎñÖ¸±êʵÏÖµ¯ÐÔÀ©ËõÈÝ¡£
¸ù¾ÝÓ¦ÓõÄÀúÊ·Êý¾ÝÖÇÄܵĵ÷Õû requests¡£
ServiceMesh ·½°¸Â䵨
ÎÒÃÇÊÇ»ùÓÚ Istio ºÍ MOSN ÒÔ¼°µ±Ç°µÄ»ù´¡¼Ü¹¹×öµÄ mesh ·½°¸£¬Ä¿Ç°ÔÚ²âÊԽ׶Σ¬ÕâÌ×·½°¸Â䵨ºóÏàÐÅ»áÈûù´¡¼Ü¹¹¸üÃô½Ý¡£ |