Mail.ru Group ã«ã¯ Tarantool ããããŸãããã㯠Lua ã®ã¢ããªã±ãŒã·ã§ã³ ãµãŒããŒã§ãããããŒã¿ããŒã¹ãšããŠãæ©èœããŸã (ãŸãã¯ãã®é?)ã é«éã§åªããŠããŸãããXNUMX ã€ã®ãµãŒããŒã®æ©èœã¯äŸç¶ãšããŠç¡å¶éã§ã¯ãããŸããã åçŽã¹ã±ãŒãªã³ã°ãäžèœè¬ã§ã¯ãªããããTarantool ã«ã¯æ°Žå¹³ã¹ã±ãŒãªã³ã°çšã®ããŒã«ãvshard ã¢ãžã¥ãŒã«ãçšæãããŠããŸãã
è¯ããã¥ãŒã¹: ç§ãã¡ã¯ããã€ãã®å€§ç©ãéããŸãã (äŸ:
ãããŠå®éãäœãåé¡ãªã®ã§ããããïŒ
ã¿ã©ã³ãã¥ã©ãããŸãããvshard ãããŸã - ãã以äžäœãæãã§ãããã?
ãŸããå©äŸ¿æ§ã®åé¡ã§ãã vshard æ§æã¯ãLua ããŒãã«ãéããŠæ§æãããŸãã è€æ°ã® Tarantool ããã»ã¹ãããªãåæ£ã·ã¹ãã ãæ£ããåäœããã«ã¯ãæ§æãã©ãã§ãåãã§ããå¿ èŠããããŸãã ãããæåã§ãããã人ã¯èª°ãããŸããã ãããã£ãŠãããããçš®é¡ã®ã¹ã¯ãªãããAnsibleãããã³ãããã€ã¡ã³ã ã·ã¹ãã ã䜿çšãããŸãã
ã«ãŒããªããžèªäœã vshard æ§æã管çããŸããããã¯ã«ãŒããªããžã®æ§æã«åºã¥ããŠè¡ãããŸãã ç¬èªã®åæ£æ§æã ããã¯æ¬è³ªçã«åçŽãª YAML ãã¡ã€ã«ã§ããããã®ã³ããŒãå Tarantool ã€ã³ã¹ã¿ã³ã¹ã«ä¿åãããŸãã åçŽåãããšããã¬ãŒã ã¯ãŒã¯èªäœããã®æ§æãç£èŠããã©ãã§ãåãã§ããããšã確èªããŸãã
第äºã«ããããå©äŸ¿æ§ã®åé¡ã§ãã vshard æ§æã¯ããžãã¹ ããžãã¯ã®éçºãšã¯äœã®é¢ä¿ããªããããã°ã©ããŒã®äœæ¥ã®æ³šæããããã ãã§ãã ãããžã§ã¯ãã®ã¢ãŒããã¯ãã£ã«ã€ããŠè°è«ãããšããã»ãšãã©ã®å Žåãåã ã®ã³ã³ããŒãã³ããšãã®çžäºäœçšã«ã€ããŠè©±ããŸãã ã¯ã©ã¹ã¿ãŒã 3 ã€ã®ããŒã¿ã»ã³ã¿ãŒã«å±éããããšãèããã®ã¯ææå°æ©ã§ãã
ç§ãã¡ã¯ãããã®åé¡ãäœåºŠã解決ããããæç¹ã§ãäœæãéçºããã¹ããCI/CDãã¡ã³ããã³ã¹ãšãã£ãã¢ããªã±ãŒã·ã§ã³ã®ã©ã€ããµã€ã¯ã«å šäœãéããŠã®äœæ¥ãç°¡çŽ åããã¢ãããŒããéçºããããšãã§ããŸããã
Cartridge ã§ã¯ãTarantool ã®åããã»ã¹ã«ããŒã«ã®æŠå¿µãå°å ¥ãããŠããŸãã ããŒã«ã¯ãéçºè ãã³ãŒãã®äœæã«éäžã§ããããã«ããæŠå¿µã§ãã ãããžã§ã¯ãã§å©çšå¯èœãªãã¹ãŠã®ããŒã«ã¯ XNUMX ã€ã® Tarantool ã€ã³ã¹ã¿ã³ã¹äžã§å®è¡ã§ãããã¹ãã«ã¯ããã§ååã§ãã
Tarantool ã«ãŒããªããžã®äž»ãªç¹åŸŽ:
- èªååãããã¯ã©ã¹ã¿ãŒ ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã
- æ°ãã圹å²ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ã®æ©èœãæ¡åŒµããŸãã
- éçºããã³å±éçšã®ã¢ããªã±ãŒã·ã§ã³ ãã³ãã¬ãŒãã
- çµã¿èŸŒã¿ã®èªåã·ã£ãŒãã£ã³ã°ã
- Luatest ãã¹ã ãã¬ãŒã ã¯ãŒã¯ãšã®çµ±åã
- WebUI ãš API ã䜿çšããã¯ã©ã¹ã¿ãŒç®¡çã
- ããã±ãŒãžåããã³å±éããŒã«ã
ããã«ã¡ã¯äžçïŒ
ãã¬ãŒã ã¯ãŒã¯èªäœã玹ä»ããã®ãåŸ ã¡ãããªãã®ã§ãã¢ãŒããã¯ãã£ã®è©±ã¯åŸåãã«ããŠãç°¡åãªããšããå§ããŸãã Tarantool èªäœããã§ã«ã€ã³ã¹ããŒã«ãããŠãããšä»®å®ãããšãããšã¯æ¬¡ã®ããšãè¡ãã ãã§ãã
$ tarantoolctl rocks install cartridge-cli
$ export PATH=$PWD/.rocks/bin/:$PATH
ããã XNUMX ã€ã®ã³ãã³ãã«ããã³ãã³ã ã©ã€ã³ ãŠãŒãã£ãªãã£ãã€ã³ã¹ããŒã«ããããã³ãã¬ãŒãããæåã®ã¢ããªã±ãŒã·ã§ã³ãäœæã§ããããã«ãªããŸãã
$ cartridge create --name myapp
ãããŠããããåŸããããã®ã§ã:
myapp/
âââ .git/
âââ .gitignore
âââ app/roles/custom.lua
âââ deps.sh
âââ init.lua
âââ myapp-scm-1.rockspec
âââ test
â âââ helper
â â âââ integration.lua
â â âââ unit.lua
â âââ helper.lua
â âââ integration/api_test.lua
â âââ unit/sample_test.lua
âââ tmp/
ããã¯ãæ¢æã®ãHello, World!ããå«ãŸãã Git ãªããžããªã§ãã å¿çšã äŸåé¢ä¿ (ãã¬ãŒã ã¯ãŒã¯èªäœãå«ã) ãäºåã«ã€ã³ã¹ããŒã«ããã®ã§ãããã«å®è¡ããŠã¿ãŸãããã
$ tarantoolctl rocks make
$ ./init.lua --http-port 8080
ãããã£ãŠãå°æ¥ã®ã·ã£ãŒã ã¢ããªã±ãŒã·ã§ã³çšã« XNUMX ã€ã®ããŒããå®è¡ãããŠããŸãã 奜å¥å¿æºçãªäžè¬äººã§ããããã« Web ã€ã³ã¿ãŒãã§ã€ã¹ãéããŠãããŠã¹ã䜿çšã㊠XNUMX ã€ã®ããŒãã®ã¯ã©ã¹ã¿ãŒãæ§æãããã®çµæã楜ããããšãã§ããŸãããåã¶ã®ã¯ææå°æ©ã§ãã ãããŸã§ã®ãšãããã¢ããªã±ãŒã·ã§ã³ã¯äœã圹ã«ç«ã€ããšã¯ã§ããŸããããããã€ã¡ã³ãã«ã€ããŠã¯åŸã»ã©èª¬æããŸãããããã§ã³ãŒããèšè¿°ããŸãã
ã¢ããªã±ãŒã·ã§ã³éçº
æ³åããŠã¿ãŠãã ãããXNUMX æ¥ã« XNUMX åãããŒã¿ãåä¿¡ããŠââä¿åããã¬ããŒããäœæããå¿ èŠããããããžã§ã¯ããèšèšããŠãããšããŸãã
å³ã®æç»ãéå§ãããã®äžã«ã²ãŒããŠã§ã€ãã¹ãã¬ãŒãžãã¹ã±ãžã¥ãŒã©ãšãã XNUMX ã€ã®ã³ã³ããŒãã³ããé
眮ããŸãã ç§ãã¡ã¯ã¢ãŒããã¯ãã£ã®ãããªãéçºã«åãçµãã§ããŸãã ã¹ãã¬ãŒãžãšã㊠vshard ã䜿çšãããããvshard-router ãš vshard-storage ãã¹ããŒã ã«è¿œå ããŸãã ã²ãŒããŠã§ã€ãã¹ã±ãžã¥ãŒã©ãŒãã¹ãã¬ãŒãžã«çŽæ¥ã¢ã¯ã»ã¹ããŸãããã«ãŒã¿ãŒã¯ãã®ããã«ååšãããã®ããã«äœæãããŸããã
ãã®å³ã¯ãã³ã³ããŒãã³ããæœè±¡çã«èŠããããããããžã§ã¯ãã§æ§ç¯ãããã®ããŸã æ£ç¢ºã«è¡šããŠããŸããã ãããå®éã® Tarantool ã«ã©ã®ããã«æ圱ããããããŸã 確èªããå¿
èŠããããŸããã³ã³ããŒãã³ããããã»ã¹ããšã«ã°ã«ãŒãåããŸãããã
vshard-router ãšã²ãŒããŠã§ã€ãå¥ã®ã€ã³ã¹ã¿ã³ã¹ã«ä¿æããããšã«ã»ãšãã©æå³ã¯ãããŸããã ããããã§ã«ã«ãŒã¿ãŒã®è²¬ä»»ã§ããã®ã«ããªãããäžåºŠãããã¯ãŒã¯ããµãŒãã£ã³ããå¿
èŠãããã®ã§ãããã? ãããã¯åãããã»ã¹å
ã§å®è¡ããå¿
èŠããããŸãã ã€ãŸããã²ãŒããŠã§ã€ãš vshard.router.cfg ã®äž¡æ¹ã XNUMX ã€ã®ããã»ã¹ã§åæåãããããŒã«ã«ã§å¯Ÿè©±ã§ããããã«ãªããŸãã
èšèšæ®µéã§ã¯ãXNUMX ã€ã®ã³ã³ããŒãã³ãã䜿çšãããšäŸ¿å©ã§ããããéçºè ãšããŠã³ãŒããäœæããéã«ã¯ãTarnatool ã® XNUMX ã€ã®ã€ã³ã¹ã¿ã³ã¹ãèµ·åããããšã¯èããããããŸããã ãã¹ããå®è¡ããŠãã²ãŒããŠã§ã€ãæ£ããäœæãããã©ããã確èªããå¿ èŠããããŸãã ãããã¯ãååã«æ©èœããã¢ã³ã¹ãã¬ãŒã·ã§ã³ããããããããŸããã ãªããããã XNUMX ã€ã®ã³ããŒãå°å ¥ããå¿ èŠãããã®ã§ãããã? ããããŠåœ¹å²ãšããæŠå¿µãçãŸããŸããã ããŒã«ã¯ãã©ã€ããµã€ã¯ã«ãã«ãŒããªããžã«ãã£ãŠç®¡çãããéåžžã® luash ã¢ãžã¥ãŒã«ã§ãã ãã®äŸã§ã¯ãã²ãŒããŠã§ã€ãã«ãŒã¿ãŒãã¹ãã¬ãŒãžãã¹ã±ãžã¥ãŒã©ãŒã® XNUMX ã€ããããŸãã å¥ã®ãããžã§ã¯ãã§ã¯ããã«ãããããããŸããã ãã¹ãŠã®ããŒã«ã XNUMX ã€ã®ããã»ã¹ã§å®è¡ã§ããããã§ååã§ãã
ãããŠãã¹ããŒãžã³ã°ãŸãã¯éçšç°å¢ãžã®ãããã€ã¡ã³ãã«é¢ããŠã¯ãããŒããŠã§ã¢ã®æ©èœã«å¿ããŠãå Tarantool ããã»ã¹ã«ç¬èªã®åœ¹å²ã»ãããå²ãåœãŠãŸãã
ããããžç®¡ç
ã©ã®ããŒã«ãå®è¡ãããŠãããã«é¢ããæ å ±ã¯ãã©ããã«ä¿åããå¿ èŠããããŸãã ãããŠããã®ãã©ãããã¯ããã§ã«äžã§è¿°ã¹ãåæ£æ§æã§ãã ããã«ã€ããŠæãéèŠãªããšã¯ãã¯ã©ã¹ã¿ãŒ ããããžã§ãã ããã§ã¯ã3 ã€ã® Tarantool ããã»ã¹ãããªã 5 ã€ã®ã¬ããªã±ãŒã·ã§ã³ ã°ã«ãŒãã瀺ããŸãã
ããŒã¿ã倱ããããªãã®ã§ãå®è¡äžã®ããã»ã¹ã«é¢ããæ
å ±ã¯æ
éã«æ±ããŸãã ã«ãŒããªããžã¯ãXNUMX ãã§ãŒãº ã³ãããã䜿çšããŠæ§æã远跡ããŸãã æ§æãæŽæ°ããå Žåãæåã«ãã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ãå©çšå¯èœã§ãããæ°ããæ§æãåãå
¥ããæºåãã§ããŠãããã©ããã確èªãããŸãã ãã®åŸã第 XNUMX ãã§ãŒãºã§æ§æãé©çšãããŸãã ãããã£ãŠãããšã XNUMX ã€ã®ã³ããŒãäžæçã«å©çšã§ããªããªã£ããšããŠããæªãããšã¯äœãèµ·ãããŸããã æ§æã¯åçŽã«é©çšããããäºåã«ãšã©ãŒã衚瀺ãããŸãã
ãŸããããããžã»ã¯ã·ã§ã³ã«ã¯ãåã¬ããªã±ãŒã·ã§ã³ã°ã«ãŒãã®ãªãŒããŒãªã©ã®éèŠãªãã©ã¡ãŒã¿ã瀺ãããŸãã éåžžãããã¯èšé²ãããŠããã³ããŒã§ãã æ®ãã¯ã»ãšãã©ã®å Žåèªã¿åãå°çšã§ãããäŸå€ããããããããŸããã åæ¢ãªéçºè ã¯ç«¶åãæãããè€æ°ã®ã¬ããªã«ã«äžŠè¡ããŠããŒã¿ãæžã蟌ãããšãã§ããŸãããäœããã£ãŠã XNUMX åå®è¡ãã¹ãã§ã¯ãªãæäœãããã€ããããŸãã ãã®ããã«ãªãŒããŒã®å åããããŸãã
圹å²ã®å¯¿åœ
ãã®ãããªã¢ãŒããã¯ãã£ã«æœè±¡çãªåœ¹å²ãååšããã«ã¯ããã¬ãŒã ã¯ãŒã¯ãããããäœããã®æ¹æ³ã§ç®¡çããå¿ èŠããããŸãã åœç¶ã®ããšãªãããTarantool ããã»ã¹ãåèµ·åããã«å¶åŸ¡ãè¡ãããŸãã ããŒã«ã管çããããã®ã³ãŒã«ããã¯ã 4 ã€ãããŸãã ã«ãŒããªããžèªäœã¯ãåæ£æ§æã«èšè¿°ãããŠããå 容ã«å¿ããŠããããåŒã³åºããããã«ãã£ãŠæ§æãç¹å®ã®åœ¹å²ã«é©çšããŸãã
function init()
function validate_config()
function apply_config()
function stop()
ããããã®åœ¹å²ã«ã¯æ©èœããããŸã init
ã ããã¯ãããŒã«ãæå¹ã«ãªã£ããšãããŸã㯠Tarantool ãåèµ·åããããšãã« XNUMX ååŒã³åºãããŸãã ããšãã°ãbox.space.create ãåæåããå Žåããã¹ã±ãžã¥ãŒã©ãŒãç¹å®ã®æéééã§äœæ¥ãå®è¡ããããã¯ã°ã©ãŠã³ã ãã¡ã€ããŒãèµ·åã§ããå Žåãªã©ã«äŸ¿å©ã§ãã
XNUMXã€ã®æ©èœ init
ååã§ã¯ãªããããããŸããã ã«ãŒããªããžã䜿çšãããšãããŒã«ãããããžã®ä¿åã«äœ¿çšããåæ£æ§æãå©çšã§ããããã«ãªããŸãã åãæ§æå
ã§æ°ããã»ã¯ã·ã§ã³ã宣èšããããã«ããžãã¹æ§æã®ãã©ã°ã¡ã³ããä¿åã§ããŸãã ãã®äŸã§ã¯ãããã¯ããŒã¿ ã¹ããŒããŸãã¯ã¹ã±ãžã¥ãŒã©ãŒ ããŒã«ã®ã¹ã±ãžã¥ãŒã«èšå®ã§ããå¯èœæ§ããããŸãã
ã¯ã©ã¹ã¿ãŒåŒã³åºã validate_config
О apply_config
åæ£æ§æãå€æŽããããã³ã«ã æ§æã XNUMX ãã§ãŒãº ã³ãããã«ãã£ãŠé©çšããããšãã¯ã©ã¹ã¿ãŒã¯åããŒã«ããã®æ°ããæ§æãåãå
¥ããæºåãã§ããŠãããã©ããã確èªããå¿
èŠã«å¿ããŠãŠãŒã¶ãŒã«ãšã©ãŒãå ±åããŸãã æ§æãæ£åžžã§ããããšã«å
šå¡ãåæãããšã apply_config
.
ããŒã«ã«ãã¡ãœããããããŸã stop
ãããŒã«ã®åºåãã¯ãªãŒã³ã¢ããããããã«å¿
èŠã§ãã ãã®ãµãŒããŒã§ã¯ã¹ã±ãžã¥ãŒã©ãŒãäžèŠã«ãªã£ãå Žåãã¹ã±ãžã¥ãŒã©ãŒãéå§ãããã¡ã€ããŒãåæ¢ããå¯èœæ§ããããŸãã init
.
ããŒã«ã¯çžäºã«å¯Ÿè©±ã§ããŸãã ç§ãã¡ã¯ Lua ã§é¢æ°åŒã³åºããæžãããšã«æ £ããŠããŸãããç¹å®ã®ããã»ã¹ã«å¿ èŠãªåœ¹å²ããªãå ŽåããããŸãã ãããã¯ãŒã¯çµç±ã®åŒã³åºãã容æã«ããããã«ãTarantool ã«çµã¿èŸŒãŸããŠããæšæºã®ãããããã¯ã¹ã«åºã¥ããŠæ§ç¯ããã rpc (ãªã¢ãŒã ããã·ãŒãžã£ ã³ãŒã«) è£å©ã¢ãžã¥ãŒã«ã䜿çšããŸãã ããã¯ãããšãã°ãã²ãŒããŠã§ã€ã XNUMX æ¥åŸ ã€ã®ã§ã¯ãªããããã«ãžã§ããå®è¡ããããã«ã¹ã±ãžã¥ãŒã©ã«çŽæ¥èŠæ±ãããå Žåã«äŸ¿å©ã§ãã
ãã XNUMX ã€ã®éèŠãªç¹ã¯ãèé害æ§ã®ç¢ºä¿ã§ãã ã«ãŒããªããžã¯ SWIM ãããã³ã«ã䜿çšããŠç¶æ
ãç£èŠããŸã
ãã®ãããã³ã«ã«åºã¥ããŠãã«ãŒããªããžã¯èªåé害åŠçãçµç¹ããŸãã åããã»ã¹ã¯ãã®ç°å¢ãç£èŠãããªãŒããŒãçªç¶å¿çãåæ¢ããå Žåãã¬ããªã«ããã®åœ¹å²ãåŒãç¶ãããšãã§ããã«ãŒããªããžã¯ããã«å¿ããŠå®è¡äžã®åœ¹å²ãæ§æããŸãã
åãæ¿ããé »ç¹ã«è¡ããšãã¬ããªã±ãŒã·ã§ã³äžã«ããŒã¿ã®ç«¶åãçºçããå¯èœæ§ããããããããã§ã¯æ³šæãå¿
èŠã§ãã ãã¡ãããèªåãã§ã€ã«ãªãŒããŒãã©ã³ãã ã«æå¹ã«ããã¹ãã§ã¯ãããŸããã ç§ãã¡ã¯äœãèµ·ãã£ãŠããã®ããæ確ã«ç解ãããªãŒããŒã埩å
ããçå ãè¿éãããåŸãè€è£œãäžæãããªãããšã確èªããå¿
èŠããããŸãã
ããããã¹ãŠãããããŒã«ã¯ãã€ã¯ããµãŒãã¹ã«äŒŒãŠãããšæãããããããŸããã ããæå³ãããã㯠Tarantool ããã»ã¹å ã®ã¢ãžã¥ãŒã«ãšããŠã®ã¿ååšããŸãã ããããæ ¹æ¬çãªéããæ°å€ããããŸãã ãŸãããã¹ãŠã®ãããžã§ã¯ã ããŒã«ãåãã³ãŒã ããŒã¹å ã«ååšããå¿ èŠããããŸãã ãããŠããã¹ãŠã® Tarantool ããã»ã¹ã¯åãã³ãŒã ããŒã¹ããèµ·åãããå¿ èŠããããããã¹ã±ãžã¥ãŒã©ãåæåããããšãããšãã«ã¹ã±ãžã¥ãŒã©ãåã«ååšããªããšãããããªé©ããèµ·ãããªããªããŸãã ãŸããã³ãŒã ããŒãžã§ã³ã®éããèš±å¯ããªãã§ãã ããããã®ãããªç¶æ³ã§ã®ã·ã¹ãã ã®åäœã®äºæž¬ãšãããã°ã¯éåžžã«å°é£ã§ãã
Docker ãšã¯ç°ãªããåã«ããŒã«ãã€ã¡ãŒãžããååŸãããããå¥ã®ãã·ã³ã«ç§»åããŠããã§å®è¡ããããšã¯ã§ããŸããã ç§ãã¡ã®åœ¹å²ã¯ãDocker ã³ã³ãããŒã»ã©åé¢ãããŠããŸããã ãŸããXNUMX ã€ã®ã€ã³ã¹ã¿ã³ã¹ã§ XNUMX ã€ã®åäžã®ããŒã«ãå®è¡ããããšã¯ã§ããŸããã ããŒã«ã¯ååšãããååšããªããã®ã©ã¡ããã§ãããããæå³ãã·ã³ã°ã«ãã³ã§ãã ãã㊠XNUMX çªç®ã«ã圹å²ã¯ã¬ããªã±ãŒã·ã§ã³ ã°ã«ãŒãå šäœã§åãã§ããå¿ èŠããããŸããããããªããšäžåçã«ãªããŸããããŒã¿ã¯åãã§ãããæ§æãç°ãªããŸãã
å°å ¥ããŒã«
ç§ã¯ãCartridge ãã¢ããªã±ãŒã·ã§ã³ã®å±éã«ã©ã®ããã«åœ¹ç«ã€ãã瀺ãããšãçŽæããŸããã ä»ã®äººã®äœæ¥ã容æã«ããããã«ããã¬ãŒã ã¯ãŒã¯ã¯ RPM ããã±ãŒãžãããã±ãŒãžåããŠããŸãã
$ cartridge pack rpm myapp -- ÑпакÑÐµÑ ÐŽÐ»Ñ ÐœÐ°Ñ ./myapp-0.1.0-1.rpm
$ sudo yum install ./myapp-0.1.0-1.rpm
ã€ã³ã¹ããŒã«ãããããã±ãŒãžã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãšã€ã³ã¹ããŒã«ãããäŸåé¢ä¿ã®äž¡æ¹ãªã©ãå¿ èŠãªãã®ãã»ãŒãã¹ãŠå«ãŸããŠããŸãã Tarantool ã RPM ããã±ãŒãžã®äŸåé¢ä¿ãšããŠãµãŒããŒã«å°çãããµãŒãã¹ãéå§ããæºåãæŽããŸãã ãã㯠systemd ãéããŠè¡ãããŸãããæåã«å°ãã®èšå®ãèšè¿°ããå¿ èŠããããŸãã å°ãªããšããåããã»ã¹ã® URI ãæå®ããŸãã ããšãã° XNUMX ã€ããã°ååã§ãã
$ sudo tee /etc/tarantool/conf.d/demo.yml <<CONFIG
myapp.router: {"advertise_uri": "localhost:3301", "http_port": 8080}
myapp.storage_A: {"advertise_uri": "localhost:3302", "http_enabled": False}
myapp.storage_B: {"advertise_uri": "localhost:3303", "http_enabled": False}
CONFIG
ããã«ã¯èå³æ·±ããã¥ã¢ã³ã¹ããããŸãã ãã€ã㪠ãããã³ã« ããŒãã ããæå®ãã代ããã«ããã¹ãåãå«ãããã»ã¹ã®ãããªã㯠ã¢ãã¬ã¹å šäœãæå®ããŸãã ããã¯ãã¯ã©ã¹ã¿ãŒ ããŒããçžäºã«æ¥ç¶ããæ¹æ³ãèªèããããã«å¿ èŠã§ãã Advertise_uri ã¢ãã¬ã¹ãšã㊠0.0.0.0 ã䜿çšããã®ã¯æªãèãã§ããããã¯ãœã±ãã ãã€ã³ãã§ã¯ãªããå€éš IP ã¢ãã¬ã¹ã§ããå¿ èŠããããŸãã ããããªããã°äœãæ©èœããªããããCartridge ã§ã¯åã«ééã£ã Advertise_uri ã§ããŒããèµ·åããããšã¯ã§ããŸããã
æ§æã®æºåãå®äºããã®ã§ãããã»ã¹ãéå§ã§ããŸãã éåžžã® systemd ãŠãããã§ã¯è€æ°ã®ããã»ã¹ã®èµ·åãèš±å¯ãããŠããªããããã«ãŒããªããžäžã®ã¢ããªã±ãŒã·ã§ã³ã¯ããããããã»ã¹ã«ãã£ãŠã€ã³ã¹ããŒã«ãããŸãã 次ã®ããã«åäœããã€ã³ã¹ã¿ã³ã¹åããããŠããã:
$ sudo systemctl start myapp@router
$ sudo systemctl start myapp@storage_A
$ sudo systemctl start myapp@storage_B
æ§æã§ã¯ãCartridge ã Web ã€ã³ã¿ãŒãã§ã€ã¹ãæäŸãã HTTP ããŒã (8080) ãæå®ããŸãããããã«ã¢ã¯ã»ã¹ããŠèŠãŠã¿ãŸãããã
ããã»ã¹ã¯å®è¡ãããŠããŸããããŸã æ§æãããŠããªãããšãããããŸãã ã«ãŒããªããžã¯èª°ã誰ãè€è£œããã¹ããããŸã ç¥ãããèªåã§æ±ºå®ãäžãããšãã§ããªããããç§ãã¡ã®è¡åãåŸ
ã£ãŠããŸãã ããããéžæè¢ã¯ããŸããããŸãããæ°ããã¯ã©ã¹ã¿ãŒã®å¯¿åœã¯æåã®ããŒãã®æ§æããå§ãŸããŸãã 次ã«ãä»ã®ãã®ãã¯ã©ã¹ã¿ãŒã«è¿œå ããããŒã«ãå²ãåœãŠãŸãããã®æç¹ã§ããããã€ã¡ã³ãã¯æ£åžžã«å®äºãããšèŠãªãããŸãã
ãæ°ã«å ¥ãã®ããªã³ã¯ãã°ã©ã¹ã«æ³šãã§ãäžé±éã®é·ãä»äºã®åŸã«ãªã©ãã¯ã¹ããŸãããã ã¢ããªã±ãŒã·ã§ã³ã¯äœ¿çšã§ããŸãã
çµæ
çµæã¯äœã§ãã? è©ŠããŠã䜿çšãããã£ãŒãããã¯ãæ®ããGithub ã§ãã±ãããäœæããŸãã
ãªãã¡ã¬ã³ã¹
ã1]
åºæïŒ habr.com