Uberãšã³ãžãã¢ã«ãã£ãŠéçºãããã¹ããŒãã¬ã¹ã¹ãã¬ãŒãžã·ã¹ãã ã¯ãåœç€Ÿã®æãéèŠãã€æ倧ã®ãµãŒãã¹ïŒ ã¡ã¶ãã³ãªã© ïŒã§äœ¿çšãããŠããŸãã ã¹ããŒãã¬ã¹ã¯ã MySQLã¯ã©ã¹ã¿ãŒäžã§å®è¡ãããã¹ã±ãŒã©ãã«ã§ãã©ãŒã«ããã¬ã©ã³ããªããŒã¿ãŠã§ã¢ããŠã¹ã§ã¹ã ãããã®ã¯ã©ã¹ã¿ãŒã16åããå Žåããããã®ç®¡çã¯ç°¡åã§ããã ããããçŸæç¹ã§ã¯1,000ãè¶
ããŠãããå°ãªããšã4,000ã®ããŒã¿ããŒã¹ãµãŒããŒãå±éãããŠããŸãã ãã®ãããªã·ã¹ãã ã管çããã«ã¯ããŸã£ããç°ãªãã¯ã©ã¹ã®ããŒã«ãå¿
èŠã§ãã
Schemadockã«å«ãŸããå€ãã®ã³ã³ããŒãã³ãã®ãã¡ãæ¯èŒçå°ãããéåžžã«éèŠãªéšåã¯Dockerã§ãã ããã¹ã±ãŒã©ãã«ãªãœãªã¥ãŒã·ã§ã³ãžã®ç§»è¡ã¯ç§ãã¡ã«ãšã£ãŠç»æçãªåºæ¥äºã§ããããã®èšäºã§ã¯Dockerããããéæããã®ã«ã©ã®ããã«åœ¹ç«ã€ãã«ã€ããŠè©±ããŸããã
æåã¯ããã¹ãŠã®ã¯ã©ã¹ã¿ãŒã管çããããã«ãããŸããŸãªã¹ã¯ãªããã§ããPuppetã䜿çšããå€ãã®ããšãæåã§è¡ããŸããã ããããUberã®æé·ãéããªããUberã倧ãããªãã°ãªãã»ã©ããã®ã¢ãããŒãã䜿ãç¶ããã®ãé£ãããªããŸããã ãã®ãããMySQLã¯ã©ã¹ã¿ãŒã管çããããã®ãã䟿å©ãªããŒã«ãæ¢ãå§ããŸããã äž»ãªèŠä»¶ã¯æ¬¡ã®ãšããã§ãã
- 1ã€ã®ãã¹ãäžã®è€æ°ã®ããŒã¿ããŒã¹ãµãŒããŒã®åäœã
- å®å
šèªååã
- ãã¹ãŠã®ããŒã¿ã»ã³ã¿ãŒã®ãã¹ãŠã®ã¯ã©ã¹ã¿ãŒã管çããã³ç£èŠããããã®åäžã®ãšã³ããªãã€ã³ãã
ãã®çµæãSchemadockãšåŒã°ãããœãªã¥ãŒã·ã§ã³ãã§ããŸããã çŸåšãMySQLãµãŒããŒã¯ãæ§æãã¡ã€ã«ã䜿çšããŠã¯ã©ã¹ã¿ãŒããããžã決å®ããã¿ãŒã²ããç¶æ
ã«ãã£ãŠå¶åŸ¡ãããDockerã³ã³ãããŒã§åäœããŸãã ããšãã°ãã¯ã©ã¹ã¿ãŒãAãã«ã¯3ã€ã®ãµãŒããŒãããããã®ãã¡ã®ã©ãããã¹ã¿ãŒã«ãªãå¿
èŠãããããšã瀺ããŠããå ŽåããããŸãã é©åãªããŒã«ãåã
ã®ãµãŒããŒã«é©çšããããšã¯ãç¹å¥ãªãšãŒãžã§ã³ãããã°ã©ã ã«ãã£ãŠå®è¡ãããŸãã åäžã®ãµãŒãã¹ããã¹ãŠã®ãµãŒããŒã®ã¿ãŒã²ããç¶æ
ãç£èŠããæšæºããéžè±ããå Žåãç¶æ³ãä¿®æ£ããããã«å¿
èŠãªã¢ã¯ã·ã§ã³ãå®è¡ããŸãã
ãªãDockerãªã®ãïŒ
ã³ã³ããã䜿çšãããšãç°ãªãããŒãžã§ã³ãšæ§æãæã€ç°ãªããã¹ãã§è€æ°ã®MySQLããã»ã¹ãç°¡åã«å®è¡ã§ããŸãã ãŸããåããã·ã³äžã«è€æ°ã®å°ããªã¯ã©ã¹ã¿ãŒãé
眮ã§ãããããæçµçã«ã¯åãã¯ã©ã¹ã¿ãŒæ°ã§ããå°ãªããã¹ãã䜿çšã§ããŸãã æåŸã«ãPuppetã«äŸåããªããªããåããã¹ãèšå®ã䜿çšããŸãã
Dockerèªèº«ã«é¢ããŠã¯ãçŸåšãåœç€Ÿã®ãšã³ãžãã¢ã¯ããã«åºã¥ããŠãã¹ãŠã®ã¹ããŒãã¬ã¹ãµãŒãã¹ãäœæããŠããããããã®ã·ã¹ãã ãããç¥ã£ãŠããŸãã 圌女ã¯ãã¡ããå®ç§ã§ã¯ãããŸããããçŸæç¹ã§ã¯ç§ãã¡ã«ãšã£ãŠæè¯ã®éžæè¢ã§ãã
Docker以å€ã«ã¯äœããããŸããïŒ
Dockerã®ä»£æ¿æ段ã¯æ¬¡ã®ãšããã§ããå®å
šä»®æ³åã LXCã³ã³ãã㌠ãããã³äŸãã°Puppetã䜿çšããŠMySQLããã»ã¹ãçŽæ¥ç®¡çããŸãã Dockerã¯åœæã®æ¢åã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã«æãé©ããŠãããããéåžžã«é·ãééžæããŸããã§ããã ãã ãã以åã«Dockerã䜿çšããŠããªãã£ãå ŽåãMySQLã®ã¿ãžã®å®è£
ã¯ããªã倧ããªãããžã§ã¯ãã«ãªãå¯èœæ§ããããŸãããã®ããã«ã¯ãã€ã¡ãŒãžã®äœæãšé
åžãDockerèªäœã®ç£èŠãšæŽæ°ããã°ã®åéããããã¯ãŒã¯ãšã®é£æºæ©èœãªã©ããã¹ã¿ãŒããå¿
èŠããããŸãã
ã€ãŸããDockerã®ãããã€ã«ã¯æéãšãªãœãŒã¹ãå¿
èŠã§ãã ããã«ãDockerã¯ãã¯ãããžãŒãšèŠãªãããã¹ãã§ãããDockerãããã¹ãŠã®åé¡ã®è§£æ±ºçãæåŸ
ãã¹ãã§ã¯ãããŸããã Uberã§ã¯ãDockerãã³ã³ããŒãã³ãã®1ã€ã«ãããªãMySQLããŒã¿ããŒã¹ç®¡çã·ã¹ãã ã®èšèšã«æ
éã«åãçµã¿ãŸããã ãããããã¹ãŠã®äŒæ¥ãUberã®èŠæš¡ã«éããŠããããã§ã¯ãªããããPuppetã AnsibleããŸãã¯åæ§ã®ãœãããŠã§ã¢ã䜿çšããã»ããããå ŽåããããŸãã
ã¹ããŒãã¬ã¹ã®ç»å
åºæ¬çã«ããã®ã€ã¡ãŒãžã¯Percona Serverã®ããŠã³ããŒããšã€ã³ã¹ããŒã«ã®ã¿ãè¡ã ã mysqldãèµ·åããŸããããã¯ãMySQLãæèŒããæšæºã®Dockerã€ã¡ãŒãžãšã»ãŒåãã§ãã ãã ããããŠã³ããŒããšã€ã³ã¹ããŒã«ã®éã«ããã«ããã€ãã®æäœãå®è¡ãããŸãã
- æ¥ç¶ãããããªã¥ãŒã ã«ããŒã¿ããªãå Žåã¯ãããŒããå¿
èŠã§ãã ãŠã£ã¶ãŒãã§ã¯ãmysql_install_dbãå®è¡ããããã€ãã®æšæºãŠãŒã¶ãŒãšããŒãã«ãäœæããŸãã ã¬ããªã«ïŒUberã®çšèªã§ãããããªã³-ãããã®è»¢éïŒã®å Žåãããã¯ã¢ããã³ããŒãŸãã¯ã¯ã©ã¹ã¿ãŒå
ã®å¥ã®ããŒãããããŒã¿ã®èªã¿èŸŒã¿ãéå§ããŸãã
- Mysqldã¯ãããŒã¿ã®ããŠã³ããŒããå®äºãããšããã«èµ·åããŸãã
- äœããã®çç±ã§ããŒã¿ã®ã³ããŒãçµäºããªãå Žåãã³ã³ããã¯åæ¢ããŸãã
ã³ã³ããã®åœ¹å²ã¯ãç°å¢å€æ°ã䜿çšããŠèšå®ãããŸãã ããŒã¿ãååŸããã¡ã«ããºã ã«æ³šæãã䟡å€ããããŸããã€ã¡ãŒãžèªäœã«ã¯ãã¬ããªã±ãŒã·ã§ã³ããããžãã¹ããŒã¿ã¹ãã§ãã¯ãªã©ãèšå®ããããã®ããžãã¯ãå«ãŸããŠããŸããããã®ããžãã¯ã¯MySQLèªäœãããé »ç¹ã«å€æŽããããããããããåé¢ããããšã¯éåžžã«åççã§ãã
MySQLããŒã¿ãã£ã¬ã¯ããªã¯ãã¹ããã¡ã€ã«ã·ã¹ãã ããããŠã³ããããŸããã€ãŸããDockerã«ããèšé²ã®ãªãŒããŒãããã¯ãããŸããã MySQLã®æ§æã¯åŒãç¶ãã€ã¡ãŒãžã«æžã蟌ãŸãããããã€ã¡ãŒãžã¯äžå®å®ã«ãªããŸãã æ§æèªäœã¯ç·šéã§ããŸãããã³ã³ãããåå©çšããªãããããããã®å€æŽã¯æå¹ã«ãªããŸããã ã³ã³ãããäœããã®çç±ã§åæ¢ããå Žåãåã³äœ¿çšãããããšã¯ãããŸããã ã³ã³ãããŒãåé€ããåããã©ã¡ãŒã¿ãŒã䜿çšããŠææ°ã®ã€ã¡ãŒãžããæ°ããã³ã³ãããŒãäœæãïŒãã以éãã¿ãŒã²ããã®ç¶æ
ãå€æŽãããå Žåã¯æ°ãããã©ã¡ãŒã¿ãŒã䜿çšããŠïŒããããéå§ããŸãã
ãã®ã¢ãããŒãã«ã¯ã次ã®å©ç¹ããããŸãã
- æ§æã®ããªãããå¶åŸ¡ããããšãã¯ããã«ç°¡åã«ãªã£ãŠããŸãã ãã®åé¡ã¯ãDockerã€ã¡ãŒãžã®ããŒãžã§ã³çªå·ã«èŠçŽãããŠããã泚ææ·±ãç£èŠããŠããŸãã
- MySQLã®æŽæ°ãã¯ããã«ç°¡åã«ãªããŸããã æ°ããã€ã¡ãŒãžãäœæããã³ã³ãããé çªã«åæ¢ããŸãã
- äœããå£ããå Žåãåèµ·åããã ãã§ãã åé¡ã®ããã³ã³ãããåé€ããäœã修埩ããããšããã«æ°ããã³ã³ãããéå§ããŸãã
ã€ã¡ãŒãžãäœæããã«ã¯ãã¹ããŒãã¬ã¹ãµãŒãã¹ãæäŸããåãã€ã³ãã©ã¹ãã©ã¯ãã£ã䜿çšãããŸãã ãŸããããŒã¿ã»ã³ã¿ãŒéã§ã€ã¡ãŒãžãè€è£œããŠãããŒã«ã«ã¬ãžã¹ããªã§äœ¿çšã§ããããã«ããŸãã
åããã¹ãã§è€æ°ã®ã³ã³ãããå®è¡ããããšã«ã¯æ¬ ç¹ããããŸãã ã³ã³ããéã«ã¯éåžžã®I / Oåé¢ããªãããããããã®ã³ã³ãããI / Oã·ã¹ãã ã®ã¹ã«ãŒãããå
šäœã䜿çšã§ããæ®ãã®ã³ã³ããã®åäœã«æªåœ±é¿ãåãŒããŸãã I / Oã¯ã©ãŒã¿ã¯Docker 1.10ã«ç»å ŽããŸãããããŸã å®éšããæéããããŸããã§ããã ãã¹ãäžã®ã³ã³ããã®æ°ãå¶åŸ¡ããåããŒã¿ããŒã¹ã®ããã©ãŒãã³ã¹ãåžžã«ç£èŠããããšã«ããããã®åé¡ã«åãçµãã§ããŸãã
ã³ã³ãããŒãšããããžãŒã®æ§æ
ãŠã£ã¶ãŒããŸãã¯ã¬ããªã«ãšããŠæ§æã§ããDockerã€ã¡ãŒãžãã§ããã®ã§ãäœããã³ã³ãããŒãèµ·åããå¿
èŠãªã¬ããªã±ãŒã·ã§ã³ããããžãæ§æããå¿
èŠããããŸãã ãããè¡ãããã«ããã¹ãŠã®ããŒã¿ããŒã¹ã®æçµç¶æ
ã«é¢ããæ
å ±ãåãåãç¹å¥ãªãšãŒãžã§ã³ããåãã¹ãã§èµ·åãããŸãã æçµç¶æ
ã®äžè¬çãªèª¬æã¯æ¬¡ã®ãšããã§ãã
âschemadock01-mezzanine-mezzanine-us1-cluster8-db4â: { âapp_idâ: âmezzanine-mezzanine-us1-cluster8-db4â, âstateâ: âstartedâ, âdataâ: { âsemi_sync_repl_enabledâ: false, ânameâ: âmezzanine-us1-cluster8-db4â, âmaster_hostâ: âschemadock30â, âmaster_portâ: 7335, âdisabledâ: false, âroleâ: âminionâ, âportâ: 7335, âsizeâ: âallâ } }
MezzanineããŒã¿ããŒã¹ïŒããŒã7335ïŒã®ã¬ããªã«ã®1ã€ããã¹ãschemadock01ã§å®è¡ãããschemadock30ïŒ7335ã®ããŒã¿ããŒã¹ããã®ãã¹ã¿ãŒã«ãªãå¿
èŠããããšæžãããŠããŸãã ãµã€ãºã¯ãã¹ãŠã«èšå®ãããŸãã ã€ãŸãããã®ããŒã¿ããŒã¹ã¯schemadock01äžã®å¯äžã®ããŒã¿ããŒã¹ã§ããã䜿çšå¯èœãªãã¹ãŠã®ã¡ã¢ãªã䜿çšããå¿
èŠããããŸãã
ãã®ãããªã¿ãŒã²ããç¶æ
ã®èª¬æãäœæããæé ã¯ãå¥ã®ãããªã±ãŒã·ã§ã³ã®ãããã¯ã§ãã次ã®ã¹ãããã«é²ã¿ãŸãããã¹ãã§å®è¡ãããŠãããšãŒãžã§ã³ãã¯ãã¿ãŒã²ããç¶æ
ã®èª¬æãåä¿¡ããŠââããŒã«ã«ã«ä¿åããåŠçãéå§ããŸãã
åŠçã¯30ç§ããšã«å®è¡ãããç¡éã«ãŒãã§ãïŒ30åããšã«1åPuppetãå®è¡ãããããªãã®ã§ãïŒã ã«ãŒãã§ã¯ãçŸåšã®ç¶æ
ãšã¿ãŒã²ããã®ç¶æ
ã®å¯Ÿå¿ããã§ãã¯ãããŸãã ãããè¡ãã«ã¯ã次ã®ã¢ã¯ã·ã§ã³ãå®è¡ãããŸãã
- ã³ã³ãããå®è¡ãããŠãããã©ããã確èªããŠãã ããã ããã§ãªãå Žåã¯ãäœæããŠå®è¡ããŸãã
- ã³ã³ããè€è£œããããžã確èªããŠãã ããã 圌女ã«äœãåé¡ãããå Žåã¯ãä¿®æ£ããŠã¿ãŠãã ããã
- ãããã¬ããªã«ã§ããããã¹ã¿ãŒã§ããå¿
èŠãããå Žåã¯ãããŒã«ã®å€æŽãå®å
šã§ããããšã確èªããŠãã ããã ãããè¡ãã«ã¯ãçŸåšã®ãã¹ã¿ãŒã®èªã¿åãå°çšã¹ããŒã¿ã¹ãèšå®ãããŠãããã©ãããããã³ãã¹ãŠã®GTIDãåä¿¡ããã³é©çšãããŠãããã©ããã確èªããŸãã ãã¹ãŠã®æ¡ä»¶ãæºããããŠããå Žåãåã®ãŠã£ã¶ãŒãã®ãªã³ã¯ã解é€ããŠèšé²ãæå¹ã«ããããšãã§ããŸãã
- ãããç¡å¹ã«ãã¹ããŠã£ã¶ãŒãã§ããå Žåãèªã¿åãå°çšã¢ãŒããæå¹ã«ããŸãã
- ãããã¬ããªã«ã§ããããã¬ããªã±ãŒã·ã§ã³ãå®è¡ãããŠããªãå Žåã¯ãã¬ããªã±ãŒã·ã§ã³ãæ§æããŸãã
- ããŒã¿ããŒã¹ã®åœ¹å²ã«å¿ããŠãããŸããŸãªMySQLãã©ã¡ãŒã¿ãŒïŒread_onlyããã³super_read_onlyãsync_binlogãªã©ïŒã確èªããŸãã ãŠã£ã¶ãŒãã§æžã蟌ã¿ãæå¹ã«ããå¿
èŠããããã¬ããªã«ã¯read_onlyãªã©ã«ããå¿
èŠããããŸããããã«ãbinlog fsyncããã³åæ§ã®ãã©ã¡ãŒã¿ãŒÂ²ãç¡å¹ã«ããããšã§ãã¬ããªã«ã®è² æ
ã軜æžããŸãã
- pt-heartbeatãpt-deadlock-loggerãªã©ããã¹ãŠã®è£å©ã³ã³ãããŒãéå§ãŸãã¯åæ¢ããŸãã
ç§ãã¡ã¯ã1ã€ã®ããã»ã¹-1ã€ã®ç®æš-1ã€ã®ã³ã³ããããšããã¢ã€ãã¢ãå
å®ã«æ¯æããŠããããšã«æ³šæããããšãéèŠã§ãã ãã®å Žåãäœæ¥ã³ã³ãããåæ§æããå¿
èŠã¯ãããŸãããããã«ãæŽæ°ã倧å¹
ã«ç°¡çŽ åãããŸãã
ãšã©ãŒãçºçããå Žåãããã»ã¹ã¯å¯Ÿå¿ããã¡ãã»ãŒãžãçæããŠçµäºãã次ã®è©Šè¡äžã«æé å
šäœãåã³ç¹°ãè¿ãããŸãã ãšãŒãžã§ã³ãéã®èª¿æŽã®å¿
èŠæ§ãæå°éã«æãããããªæ¹æ³ã§ã·ã¹ãã ãæ§æããããšããŸãã ããã¯ãããšãã°ãæ°ããã¯ã©ã¹ã¿ãŒãåæåãããšãã«ã·ãŒã±ã³ã¹ãæ°ã«ããªãããšãæå³ããŸãã ãã®æäœãæåã§è¡ãå Žåãããã次ã®æé ãå®è¡ããå¿
èŠããããŸãã
- MySQLãŠã£ã¶ãŒããäœæããåäœæºåãæŽããŸã§åŸ
ã¡ãŸãã
- æåã®ã¬ããªã«ãäœæããŠãã¹ã¿ãŒã«æ¥ç¶ãã
- æ®ãã®ã¬ããªã«ã«ã€ããŠåã®æ®µèœãç¹°ãè¿ããŸãã
ãã®çµæãåæ§ã®ããšãäŸç¶ãšããŠèµ·ãããŸãã ãããåæã«ãã¹ãããã®é åºã«ã€ããŠã¯ãŸã£ããå¿é
ããŠããŸããã å¿
èŠãªæ§æãèšè¿°ããã¿ãŒã²ããç¶æ
ã®ã¿ãäœæããŸãã
âschemadock01-mezzanine-cluster1-db1â: { âdataâ: { âdisabledâ: false, âroleâ: âmasterâ, âportâ: 7335, âsizeâ: âallâ } }, âschemadock02-mezzanine-cluster1-db2â: { âdataâ: { âmaster_hostâ: âschemadock01â, âmaster_portâ: 7335, âdisabledâ: false, âroleâ: âminionâ, âportâ: 7335, âsizeâ: âallâ } }, âschemadock03-mezzanine-cluster1-db3â: { âdataâ: { âmaster_hostâ: âschemadock01â, âmaster_portâ: 7335, âdisabledâ: false, âroleâ: âminionâ, âportâ: 7335, âsizeâ: âallâ } }
ãã®æ
å ±ã¯é©åãªãšãŒãžã§ã³ãã«ã©ã³ãã ãªé åºã§éä¿¡ãããã¿ã¹ã¯ã®å®äºãéå§ããŸãã ã¿ãŒã²ããç¶æ
ãéæããã«ã¯ãã·ãŒã±ã³ã¹ã«ãã£ãŠã¯ãããã€ãã®è©Šè¡ãå¿
èŠã«ãªãå ŽåããããŸãã éåžžã¯å°æ°ã§ãããäžéšã®æäœã¯æ°çŸååèµ·åãããŸãã ããšãã°ãã¬ããªã«ãæåã«èµ·åãããå Žåãã¬ããªã«ã¯ãã¹ã¿ãŒã«æ¥ç¶ã§ãããæäœãéå§ããããŸã§äœåºŠããããè©Šè¡ããå¿
èŠããããŸãïŒé·æéãããå ŽåããããŸãïŒã
ãã¹ã¿ãŒã®åã«2ã€ã®ã¬ããªã«ãéå§ãããäŸã æé 1ããã³2ã§ã¯ããŠã£ã¶ãŒãããã¹ãããã·ã§ãããååŸã§ããªããããèµ·åããã»ã¹ã¯å€±æããŸãã ãŠã£ã¶ãŒããæçµçã«éå§ããããšïŒã¹ããã3ïŒãã¬ããªã«ã¯ããŒã¿ã«æ¥ç¶ããŠåæã§ããããã«ãªããŸãïŒã¹ããã4ããã³5ïŒã
Dockerç°å¢ã§äœæ¥ãã
ã»ãšãã©ã®ãã¹ãã«ã¯ã LVMã« devicemapperã䜿çšããŠDocker 1.9.1ãã€ã³ã¹ããŒã«ãããŠããŸãã ããã€ã¹ããããŒã«LVMã䜿çšããããšã¯ãã«ãŒãããã¯ãããçç£çãªãœãªã¥ãŒã·ã§ã³ã§ããããšã蚌æãããŸããã Devicemapperã«ã¯å€ãã®ããã©ãŒãã³ã¹ãšä¿¡é Œæ§ã®åé¡ããããŸããã AuFSãOverlayFSã®ãããªä»£æ¿æ段ãçæ³ããã¯çšé ã³ã§ãã é·ãéãã³ãã¥ããã£ã¯ã¹ãã¬ãŒãžçµç¹ã®ã©ã®ããªãšãŒã·ã§ã³ãåªããŠããããå€æã§ããŸããã§ããã ãããæè¿ãOverlayFSãæ¯æãã声ãå¢ããŠããããããå®å®ããŠããããã§ãããã®ãã¡ã€ã«ã·ã¹ãã ã«åãæ¿ããŠãåæã«Docker 1.12.1ã«ã¢ããã°ã¬ãŒãããäºå®ã§ãã
Dockerã®äžäŸ¿ãªç¹ã®1ã€ã¯ããµãŒãã¹ã®åèµ·åæã«ã³ã³ãããåèµ·åããå¿
èŠãããããšã§ãã ããã¯ããã¹ãã®ã¢ããã°ã¬ãŒãäžã«æ©èœãããŠã£ã¶ãŒãããªããããã¢ããã°ã¬ãŒãããã»ã¹ãå¶åŸ¡ããå¿
èŠãããããšãæå³ããŸãã 幞ããªããšã«ãDocker 1.12ã§ã¯ãã³ã³ãããåèµ·åããã«ããŒã¢ã³ãåèµ·åããã³æŽæ°ãããªãã·ã§ã³ãè¿œå ãããããããã®åé¡ãæåŸã«çºçããããšãé¡ã£ãŠããŸãã
Dockerã®æ¬¡ã®åããŒãžã§ã³ã«ã¯ãå€ãã®æ¹åãšæ°æ©èœã«å ããŠãããªãã®æ°ã®ãã°ããããŸãã 1.12.1ã¯ä»¥åã®ãã®ãããåªããŠããããã«èŠããŸãããããã§ãç¹å®ã®åé¡ãçºçããŸãã
- Dockerãæ°æ¥éåæ¢ããã«åäœããåŸã«ãDockeræ€æ»ããã³ã°ããããšããããŸãã
- ãŠãŒã¶ãŒã©ã³ããããã·ã§ããªããžãããã¯ãŒãã³ã°ã䜿çšãããšãTCPæ¥ç¶ãçµäºãããšãã«å¥åŠãªåäœãçºçããŸãã ã¯ã©ã€ã¢ã³ãæ¥ç¶ã¯ãRSTä¿¡å·ãåä¿¡ãããã¿ã€ã ã¢ãŠãã®èšå®ã«é¢ä¿ãªãéãããŸãŸã«ãªãããšããããŸãã
- ã³ã³ããããã»ã¹ã¯æã
pid 1ïŒinitïŒã«åå²ãåœãŠãããDockerã¯ãããã倱ããŸãã
- DockerããŒã¢ã³ãéåžžã«é·ãæéæ°ããã³ã³ãããäœæããå Žåãå®æçã«ãããŸãã
ãããã«
ãŸããUberã¹ãã¬ãŒãžã¯ã©ã¹ã¿ãŒç®¡çã·ã¹ãã ã®èŠä»¶ã®ãªã¹ããå®çŸ©ããããšããå§ããŸããã
1ïŒ1ã€ã®ãã¹ãäžã®è€æ°ã®ã³ã³ããã
2ïŒèªååã
3ïŒåäžã®ãšã³ããªãã€ã³ãã
åäžã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãšã·ã³ãã«ãªããŒã«ã䜿çšããŠæ¯æ¥ã®ã¡ã³ããã³ã¹ãå®è¡ã§ããããã«ãªããŸããããããããã¹ãã«çŽæ¥ã¢ã¯ã»ã¹ããå¿
èŠã¯ãããŸããã
管çã³ã³ãœãŒã«ã®ã¹ã¯ãªãŒã³ã·ã§ããã ããã§ã¯ãã¿ãŒã²ããç¶æ
ãéæããããã»ã¹ãèŠãããšãã§ããŸãããã®å Žåãã¯ã©ã¹ã¿ãŒã2ã€ã®éšåã«åå²ããæåã«2çªç®ã®ã¯ã©ã¹ã¿ãŒãè¿œå ããŠãããã¬ããªã±ãŒã·ã§ã³æ¥ç¶ãåæããŸãã
åããã¹ãã§è€æ°ã®ã³ã³ãããèµ·åããããããã³ã³ãã¥ãŒãã£ã³ã°ãªãœãŒã¹ãããå®å
šã«äœ¿çšããŸãã è»äž¡å
šäœã®å¶åŸ¡ãããæŽæ°ãå®è¡ããããšãå¯èœã«ãªããŸããã Dockerã䜿çšãããšãããã«ãããéæã§ããŸããã Dockerã§ã¯ããã¹ãç°å¢ã§ã¯ã©ã¹ã¿ãŒå
šäœã®ã€ã³ã¹ããŒã«ãéå§ããããšãã§ããŸããããã䜿çšããŠãããŸããŸãªæäœæé ããã¹ãã§ããŸãã
2016幎ã®åãã«Dockerãžã®ç§»è¡ãéå§ããçŸåšã§ã¯çŽ1,500ã®DockeréçšãµãŒããŒïŒMySQLã®ã¿ïŒãå®è¡ãããçŽ2,300ã®MySQLããŒã¿ããŒã¹ãå±éãããŠããŸãã
Schemadockã«ã¯ä»ã«ãå€ãã®ã³ã³ããŒãã³ãããããŸãããDockerãæ¬åœã«åœ¹ã«ç«ã¡ãŸããã 圌ãšäžç·ã«ãç§ãã¡ã¯è¿
éã«åé²ããæ©äŒãåŸãŸãããæ¢åã®Uberã€ã³ãã©ã¹ãã©ã¯ãã£ãšå¯æ¥ã«é¢é£ããŠå€ãã®å®éšãè¡ããŸããã 1æ¥ãããæ°çŸäžã®ãšã³ããªãè¿œå ããæ
è¡ãªããžããªã¯ãïŒä»ã®æ
å ±ã®ãªããžããªãšãšãã«ïŒãããã³ã°ãããMySQLããŒã¿ããŒã¹ã«åºã¥ããŠããŸãã èšãæããã°ãDockerããªããã°ãUberãŠãŒã¶ãŒã¯æåéãé ããŸã§è¡ããªãã§ãããã
Joakim Rechtã¯ãUber Engineeringã®ãªãŒãã¹ãªãã£ã¹ã«åžžå€ãããœãããŠã§ã¢ã¹ãã·ã£ãªã¹ãïŒãšã³ãžãã¢ïŒã§ãããã€ã³ãã©ã¹ãã©ã¯ãã£ãªãŒãã¡ãŒã·ã§ã³Schemalessã®æè¡ãšãã¹ããŒãã§ããããŸãã
¹æ£ç¢ºã«ã¯ãPercona Server 5.6
²sync_binlog = 0ããã³innodb_flush_log_at_trx_commit = 2
³åé¡ã®å°ããªã³ã¬ã¯ã·ã§ã³ïŒ https : //github.com/docker/docker/issues/16653ãhttps : //github.com/docker/docker/issues/15629ãhttps : //developerblog.redhat.com/2014/09 / 30 / overview-storage-scalability-docker /ãhttpsïŒ//github.com/docker/docker/issues/12738