ã¯ã©ã¦ãã¸ã®ç§»è¡ãå«ããã¼ã¿ã»ã³ã¿ã¼(以ä¸DC)移è¡äºä¾ãåºã«ãWebãµã¼ãã¹ãDC移è¡ããããã®åºæ¬çãªæè¡è¦ç´ ãç´¹ä»ãã¾ããå ·ä½çã«ã¯ç§»è¡æé ããã¼ã¿ãã¼ã¹ã®ãã¼ã¿ç§»è¡ããããã¯ã¼ã¯ãDNSãªã©ã§ãã æè¿ã社å ã§å¤§è¦æ¨¡ãªDC移è¡ãå®æ½ãã¤ã¤ãããDC移è¡ã¨ã¯ãªã«ããã¡ã³ãã¼ã¸å ±æããããã®æç« ã§ãããã¾ãã ã¡ãªã¿ã«ããã®è¨äºã¯Hosting Casual Talks #4ã®çºè¡¨å 容ãæ¸ãä¸ããããã®ã§ãã
移è¡äºä¾
ã¾ãããã®çºè¡¨ã§DC移è¡ãã©ããããã®ãæããã示ãããã«ã2ã¤ã®ãµã¼ãã¹ã®ç§»è¡äºä¾ãç´¹ä»ãã¾ãã åè ã¯ããªã³ãã¬ãã¹(ãã¦ã¸ã³ã°)ããæºãªã³ãã¬ãã¹ã¨ããããå°ç¨ãµã¼ãã¸ã®ç§»è¡ãå¾è ã¯ãªã³ãã¬ãã¹(ãã¦ã¸ã³ã°)ããAWSã¸ã®ç§»è¡ã«ãªãã¾ãã
ãµã¼ãã¹Aã®äºä¾
ãµã¼ãã¹Aã¯æ¯è¼çåç´ãªCMSãµã¤ãã§ãã以ä¸ã®åæã®ãã¨ãæ±äº¬ã®ãªã³ãã¬ãã¹DCããç³ç©ã®å°ç¨ãµã¼ãDCã¸ç§»è¡ãã¾ããã
- ç¡åæ¢ã¡ã³ããã³ã¹
- æ±äº¬DCã¨ç³ç©DCéã®ãããã¯ã¼ã¯ã¯å°ç¨ç·
- æ±äº¬DCã¨ç³ç©DCéã®ãããã¯ã¼ã¯RTTã¯20mså¼±
移è¡ã¯ä»¥ä¸ã®3ã¹ãããã§å®æ½ãã¾ããã
移è¡å
ã¾ãã移è¡åã®ç¶æ ã§ããä¸è¬çãªWebã¢ããªã±ã¼ã·ã§ã³æ§æã§ãããproxyã¯ãªãã¼ã¹ãããã·ãappã¯ã¢ããªã±ã¼ã·ã§ã³ãµã¼ããdbã¯ãã¼ã¿ãã¼ã¹ãµã¼ããæãã¾ã[1]ã1 使ç¨ãã¦ããããã«ã¦ã§ã¢ã¯ãnginxãhttpd + mod_perl2ãMySQLã§ããã
æ±äº¬ |---------------------------------------| | | | --------- --------- ---------- | internet--+->| proxy |---| app |---| db | | | --------| --------- ---------- | | | | |------------------------------+--------| | | ã¬ããªã±ã¼ã·ã§ã³ ç³ç© | |------------------------------+--------| | --------- --------- ---------- | | | proxy |---| app |---| db | | | --------- --------- ---------- | |----------------------------------------
ç³ç©DCã«ãµã¼ãã¹ã»ãããç¨æããdbãåãæ¿ããããã«ãMySQLã®ã¬ããªã±ã¼ã·ã§ã³ã«ããç³ç©DCã«ã¹ã¬ã¼ããä½æãã¾ããã
移è¡ã¹ããã1
æ±äº¬ |---------------------------------------| | | | --------- --------- ---------- | internet--+->| proxy |---| app |-- | db | | | --------- --------- | ---------- | | | | |------------------------+--------------| | | ç³ç© | |------------------------+--------------| | | ---------- | | |-| db | | | ---------- | |----------------------------------------
æåã«ãdbã®ãã¹ã¿åãæ¿ããå®æ½ãã¾ãããMySQLã®ãã¹ã¿åãæ¿ãã«ã¤ãã¦ã¯ãååã®id:dekokunãæ¸ãã[2] ãåç
§ãã¦ãã ããã2
ããã§ãåãæ»ãã§ããããã«ãç³ç©DC db => æ±äº¬DC db ã¸å
ç¨ã¨ã¯éåãã®ã¬ããªã±ã¼ã·ã§ã³ã確ç«ãã¦ãã¾ãã
移è¡ã¹ããã2
æ±äº¬ |---------------------------------------| | | | --------- | internet--|->| proxy |-- | | --------| | | | | | |---------------------------------------| | | ç³ç© | |---------------------------------------| | | -------- ---------- | | |-| app | - | db | | | -------- ---------- | |---------------------------------------|
移è¡ã¹ããã3
æ±äº¬ |---------------------------------------| | | | --------- | | | proxy |-- | | --------| | | | | | |------------+--------------------------| | ç³ç© | |---------------------------------------| | --------- | --------- ---------- | internet--+->| proxy | |-| app | - | db | | | --------- --------- ---------- | |---------------------------------------|
ã¦ã¼ã¶ã®ã¤ã³ã¿ã¼ãããçµç±ã®ã¢ã¯ã»ã¹ãç³ç©DCã®proxyã«åãæ¿ããã«ã¯DNSã¬ã³ã¼ãã®å¤æ´ãå¿ è¦ã§ãã ã¬ã³ã¼ãã®å¤æ´èªä½ã¯ç°¡åã§ãããããã«åãæ»ããã§ããããã«ãäºåã«TTLãçããã¾ããããã®ã¨ããTTLå¤ãä¸æçã«60ã¨ãã¾ããã
DNSã¬ã³ã¼ãã®å¤æ´ã«ããã大åã®ãªã¯ã¨ã¹ãå ã¯åãæ¿ããã®ã§ããã移è¡å¾ã«ãæ±äº¬DCã®proxyã«å°éã®ãªã¯ã¨ã¹ããå°çãã¦ãã¾ããã 移è¡åã®proxyã«ãªã¯ã¨ã¹ããã¦ããã®ã¯ãããããåå解決çµæããã£ãã·ã¥ãã¦ãã¾ã£ã¦ããbotã¢ããªã±ã¼ã·ã§ã³ããã¡ã¤ã³åã§ã¯ãªãç´ã«IPã¢ãã¬ã¹ãæå®ããæ¥ç¶ã ããã¨èãã¦ãã¾ãã
ãµã¼ãã¹Bã®äºä¾
ãµã¼ãã¹Bã¯ãµã¼ãã¹Aããè¤éã§ãããè¤æ°ã®ãã¤ã¯ããµã¼ãã¹ãå«ã¿ã¾ããæ±äº¬ã®ãªã³ãã¬ãã¹DCããAWS Tokyo Regionã¸ç§»è¡ãã¾ããã æ¡ä»¶ã¯ä»¥ä¸ã®éãã§ãã
- ç¡åæ¢ã¡ã³ããã³ã¹
- æ±äº¬DCã¨AWS Tokyoãªã¼ã¸ã§ã³éã®RTTã¯7mså¼±
- æ±äº¬DCã¨AWS Tokyoãªã¼ã¸ã§ã³éã®ãããã¯ã¼ã¯ã¯ã¤ã³ã¿ã¼ãããVPN
- ä¸é¨ã®ãã¼ã¿ãã¼ã¹ã®äºææ§ã®ãªã移è¡
移è¡ã¯2ãã§ã¼ãºã§å®æ½ãã¾ããã
ã·ã¹ãã æ¦è¦
ãµã¼ãã¹Bã¯ãã¡ã¤ã³ã·ã¹ãã ã«å ãã¦ããã¤ã¯ããµã¼ãã¹åã®DBã¨ããã¤ã¯ããµã¼ãã¹aãbãcãå«ã¿ã¾ãã å¤ãã®æ©è½ã¯ã¡ã¤ã³ã·ã¹ãã ã§å®çµãã¦ãããä¸é¨ã®ç¹å®ã®æ©è½ããã¤ã¯ããµã¼ãã¹ãå¦çãã¾ãã
|---------------------------------------------------| | |---> ãã¤ã¯ããµã¼ãã¹åDB | | | | internet ---+----> ã¡ã¤ã³ã·ã¹ãã -->|---> ãã¤ã¯ããµã¼ãã¹a | | | | | |---> ãã¤ã¯ããµã¼ãã¹b | | | | | |---> ãã¤ã¯ããµã¼ãã¹c | |---------------------------------------------------|
ãã§ã¼ãº1: ã¡ã¤ã³ã·ã¹ãã ã¨ãã¤ã¯ããµã¼ãã¹åDBã®ç§»è¡
ã¡ã¤ã³ã·ã¹ãã ã¯å¤§ã¾ãã«ã¯ãµã¼ãã¹äºä¾Aã¨åããããªæ§æã§ãã ãã ããRDB以å¤ã«KVSã¨ãã¦Redisãå©ç¨ãã¦ãã¾ãã
|---------------------------------------| | --------- --------- ---------- | internet--+->| proxy |---| app |---| db | | | --------- --------- | ---------- | | | | | | ---------- | | |-| redis | | | ---------- | |---------------------------------------|
移è¡æé ãã»ã¼åãã§ãããã ãããµã¼ãã¹Aã¨ã¯ç°ãªããDCéãããã¯ã¼ã¯ãå°ç¨ç·ã§ã¯ãªãã¤ã³ã¿ã¼ãããVPNã§ããä¿¡é ¼æ§ã«æ¸å¿µããããã¨ã¨ããµã¼ãã¹Aã¨æ¯ã¹ã¦ã³ã³ãã¼ãã³ãéã®ãããã¯ã¼ã¯ãã©ãã£ãã¯éãããªã大ããã¨ããç¹å¾´ãããã¾ãã ãããã£ã¦ã移è¡ä¸ã«DCéãããã¯ã¼ã¯ãã¾ããã éä¿¡ã®æéã極åçããããããã¹ããã1ã3ã¾ã§ãä¸æ¯ã«ç§»è¡ãã¾ããã ã¡ã¤ã³ã·ã¹ãã ã¨ãã¤ã¯ããµã¼ãã¹a~céã®ãã©ãã£ãã¯éã¯å°ãããããDCéãã¾ããã éä¿¡æéãé·ãã¦ãããã¨å¤æãããã§ã¼ãºãåå²ãã¾ããã
ãã¤ã¯ããµã¼ãã¹åDBã®ç§»è¡ã¯ãäºææ§ã®ãªã移è¡ã§ããããããã£ã¦ãæ¢åã®ã¬ããªã±ã¼ã·ã§ã³å®è£ ãããã¯ã¢ãããã¼ã«ãå©ç¨ã§ãã¾ããã å®éã¯ã以ä¸ã®2ã¹ãããã§ç§»è¡ãã¾ããã
- æ°è¦ã®ãã¼ã¿æ¸ãè¾¼ã¿ãæ°æ§DB両æ¹ã«åæ ããããå ·ä½çã«ã¯ãã¢ããªã±ã¼ã·ã§ã³ã®ãã¥ã¢ã«ã©ã¤ãã«ãããæ°æ§DBã«åãå 容ã®æ¸ãè¾¼ã¿ãåããã
- ãã¼ã¿ç§»è¡ã¹ã¯ãªããã«ãããæ¢åã®ãã¼ã¿ããã¹ã¦ç§»è¡ãããå°ç¨ã«éçºãããããå¦çãã¼ã«ã«ãããæ§DBã®å 容ãèªã¿åºããæ°DBã®æ¸ãè¾¼ã¿å½¢å¼ã§æ¸ãè¾¼ãã
ãã§ã¼ãº2: ãã®ä»ã®ãã¤ã¯ããµã¼ãã¹ã®ç§»è¡
ãã§ã¼ãº1ã®ç§»è¡ãè½ã¡çããã®ã¡ãé±åä½ã®æéãç½®ãã¦ããã§ã¼ãº2ã®ç§»è¡ãå®æ½ãã¾ããã ãã¤ã¯ããµã¼ãã¹a~cã¯ãé·æçã«ä¿åãããã¼ã¿ãæãããRedisãã¸ã§ããã¥ã¼ã¨ãã¦å©ç¨ããã·ã¹ãã ã§ãã ãããã£ã¦ããã¼ã¿ç§»è¡ãä¸è¦ãªãããã¸ã§ãã®æå ¥å ãæ°ç°å¢ã«åããã®ã¿ã®ä½æ¥ã§ããã
移è¡ã®ããã®æè¡è¦ç´
移è¡ãè¨ç»ãã段éã§ãä¸è¬çã«ä»¥ä¸ã®ä¸ç¢ºå®è¦ç´ ãããã¨èãã¾ãã ãããã®è¦ç´ ã«å¯¾ããæè¡ç解決æ段ãæ´ãåºããã¨ãã移è¡æ¦ç¥ãç·´ãããã®ææã«ãªãã¾ãã
- æ¢åãã¼ã¿ã®ç§»è¡
- æ°è¦ãã¼ã¿ã®ç§»è¡
- ãµã¼ãã¹ãã¡ã¤ã³ã®DNSã¬ã³ã¼ãå¤æ´
- DCéãããã¯ã¼ã¯ã®ä¿¡é ¼æ§
- å é¨ã¨ã³ããã¤ã³ãã®å¤æ´
æ¢åãã¼ã¿ã®ç§»è¡
ããã¾ã§ã®éç¨ã§èç©ãããã¼ã¿ã移è¡ããæ¹æ³ãèãã¾ãã
ãµã¼ãã¹Aã®äºä¾ã§ã¯ãmysqldumpã§ããã¯ã¢ãããåå¾ãã移è¡å ã®ãã¹ãã§ãªã¹ãã¢ã§ãã¾ãã ãã®ããã«ãã¼ã¿ãã¼ã¹ããã«ã¦ã§ã¢ã®æ©è½ãå©ç¨ããã°ããç¨åº¦ç°¡åã«ç§»è¡ã§ãã¾ãã
ä¸æ¹ã§ããµã¼ãã¹Bã®äºä¾ã®ããã«ç°ç¨®DBéã®ç§»è¡ã®å ´åããããå¦çããã°ã©ã ãæ¸ãã¦ç§»è¡ãããã¨ã«ãªãã¾ãã ãã¼ã¿ç§»è¡ã®è¦³ç¹ã«ã¤ãã¦ã¯ã 大è¦æ¨¡ãã¼ã¿ç§»è¡ã®å¤±æãé²ããããè¨ç»ãããã°ã©ã ãã¤ã³ãã©ã®æ³¨æç¹ã¨ããããã¡ãªãã¨[3] ã«ããã¾ã¨ãããã¦ãã¾ãã ãã®è³æã«æ¸ããã¦ããªã観ç¹ã¨ãã¦ããããå¦çããã°ã©ã ã®æ§è½ã¨ãªã½ã¼ã¹æ¶è²»ã®ãã¬ã¼ããªããããã¾ãã ãããå¦çããã°ã©ã ã®æ§è½ã¯ãä¾ãã°å¦çã®ä¸¦å度ãä¸ãããã¨ã§åä¸ããå®è¡æéãéããªãã¾ãã ãããã代ããã«ããå¤ãã®DCéãããã¯ã¼ã¯å¸¯åãæ¶è²»ãããã¨ã«ãªãã¾ãã ä»ã«ãããããå¦çããã°ã©ã ã®TCPæ¥ç¶æ°ãå¤ããã¦ããããå¦çããã°ã©ã ã®å®è¡ãã¹ããéã®ãã©ã¯ã¼ããããã·ã移è¡å ã®DBãªã©ã§ãã¼ãã使ãæ½°ãã¨ãã£ãåé¡ãããããã¾ãã
æ°è¦ãã¼ã¿ã®ç§»è¡
ããã§ã¯ãæ¢åãã¼ã¿ã移è¡ãããã¨ã«æ¸ãè¾¼ã¾ãããã¼ã¿ãæ°è¦ãã¼ã¿ã¨å¼ã³ã¾ãã æ°è¦ãã¼ã¿ç§»è¡ãåé¡ã«ãªãã®ã¯ãç¡åæ¢ç§»è¡ããããã¯æ¢åãã¼ã¿ã®ç§»è¡æéåããçãã¡ã³ããã³ã¹ã¦ã£ã³ãã¦ãè¨ãã移è¡ã®å ´åã§ãã ç¡åæ¢ã§ç§»è¡ããããã«ã¯ãæ°è¦ãã¼ã¿ã移è¡ãã¤ã¤ãæ¢åãã¼ã¿ã移è¡ããã¨ããé£ããä½æ¥ãå¿ è¦ã§ãã
ãµã¼ãã¹Aã®äºä¾ã®ããã«ããã¼ã¿ãã¼ã¹ããã«ã¦ã§ã¢ã®ã¬ããªã±ã¼ã·ã§ã³ãå©ç¨ããã°ãæ¢åãã¼ã¿ã移è¡ãã¤ã¤ãæ°è¦ãã¼ã¿ãã¬ããªã±ã¼ã·ã§ã³ãä»ãã¦æ°DBã«æ¸ãããã¾ãã ãµã¼ãã¹Bã®äºä¾ã®ããã«ãç°ç¨®DBéã®ç§»è¡æ段ã¨ãã¦ãã¢ããªã±ã¼ã·ã§ã³ã«ãããã¥ã¢ã«ã©ã¤ããããã¾ãã ããã¯åç´ã«æ°æ§2ã¤ã®DBã«åãå 容ã®æ¸ãè¾¼ã¿ãåæçã«å®è¡ããã ãã§ãã
ãããããã¥ã¢ã«ã©ã¤ãã«ã¯ãåæ£ã·ã¹ãã ã®æèã«ãããä¸è²«æ§ã®åé¡ãããã¾ãã ä»åã¯ããã¼ã¿ãã¼ã¹ç§»è¡ã§ã¯ãªãããã¼ã¿ã»ã³ã¿ã¼ç§»è¡ã主ç¼ã§ããããããã®åé¡ã«é¢ãã説æãçãã¾ãã ãµã¼ãã¹Bã®å ´åã¯ããã¼ã¿ã®ä¸è²«æ§ãããã»ã©æ±ããããªããã¼ã¿ãã¼ã¹ã§ãã£ãããããã®åé¡ãåé¿ã§ãã¾ããã
ãµã¼ãã¹ãã¡ã¤ã³ã®DNSã¬ã³ã¼ãå¤æ´
æä¾ãã¦ãããµã¼ãã¹ãã¡ã¤ã³ãhoge.example.comã§ããã¨ããAã¬ã³ã¼ãã198.18.0.1ã ã¨ããã¨ããããæ°DCã®IPã¢ãã¬ã¹ã§ãã198.51.100.1ã«åãæ¿ããå¿ è¦ãããã¾ãã 移è¡å ãAWSã§ããã°ãhoge.example.comã®CNAMEã¬ã³ã¼ã(ãããã¯ALIASã¬ã³ã¼ã)ã¨ãã¦ãALB/NLBã®FQDNã¨ã³ããã¤ã³ãã«è¨å®ãããã¨ãå¤ãã§ãããã
DNSã®åå解決çµæã¯ãåå°ã«ãããªã¾ã«ãã«ãããã£ãã·ã¥ããããã¨ãå¤ããããåãªã¾ã«ããä¿æãããã£ãã·ã¥ãç ´æ£ãããã¾ã§ãæ°DCã«æ¥ç¶ãããªããã¨ã«ãªãã¾ãã ãã£ãã·ã¥ã®ã¯ãªã¢ã¿ã¤ãã³ã°ã¯ã¬ã³ã¼ããã¨ã®TTLã«ããå¶å¾¡ããã¦ããããµã¼ãã¹æä¾è ãã¦ã¼ã¶ã®æ¥ç¶å ãå¤æ´ããã«ã¯ãåå°ã«ãããªã¾ã«ãã®è©²å½ã¬ã³ã¼ãã®TTLã0ã«ãªãã¾ã§å¾ ããªããã°ãªãã¾ããã
ãµã¼ãã¹æä¾è ãå®å ¨ã«ã¯å¶å¾¡ã§ããªãä½æ¥ã«ãªããããåè¿°ã®ç§»è¡äºä¾ã®ããã«åãæ¿ãä½æ¥ã®æå¾ã«å®æ½ãã¾ãã åé¡ããã£ãå ´åã®åãæ»ãæéãå°ããããããã«ãåãæ»ãä½æ¥åã«TTLãçããã¦ããã¾ãã*1
DNSã¨ããã¨ããããã浸éåé¡ ãªããDNSã®æµ¸éãã¯åé¡è¦ãããã®ã[6] ãé ããããã¾ãã 権å¨ãµã¼ãã移è¡ããªãã®ã§ããã°ã浸éåé¡ã®ãã¡ã¢ããªã±ã¼ã·ã§ã³ã®DNSãã£ãã·ã¥ ãDNSã®æµ¸éãã¨ã¢ããªã±ã¼ã·ã§ã³ã®ãã£ãã·ã¥[7] 2ã¤ãåé¡ã«ãªããã¨ããããã¾ãã åè ã«ã¤ãã¦ããã¨ãã°ãµã¼ãã¹ãAPIãæä¾ãã¦ããå ´åãã¯ã©ã¤ã¢ã³ãããã°ã©ã ãTTLãç¡è¦ãã¦åå解決çµæããã£ãã·ã¥ãã¦ãã¾ã£ã¦ãããã¨ããããã¾ããJVMã§ã¯ãããã©ã«ãã ã¨æªæ¥æ°¸å«ãã£ãã·ã¥ãã¦ãã¾ãããã§ãã
networkaddress.cache.ttl
Specified in java.security to indicate the caching policy for successful name lookups from the name service.. The value is specified as integer to indicate the number of seconds to cache the successful lookup. A value of -1 indicates "cache forever". The default behavior is to cache forever when a security manager is installed, and to cache for an implementation specific period of time, when a security manager is not installed.
https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html Web Application Server を動かす時の Java8 起動オプションのメモ - その手の平は尻もつかめるさ
ãã®åé¡ã«ã¤ãã¦ãIPã¢ãã¬ã¹ãå¤æ´ããåæã§ã¯ãæè¡ç解決ããæ段ã¯ãã¾ããªãã移è¡æéãè¨ãã¦ãå¼·å¶çã«æ§ç°å¢ãç ´æ£ãããããªãã®ãå®æ ã§ããã¨ã¯ãããçµé¨ä¸æ°æ¥å¾ ã¦ã°ã»ã¨ãã©ã®æ¥ç¶ã¯æ°ç°å¢ã«åãã¦ããã¾ããã
追è¨: JVM の DNS キャッシュを制御する - 平常運転
å é¨ã¨ã³ããã¤ã³ãã®å¤æ´
ç°ãªãDCã¸ã®ç§»è¡ã§ããã°ãç°ãªããµããããã¸ã®ç§»è¡ã¨ãªããããåºæ¬çã«IPã¢ãã¬ã¹ã®å¤æ´ãå¿ è¦ã§ãã ä¾ãã°ããµã¼ãã¹AãBã¨ãã«ã¹ããã1ã«ãããDBã®ç§»è¡ã§ã¯ãæ°DCã®DBã¸ã¨ã³ããã¤ã³ããå¤æ´ãã¦ãã¾ãã ç¡åæ¢ã§ç§»è¡ããå ´åã極åçæéãã¤å°éã®ã¨ã©ã¼ã§ã¨ã³ããã¤ã³ããå¤æ´ããå¿ è¦ãããã¾ãã
åç´ã«ã¢ããªã±ã¼ã·ã§ã³ãããã«ã¦ã§ã¢ã®è¨å®ã«æ¸ãããã¨ã³ããã¤ã³ããå¤æ´ãããããã¤ããã°ããã¨ãããã¨ãããã¾ãã ãããããã¼ãªã³ã°ã¢ãããã¼ããå©ç¨ãã¦ããå ´åãªã©ã¯ãåæã«åæ ãããªãä¸ã«ãåæ éå§ããçµäºã¾ã§ã«æéãããããã¨ãããã¾ãã ãããã¯ããªãããã®é½åã§è¨å®ã«æ¸ãããã¨ã³ããã¤ã³ããæ¸ãå¤ããããªãã¨ãããã¨ãããã¾ãã
æ¥ç¶å ã®è¨å®ãå¤ããã«ã移è¡ããæ段ã¨ãã¦ä»¥ä¸ã®2ã¤ãèãã¾ãã
IPã¢ãã¬ã¹åç §ã®å ´å
iptablesã«ããDNATããã®ãããããããæ¹ã§ãã ãããããã®å¤§è¦æ¨¡ãµã¼ããªãã¬ã¤ã¹ãæ¯ããæè¡[8]ã§ã¯ãrinetdãredirãªã©ã®L4ãªãã¤ã¬ã¯ã¿ãå©ç¨ããæ¹æ³ãç´¹ä»ããã¦ãã¾ãã
FQDNåç §ã®å ´å
DNSã®ã¬ã³ã¼ããæ¸ãæããã®ã¿ã§ãã ãã ããåæã«å ¨ã¦ã®ãã¼ãã®åç §å ãå¤æ´ãããããã§ã¯ãªããããä¸è²«æ§ãæ ä¿ããããã«ãæ§DCã®DBãç´åã«åæ¢ãã¦ã確å®ã«æ°DCã®DBã®ã¿ã«æ¸ãè¾¼ã¿ãåãç¶æ ã«ãããªã©ã®å·¥å¤«ãå¿ è¦ã§ãã
DCéãããã¯ã¼ã¯ã®ä¿¡é ¼æ§
RTT
DCéãããã¯ã¼ã¯ã®RTTã大ããå ´åããµã¼ãã¹Aã®äºä¾ã®ããã«ããµã¼ãã¹ã®ã¬ã¹ãã³ã¹ã¿ã¤ã ãæªåãããã¨ãããã¾ãã RTTã¨ã¬ã¹ãã³ã¹ã¿ã¤ã ã®ç¸é¢ã¯ãæ¥ç¶ãæ°¸ç¶åãã¦ããããã¦ããªãããã1ãªã¯ã¨ã¹ãå¦çãããã®æ¥ç¶æ°ãªã©ã«å½±é¿ããããããæ®å¿µãªããã·ã¹ãã ãã¨ã«ç°ãªãã¾ãã(ãã¼ã¿ãã¼ã¹æ¥ç¶ã®æ°¸ç¶åã«ã¤ãã¦ã¯ãWebã·ã¹ãã ã«ããããã¼ã¿ãã¼ã¹æ¥ç¶ã¢ã¼ããã¯ãã£æ¦è«[9]ã«ã¾ã¨ãã¦ãã¾ãã) ãããã£ã¦ãäºåã«ãã¹ãç°å¢ã§ã¬ã¹ãã³ã¹ã¿ã¤ã ã¸ã®å½±é¿ãè¨æ¸¬ã§ããã¨ããã§ãããã ã¬ã¹ãã³ã¹ã¿ã¤ã ã¸ã®å½±é¿ã大ããå ´åããµã¼ãã¹Bã®äºä¾ã®ããã«åã¹ããããä¸æ¯ã«å®è¡ããå½±é¿æéãå°ããããã¨ãã£ã工夫ãå¿ è¦ã«ãªããã¨ãããã¾ãã
å¯ç¨æ§
ã¬ã¹ãã³ã¹ã¿ã¤ã ã¸ã®å½±é¿ãå°ããã¦ããDCéãããã¯ã¼ã¯ã®å¯ç¨æ§ãé«ããªãå ´åãé·æéã®DCéãããã¯ã¼ã¯è»¢éã«å½±é¿ãã§ããã¨ãããã¾ãã ä¾ãã°ããµã¼ãã¹Bã®äºä¾ã®ããã«ã¤ã³ã¿ã¼ãããVPNãå©ç¨ããå ´åãdbã ã移è¡ãã¦é·æéæ¾ç½®ããã®ã¯é¿ãããã¨ãã¨ã§ãã éã«å°ç¨ç·ãç¨æã§ãããªããdbã ã移è¡ããå¤æããããã¾ãã å°ç¨ç·ã¯ãä¾ãã°ããããã¤ã³ã¿ã¼ãããã®ãµã¼ãã¹ã¨ãã¦ããã¤ããªããæ¥ç¶ãç¨æããã¦ãã¾ãã ãªã³ãã¬ãã¹ããã¯ã©ã¦ãã®å°ç¨ç·ã«ã¤ãã¦ã¯ãAWSã®å ´åãAWS Direct Connectã¨ãããµã¼ãã¹ãããã¾ãã ãã¯ã·ã£ããã®äºä¾ 10å¹´ãªã³ããã¬ã¦ãéç¨ããmixiãAWSã«ç§»è¡ãã10ã®çç± [10] ã«ã¦ãDirect Connectã®å©ç¨ãç´¹ä»ããã¦ãã¾ããå¯ç¨æ§ã«éãããä¿¡é ¼æ§ã®é«ãå°ç¨ç·ãç¨ãããã¨ã§ãåè¿°ã®ç§»è¡äºä¾ã®ããã«ä¸æã«ç§»è¡ããã®ã§ã¯ãªããå¾ã ã«ç½®ãæããä½æ¦ãã¨ããã¦ãã¾ãã
帯å
ãããã¯ã¼ã¯å¸¯å(æéãããã®è»¢éãã¼ã¿é)ã«ã¤ãã¦ããã®æç« ã®ã³ã³ããã¹ãã®ç¯å²å ã§ã¯ã以ä¸ã®ãããªå½±é¿ãããã¾ãã
- DCé帯åãå°ããã¨æ¢åãã¼ã¿ç§»è¡ã®æéãé·ããªã
- ãã¼ã¿ç§»è¡ãã©ãã£ãã¯ããä»ã®ã·ã¹ãã ã§å©ç¨ãã¦ããDCé帯åãå§è¿«ãã
帯åã¨ä¸å£ã«ãã£ã¦ããçµè·¯ã®ãã¡ã©ããããã«ããã¯ã«ãªããã¯ãã®ã¨ãã©ãã®ç¶æ³ã«ããã§ãããã çµé¨ã§ã¯ãæ¢åãã¼ã¿ç§»è¡æã«ã対å¤ç·ã®å¸¯åããå ã«ãã¼ã¿ç§»è¡ã®ããã®éåä¿¡ãããµã¼ãã®NICã®ã¹ã«ã¼ãããããå ±ç¨ã®NATã²ã¼ãã¦ã§ã¤ã®NICã®ã¹ã«ã¼ããããã¤ã³ã¿ã¼ãããVPNæ¥ç¶ãæ ãLinuxãµã¼ãã®CPUå©ç¨ãããã«ããã¯ã«ãªãã±ã¼ã¹ãããã¾ããã
ã¾ã¨ã
2ã¤ã®Webãµã¼ãã¹ã®DC移è¡äºä¾ãç´¹ä»ãããã®éã«å¿ è¦ã¨ãªã£ãæè¡è¦ç´ ãã¾ã¨ãã¾ããã æè¡è¦ç´ ã¨ãã¦ãæ¢åãã¼ã¿ç§»è¡ãæ°è¦ãã¼ã¿ç§»è¡ãDNSã¬ã³ã¼ãå¤æ´ãDCéãããã¯ã¼ã¯ã®ä¿¡é ¼æ§ãå é¨ã¨ã³ããã¤ã³ãã®å¤æ´ã移è¡å¤±ææã®ãã¼ã«ããã¯ã«ã¤ãã¦è°è«ãã¾ããã Webãµã¼ãã¹ã«ããããã¼ã¿ã»ã³ã¿ã¼ç§»è¡ã¯ãSREã®ä»äºã®ä¸ã§ãç·åçãªæè¡ãæ±ããããä»äºã§ãã ç¹å®ã®æè¡ã«å¯¾ãã¦ã®æ·±ãç解ãå¿ è¦ã¨ãããããç³»å ¨ä½ã俯ç°ããè¦ç¹ãå¿ è¦ã§ãã ã¢ããªã±ã¼ã·ã§ã³ã¨ã³ã¸ãã¢ã®ååããå¿èã®æè¡ã§åèãä»ãæ¿ãããã¯ã¿ã¼ã®ããã ã¨è©ãã¦ãããã¨ãè¨æ¶ã«æ®ã£ã¦ãã¾ãã
ä»åã¯ãæè¡è¦ç´ ã®ã¿ãç´¹ä»ãã¾ããããæè¡è¦ç´ ãè¸ã¾ããä¸ã§ç§»è¡è¨ç»ãè¨è¨ããã«ã¯ã以ä¸ã®ãããªåãã«çããå¿ è¦ãããã¾ãã
- ä½ã移è¡ãã(ããªã)ã®ã
- ãã¤ç§»è¡ããã®ã
- ã©ã®ããã«ç§»è¡ããã®ã
- 移è¡ä½æ¥ã®å½±é¿ç¯å²ã¯ãªã«ã
- ãã¼ã«ããã¯ã¯å¯è½ããå¯è½ã§ããã°ãã¼ã«ããã¯ããããã®å¤æåºæºã¯ãªã«ã
ãããã«ã¤ãã¦ã¯ãã¾ãã®æ©ä¼ã«æ¸ãããããã¨æãã¾ãã
åèè³æ
- [1]: はてなで大規模サービスのインフラを学んだ - ゆううきブログ
- [2]: はてなに入社して経験したMySQL4系のオンラインでのmaster切り替え - でこてっくろぐ ねお
- [3]: 大規模データ移行の失敗を防ぎたい。計画やプログラム、インフラの注意点と、ありがちなこと - Qiita
- [4]: 10年オンプレで運用したmixiをAWSに移行した10の理由 // Speaker Deck
- [5]: RedisサーバのCPU負荷対策パターン - ゆううきブログ
- [6]: なぜ「DNSの浸透」は問題視されるのか:Geekなぺーじ
- [7]: 「DNSの浸透」とアプリケーションのキャッシュ:Geekなぺーじ
- [8]: 大規模サーバリプレイスを支える技術 / Background of Large Scale Server Replace // Speaker Deck
- [9]: Webシステムにおけるデータベース接続アーキテクチャ概論 - ゆううきブログ
- [10]: 10年オンプレで運用したmixiをAWSに移行した10の理由 // Speaker Deck
*1:æè¿ã¯ãåãµã¼ãã¹ã®Aã¬ã³ã¼ãã®TTLãã¿ã¦ããã¨å¹³å¸¸æãã60ç§ä»¥ä¸ã®ãµã¤ããå¤ãã§ãã