æ¬èšäºã¯ 2026 幎 1 æ 6 æ¥ ã«å
¬éãããã Implement multi-Region endpoint routing for Amazon Aurora DSQL ãã翻蚳ãããã®ã§ãã Amazon Aurora DSQL ã¯ãäºå®äžç¡å¶éã®ã¹ã±ãŒã«ãæé«ã¬ãã«ã®å¯çšæ§ããŒãã€ã³ãã©ã¹ãã©ã¯ãã£ç®¡çãå®çŸããããµãŒããŒã¬ã¹ã®åæ£ PostgreSQL äºæããŒã¿ããŒã¹ã§ããAurora DSQL ã¯ãããŒã¿ããŒã¹ã·ã£ãŒãã£ã³ã°ãã€ã³ã¹ã¿ã³ã¹ã®ã¢ããã°ã¬ãŒãã®å¿
èŠæ§ã軜æžããã·ã³ã°ã«ãªãŒãžã§ã³ãšãã«ããªãŒãžã§ã³ã®äž¡æ¹ã®ãããã€ã¡ã³ãããµããŒãããŸããAurora DSQL ã¯ããã«ããªãŒãžã§ã³ã¯ã©ã¹ã¿ãŒã®åãªãŒãžã§ã³ã«å°çšã®ãªãŒãžã§ãã«ãšã³ããã€ã³ããæäŸããã¢ããªã±ãŒã·ã§ã³ãæé©ãªãªãŒãžã§ã³ã«çŽæ¥æ¥ç¶ããŠå¯èœãªéãäœãã¬ã€ãã³ã·ãŒãå®çŸã§ããããã«ããŸãããã®ã¢ãŒããã¯ãã£ã¯ãã¢ã¯ãã£ã-ã¢ã¯ãã£ã忣èšèšã«ãããèªã¿åããšæžã蟌ã¿ã«å¯ŸããŠåŒ·åãªããŒã¿æŽåæ§ãæäŸããã·ã³ã°ã«ãªãŒãžã§ã³ãããã€ã¡ã³ãã§ã¯ 99.99% ã®å¯çšæ§ããã«ããªãŒãžã§ã³ãããã€ã¡ã³ãã§ã¯ 99.999% ã®å¯çšæ§ãå®çŸããŸãã Aurora DSQL ãã«ããªãŒãžã§ã³ã¯ã©ã¹ã¿ãŒã䜿çšããã¢ããªã±ãŒã·ã§ã³ã¯ãDNS ããŒã¹ã®ã«ãŒãã£ã³ã°ãœãªã¥ãŒã·ã§ã³ ( Amazon Route 53 ãªã©) ãå®è£
ããŠãAWS ãªãŒãžã§ã³éã§ãã©ãã£ãã¯ãèªåçã«ãªãã€ã¬ã¯ãããå¿
èŠããããŸããããã«ãããAurora DSQL ã¯ã©ã¹ã¿ãŒãŸã㯠AWS ãªãŒãžã§ã³å
šäœãå°éäžèœã«ãªã£ãå Žåã§ããéçšã®ç¶ç¶æ§ã確ä¿ãããŸãã ãã¹ããã©ã¯ãã£ã¹ã§ã¯ããªãŒãžã§ãã«ãã§ã€ã«ãªãŒããŒãå
æ¬çã«ç®¡çããããã«ãã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã®ã«ãŒãã£ã³ã°ããžãã¯ãå®è£
ããããšãæšå¥šããŠããŸãããã ããã¢ããªã±ãŒã·ã§ã³ã Aurora DSQL ãå«ãè€æ°ã®ããŒã¿ã¹ãã¢ã«äŸåããŠããå ŽåãAurora DSQL ãªãŒãžã§ãã«ãšã³ããã€ã³ããå°éäžèœã«ãªãç¶æ³ãåŠçããããã®ç¹å®ã®æŠç¥ãå¿
èŠã§ãããã®èšäºã§ã¯ãæåã§ã®èšå®å€æŽãå¿
èŠãšããã«ãããŒã¿ããŒã¹ãã©ãã£ãã¯ã代æ¿ãªãŒãžã§ãã«ãšã³ããã€ã³ãã«èªåçã«ãªãã€ã¬ã¯ããããœãªã¥ãŒã·ã§ã³ã玹ä»ããŸããç¹ã«ãæ··åšããŒã¿ã¹ãã¢ç°å¢ã«ãããŠæå¹ã§ãã ãã«ããªãŒãžã§ã³ Aurora DSQL ã¯ã©ã¹ã¿ãŒã®ãšã³ããã€ã³ã管ç Amazon Aurora DSQL ãæ°žç¶åå±€ãšããŠäœ¿çšããããã«ããªãŒãžã§ã³ã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£ãèŠãŠã¿ãŸãããã Aurora DSQL ãã«ããªãŒãžã§ã³ã¯ã©ã¹ã¿ãŒã¯ãåæã¯ãã¹ãªãŒãžã§ã³ã¬ããªã±ãŒã·ã§ã³ã䜿çšããŠããªãŒãžã§ã³é (ããã³å³ã«ã¯ç€ºãããŠããªã DSQL ãŠã£ãããã¹ãªãŒãžã§ã³é) ã§åŒ·åãªæŽåæ§ãç¶æããŸããDSQL ã¯ãã©ã¡ãã®ãªãŒãžã§ãã«ãšã³ããã€ã³ãã§ãèªã¿åããšæžã蟌ã¿ãåãå
¥ããããšãã§ããAurora DSQL ã®åŒ·åãªæŽåæ§ã®ãããã§ããªãŒãžã§ã³ A ã®ãªãŒããŒã¯ãªãŒãžã§ã³ B ã§ã³ããããããæžã蟌ã¿ãããã«ç¢ºèªã§ãããã®éãå¯èœã§ããDSQL ã®ãã®ç¹æ§ã«ããããã«ããªãŒãžã§ã³ã¢ã¯ãã£ã-ã¢ã¯ãã£ãã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãã¯ããã«ç°¡åã«ãªããŸãã DSQL ãã¯ãã¹ãªãŒãžã§ã³ã®èª¿æŽãã¡ãã»ãŒãžã³ã°ãå®âŸãããããã¢ããªã±ãŒã·ã§ã³ã¯ä»ã®ãªãŒãžã§ã³ãèæ
®ããå¿
èŠã¯ãããŸããã Aurora DSQL ã§ã¯ããµãŒãã¹ããããã®æäœãèªåçã«åŠçãããããããŒã¿ããŒã¹ã®ãã§ã€ã«ãªãŒããŒãã¹ã€ãããªãŒããŒæäœãå¿é
ããå¿
èŠã¯ãããŸããããã ããã¢ããªã±ãŒã·ã§ã³ãç°ãªã API ã³ãŒã«ã«å¯ŸããŠè€æ°ã®ããŒã¿ã¹ãã¢ã䜿çšããç¹å®ã®ã·ããªãªããå€éšããŒã¿ã»ã³ã¿ãŒãããã«ããªãŒãžã§ã³ DSQL ã¯ã©ã¹ã¿ãŒã«æ¥ç¶ããã¢ããªã±ãŒã·ã§ã³ã®å ŽåãDSQL ãšã³ããã€ã³ãéãçŽæ¥åãæ¿ããæ¹ããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãšã³ããã€ã³ãå
šäœããªãã€ã¬ã¯ããããããå¹ççã§ãããã®ã¢ãããŒãã¯ãå®å
šãªã¢ããªã±ãŒã·ã§ã³ã¹ã¿ãã¯ãç§»åããã®ã§ã¯ãªãã圱é¿ãåããããŒã¿ããŒã¹æ¥ç¶ã®ã¿ãã¿ãŒã²ããã«ããããšã§ãéçšã®è€éãã軜æžãããµãŒãã¹äžææã«å¿
èŠãªåŽåãæå°éã«æããŸããDSQL ãªãŒãžã§ãã«ã¯ã©ã¹ã¿ãŒã«äžæãåŒãèµ·ããã€ãã³ãã¯ã圱é¿ãåãããªãŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ã®å¯çšæ§ã«ã圱é¿ãäžããå¯èœæ§ããããŸãããã«ããªãŒãžã§ã³ DSQL ã¯ã©ã¹ã¿ãŒã»ããã¢ããã§ãªãŒãžã§ãã«ãšã³ããã€ã³ãé害ãçºçããå Žåã«ãã¢ããªã±ãŒã·ã§ã³ãå°éå¯èœãªãªãŒãžã§ãã«ãšã³ããã€ã³ãã«æ¥ç¶ããèªååããããœãªã¥ãŒã·ã§ã³ã玹ä»ããŸãã ãã®èšäºã§èª¬æãããœãªã¥ãŒã·ã§ã³ã¯ã GitHub ã§ãµã³ãã«ã³ãŒããšããŠå
¥æã§ããŸãã ãœãªã¥ãŒã·ã§ã³æŠèŠ ãã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ãã«ã¹ã¿ã Python ã¯ã©ã€ã¢ã³ãåŽã©ã€ãã©ãªã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ãã Aurora DSQL ãšã³ããã€ã³ãéã®æ¥ç¶ã®èªåãªãã€ã¬ã¯ããå®è£
ããæ¹æ³ã瀺ããŸãããããã€ããããšã Amazon Route 53 API ãéã㊠Aurora DSQL ãšã³ããã€ã³ããç£èŠããŸããã©ã€ãã©ãªã¯ããŸããããã®ãã«ã¹ãã§ãã¯ãéããŠæ£åžžãªãšã³ããã€ã³ããèå¥ããæ¬¡ã«ã¯ã©ã€ã¢ã³ããšåæ£åžžãªãšã³ããã€ã³ãéã®ã¬ã€ãã³ã·ãŒã枬å®ããŸããã¯ã©ã€ã¢ã³ãæ¥ç¶ããæãäœãã¬ã€ãã³ã·ãŒãæã€æ£åžžãªãšã³ããã€ã³ãã«èªåçã«ã«ãŒãã£ã³ã°ãããªãŒãžã§ãã«ãšã³ããã€ã³ããå°éäžèœã«ãªããŸããªã€ãã³ããçºçããå Žåã§ããã¯ã©ã€ã¢ã³ãæ¥ç¶ãæãäœãã¬ã€ãã³ã·ãŒãæã€æ£åžžãª Aurora DSQL ãšã³ããã€ã³ãã«ã«ãŒãã£ã³ã°ãããããšãä¿èšŒããŸãããããŠãAurora DSQL ã®åŒ·åãªæŽåæ§ã®ãããã§ãã¯ã©ã€ã¢ã³ãã¯ä»»æã®ãšã³ããã€ã³ãã§æ£åžžã«ã³ãããããããã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ã®çµæãããã«ç¢ºèªã§ããŸãã ãã®ãœãªã¥ãŒã·ã§ã³ã®äž»ãªæ©èœãèŠãŠã¿ãŸãããã èªåãšã³ããã€ã³ãéžæ â æé©ãªæ¥ç¶æ§ãæäŸããããã«ããã®ãœãªã¥ãŒã·ã§ã³ã¯å©çšå¯èœãªããŒã¿ããŒã¹ã¯ã©ã¹ã¿ãŒãšã³ããã€ã³ãã®åçãªã¹ããç¶æããå©çšå¯èœãªãšã³ããã€ã³ãã«å¯ŸããŠå®æçã«ã¬ã€ãã³ã·ãŒãã¹ããå®è¡ããå¿çæéã«åºã¥ããŠã©ã³ã¯ä»ãããããªã¹ããäœæããŸãããã®ã©ã³ãã³ã°ã¯ãèšå®ãã¡ã€ã«ã§äºåå®çŸ©ãããåªå
床èšå®ãšçµã¿åããããŸããåãšã³ããã€ã³ããžã®ã¬ã€ãã³ã·ãŒã«åºã¥ããŠã忥ç¶ã«æé©ãªãšã³ããã€ã³ããéžæããŸãã Route 53 ãã«ã¹ãã§ã㯠â ãã®ãœãªã¥ãŒã·ã§ã³ã¯ã Route 53 ãã«ã¹ãã§ã㯠ãšçµ±åãããAWS ã°ããŒãã«ã€ã³ãã©ã¹ãã©ã¯ãã£ã䜿çšããŠå
æ¬çãªãã«ã¹ç£èŠãè¡ããŸãããã®ã¢ãããŒãã¯ããšã³ããã€ã³ãã®ãã«ã¹ãç¶æããã«ãŒãã£ã³ã°ã®æ±ºå®ã«æ
å ±ãæäŸããããã®å
ç¢ã§æè»ãªã·ã¹ãã ãæäŸããŸãã èªåæ¥ç¶ãã§ã€ã«ãªãŒããŒãµããŒã â é«å¯çšæ§ãç¶æããã¢ããªã±ãŒã·ã§ã³ã®ããŠã³ã¿ã€ã ãæå°éã«æããããã«ããœãªã¥ãŒã·ã§ã³ã¯åãªãŒãžã§ãã«ããŒã¿ããŒã¹ã¯ã©ã¹ã¿ãŒãšã³ããã€ã³ãã®ãã«ã¹ãç¶ç¶çã«ç£èŠããŸããçŸåšã®ãšã³ããã€ã³ãã§åé¡ãæ€åºããããšãã¯ã©ã€ã¢ã³ãæ¥ç¶ãæ£åžžãªä»£æ¿ãšã³ããã€ã³ãã«èªåçã«ãªãã€ã¬ã¯ãããŸããããã«ãããç¹å®ã®ãšã³ããã€ã³ããå°éäžèœãªå Žåã§ããã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã¯ç¶ç¶çãªããŒã¿ããŒã¹ã¢ã¯ã»ã¹ãç¶æããŸãããã®ãœãªã¥ãŒã·ã§ã³ã¯ãã¯ã©ã€ã¢ã³ããããŒã¿ããŒã¹æ¥ç¶ã確ç«ãããªãŒãžã§ã³ã管çããŸãããã®çµæãã¢ããªã±ãŒã·ã§ã³ãæåä»å
¥ãªãã«å©çšå¯èœãªãšã³ããã€ã³ãã«ã¹ã ãŒãºã«ç§»è¡ããããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãžã®äžæãæå°éã«æããããŸãã æ¬¡ã®å³ã¯ããœãªã¥ãŒã·ã§ã³ã®ã¯ãŒã¯ãããŒã瀺ããŠããŸãã ã¯ãŒã¯ãããŒã«ã¯æ¬¡ã®ã¹ããããå«ãŸããŸãã ã¯ã©ã€ã¢ã³ã (ã¯ã©ã¹ã¿ãŒããããã€ãããŠããããããã®ãªãŒãžã§ã³ã§å®è¡) ã¯ã get_connection() ãåŒã³åºããŠæ¥ç¶ãéå§ããŸãããã®åŸãã©ã€ãã©ãªã¯å©çšå¯èœãª DSQL ãšã³ããã€ã³ããè©äŸ¡ãããã«ã¹ãšããã©ãŒãã³ã¹ã¡ããªã¯ã¹ã«åºã¥ããŠæé©ãªæ¥ç¶ã確ç«ããŸãã ã©ã€ãã©ãªã¯ããªã¢ã«ã¿ã€ã ã®ãšã³ããã€ã³ãã¹ããŒã¿ã¹ã«ã€ã㊠Route 53 ãã«ã¹ãã§ãã¯ãåç
§ããŸãããããã®ãã«ã¹ãã§ãã¯ã¯ 30 ç§ééã§å®è¡ããããšã³ããã€ã³ãã®å¯çšæ§ã«é¢ããã»ãŒææ°ã®æ
å ±ãæäŸããå£åãŸãã¯é害ã®å
åãç¶ç¶çã«ç£èŠããŸãã ãã«ã¹ãã§ãã¯ããŒã¿ã䜿çšããŠãã©ã€ãã©ãªã¯æ£åžžãªãšã³ããã€ã³ãã«æ¥ç¶ããŸãããã©ã€ããªãšã³ããã€ã³ãã倱æããå Žåãã·ã¹ãã ã¯èªåçã«æ£åžžãªä»£æ¿ãšã³ããã€ã³ãã«ãªãã€ã¬ã¯ãããŸãã åææ¡ä»¶ ãã®ãœãªã¥ãŒã·ã§ã³ããããã€ããã«ã¯ã次ã®åææ¡ä»¶ãå®äºããå¿
èŠããããŸãã ãã«ããªãŒãžã§ã³ Aurora DSQL ã¯ã©ã¹ã¿ãŒãäœæ ããäž¡æ¹ã®ãªãŒãžã§ã³ã® cluster id ãš endpoint ã®å€ããã£ããã£ããŸãã Python ããŒãžã§ã³ 3.10 以äžãã·ã¹ãã ã«ã€ã³ã¹ããŒã«ãããŠããããšã確èªããŸããã¿ãŒããã«ã§æ¬¡ã®ã³ãŒããå®è¡ããŠã€ã³ã¹ããŒã«ã確èªããŸãã python3 --version é©å㪠DSQL ã¢ã¯ã»ã¹æš©éãæã€ AWS èªèšŒæ
å ±ãååŸããŸãã AWS ã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ (AWS CLI) ãŸãã¯ç°å¢å€æ°ã䜿çšããŠãããã®èªèšŒæ
å ±ãèšå®ããŸãã ã·ã¹ãã ã DSQL ãšã³ããã€ã³ããžã®ãããã¯ãŒã¯ã¢ã¯ã»ã¹ãæã£ãŠããããšã確èªããŸããããã«ã¯ã Amazon Virtual Private Cloud (VPC) èšå®ãŸãã¯ã»ãã¥ãªãã£ã°ã«ãŒãã®èšå®ãå«ãŸããå ŽåããããŸãã AWS èªèšŒæ
å ±ã« Route 53 ãã«ã¹ãã§ãã¯ãäœæããã³ç®¡çããæš©éãããããšã確èªããŸãã Python ãšäŸåããã±ãŒãžã®ã€ã³ã¹ããŒã«ãããã³ AWS CLI ã®èšå® 次ã®ã¹ããããå®äºããŸãã ãªããžããªãã¯ããŒã³ããŸãã git clone https://github.com/aws-samples/sample-multi-region-Endpoint-Routing-for-Aurora-DSQL.git cd sample-multi-region-Endpoint-Routing-for-Aurora-DSQL Python ç°å¢ãã»ããã¢ãããã venv ãšããååã®æ°ããä»®æ³ç°å¢ãäœæããŸãã python3 -m venv venv source venv/bin/activate # Windows ã®å Žå: venv\Scripts\activate ãã®ãœãªã¥ãŒã·ã§ã³ãå®è¡ããããã«å¿
èŠãªããã¡ã€ã« requirements.txt å
ã®å¿
èŠãªäŸåé¢ä¿ãã€ã³ã¹ããŒã«ããŸãã pip install -r requirements.txt AWS CLI ãèšå®ããŸããããã«ãããèªèšŒæ
å ±ãã°ããŒãã«ã«èšå®ãã䟿å©ãªæ¹æ³ãæäŸãããŸãã aws login ã¿ãŒããã«ã®ããã³ããã«åŸããŸããã³ãã³ãã¯èªåçã«ããã©ã«ãã®ãã©ãŠã¶ãéããèªèšŒããã»ã¹ãã¬ã€ãããŸããèªèšŒãæåãããšãAWS CLI ã»ãã·ã§ã³ã¯æå€§ 12 æéæå¹ã«ãªããŸãã èšå®ãã¡ã€ã«ãš Route 53 ãã«ã¹ãã§ãã¯ã®ã»ããã¢ãã GitHub ãªããžããªã«ã¯ã dsql_config_with_healthchecks.json ãšããååã®èšå®ãã¡ã€ã«ãå«ãŸããŠããŸãããã®ãã¡ã€ã«ã«ã¯ã次ã®äŸã®ãããªæ§é ããããŸããæ¬¡ã®ãã£ãŒã«ãã倿Žããå¿
èŠããããŸãã äž¡æ¹ã®ãªãŒãžã§ã³ã«ã€ããŠãåææ¡ä»¶ã§èšé²ããã¯ã©ã¹ã¿ãŒ ID ã䜿çšã㊠cluster_id ãã£ãŒã«ããæŽæ°ããŸãã hostname ãã£ãŒã«ããã以åã«ãã£ããã£ãããªãŒãžã§ãã« DSQL ãšã³ããã€ã³ãã«çœ®ãæããŸãã { "endpoints": [ { "cluster_id": "<Your-cluster-id>", "region": "<cluster-region-1>", "hostname": "<Your-Cluster-endpoint>", "port": 5432, "health_check_id": "" }, { "cluster_id": "<Your-cluster-id>", "region": "<cluster-region-2>", "hostname": "<Your-Cluster-endpoint>", "port": 5432, "health_check_id": "" } ], "connection_settings": { "connect_timeout": 5, "application_name": "dsql-hybrid-router", "keepalives": 1, "keepalives_idle": 30, "keepalives_interval": 10, "keepalives_count": 3 } } ã¿ãŒããã«ã§æ¬¡ã®ã³ãã³ããå®è¡ããŠããšã³ããã€ã³ãã® Route 53 ãã«ã¹ãã§ãã¯ãäœæããŸãã python3 hybrid_failover_approach.py --setup --config dsql_config_with_healthchecks.json ãã®ã¹ã¯ãªããã®ãã©ã¡ãŒã¿ã«ã¯æ¬¡ã®ãã®ãå«ãŸããŸãã âconfig â ãã®ãã©ã¡ãŒã¿ã¯ãèšå®ãã¡ã€ã«ãžã®ãã¹ãæå®ããŸããèšå®ãã¡ã€ã«ã¯ãDSQL ãšã³ããã€ã³ããšæ¥ç¶èšå®ã«é¢ããæ
å ±ãå«ã JSON ãã¡ã€ã« dsql_config_with_healthchecks.json ã§ãã âsetup â ãã®ãã©ã¡ãŒã¿ã¯ãRoute 53 ãã«ã¹ãã§ãã¯ãäœæããèšå®ãã¡ã€ã« dsql_config_with_healthchecks.json å
ã®åãšã³ããã€ã³ãã® health_check_id ãæŽæ°ããŸãã âtest â ãã®ãã©ã¡ãŒã¿ã¯ãæ¥ç¶ãã¹ããå®è¡ããããã®ãã®ã§ãã ãã®ã¹ã¯ãªããã¯ãèšå®ãã¡ã€ã«ãèªã¿åããåãšã³ããã€ã³ãã® Route 53 ã«ãã«ã¹ãã§ãã¯ãäœæããæ°ããäœæããããã«ã¹ãã§ã㯠ID ã§èšå®ãã¡ã€ã«ãæŽæ°ããŸãã health_check_id ã¯ãåãšã³ããã€ã³ãã«é¢é£ä»ãããã Route 53 ãã«ã¹ãã§ãã¯ã®äžæã®èå¥åã§ãã { "endpoints": [ { "cluster_id": "<your-cluster-id-1>", "region": "us-east-1", "hostname": "<your-hostname-1.dsql.us-east-1.on.aws>", "port": 5432, "health_check_id": "57a713b9-a58f-4ae5-baaa-70cf62ca78eb" }, { "cluster_id": "<your-cluster-id-2>", "region": "us-east-2", "hostname": "<your-hostname-2.dsql.us-east-1.on.aws>", "port": 5432, "health_check_id": "37d3a545-2917-4e8f-9e44-f7d5e9b966a7" } ], "connection_settings": { "connect_timeout": 5, "application_name": "dsql-hybrid-router", "keepalives": 1, "keepalives_idle": 30, "keepalives_interval": 10, "keepalives_count": 3 } } Route 53 ãã«ã¹ãã§ãã¯ãšã¯ã©ã€ã¢ã³ãåŽã¬ã€ãã³ã·ãŒã«ãŒãã£ã³ã°ã«ããæ¥ç¶ãã¹ã DSQL ãšã³ããã€ã³ããžã®åºæ¬çãªæ¥ç¶ããã¹ãããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãããã®ã¹ã¯ãªããã¯ãæé©ãªãšã³ããã€ã³ãéžæã®ããã®ã¯ã©ã€ã¢ã³ãåŽã¬ã€ãã³ã·ãŒæž¬å®ãä¿¡é Œæ§ã®é«ããã«ã¹ç£èŠã®ããã® Route 53 ãã«ã¹ãã§ãã¯ãããã³ç¶ç¶çãªãµãŒãã¹å¯çšæ§ãæäŸããèªåãã§ã€ã«ãªãŒããŒæ©èœãçµã¿åãããŠããŸãã python3 hybrid_failover_approach.py --test --config dsql_config_with_healthchecks.json --database postgres --user admin Route 53 ãã«ã¹ãã§ãã¯ã«ãããã§ã€ã«ãªãŒããŒã®ãã¹ã ãã®ãã¹ãã¯ãé害ã·ããªãªãã·ãã¥ã¬ãŒãããã·ã¹ãã ãé©åã«å¿çããããšãæ€èšŒããŸããæ¬¡ã®ã³ãã³ãã§ãã¹ãã¹ã¯ãªãããå®è¡ããŸãã python3 test_route53_failover.py --config dsql_config_with_healthchecks.json --database postgres --user admin ãã®ã¹ã¯ãªããã¯ãã¢ããªã±ãŒã·ã§ã³ (ãŸãã¯ã¯ã©ã€ã¢ã³ãæ¥ç¶) ã®ãã§ã€ã«ãªãŒããŒã¡ã«ããºã ãæ€èšŒããããã®äžé£ã®æäœãå®è¡ããŸãã ãŸããèšå®ã®åªå
é äœã«ãã£ãŠæ±ºå®ãããæé©ãªå©çšå¯èœãªãšã³ããã€ã³ããžã®æ¥ç¶ã確ç«ããŸãã æ¥ç¶åŸãã¹ã¯ãªããã¯æå³çã«ãã®ãã©ã€ããªãšã³ããã€ã³ãã«é¢é£ä»ãããã Route 53 ãã«ã¹ãã§ãã¯ãç¡å¹ã«ããé害ãã·ãã¥ã¬ãŒãããŸãã æ¬¡ã«ãã¹ã¯ãªããã¯ãã«ã¹ãã§ãã¯ã¹ããŒã¿ã¹ã AWS ãããã¯ãŒã¯ãéããŠäŒæããã®ãåŸ
ã¡ãå®éã®éå®³ç¶æ
ãåçŸããŸãã ãã®åŸãã¹ã¯ãªããã¯æ°ããæ¥ç¶ã®äœæã詊ã¿ããã©ã€ããªã®é害ã·ãã¥ã¬ãŒã·ã§ã³ã«ãããã»ã«ã³ããªãšã³ããã€ã³ãã«ãã§ã€ã«ãªãŒããŒããã¯ãã§ãã ãã®æéäžãã·ã¹ãã ãã»ã«ã³ããªãšã³ããã€ã³ããžã®ãã§ã€ã«ãªãŒããŒã«æåããããšãæ€èšŒãããã©ã€ããªãšã³ããã€ã³ãã®ã·ãã¥ã¬ãŒããããé害ã«ãããããããç¶ç¶çãªåäœã確èªããŸãã ãã§ã€ã«ãªãŒããŒã®æåã確èªããåŸãã¹ã¯ãªããã¯ãã©ã€ããªãšã³ããã€ã³ãã®ãã«ã¹ãã§ãã¯ãå床æå¹ã«ãã埩å
ããããã©ã€ããªãšã³ããã€ã³ããžã®æ¥ç¶ãåã³ç¢ºç«ã§ããããšãæ€èšŒããŸãã python3 test_route53_failover.py --config dsql_config_with_healthchecks.json --database postgres --user admin; 2025-05-21 19:03:52,864 - main - INFO - === STEP 1: Testing connection under normal conditions === 2025-05-21 19:03:52,866 - dsql_hybrid_manager - INFO - Loaded configuration from dsql_config_with_healthchecks.json 2025-05-21 19:03:52,879 - botocore.credentials - INFO - Found credentials in environment variables. 2025-05-21 19:03:52,982 - dsql_hybrid_manager - INFO - Initialized DSQL Hybrid Connection Manager with 2 endpoints 2025-05-21 19:03:54,055 - dsql_hybrid_manager - INFO - Route 53 health check a4709bfe-bc41-4afc-9f55-4919ee884b7c: 16/16 healthy observations 2025-05-21 19:03:54,055 - dsql_hybrid_manager - INFO - Route 53 health check a4709bfe-bc41-4afc-9f55-4919ee884b7c: Healthy 2025-05-21 19:03:55,011 - dsql_hybrid_manager - INFO - Route 53 health check 46eca8a2-6a07-43e6-94fb-21f95fb11d5a: 16/16 healthy observations 2025-05-21 19:03:55,011 - dsql_hybrid_manager - INFO - Route 53 health check 46eca8a2-6a07-43e6-94fb-21f95fb11d5a: Healthy 2025-05-21 19:03:55,011 - dsql_hybrid_manager - INFO - Found 2 healthy endpoints out of 2 2025-05-21 19:03:55,057 - dsql_hybrid_manager - INFO - Endpoint latency comparison: 2025-05-21 19:03:55,057 - dsql_hybrid_manager - INFO - 1. xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws - Latency: 0.002422s, Priority: 1, Region: us-east-2 2025-05-21 19:03:55,057 - dsql_hybrid_manager - INFO - 2. yyyyyyyyyyyyyyy.dsql.us-east-1.on.aws - Latency: 0.012726s, Priority: 2, Region: us-east-1 2025-05-21 19:03:55,057 - dsql_hybrid_manager - INFO - Selected best endpoint: xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws (latency: 0.002422s, priority: 1) 2025-05-21 19:03:55,058 - main - INFO - Best endpoint selected: xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws (latency: 0.002422s) 2025-05-21 19:03:55,058 - main - INFO - Health check ID: a4709bfe-bc41-4afc-9f55-4919ee884b7c 2025-05-21 19:03:55,058 - dsql_hybrid_manager - INFO - Found 2 healthy endpoints out of 2 2025-05-21 19:03:55,100 - dsql_hybrid_manager - INFO - Generating DSQL admin auth token for xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws in us-east-2 2025-05-21 19:03:55,101 - dsql_hybrid_manager - INFO - Generated token preview: jiabuacbso...a4e75aa0f9 2025-05-21 19:03:55,101 - dsql_hybrid_manager - INFO - Connecting to xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws (latency: 0.001538s, region: us-east-2, priority: 1) 2025-05-21 19:03:55,344 - dsql_hybrid_manager - INFO - Successfully connected to xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws 2025-05-21 19:03:55,344 - main - INFO - Connected to: xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws 2025-05-21 19:03:55,344 - main - INFO - Running query iteration 1/1 2025-05-21 19:03:55,451 - main - INFO - Result: ('PostgreSQL 16',) 2025-05-21 19:03:55,451 - main - INFO - Query execution time: 106.33ms 2025-05-21 19:03:55,451 - main - INFO - Average query execution time over 1 iterations: 106.33ms 2025-05-21 19:03:55,451 - main - INFO - Connection closed 2025-05-21 19:03:55,452 - main - INFO - === STEP 2: Simulating failure of the primary endpoint's health check: a4709bfe-bc41-4afc-9f55-4919ee884b7c === 2025-05-21 19:03:55,627 - main - INFO - Disabled health check a4709bfe-bc41-4afc-9f55-4919ee884b7c to simulate failure 2025-05-21 19:03:55,628 - main - INFO - Waiting 60 seconds for health check status to propagate... 2025-05-21 19:04:55,674 - main - INFO - === STEP 3: Testing connection with primary endpoint health check failure === 2025-05-21 19:04:55,674 - dsql_hybrid_manager - INFO - Loaded configuration from dsql_config_with_healthchecks.json 2025-05-21 19:04:55,684 - dsql_hybrid_manager - INFO - Initialized DSQL Hybrid Connection Manager with 2 endpoints 2025-05-21 19:04:55,796 - dsql_hybrid_manager - ERROR - Error checking Route 53 health status for a4709bfe-bc41-4afc-9f55-4919ee884b7c: An error occurred (InvalidInput) when calling the GetHealthCheckStatus operation: Invalid parameter : The specified health check has a special status of always healthy. GetHealthCheckStatus can't return the status of one of these special health checks. 2025-05-21 19:04:56,797 - dsql_hybrid_manager - INFO - Route 53 health check 46eca8a2-6a07-43e6-94fb-21f95fb11d5a: 16/16 healthy observations 2025-05-21 19:04:56,797 - dsql_hybrid_manager - INFO - Route 53 health check 46eca8a2-6a07-43e6-94fb-21f95fb11d5a: Healthy 2025-05-21 19:04:56,797 - dsql_hybrid_manager - INFO - Found 1 healthy endpoints out of 2 2025-05-21 19:04:56,837 - dsql_hybrid_manager - INFO - Endpoint latency comparison: 2025-05-21 19:04:56,837 - dsql_hybrid_manager - INFO - 1. yyyyyyyyyyyyyyy.dsql.us-east-1.on.aws - Latency: 0.013187s, Priority: 2, Region: us-east-1 2025-05-21 19:04:56,837 - dsql_hybrid_manager - INFO - Selected best endpoint: yyyyyyyyyyyyyyy.dsql.us-east-1.on.aws (latency: 0.013187s, priority: 2) 2025-05-21 19:04:56,837 - main - INFO - Best endpoint selected: yyyyyyyyyyyyyyy.dsql.us-east-1.on.aws (latency: 0.013187s) 2025-05-21 19:04:56,837 - main - INFO - Health check ID: 46eca8a2-6a07-43e6-94fb-21f95fb11d5a 2025-05-21 19:04:56,878 - dsql_hybrid_manager - ERROR - Error checking Route 53 health status for a4709bfe-bc41-4afc-9f55-4919ee884b7c: An error occurred (InvalidInput) when calling the GetHealthCheckStatus operation: Invalid parameter : The specified health check has a special status of always healthy. GetHealthCheckStatus can't return the status of one of these special health checks. 2025-05-21 19:04:56,879 - dsql_hybrid_manager - INFO - Found 1 healthy endpoints out of 2 2025-05-21 19:04:56,918 - dsql_hybrid_manager - INFO - Generating DSQL admin auth token for yyyyyyyyyyyyyyy.dsql.us-east-1.on.aws in us-east-1 2025-05-21 19:04:56,919 - dsql_hybrid_manager - INFO - Generated token preview: e4abuacbso...238cb4c5fe 2025-05-21 19:04:56,919 - dsql_hybrid_manager - INFO - Connecting to yyyyyyyyyyyyyyy.dsql.us-east-1.on.aws (latency: 0.011756s, region: us-east-1, priority: 2) 2025-05-21 19:04:57,234 - dsql_hybrid_manager - INFO - Successfully connected to yyyyyyyyyyyyyyy.dsql.us-east-1.on.aws 2025-05-21 19:04:57,234 - main - INFO - Connected to: yyyyyyyyyyyyyyy.dsql.us-east-1.on.aws 2025-05-21 19:04:57,234 - main - INFO - Running query iteration 1/1 2025-05-21 19:04:57,368 - main - INFO - Result: ('PostgreSQL 16',) 2025-05-21 19:04:57,368 - main - INFO - Query execution time: 133.73ms 2025-05-21 19:04:57,368 - main - INFO - Average query execution time over 1 iterations: 133.73ms 2025-05-21 19:04:57,368 - main - INFO - Connection closed 2025-05-21 19:04:57,369 - main - INFO - Failover successful! Switched from xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws to yyyyyyyyyyyyyyy.dsql.us-east-1.on.aws 2025-05-21 19:04:57,369 - main - INFO - === STEP 4: Restoring original health check configuration === 2025-05-21 19:04:57,500 - main - INFO - Re-enabled health check a4709bfe-bc41-4afc-9f55-4919ee884b7c 2025-05-21 19:04:57,502 - main - INFO - Waiting 60 seconds for health check status to propagate... 2025-05-21 19:05:57,553 - main - INFO - === STEP 5: Testing connection after restoring health check === 2025-05-21 19:05:57,554 - dsql_hybrid_manager - INFO - Loaded configuration from dsql_config_with_healthchecks.json 2025-05-21 19:05:57,561 - dsql_hybrid_manager - INFO - Initialized DSQL Hybrid Connection Manager with 2 endpoints 2025-05-21 19:05:58,571 - dsql_hybrid_manager - INFO - Route 53 health check a4709bfe-bc41-4afc-9f55-4919ee884b7c: 16/16 healthy observations 2025-05-21 19:05:58,571 - dsql_hybrid_manager - INFO - Route 53 health check a4709bfe-bc41-4afc-9f55-4919ee884b7c: Healthy 2025-05-21 19:05:59,775 - dsql_hybrid_manager - INFO - Route 53 health check 46eca8a2-6a07-43e6-94fb-21f95fb11d5a: 16/16 healthy observations 2025-05-21 19:05:59,775 - dsql_hybrid_manager - INFO - Route 53 health check 46eca8a2-6a07-43e6-94fb-21f95fb11d5a: Healthy 2025-05-21 19:05:59,775 - dsql_hybrid_manager - INFO - Found 2 healthy endpoints out of 2 2025-05-21 19:05:59,815 - dsql_hybrid_manager - INFO - Endpoint latency comparison: 2025-05-21 19:05:59,815 - dsql_hybrid_manager - INFO - 1. xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws - Latency: 0.001920s, Priority: 1, Region: us-east-2 2025-05-21 19:05:59,815 - dsql_hybrid_manager - INFO - 2. yyyyyyyyyyyyyyy.dsql.us-east-1.on.aws - Latency: 0.011219s, Priority: 2, Region: us-east-1 2025-05-21 19:05:59,815 - dsql_hybrid_manager - INFO - Selected best endpoint: xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws (latency: 0.001920s, priority: 1) 2025-05-21 19:05:59,815 - main - INFO - Best endpoint selected: xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws (latency: 0.001920s) 2025-05-21 19:05:59,815 - main - INFO - Health check ID: a4709bfe-bc41-4afc-9f55-4919ee884b7c 2025-05-21 19:05:59,815 - dsql_hybrid_manager - INFO - Found 2 healthy endpoints out of 2 2025-05-21 19:05:59,862 - dsql_hybrid_manager - INFO - Generating DSQL admin auth token for.dsql.us-east-2.on.aws in us-east-2 2025-05-21 19:05:59,864 - dsql_hybrid_manager - INFO - Generated token preview: jiabuacbso...f42f2e31ea 2025-05-21 19:05:59,865 - dsql_hybrid_manager - INFO - Connecting to xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws (latency: 0.001445s, region: us-east-2, priority: 1) 2025-05-21 19:06:00,099 - dsql_hybrid_manager - INFO - Successfully connected to xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws 2025-05-21 19:06:00,099 - main - INFO - Connected to: xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws 2025-05-21 19:06:00,099 - main - INFO - Running query iteration 1/1 2025-05-21 19:06:00,210 - main - INFO - Result: ('PostgreSQL 16',) 2025-05-21 19:06:00,210 - main - INFO - Query execution time: 110.73ms 2025-05-21 19:06:00,210 - main - INFO - Average query execution time over 1 iterations: 110.73ms 2025-05-21 19:06:00,211 - main - INFO - Connection closed 2025-05-21 19:06:00,211 - main - INFO - === ROUTE 53 FAILOVER TEST SUMMARY === 2025-05-21 19:06:00,211 - main - INFO - Primary endpoint: xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws 2025-05-21 19:06:00,212 - main - INFO - Failover endpoint: yyyyyyyyyyyyyyy.dsql.us-east-1.on.aws 2025-05-21 19:06:00,212 - main - INFO - Restored endpoint: xxxxxxxxxxxxxxx.dsql.us-east-2.on.aws 2025-05-21 19:06:00,212 - main - INFO - RESULT: Route 53 failover test SUCCESSFUL! ã¢ããªã±ãŒã·ã§ã³ã§ã® DSQL æ¥ç¶ãããŒãžã£ãŒã®äœ¿çš hybrid_failover_approach.py ãã¡ã€ã«ãå
¥æããããã¢ããªã±ãŒã·ã§ã³ãžã®çµ±åã¯ç°¡åã§ããæ¥ç¶ãããŒãžã£ãŒã¯ãããŒã¿ããŒã¹æ¥ç¶ã®ããããã€ã³çœ®æãšããŠèšèšãããŠãããããã¯ã°ã©ãŠã³ãããã»ã¹ãè€éãªã»ããã¢ããã¯å¿
èŠãããŸããã æ¬¡ã®ã³ãŒãã¯ãã¢ããªã±ãŒã·ã§ã³ã§æ¥ç¶ãããŒãžã£ãŒã䜿çšããæ¹æ³ã®äžè¬çãªäŸã§ãã from hybrid_failover_approach import DSQLHybridConnectionManager # ã¢ããªã±ãŒã·ã§ã³èµ·åæã«äžåºŠåæå db_manager = DSQLHybridConnectionManager(config_file="dsql_config_with_healthchecks.json") # æ¥ç¶ãå¿
èŠãªå Žæã§äœ¿çš conn = db_manager.get_connection("postgres", "admin") ãŸãã dsql_config_with_healthchecks.json ãã¡ã€ã«ã倿Žã㊠DSQL ãšã³ããã€ã³ããèšå®ããŸãã æ¬¡ã®ã³ãŒãã¯ãFlask ã¢ããªã±ãŒã·ã§ã³ã§ã®å®éã®äŸã瀺ããŠããŸãã from flask import Flask, jsonify from hybrid_failover_approach import DSQLHybridConnectionManager app = Flask(__name__) db_manager = DSQLHybridConnectionManager(config_file="dsql_config_with_healthchecks.json") @app.route('/users') def get_users(): # æéã§æãæ£åžžãªãšã³ããã€ã³ãã«èªåçã«æ¥ç¶ conn = db_manager.get_connection("postgres", "admin") try: with conn.cursor() as cursor: cursor.execute("SELECT id, name, email FROM users") return jsonify(cursor.fetchall()) finally: conn.close() ãã®ã¢ãããŒãã®çŸããã¯ãã®ã·ã³ãã«ãã«ãããŸããããã¯ã°ã©ãŠã³ãããã»ã¹ãè€éãªã€ã³ãã©ã¹ãã©ã¯ãã£ã管çããããšãªããã€ã³ããªãžã§ã³ããªã«ãŒãã£ã³ã°ãèªåãã§ã€ã«ãªãŒããŒããã«ã¹ç£èŠãå®çŸã§ããŸããããã¯ãDSQL ã¯ã©ã¹ã¿ãŒã«æ¥ç¶ããããã®ããã¹ããŒããªæ¹æ³ã§ãã ã¯ãªãŒã³ã¢ãã ãã«ã¹ãã§ãã¯ãåé€ããã«ã¯ãã»ããã¢ããäžã«èšå®ãã¡ã€ã«ã«è¿œå ããããã«ã¹ãã§ã㯠ID ã䜿çšã㊠AWS CLI ã䜿çšããŸãã aws route53 delete-health-check --health-check-id <health-check-id> ãã«ã¹ãã§ã㯠ID ã¯ã dsql_config_with_healthchecks.json ãã¡ã€ã«ã®åãšã³ããã€ã³ãã® health_check_id ãã£ãŒã«ãã§ç¢ºèªã§ããŸããèšå®å
ã®åãã«ã¹ãã§ã㯠ID ã«å¯ŸããŠåé€ã³ãã³ããå®è¡ããŸãã ãã«ã¹ãã§ãã¯èšå® DSQL æ¥ç¶ãããŒãžã£ãŒã§ãã«ã¹ãã§ãã¯ã®é »åºŠãã«ã¹ã¿ãã€ãºã§ããŸãã health_check_ttl=60, # ãã«ã¹ãã§ãã¯çµæã 60 ç§éãã£ãã·ã¥ health_check_ttl ãã©ã¡ãŒã¿ã¯ãæå®ãããæéãã«ã¹ãã§ãã¯çµæããã£ãã·ã¥ããŸããäœãå€ (< 60 ç§) ã¯ããé«éãªãã§ã€ã«ãªãŒããŒãå¯èœã«ããŸãããRoute 53 ãžã® API ã³ãŒã«ãå¢å ããŸããäžæ¹ãé«ãå€ã¯ API è² è·ã軜æžããŸãããåé¡ã®æ€åºãé
ããå¯èœæ§ããããŸãã60 ç§ããå§ããŠãå¿
èŠã«å¿ããŠèª¿æŽããŠãã ããã ãŸãšã ãã®èšäºã§ã¯ãèªåã¯ãã¹ãªãŒãžã§ã³æ¥ç¶ãã§ã€ã«ãªãŒããŒãµããŒããåãã Aurora DSQL æ¥ç¶ã管çãã广çãªæ¹æ³ãæäŸããã«ã¹ã¿ã ãœãªã¥ãŒã·ã§ã³ã«ã€ããŠèª¬æããŸããããã®ãœãªã¥ãŒã·ã§ã³ããããã€ããããšã§ãæé©ãªããã©ãŒãã³ã¹ãšå¯çšæ§ãç¶æããªãããã¢ããªã±ãŒã·ã§ã³ã«ä¿¡é Œæ§ã®é«ãããŒã¿ããŒã¹æ¥ç¶ãæäŸã§ããŸãã ãèªèº«ã®ãŠãŒã¹ã±ãŒã¹ã§ ãã®ãœãªã¥ãŒã·ã§ã³ ã詊ããŠãã³ã¡ã³ãã§ãã£ãŒãããã¯ãå
±æããŠãã ããã èè
ã«ã€ã㊠Rajesh Kantamani Rajesh ã¯ãã·ãã¢ããŒã¿ããŒã¹ã¹ãã·ã£ãªã¹ããœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ãã§ããã客æ§ãšååããŠãAmazon Web Services äžã§ããŒã¿ããŒã¹ãœãªã¥ãŒã·ã§ã³ã®èšèšãç§»è¡ãæé©åãè¡ããã¹ã±ãŒã©ããªãã£ãã»ãã¥ãªãã£ãããã©ãŒãã³ã¹ã«çŠç¹ãåœãŠãŠããŸãã忣ããŒã¿ããŒã¹ãžã®æ
ç±ãæã¡ãçµç¹ãããŒã¿ã€ã³ãã©ã¹ãã©ã¯ãã£ãå€é©ããã®ãæ¯æŽããŠããŸãã Sukhpreet Kaur Bedi Sukhpreet ã¯ãAmazon RDS/Aurora PostgreSQL ãšã³ãžã³ã«çŠç¹ãåœãŠã AWS ã®ã·ãã¢ããŒã¿ããŒã¹ã¹ãã·ã£ãªã¹ããœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ãã§ããã客æ§ãé«å¯çšæ§ã§ã¹ã±ãŒã©ãã«ããã€å®å
šãªããŒã¿ããŒã¹ã¢ãŒããã¯ãã£ãæ§ç¯ããããšã§ãAWS ãã©ãããã©ãŒã äžã§ã€ãããŒã·ã§ã³ãèµ·ããã®ãæ¯æŽããŠããŸãã Raluca Constantin Raluca ã¯ãAmazon Aurora DSQL ãå°éãšãã AWS ã®ã·ãã¢ããŒã¿ããŒã¹ãšã³ãžãã¢ã§ãã18 幎éã®ããŒã¿ããŒã¹å°éç¥èã¯ãOracleãMySQLãPostgreSQLãã¯ã©ãŠããã€ãã£ããœãªã¥ãŒã·ã§ã³ã«ããããããŒã¿ããŒã¹ã®ã¹ã±ãŒã©ããªãã£ãããã©ãŒãã³ã¹ããªã¢ã«ã¿ã€ã ããŒã¿åŠçã«çŠç¹ãåœãŠãŠããŸãã