Patroni ã®äž»ãªç®æšã¯ãPostgreSQL ã«é«å¯çšæ§ãæäŸããããšã§ãã ããããPatroni ã¯åãªããã³ãã¬ãŒãã§ãããæ¢è£œã®ããŒã«ã§ã¯ãããŸãã (äžè¬ã«ãããã¥ã¡ã³ãã«ããèšèŒãããŠããŸã)ã ãã¹ã ã©ã㧠Patroni ãã»ããã¢ãããããšããããããã«åªããããŒã«ã§ãããããããŠã¯ã©ã¹ã¿ãŒãç Žå£ããè©Šã¿ãããã«ç°¡åã«åŠçã§ããããäžç®ã§ããããŸãã ãã ããå®éã«ã¯ãéçšç°å¢ã§ã¯ããã¹ãŠããã¹ã ã©ãã®ããã«çŸãããšã¬ã¬ã³ãã«è¡ããããšã¯éããŸããã
ç§èªèº«ã«ã€ããŠå°ãã話ããŸãã ç§ã¯ã·ã¹ãã 管çè ãšããŠã¹ã¿ãŒãããŸããã Webéçºã§åããŠããŸããã ç§ã¯ 2014 幎ãã Data Egret ã§åããŠããŸãã å瀟ã¯Postgresåéã®ã³ã³ãµã«ãã£ã³ã°ãè¡ã£ãŠããã ãããŠãç§ãã¡ã¯ãŸãã« Postgres ãæäŸããŠãããæ¯æ¥ Postgres ã䜿çšããŠäœæ¥ããŠãããããæäœã«é¢é£ããããŸããŸãªå°éç¥èãæã£ãŠããŸãã
ãããŠ2018幎æ«ããå°ããã€ããããŒãã䜿ãå§ããŸããã ãããŠããçšåºŠã®çµéšãèç©ãããŠããŸããã ç§ãã¡ã¯äœããã®æ¹æ³ã§ããã蚺æãã調æŽãããã¹ããã©ã¯ãã£ã¹ã«å°éããŸããã ãã®ã¬ããŒãã§ã¯ãããã«ã€ããŠã話ããŸãã
Postgres ã¯å¥ãšããŠãç§ã¯ Linux ã倧奜ãã§ãã ç§ã¯ãããã€ã€ããŠæ¢çŽ¢ããã®ã奜ãã§ãã³ã¢ãéããã®ã奜ãã§ãã ç§ã¯ä»®æ³åãã³ã³ãããDockerãKubernetes ã倧奜ãã§ãã 管çè ã®å€ãç¿æ £ã圱é¿ããŠãããããããããã¹ãŠã«èå³ããããŸãã ç§ã¯ã¢ãã¿ãªã³ã°ãæ±ãã®ã奜ãã§ãã ãããŠãç§ã¯ã¬ããªã±ãŒã·ã§ã³ãããã¯ã¢ãããªã©ã管çã«é¢é£ãã postgres ã®ãã®ã倧奜ãã§ãã æãªãšã㯠Go ã§æžããŠããŸãã ç§ã¯ãœãããŠã§ã¢ ãšã³ãžãã¢ã§ã¯ãããŸãããGo ã§èªåã®ããã«æžããŠããã ãã§ãã ãããŠããã¯ç§ã«åã³ãäžããŸãã
- Postgres ã«ã¯ãã®ãŸãŸã§ã¯ HA (é«å¯çšæ§) ãåãã£ãŠããªãããšããåç¥ã®æ¹ãå€ããšæããŸãã HA ãååŸããã«ã¯ãäœããã€ã³ã¹ããŒã«ããèšå®ããåªåããŠååŸããå¿ èŠããããŸãã
- ããã€ãã®ããŒã«ããããŸãããPatroni 㯠HA ãéåžžã«åªããæ¹æ³ã§è§£æ±ºããããŒã«ã® XNUMX ã€ã§ãã ãããããã¹ãŠããã¹ãã©ãã«å ¥ããŠå®è¡ãããšããã¹ãŠãæ©èœããããšãããããããã€ãã®åé¡ãåçŸã§ããPatroni ããããã«ã©ã®ããã«å¯Ÿå¿ãããã確èªã§ããŸãã ãããŠãããããã¹ãŠããŸãæ©èœããããšãããããŸãã
- ãããå®éã«ã¯ãããŸããŸãªåé¡ã«çŽé¢ããŸããã ãããŠããããã®åé¡ã«ã€ããŠã話ããŸãã
- ç§ãã¡ããããã©ã®ããã«èšºæããäœã調æŽããããããã圹ã«ç«ã£ããã©ããã«ã€ããŠã話ãããŸãã
- Patroni ã®ã€ã³ã¹ããŒã«æ¹æ³ã«ã€ããŠã¯èª¬æããŸãããã€ã³ã¿ãŒããã㧠Google ããããšãã§ããæ§æãã¡ã€ã«ãåç §ããŠããã¹ãŠãã©ã®ããã«éå§ãããã©ã®ããã«æ§æãããŠããããç解ããããšãã§ããŸãã ã¹ããŒã ãã¢ãŒããã¯ãã£ã«ã€ããŠã¯ãã€ã³ã¿ãŒãããã§æ å ±ãæ€çŽ¢ããããšã§ç解ã§ããŸãã
- ä»äººã®çµéšã«ã€ããŠè©±ãã€ããã¯ãããŸããã ç§ãã¡ãçŽé¢ããåé¡ã«ã€ããŠã®ã¿è©±ããŸãã
- ãŸããPatroni ãš PostgreSQL 以å€ã®åé¡ã«ã€ããŠã¯è©±ããŸããã ããšãã°ãã¯ã©ã¹ã¿ãŒã厩å£ãããšãã«ãã©ã³ã¹èª¿æŽã«é¢é£ããåé¡ããã£ããšããŠããç§ã¯ããã«ã€ããŠè©±ããŸããã
ã¬ããŒããå§ããåã«ã¡ãã£ãšããå 責äºé ããããŸãã
ç§ãã¡ãééããããããã¹ãŠã®åé¡ã¯ãéçšéå§ããæåã® 6 ïœ 7 ïœ 8 ãæã®éã«çºçããŸããã æéãçµã€ã«ã€ããŠãç§ãã¡ã¯ç€Ÿå ã®ãã¹ã ãã©ã¯ãã£ã¹ã«ãã©ãçããŸããã ãããŠç§ãã¡ã®åé¡ã¯æ¶ããŸããã ãããã£ãŠããã®å ±åæžãçºè¡šãããã®ã¯çŽå幎åã§ãåœæã¯ãã¹ãŠãæ°é®®ã§ããã¹ãŠå®ç§ã«èŠããŠããŸããã
ã¬ããŒããäœæããéçšã§ãç§ã¯ãã§ã«å€ãäºåŸåæãè¡ãããã°ã調ã¹ãŸããã ãŸãã詳现ã®äžéšãå¿ããããããåé¡ã®åæäžã«å®å šã«èª¿æ»ã§ããªãã£ããããå¯èœæ§ããããããããæç¹ã§åé¡ãååã«èæ ®ãããŠããªãããŸãã¯æ å ±ãäžè¶³ããŠããããã«èŠããå ŽåããããŸãã ããã§ã¯ãä»ãã°ãããèš±ããããã ããããšæããŸãã
ããããŒããšã¯äœã§ããïŒ
- HAãæ§ç¯ããããã®ãã³ãã¬ãŒãã§ãã ããã¥ã¡ã³ãã«ã¯ããæžããŠãããŸãã ç§ã®èŠ³ç¹ãããããšãããã¯éåžžã«æ£ãã説æã§ãã ããããŒãã¯ãã¹ãŠã®åé¡ã解決ããç¹å¹è¬ã§ã¯ãããŸãããã€ãŸãããããæ©èœãããŠå©çãããããããã«åªåããå¿ èŠããããŸãã
- ããã¯ããã¹ãŠã®ããŒã¿ããŒã¹ ãµãŒãã¹ã«ã€ã³ã¹ããŒã«ããããšãŒãžã§ã³ã ãµãŒãã¹ã§ãããPostgres ã®åæåã·ã¹ãã ã®äžçš®ã§ãã Postgres ãèµ·åãåæ¢ãåèµ·åãåæ§æããã¯ã©ã¹ã¿ãŒã®ããããžãå€æŽããŸãã
- ãããã£ãŠãã¯ã©ã¹ã¿ãŒã®ç¶æ (èŠãç®ã©ããã®çŸåšã®è¡šçŸ) ãä¿ç®¡ããã«ã¯ãããçš®ã®ã¹ãã¬ãŒãžãå¿ èŠã§ãã ãã®èŠ³ç¹ãããããããŒãã¯å€éšã·ã¹ãã ã«ç¶æ ãââä¿åãããšããéãéžã³ãŸããã ããã¯ãåæ£æ§æã¹ãã¬ãŒãž ã·ã¹ãã ã§ãã EtcdãConsulãZooKeeperããŸã㯠kubernetes Etcdãã€ãŸããããã®ãªãã·ã§ã³ã®ããããã«ãªããŸãã
- Patroni ã®ç¹åŸŽã® XNUMX ã€ã¯ãã»ããã¢ããããã ãã§ããã«ãªãŒããã¡ã€ã©ãŒãå ¥æã§ããããšã§ãã æ¯èŒã®ããã« Repmgr ãåãäžãããšãããã«ã¯ãã¡ã€ã©ãŒãå«ãŸããŠããŸãã Repmgr ã䜿çšãããšã¹ã€ãããªãŒããŒãå¯èœã§ããããªãŒããã¡ã€ã©ãŒãå¿ èŠãªå Žåã¯è¿œå ã§èšå®ããå¿ èŠããããŸãã Patroni ã«ã¯ãããã«äœ¿ãããªãŒããã¡ã€ã©ãŒããã§ã«åãã£ãŠããŸãã
- ä»ã«ããããããããŸãã ããšãã°ãæ§æã®ã¡ã³ããã³ã¹ãæ°ããã¬ããªã«ã®äœæãããã¯ã¢ãããªã©ã§ãããã ããããã«ã€ããŠã¯ã¬ããŒãã®ç¯å²ãè¶ ããŠããããã説æããŸããã
ãããŠãå°ããªçµæãšããŠã¯ãPatroni ã®äž»ãªã¿ã¹ã¯ã¯ãã¯ã©ã¹ã¿ãŒãåäœãç¶ããã¢ããªã±ãŒã·ã§ã³ãã¯ã©ã¹ã¿ãŒ ããããžã®å€æŽã«æ°ä»ããªãããã«ãèªåãã¡ã€ã«ãé©åãã€ç¢ºå®ã«å®è¡ããããšã§ãã
ããããPatroni ã䜿ãå§ãããšãã·ã¹ãã ã¯ããå°ãè€éã«ãªããŸãã 以åã« Postgres ããã£ãå ŽåãPatroni ã䜿çšãããšãPatroni èªäœãååŸãããç¶æ ãä¿åããã DCS ãååŸãããŸãã ãããŠããã¯ãã¹ãŠäœããã®æ¹æ³ã§æ©èœããå¿ èŠããããŸãã ã§ã¯ãäœãåé¡ã«ãªãã®ã§ãããã?
å£ããå¯èœæ§ããããŸã:
- Postgres ãå£ããå¯èœæ§ããããŸãã ãã¹ã¿ãŒãŸãã¯ã¬ããªã«ã®ããããã倱æããå¯èœæ§ããããŸãã
- ããããŒãèªäœãå£ããå¯èœæ§ããããŸãã
- ç¶æ ãä¿åãããŠãã DCS ãå£ããå¯èœæ§ããããŸãã
- ãããŠãããã¯ãŒã¯ãå£ããå¯èœæ§ããããŸãã
ããããã¹ãŠã®ç¹ãã¬ããŒãã§æ€èšããŸãã
äºä»¶ã«å€ãã®èŠçŽ ãå«ãŸããŠãããšãã芳ç¹ããã§ã¯ãªããäºä»¶ãããè€éã«ãªãã«ã€ããŠäºä»¶ãæ€èšããŠãããŸãã ãããŠã䞻芳çãªæèŠã®èŠ³ç¹ããããã®ã±ãŒã¹ã¯ç§ã«ãšã£ãŠã¯é£ãããå解ããã®ãå°é£ã§ãã...ãããŠãã®éããããããã€ãã®ã±ãŒã¹ã¯è»œããŠå解ããã®ãç°¡åã§ããã
ãããŠæåã®ã±ãŒã¹ãæãç°¡åã§ãã ããã¯ãããŒã¿ããŒã¹ ã¯ã©ã¹ã¿ãŒãååŸããåãã¯ã©ã¹ã¿ãŒäžã« DCS ã¹ãã¬ãŒãžãå±éããå Žåã«åœãŠã¯ãŸããŸãã ããã¯æãäžè¬çãªééãã§ãã ããã¯ãã¢ãŒããã¯ãã£ãæ§ç¯ããéã®ééããã€ãŸããç°ãªãã³ã³ããŒãã³ãã XNUMX ãæã«çµã¿åãããéã®ééãã§ãã
ããã§ããã¡ã€ã©ãŒãããã®ã§ãäœãèµ·ãã£ãã®ã察åŠããŸãããã
ããã§ããã¡ã€ã©ãŒããã€çºçãããã«èå³ããããŸãã ã€ãŸããã¯ã©ã¹ã¿ãŒã®ç¶æ ãå€åãããã®ç¬éã«èå³ããããŸãã
ãã ãããã¡ã€ã©ãŒã¯åžžã«å³æã§ãããšã¯éããŸãããã€ãŸããåäœæéã¯ããããŸããããé 延ããå¯èœæ§ããããŸãã ããã¯é·ç¶ãããå¯èœæ§ããããŸãã
ãããã£ãŠãéå§æéãšçµäºæéããããã€ãŸãé£ç¶ã€ãã³ãã§ãã ãããŠããã¹ãŠã®ã€ãã³ãã XNUMX ã€ã®ééã«åå²ããŸãããã¡ã€ã©ãŒã®åããã¡ã€ã©ãŒäžããã¡ã€ã©ãŒã®åŸã«æéããããŸãã ã€ãŸãããã¹ãŠã®ã€ãã³ãããã®ã¿ã€ã ã©ã€ã³ã§èæ ®ããŸãã
ãããŠããŸãããã¡ã€ã©ãŒãçºçãããšãã«ãäœãèµ·ãã£ãã®ãããã¡ã€ã©ãŒã«è³ã£ãåå ã¯äœã ã£ãã®ããæ¢ããŸãã
䞞倪ãèŠãŠã¿ããšãå€å žçãªããããŒãã®äžžå€ªã«ãªããŸãã 圌ã¯ãã®äžã§ããµãŒããŒããã¹ã¿ãŒã«ãªãããã¹ã¿ãŒã®åœ¹å²ããã®ããŒãã«ç§»ã£ãããšãäŒããŠããŸãã ããã§ã¯ããã匷調衚瀺ãããŠããŸãã
次ã«ããã¡ã€ã©ãŒãçºçããçç±ãã€ãŸãããã¹ã¿ãŒã®åœ¹å²ãããããŒãããå¥ã®ããŒãã«ç§»åãããåå ãšãªã£ãã©ã®ãããªã€ãã³ããçºçããããç解ããå¿ èŠããããŸãã ãããŠãã®å Žåããã¹ãŠãã·ã³ãã«ã§ãã ã¹ãã¬ãŒãž ã·ã¹ãã ãšã®éä¿¡äžã«ãšã©ãŒãçºçããŸããã ãã¹ã¿ãŒã¯ãDCS ã§ã¯åäœã§ããªããã€ãŸãçžäºäœçšã«äœããã®åé¡ãããããšã«æ°ã¥ããŸããã ãããŠãããåž«å ã«ã¯ãªããªãããšèšã£ãŠèŸããã ãã®ãéæ Œããèªåããšããã»ãªãã¯ãŸãã«ãããç©èªã£ãŠããã
ãã¡ã€ã©ãŒã«å ç«ã€ã€ãã³ããèŠããšããŠã£ã¶ãŒãã®ç¶è¡ã«ãšã£ãŠåé¡ãšãªã£ããŸãã«ãã®çç±ãããã«ããããšãããããŸãã
Patroni ãã°ãèŠããšãå€æ°ã®ãšã©ãŒãã¿ã€ã ã¢ãŠããããããšãããããŸããã€ãŸããPatroni ãšãŒãžã§ã³ãã DCS ãšé£æºã§ããŸããã ãã®å Žåããã㯠Consul ãšãŒãžã§ã³ãã§ãããããŒã 8500 ã§éä¿¡ããŠããŸãã
ããã§ã®åé¡ã¯ãPatroni ãšããŒã¿ããŒã¹ãåããã¹ãäžã§å®è¡ãããŠããããšã§ãã ãããŠãConsul ãµãŒããŒã¯åãããŒãäžã§èµ·åãããŸããã ãµãŒããŒã«è² è·ããããããšã§ãConsul ãµãŒããŒã«ãåé¡ãçºçããŸããã 圌ãã¯é©åã«ã³ãã¥ãã±ãŒã·ã§ã³ããšãããšãã§ããŸããã§ããã
ãã°ããããŠè² è·ã軜æžããããšãããããŒãã¯åã³ãšãŒãžã§ã³ããšéä¿¡ã§ããããã«ãªããŸããã éåžžã®äœæ¥ãåéãããŸããã ãããŠãåã Pgdb-2 ãµãŒããŒãåã³ãã¹ã¿ãŒã«ãªããŸããã ã€ãŸããå°ããªå転ãããããã®ããã«ããŒãããã¹ã¿ãŒã®æš©éãæŸæ£ãããã®åŸåã³ããããåŒãç¶ããŸãããã€ãŸãããã¹ãŠãå ã®ç¶æ ã«æ»ããŸããã
ãããŠãããã¯èª€å ±ãšèŠãªãããšãã§ããããããããŒãããã¹ãŠæ£ããããšããããšèŠãªãããšãã§ããã ã€ãŸããã¯ã©ã¹ã¿ãŒã®ç¶æ ãç¶æã§ããªãããšã«æ°ã¥ããæš©éãåé€ããŸããã
ãããŠããã§ãConsul ãµãŒããŒãããŒã¹ãšåãããŒããŠã§ã¢äžã«ãããšããäºå®ã«ããåé¡ãçºçããŸããã ãããã£ãŠããã£ã¹ã¯ãããã»ããµã®è² è·ãåãããConsul ã¯ã©ã¹ã¿ãšã®å¯Ÿè©±ã«ã圱é¿ãåãŒããŸãã
ãããŠãäžç·ã«äœãã¹ãã§ã¯ãªããšå€æããConsul çšã«å¥ã®ã¯ã©ã¹ã¿ãŒãå²ãåœãŠãŸããã ãããŠãPatroni ã¯ãã§ã«å¥ã® Consul ãšé£æºããŠããŸãããã€ãŸããå¥ã® Postgres ã¯ã©ã¹ã¿ãŒãå¥ã® Consul ã¯ã©ã¹ã¿ãŒããããŸããã ããã¯ãããããã¹ãŠã®ãã®ãäžç·ã«äœãŸãããªãããã«éã¶æ¹æ³ãšä¿ç®¡æ¹æ³ã«é¢ããåºæ¬çãªèª¬æã§ãã
ãªãã·ã§ã³ãšããŠãttlãloop_waitãretry_timeout ãã©ã¡ãŒã¿ãå€æŽããããšãã§ããŸããã€ãŸãããããã®ãã©ã¡ãŒã¿ãå¢ããããšã§ãçæéã®è² è·ããŒã¯ãä¹ãåãããšãã§ããŸãã ãã ãããã®è² è·ã«ã¯æéããããå¯èœæ§ããããããããã¯æé©ãªãªãã·ã§ã³ã§ã¯ãããŸããã ãããŠããããã®ãã©ã¡ãŒã¿ã®å¶éãåçŽã«è¶ ããŠãããŸãã ãããŠãããã¯å®éã«ã¯åœ¹ã«ç«ããªããããããŸããã
ãç解ã®ãšãããæåã®åé¡ã¯åçŽã§ãã DCSãããŒã¹ãšäžç·ã«åãä»ãããšãããåé¡ãçºçããŸããã
XNUMX çªç®ã®åé¡ã¯æåã®åé¡ãšäŒŒãŠããŸãã DCS ã·ã¹ãã ãšã®çžäºéçšæ§ã®åé¡ãåã³çºçãããšããç¹ã§ãåæ§ã§ãã
ãã°ãèŠããšãåã³éä¿¡ãšã©ãŒãçºçããŠããããšãããããŸãã ãããŠãPatroni ã¯ãDCS ãšå¯Ÿè©±ã§ããªããããçŸåšã®ãã¹ã¿ãŒãã¬ããªã« ã¢ãŒãã«ãªããšèšããŸããã
å€ããã¹ã¿ãŒã¯ã¬ããªã«ãšãªããããã§ã¯ããããŒããåœç¶ã®ããã«æ©èœããŸãã pg_rewind ãå®è¡ããŠãã©ã³ã¶ã¯ã·ã§ã³ ãã°ãå·»ãæ»ããæ°ãããã¹ã¿ãŒã«æ¥ç¶ããŠæ°ãããã¹ã¿ãŒã«è¿œãã€ããŸãã ããã§ããããŒãã¯åœç¶ã®ããã«ä»äºãããã
ããã§ããã¡ã€ã©ãŒã®åã®å Žæãã€ãŸããã¡ã€ã©ãŒã®åå ãšãªã£ããšã©ãŒãèŠã€ããå¿ èŠããããŸãã ãã®ç¹ã§ãPatroni ãã°ã¯éåžžã«äœ¿ããããã§ãã 圌ã¯äžå®ã®ééã§åãã¡ãã»ãŒãžãæžããŸãã ãããã®ãã°ããã°ããã¹ã¯ããŒã«ãå§ãããšããã°ãå€æŽãããããšãããããŸããããã¯ãäœããã®åé¡ãå§ãŸã£ãŠããããšãæå³ããŸãã ç§ãã¡ã¯ããã«ãã®å Žæã«æ»ããäœãèµ·ããããèŠãŠã¿ãŸãããã
éåžžã®ç¶æ³ã§ã¯ããã°ã¯æ¬¡ã®ããã«ãªããŸãã ããã¯ã®ææè ããã§ãã¯ãããŸãã ãããŠãããšãã°ææè ãå€ãã£ãå ŽåãããããŒãã察å¿ããªããã°ãªããªãããã€ãã®ã€ãã³ããçºçããå¯èœæ§ããããŸãã ãããããã®å Žåã¯å€§äžå€«ã§ãã ãšã©ãŒãçºçããå Žæãæ¢ããŠããŸãã
ãšã©ãŒã衚瀺ããå§ããäœçœ®ãŸã§ã¹ã¯ããŒã«ãããšãèªåãã¡ã€ã«ãªãŒããŒãè¡ãããããšãããããŸãã ãããŠãç§ãã¡ã®ãšã©ãŒã¯ DCS ãšã®ããåãã«é¢é£ããŠãããç§ãã¡ã®å Žå㯠Consul ã䜿çšãããããããã§äœãèµ·ãã£ãã®ã Consul ã®ãã°ã調ã¹ãŸãã
ãã¡ã€ã©ãŒã®æå»ãš Consul ãã°ã®æå»ã倧ãŸãã«æ¯èŒãããšãConsul ã¯ã©ã¹ã¿å ã®é£äººã Consul ã¯ã©ã¹ã¿ã®ä»ã®ã¡ã³ããŒã®ååšãçãå§ããŠããããšãããããŸãã
ãŸããä»ã® Consul ãšãŒãžã§ã³ãã®ãã°ã確èªãããšãããã§äœããã®ãããã¯ãŒã¯åŽ©å£ãçºçããŠããããšãããããŸãã ãããŠå·æ¿ã¯ã©ã¹ã¿ã®ã¡ã³ããŒå šå¡ãäºãã®ååšãçãã ãããŠããããã¡ã€ã©ãŒã«ãšã£ãŠã®åååãšãªã£ãã
ãããã®ãšã©ãŒã®åã«äœãèµ·ãã£ãããèŠããšãç· ãåããRPC ã®å€±æãªã©ãããããçš®é¡ã®ãšã©ãŒãããããšãããããŸããã€ãŸããConsul ã¯ã©ã¹ã¿ãŒã®ã¡ã³ããŒéã®çžäºäœçšã«æããã«äœããã®åé¡ããããŸãã ã
æãç°¡åãªçãã¯ããããã¯ãŒã¯ã修埩ããããšã§ãã ãããã衚地å°ã«ç«ã£ãŠããç§ã«ãšã£ãŠããããèšãã®ã¯ç°¡åã§ãã ããããç¶æ³ã«ãã£ãŠã¯ã顧客ããããã¯ãŒã¯ã修埩ããäœè£ããããšã¯éããŸããã 圌㯠DC ã«äœãã§ããŠããããã¯ãŒã¯ã修埩ã§ãããæ©åšã«åœ±é¿ãäžããå¯èœæ§ããããŸãã ãããã£ãŠãä»ã®ãªãã·ã§ã³ãå¿ èŠã«ãªããŸãã
ãªãã·ã§ã³ããããŸã:
- ç§ã®æèŠã§ã¯ãããã¥ã¡ã³ãã«ãæžãããŠããæãåçŽãªãªãã·ã§ã³ã¯ãConsul ãã§ãã¯ãç¡å¹ã«ãããã€ãŸããåçŽã«ç©ºã®é åãæž¡ãããšã§ãã ãããŠç§ãã¡ã¯é äºä»£ç人ã«å°åæã䜿ããªãããã«äŒããŸãã ãããã®ãã§ãã¯ãè¡ãããšã§ããããã¯ãŒã¯ ã¹ããŒã ãç¡èŠãããã¡ã€ã©ãŒãéå§ããå¿ èŠããªããªããŸãã
- å¥ã®ãªãã·ã§ã³ã¯ãraft_multiplier ãå確èªããããšã§ãã ãã㯠Consul ãµãŒããŒèªäœã®ãã©ã¡ãŒã¿ã§ãã ããã©ã«ãã§ã¯ã5 ã«èšå®ãããŠããŸãããã®å€ã¯ãã¹ããŒãžã³ã°ç°å¢ã®ããã¥ã¡ã³ãã§æšå¥šãããŠããŸãã å®éããã㯠Consul ãããã¯ãŒã¯ã®ã¡ã³ããŒéã®ã¡ãã»ãŒãžã³ã°ã®é »åºŠã«åœ±é¿ããŸãã å®éããã®ãã©ã¡ãŒã¿ã¯ãConsul ã¯ã©ã¹ã¿ã®ã¡ã³ããŒéã®ãµãŒãã¹éä¿¡ã®é床ã«åœ±é¿ããŸãã ãŸããéçšç°å¢ã§ã¯ãããŒããããé »ç¹ã«ã¡ãã»ãŒãžã亀æã§ããããã«ããã®å€ãæžããããšããã§ã«æšå¥šãããŠããŸãã
- ç§ãã¡ãæãã€ãããã XNUMX ã€ã®ãªãã·ã§ã³ã¯ããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã®ããã»ã¹ ã¹ã±ãžã¥ãŒã©ã®ä»ã®ããã»ã¹ã®äžã§ Consul ããã»ã¹ã®åªå é äœãé«ããããšã§ãã ãã®ãããªã䟿å©ãªããã©ã¡ãŒã¿ããããŸããããã¯ãã¹ã±ãžã¥ãŒãªã³ã°æã« OS ã¹ã±ãžã¥ãŒã©ã«ãã£ãŠèæ ®ãããããã»ã¹ã®åªå é äœã決å®ããã ãã§ãã ãŸããConsul ãšãŒãžã§ã³ãã® Nice Value ãåæžããŸããã åªå é äœãäžããŠããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã Consul ããã»ã¹ã«ã³ãŒããå®è¡ããŠäœæ¥ããããã®æéãããå€ãäžããããã«ããŸããã ç§ãã¡ã®å Žåãããã§åé¡ã¯è§£æ±ºããŸããã
- Consul ã䜿çšããªããšããéžæè¢ããããŸãã ç§ã«ã¯ etcd ã®å€§ãã¡ã³ã§ããå人ãããŸãã ãããŠç§ãã¡ã¯å®æçã«åœŒãš Etcd ãš Consul ã®ã©ã¡ããåªããŠãããè°è«ããŸãã ããããã©ã¡ããåªããŠããããšããç¹ã§ã¯ãéåžžãConsul ã«ã¯ããŒã¿ããŒã¹ãåããåããŒãã§å®è¡ããããšãŒãžã§ã³ãããããšããç¹ã§åœŒã®æèŠã«åæããŸãã ã€ãŸããPatroni ãš Consul ã¯ã©ã¹ã¿ãŒãšã®ããåãã¯ããã®ãšãŒãžã§ã³ããä»ããŠè¡ãããŸãã ãããŠããã®ãšãŒãžã§ã³ããããã«ããã¯ã«ãªããŸãã ãšãŒãžã§ã³ãã«äœããçºçãããšãPatroni 㯠Consul ã¯ã©ã¹ã¿ãŒãæäœã§ããªããªããŸãã ãããŠãããåé¡ãªã®ã§ãã etcd ãã©ã³ã«ã¯ãšãŒãžã§ã³ãã¯ãããŸããã Patroni 㯠Etcd ãµãŒããŒã®ãªã¹ããçŽæ¥æäœã§ãããã§ã«ãããã®ãµãŒããŒãšéä¿¡ããŠããŸãã ãã®ç¹ã§ã瀟å 㧠Etcd ã䜿çšããŠããå Žåã¯ããããã Consul ããã Etcd ã®æ¹ãè¯ãéžæãšãªãã§ãããã ããããç§ãã¡é¡§å®¢ã¯ãã¯ã©ã€ã¢ã³ããäœãéžæããŠäœ¿çšãããã«ãã£ãŠåžžã«å¶éãããŸãã ãããŠãã»ãšãã©ãã¹ãŠã®ã¯ã©ã€ã¢ã³ãã«å¯ŸããŠé äºã察å¿ããŸãã
- ãããŠæåŸã®ãã€ã³ãã¯ãã©ã¡ãŒã¿å€ã®èŠçŽãã§ãã çæçãªãããã¯ãŒã¯ã®åé¡ãçããªãããããã®ãã©ã¡ãŒã¿ã®ç¯å²ãè¶ ããªãããšãæåŸ ããŠããããã®ãã©ã¡ãŒã¿ãäžããããšãã§ããŸãã ããããããšã§ããããã¯ãŒã¯ã«åé¡ãçºçããå Žåã« Patroni ãèªåãã¡ã€ã«åããæ»ææ§ã軜æžã§ããŸãã
Patroni ã䜿çšããŠãã人ã®å€ãã¯ãã®ã³ãã³ãã«ç²ŸéããŠãããšæããŸãã
ãã®ã³ãã³ãã¯ãã¯ã©ã¹ã¿ãŒã®çŸåšã®ç¶æ ã衚瀺ããŸãã ãããŠãäžèŠãããšããã®åçã¯æ®éã®ããã«èŠãããããããŸããã ãã¹ã¿ãŒãšã¬ããªã«ããããã¬ããªã±ãŒã·ã§ã³ã®é 延ã¯ãããŸããã ãã ãããã®ã¯ã©ã¹ã¿ãŒã«ã¯ XNUMX ã€ã§ã¯ãªã XNUMX ã€ã®ããŒããå¿ èŠã§ããããšãããããŸã§ã¯ããã®ç¶æ³ã¯ãŸã£ããæ£åžžã§ãã
ãããã£ãŠãèªåãã¡ã€ã«ããããŸããã ãããŠããã®èªåãã¡ã€ã«ã®åŸãã¬ããªã«ã¯æ¶ããŠããŸããŸããã ç§ãã¡ã¯åœŒå¥³ã倱螪ããçç±ãçªãæ¢ãã圌女ãé£ãæ»ãã埩å ããå¿ èŠããããŸãã ãããŠåã³ãã°ã«ã¢ã¯ã»ã¹ããŠãèªåãã¡ã€ã«ãªãŒããŒãè¡ãããçç±ã確èªããŸãã
ãã®å ŽåãXNUMX çªç®ã®ã¬ããªã«ããã¹ã¿ãŒã«ãªããŸããã ããã¯å€§äžå€«ã§ãã
ãããŠãèœã¡ããã¯ã©ã¹ã¿ãŒå ã«ãªãã¬ããªã«ã確èªããå¿ èŠããããŸãã Patroni ãã°ãéããšãpg_rewind ã¹ããŒãžã§ã¯ã©ã¹ã¿ãŒã«æ¥ç¶ããããã»ã¹äžã«åé¡ãçºçããããšãããããŸãã ã¯ã©ã¹ã¿ãŒã«æ¥ç¶ããã«ã¯ããã©ã³ã¶ã¯ã·ã§ã³ ãã°ãå·»ãæ»ãããã¹ã¿ãŒããå¿ èŠãªãã©ã³ã¶ã¯ã·ã§ã³ ãã°ãèŠæ±ããããã䜿çšããŠãã¹ã¿ãŒã«è¿œãã€ãå¿ èŠããããŸãã
ãã®å Žåããã©ã³ã¶ã¯ã·ã§ã³ ãã°ããªããããã¬ããªã«ãèµ·åã§ããŸããã ãããã£ãŠãPostgres ã¯ãšã©ãŒã§åæ¢ããŸãã ãããã£ãŠãã¯ã©ã¹ã¿ãŒã«ã¯å«ãŸããŠããŸããã
ãªãã¯ã©ã¹ã¿ãŒã«ååšããªãã®ãããããŠãªããã°ãååšããªãã£ãã®ããç解ããå¿ èŠããããŸãã ç§ãã¡ã¯æ°ãããã¹ã¿ãŒã®ãšããã«è¡ãã圌ã®ãã°ã«äœãæ®ã£ãŠãããã調ã¹ãŸãã pg_rewind ãå®è¡ãããšãã§ãã¯ãã€ã³ããçºçããããšãããããŸããã ãŸããå€ããã©ã³ã¶ã¯ã·ã§ã³ ãã°ã®äžéšã¯åã«ååãå€æŽãããã ãã§ãã å€ããã¹ã¿ãŒãæ°ãããã¹ã¿ãŒã«æ¥ç¶ããŠãããã®ãã°ãã¯ãšãªããããšãããšãããã°ã¯ãã§ã«ååãå€æŽãããŠãããåã«ååšããŠããŸããã§ããã
ãããã®ã€ãã³ããçºçãããšãã®ã¿ã€ã ã¹ã¿ã³ããæ¯èŒããŸããã ãããŠããã®å·®ã¯æåéã 150 ããªç§ã§ããã€ãŸãããã§ãã¯ãã€ã³ã㯠369 ããªç§ã§å®äºããWAL ã»ã°ã¡ã³ãã®ååãå€æŽãããŸããã ãããŠæåéãã517 ããªç§åŸã® 150 幎ã«ãå€ãã¬ããªã«ã§å·»ãæ»ããéå§ãããŸããã ã€ãŸããæåéã 150 ããªç§ããã°ã¬ããªã«ãæ¥ç¶ããŠåä¿¡ããã®ã«ååã§ããã
ãªãã·ã§ã³ã¯äœã§ããïŒ
æåã¯ã¬ããªã±ãŒã·ã§ã³ ã¹ãããã䜿çšããŸããã ç§ãã¡ã¯ãããè¯ããšæããŸããã ãã ããéçšã®æåã®æ®µéã§ã¯ã¹ãããããªãã«ããŸããã ã¹ãããã«å€ãã® WAL ã»ã°ã¡ã³ããèç©ãããã°ããã¹ã¿ãŒãåé€ã§ããããã«æããŸããã 圌ã¯åããã ããã ã¹ããããç¡ããŠãã°ããèŠãã¿ãŸããã ãããŠãã¹ããããå¿ èŠã§ããããšã«æ°ã¥ããã¹ããããè¿åŽããŸããã
ããããããã§åé¡ãçºçããŸãããã¹ã¿ãŒãã¬ããªã«ã«ç§»åãããšãã¹ããããåé€ãããã¹ããããšãšãã« WAL ã»ã°ã¡ã³ããåé€ããããšããããšã§ãã ãããŠããã®åé¡ã解決ããããã«ãwal_keep_segments ãã©ã¡ãŒã¿ãŒãå¢ããããšã«ããŸããã ããã©ã«ã㯠8 ã»ã°ã¡ã³ãã§ãã ããã 1 ã«å¢ãããŠãã©ãã ãã®ç©ºãé åããããã調ã¹ãŸããã ãããŠãwal_keep_segments ã« 000 ã®ã¬ãã€ããå¯ä»ããŸããã ã€ãŸããåãæ¿ãæã«ã¯ããã¹ãŠã®ããŒãã§åžžã« 16 GB ã®ãã©ã³ã¶ã¯ã·ã§ã³ ãã°ã確ä¿ãããŸãã
ããã«ãé·æçãªã¡ã³ããã³ã¹äœæ¥ã«ãäŸç¶ãšããŠé¢é£ããŠããŸãã ã¬ããªã«ã® XNUMX ã€ãæŽæ°ããå¿ èŠããããšããŸãã ãããŠããããªãã«ããããšèããŠããŸãã ãœãããŠã§ã¢ããããããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ããã®ä»äœããæŽæ°ããå¿ èŠããããŸãã ãŸããã¬ããªã«ããªãã«ãããšããã®ã¬ããªã«ã®ã¹ããããåé€ãããŸãã ãŸããå°ãã wal_keep_segments ã䜿çšãããšãã¬ããªã«ãé·æéååšããªããšããã©ã³ã¶ã¯ã·ã§ã³ ãã°ã倱ãããŸãã ã¬ããªã«ãäœæããåæ¢ãããã©ã³ã¶ã¯ã·ã§ã³ ãã°ãèŠæ±ããŸããããããã¯ãã¹ã¿ãŒäžã«ãªãå¯èœæ§ããããŸãã ãŸããã¬ããªã«ãæ¥ç¶ã§ããªããªããŸãã ãã®ããéèªã倧éã«åšåº«ããŠãããŸãã
åŒç€Ÿã«ã¯çç£æ ç¹ãããããŸãã ãã§ã«é²è¡äžã®ãããžã§ã¯ãããããŸãã
ãã¡ã€ã©ãŒããããŸããã ç§ãã¡ã¯äžã«å ¥ã£ãŠèª¿ã¹ãŸããããã¹ãŠãé 調ã§ãã¬ããªã«ãé©åã«é 眮ãããŠãããã¬ããªã±ãŒã·ã§ã³ã®é 延ã¯ãããŸããã ãã°ã«ããšã©ãŒã¯ãªãããã¹ãŠé 調ã§ãã
補åããŒã ã¯ãäœããã®ããŒã¿ãããã¯ãã ãšèšããŸãããç§ãã¡ã¯ããã XNUMX ã€ã®ãœãŒã¹ãã確èªããŠããŸãããããŒã¿ããŒã¹ã«ã¯è¡šç€ºãããŠããŸããã ãããŠç§ãã¡ã¯åœŒãã«äœãèµ·ãã£ãã®ããç解ããå¿ èŠããããŸãã
pg_rewind ãããããèŠéããŠããããšã¯æããã§ãã ç§ãã¡ã¯ãããããã«ç解ããŸããããäœãèµ·ãã£ãŠããã®ããèŠã«è¡ããŸããã
ãã°ã§ã¯ããã¡ã€ã©ãŒããã€çºçãããã誰ããã¹ã¿ãŒã«ãªã£ãããåžžã«èŠã€ããããšãã§ãã誰ãå€ããã¹ã¿ãŒã§ãã£ããããã€ã¬ããªã«ã«ãªãããã£ãããå€æã§ããŸããã€ãŸãããããã®ãã°ã¯ããã©ã³ã¶ã¯ã·ã§ã³ ãã°ã®éã調ã¹ãããã«å¿ èŠã§ãã倱ãããŸããã
ç§ãã¡ã®å€ããã¹ã¿ãŒãåèµ·åããŸããã ãããŠããããŒãã¯ãªãŒãã©ã³ã«ç»é²ãããŸããã ããããŒããçºå£²ã ãã®åŸãPostgres ãéå§ããŸããã ããæ£ç¢ºã«ã¯ãPostgres ãéå§ããåãããã³ã¬ããªã«ã«ããåã«ãPatroni 㯠pg_rewind ããã»ã¹ãèµ·åããŸããã ããã§ãååŒãã°ã®äžéšãæ¶å»ããæ°ãã«ããŠã³ããŒãããŠæ¥ç¶ããã ããã§ããããŒãã¯ãã€ãŸãäºæ³éããè³¢æã«åããŸããã ã¯ã©ã¹ã¿ãŒã埩å ãããŸããã ãã¡ã€ã©ãŒ 3 ããŒãã®åŸã3 ã€ã®ããŒãããããŸãã - ãã¹ãŠãã¯ãŒã«ã§ãã
äžéšã®ããŒã¿ã倱ãããŠããŸããŸããã ãããŠç§ãã¡ã¯ã©ãã ãã®æ倱ã被ã£ãã®ããç解ããå¿ èŠããããŸãã ç§ãã¡ã¯å·»ãæ»ãããç¬éãæ¢ããŠããŸãã ããã¯ãã®ãããªæ¥èšã®ãšã³ããªãŒã§èŠã€ããããšãã§ããŸãã å·»ãæ»ããéå§ãããããã§äœããè¡ã£ãŠçµäºããŸããã
å€ããã¹ã¿ãŒãäžæãããã©ã³ã¶ã¯ã·ã§ã³ ãã°å ã®äœçœ®ãèŠã€ããå¿ èŠããããŸãã ãã®å Žåã¯ãããç®å°ã§ãã ãããŠãXNUMX çªç®ã®ããŒã¯ãã€ãŸãå€ããã¹ã¿ãŒãšæ°ãããã¹ã¿ãŒã®éãã®è·é¢ãå¿ èŠã§ãã
éåžžã® pg_wal_lsn_diff ã䜿çšããŠãããã 17 ã€ã®ããŒã¯ãæ¯èŒããŸãã ãã®å Žåã17 ã¡ã¬ãã€ããåŸãããŸãã å€ããå°ãªããã誰ããèªåã§æ±ºããŸãã ãªããªãããã人ã«ãšã£ãŠ XNUMX ã¡ã¬ãã€ãã¯å€§ããããšã§ã¯ãããŸãããããã人ã«ãšã£ãŠã¯å€ãããŠåãå ¥ããããªãããã§ãã ããã§ã¯ãåå人ãããžãã¹ã®ããŒãºã«å¿ããŠèªåã§æ±ºå®ããŸãã
ããããç§ãã¡ã¯èªåèªèº«ã§äœãèŠã€ããã®ã§ããããïŒ
ãŸããã·ã¹ãã ã®åèµ·ååŸã«åžžã« Patroni ãèªåèµ·åããå¿ èŠããããã©ãããèªåèªèº«ã§æ±ºå®ããå¿ èŠããããŸãã ç§ãã¡ãèåž«ã®ãšããã«è¡ã£ãŠã圌ãã©ããŸã§é²ãã ãã確èªããªããã°ãªããªãããšããããããŸãã ããããããã©ã³ã¶ã¯ã·ã§ã³ ãã°ã®ã»ã°ã¡ã³ãã調ã¹ãŠãããã«äœããããã確èªããŠãã ããã ãããŠããã®ããŒã¿ã倱ãå¯èœæ§ãããã®ãââããããšããã®ããŒã¿ãåãåºãããã«å€ããã¹ã¿ãŒãã¹ã¿ã³ãã¢ãã³ ã¢ãŒãã§å®è¡ããå¿ èŠãããã®ãââãç解ããå¿ èŠããããŸãã
ãã®åŸåããŠããã®ããŒã¿ãç Žæ£ã§ãããã埩å ããŠãã®ããŒããã¬ããªã«ãšããŠã¯ã©ã¹ã¿ãŒã«æ¥ç¶ã§ããããå€æããå¿ èŠããããŸãã
ããã«ããmaximum_lag_on_failoverããã©ã¡ãŒã¿ãŒããããŸãã ç§ã®èšæ¶ã«ããã°ãããã©ã«ãã§ã¯ããã®ãã©ã¡ãŒã¿ã®å€ã¯ 1 MB ã§ãã
圌ã¯ã©ã®ããã«åããŠããŸãã? ã¬ããªã«ã®ã¬ããªã±ãŒã·ã§ã³ ã©ã°ã§ããŒã¿ã 1 MB é ããŠããå Žåããã®ã¬ããªã«ã¯éžæã«åå ããŸããã ãããŠãçªç¶ãã¡ã€ã«ãªãŒããŒãçºçããå ŽåãPatroni ã¯ã©ã®ã¬ããªã«ãé ããŠãããã調ã¹ãŸãã 倧éã®ãã©ã³ã¶ã¯ã·ã§ã³ ãã°ãé ããŠããå Žåããã¹ã¿ãŒã«ãªãããšã¯ã§ããŸããã ããã¯ã倧éã®ããŒã¿ã®æ倱ãé²ãéåžžã«åªããã»ãã¥ãªãã£æ©èœã§ãã
ããããPatroni ã¯ã©ã¹ã¿ãš DCS ã®ã¬ããªã±ãŒã·ã§ã³ã©ã°ãäžå®ã®ééã§æŽæ°ããããšããåé¡ããããŸãã 30ç§ãããã©ã«ãã®ttlå€ã ãšæããŸãã
ãããã£ãŠãDCS ã®ã¬ããªã«ã«å¯Ÿã㊠XNUMX ã€ã®ã¬ããªã±ãŒã·ã§ã³ ã©ã°ãããç¶æ³ãååšããå¯èœæ§ããããŸãããå®éã«ã¯ãŸã£ããç°ãªãã©ã°ããããããŸã£ããã©ã°ããªãå¯èœæ§ããããŸããã€ãŸããããã¯ãªã¢ã«ã¿ã€ã ã§ã¯ãããŸããã ãããŠãããã¯å¿ ãããçŸå®ã®å§¿ãåæ ããŠãããšã¯éããŸããã ãããŠãããã«å¯ŸããŠæŽŸæãªããžãã¯ãå®è¡ãã䟡å€ã¯ãããŸããã
ãããŠæ倱ã®ãªã¹ã¯ã¯åžžã«æ®ããŸãã ãããŠãææªã®å Žåã«ã¯ XNUMX ã€ã®åŒããå¹³åçãªå Žåã«ã¯å¥ã®åŒã䜿çšãããŸãã ã€ãŸããPatroni ã®å®è£ ãèšç»ããã©ãã ãã®ããŒã¿ã倱ãããå¯èœæ§ãããããè©äŸ¡ããå Žåããããã®å ¬åŒã«äŸåããŠãã©ãã ãã®ããŒã¿ã倱ãããå¯èœæ§ããããã倧ãŸãã«æ³åããå¿ èŠããããŸãã
ãããŠè¯ããã¥ãŒã¹ããããŸãã å€ããã¹ã¿ãŒãå ã«é²ãã§ããå Žåãããã€ãã®ããã¯ã°ã©ãŠã³ã ããã»ã¹ã«ãããå€ããã¹ã¿ãŒã¯å ã«é²ãããšãã§ããŸãã ã€ãŸããããçš®ã®èªåããã¥ãŒã ãããã圌ã¯ããŒã¿ãæžã蟌ã¿ããã©ã³ã¶ã¯ã·ã§ã³ ãã°ã«ä¿åããŸããã ãããŠããã®ããŒã¿ã¯ç°¡åã«ç¡èŠããã倱ãããå¯èœæ§ããããŸãã ããã§åé¡ãããŸããã
ããã¯ãmaximum_lag_on_failover ãèšå®ãããŠããããã¡ã€ã©ãŒãçºçããæ°ãããã¹ã¿ãŒãéžæããå¿ èŠãããå Žåã®ãã°ãã©ã®ããã«èŠãããã§ãã ã¬ããªã«ã¯èªåèªèº«ãéžæã«åå ã§ããªããšå€æããŸãã ãããŠåœŒå¥³ã¯ãªãŒããŒäºããžã®åå ãæåŠããã ãããŠãæ°ãããã¹ã¿ãŒãéžæãããã®ãåŸ ã£ãŠãããã«æ¥ç¶ã§ããããã«ããŸãã ããã¯ããŒã¿æ倱ã«å¯Ÿããè¿œå ã®å¯Ÿçã§ãã
ããã«ãèªç€Ÿã®è£œåã« Postgres ã§åé¡ããããšæžãã補åããŒã ãããŸãã åæã«ããã¹ã¿ãŒèªäœã«ã¯ SSH çµç±ã§å©çšã§ããªããããã¢ã¯ã»ã¹ã§ããŸããã ãŸããèªåãã¡ã€ã«ãçºçããŸããã
ãã®ãã¹ãã¯åŒ·å¶çã«åèµ·åãããŸããã ä»ç解ããããã«ãæåã§èªåãã¡ã€ã«ãå®è¡ããããšã¯å¯èœã§ããããåèµ·åã«ããèªåãã¡ã€ã«ãçºçããŸããã åèµ·ååŸã¯ãçŸåšã®ãã¹ã¿ãŒã§ã®å 容ããã§ã«è¡šç€ºãããŠããŸãã
åæã«ããã£ã¹ã¯ã«åé¡ãããããšã¯äºåã«ããã£ãŠããŸãããã€ãŸããã©ããæã£ãŠäœãæ¢ãã¹ãããç£èŠããŠããããšããããã§ã«ããã£ãŠããŸããã
ç§ãã¡ã¯ postgres ãã°ã«ã¢ã¯ã»ã¹ããããã§äœãèµ·ãã£ãŠããã®ãã確èªãå§ããŸããã ããã§ã¯ XNUMX ç§ãXNUMX ç§ãXNUMX ç§éæç¶ããã³ãããã確èªãããŸããããããã¯ãŸã£ããæ£åžžã§ã¯ãããŸããã èªåããã¥ãŒã ã®èµ·åãéåžžã«é ããå¥åŠãªããšã«æ°ã¥ããŸããã ãããŠããã£ã¹ã¯äžã«äžæãã¡ã€ã«ãååšããããšãããããŸããã ã€ãŸãããããã¯ãã¹ãŠãã£ã¹ã¯ã®åé¡ã瀺ããŠããŸãã
ã·ã¹ãã ã® dmesg (ã«ãŒãã« ãã°) ã調ã¹ãŸããã ãããŠããã£ã¹ã¯ã® 8 ã€ã«åé¡ãããããšãããããŸããã ãã£ã¹ã¯ ãµãã·ã¹ãã ã¯ãœãããŠã§ã¢ RAID ã§ããã /proc/mdstat ã確èªãããšãããXNUMX ã€ã®ãã©ã€ããäžè¶³ããŠããããšãããããŸããã ã€ãŸããXNUMX ã€ã®ãã£ã¹ã¯ã® Raid ããããXNUMX ã€ãäžè¶³ããŠããŸãã ã¹ã©ã€ãã泚ææ·±ãèŠããšãåºåã«ã¯ sde ããªãããšãããããŸãã ç§ãã¡ã§ã¯ãæ¡ä»¶ä»ãã§èšãã°ããã£ã¹ã¯ãè±èœããŸããã ããã«ãããã£ã¹ã¯ã®åé¡ãçºçããã¢ããªã±ãŒã·ã§ã³ã§ã Postgres ã¯ã©ã¹ã¿ãŒãæäœãããšãã«åé¡ãçºçããŸããã
ãããŠãã®å ŽåãPatroni ã«ã¯ãµãŒããŒã®ç¶æ ããã£ã¹ã¯ã®ç¶æ ãç£èŠããã¿ã¹ã¯ããªããããPatroni ã¯äœã®åœ¹ã«ãç«ã¡ãŸããã ãããŠããã®ãããªç¶æ³ãå€éšç£èŠã«ãã£ãŠç£èŠããå¿ èŠããããŸãã ç§ãã¡ã¯ããã«ãã£ã¹ã¯ç£èŠãå€éšç£èŠã«è¿œå ããŸããã
ãããŠããã®ãããªèãããããŸãã - ãã§ã³ã·ã³ã°ãŸãã¯ãŠã©ããããã°ãœãããŠã§ã¢ãç§ãã¡ãå©ããŠãããã ãããïŒ åé¡ãçºçããŠããéãPatroni 㯠DCS ã¯ã©ã¹ã¿ãŒãšã®å¯Ÿè©±ãç¶ããåé¡ãæ€åºããªãã£ãããããã®ã±ãŒã¹ã§ã¯åœŒãç§ãã¡ãå©ããããšã¯ã»ãšãã©ãªãã ãããšç§ãã¡ã¯èããŠããŸããã ã€ãŸããDCS ãš Patroni ã®èŠ³ç¹ããã¯ãã¯ã©ã¹ã¿ãŒã«ã¯ãã¹ãŠåé¡ããããŸããã§ããããå®éã«ã¯ãã£ã¹ã¯ã«åé¡ããããããŒã¿ããŒã¹ã®å¯çšæ§ã«åé¡ããããŸããã
ç§ã®æèŠã§ã¯ãããã¯ç§ãéåžžã«é·ãéç 究ããŠããäžã§æãå¥åŠãªåé¡ã® XNUMX ã€ã§ãããå€ãã®ãã°ãèªã¿ãåéžæããŠãããã¯ã©ã¹ã¿ãŒ ã·ãã¥ã¬ãŒã¿ãŒãšåŒã³ãŸããã
åé¡ã¯ãå€ããã¹ã¿ãŒãéåžžã®ã¬ããªã«ã«ãªããªãããšã§ãããã€ãŸããPatroni ããããéå§ããPatroni ã¯ãã®ããŒããã¬ããªã«ãšããŠååšããããšã瀺ããŸããããåæã«éåžžã®ã¬ããªã«ã§ã¯ãããŸããã§ããã ä»ãªããã®çç±ãããããŸãã ããã¯ç§ããã®åé¡ã®åæããåŸããã®ã§ãã
ãããŠãããã¯ã©ã®ããã«å§ãŸã£ãã®ã§ãããã? åã®åé¡ãšåæ§ã«ãããã¯ãã£ã¹ã¯ ãã¬ãŒãããå§ãŸããŸããã ã³ããã㯠XNUMX ç§ãXNUMX ç§ãããŸããã
æ¥ç¶ãåæãããŸãããã€ãŸããã¯ã©ã€ã¢ã³ããåæãããŸããã
ããŸããŸãªçšåºŠã®éå¡ãçºçããŸããã
ãããã£ãŠããã£ã¹ã¯ ãµãã·ã¹ãã ã®å¿çæ§ã¯ããŸãé«ããããŸããã
ãããŠç§ã«ãšã£ãŠæãäžæè°ã ã£ãã®ã¯ãå±ããå³æã·ã£ããããŠã³èŠæ±ã§ãã Postgres ã«ã¯ XNUMX ã€ã®ã·ã£ããããŠã³ ã¢ãŒãããããŸãã
- ãã¹ãŠã®ã¯ã©ã€ã¢ã³ããèªåçã«åæããã®ãåŸ ã€ã®ã¯åªé ã§ãã
- ã·ã£ããããŠã³ãããããã¯ã©ã€ã¢ã³ãã匷å¶çã«åæãããšãé«éã«ãªããŸãã
- ãããŠå³æã ãã®å Žåãimmediate ã¯ã¯ã©ã€ã¢ã³ãã«ã·ã£ããããŠã³ããããã«æ瀺ããããšãããããèŠåãªãã«ã·ã£ããããŠã³ããã ãã§ãã ãããŠããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã«å¯ŸããŠããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã¯ãã§ã« RST ã¡ãã»ãŒãž (æ¥ç¶ãäžæãããã¯ã©ã€ã¢ã³ãããã£ããã§ãããã®ããªãããšã瀺ã TCP ã¡ãã»ãŒãž) ãéä¿¡ããŠããŸãã
誰ããã®ä¿¡å·ãéã£ãã®ã§ãããã? Postgres ã®ããã¯ã°ã©ãŠã³ã ããã»ã¹ã¯ããã®ãããªã·ã°ãã«ãçžäºã«éä¿¡ããŸãããã€ãŸãããã㯠kill-9 ã§ãã ãããã¯çžäºã«ãã®ãããªãã®ãéä¿¡ããã®ã§ã¯ãªãããã®ãããªãã®ã«ã®ã¿åå¿ããŸããã€ãŸãããã㯠Postgres ã®ç·æ¥åèµ·åã§ãã 誰ãéã£ãã®ããåãããŸããã
ãæåŸã®ãã³ãã³ããèŠããšãåãããã«ãã®ãµãŒããŒã«ãã°ã€ã³ããŠãã人ã 9 人ããŸããããæ¥ãããããŠè³ªåããããšãã§ããŸããã§ããã ãããããã«-9ã ã£ãã§ãããã ãã°ã«ã¯ kill -9 ã衚瀺ãããŸãã Postgres ã§ã¯ kill -XNUMX ããã£ããšèšã£ãŠããŸããããã°ã«ã¯è¡šç€ºãããŸããã§ããã
ããã«èŠãŠã¿ããšãPatroni ã 54 ç§ãšããããªãé·ãæéãã°ã«æžã蟌ãã§ããªãããšãããããŸããã 54 ã€ã®ã¿ã€ã ã¹ã¿ã³ããæ¯èŒãããšãçŽ XNUMX ç§éã¡ãã»ãŒãžããããŸããã§ããã
ãããŠãã®éã«ãªãŒããã¡ã€ã«ããããŸããã ããããŒãã¯ããã§ãçŽ æŽãããä»äºãããŠãããŸããã ç§ãã¡ã®å€ã䞻人ã¯äžåšã§ã圌ã«äœããèµ·ãããŸããã ãããŠæ°ããªãã¹ã¿ãŒã®éžåºãå§ãŸã£ãã ããã§ã¯ãã¹ãŠãããŸããããŸããã ç§ãã¡ã® pgsql01 ãæ°ãããªãŒããŒã«ãªããŸããã
ãã¹ã¿ãŒã«ãªã£ãã¬ããªã«ããããŸãã ãããŠã10çªç®ã®å¿çããããŸãã ãããŠãXNUMX çªç®ã®ã¬ããªã«ã«ãåé¡ããããŸããã 圌女ã¯åæ§æããããšããŸããã ç§ã®ç解ã§ã¯ã圌女ã¯recovery.confãå€æŽããPostgresãåèµ·åããŠæ°ãããã¹ã¿ãŒã«æ¥ç¶ããããšããŸããã 圌女㯠XNUMX ç§ããšã«ãææŠããŠãããæåããŠããªããšããã¡ãã»ãŒãžãæžããŸãã
ãããã®è©Šè¡äžã«ãå³æã·ã£ããããŠã³ä¿¡å·ãå€ããã¹ã¿ãŒã«å°çããŸãã ãã¹ã¿ãŒãåèµ·åãããŸãã ãŸããå€ããã¹ã¿ãŒãåèµ·åããããããªã«ããªãåæ¢ããŸãã ã€ãŸããã¬ããªã«ã¯ã·ã£ããããŠã³ ã¢ãŒãã§ãããããã¬ããªã«ã«æ¥ç¶ã§ããŸããã
ããæç¹ã§ã¯æ©èœããŸããããã¬ããªã±ãŒã·ã§ã³ãéå§ãããŸããã§ããã
ç§ã®å¯äžã®æšæž¬ã¯ãrecovery.conf ã«å€ããã¹ã¿ãŒ ã¢ãã¬ã¹ããã£ããšããããšã§ãã ãããŠãæ°ãããã¹ã¿ãŒãåºçŸããŠããXNUMX çªç®ã®ã¬ããªã«ã¯äŸç¶ãšããŠå€ããã¹ã¿ãŒãžã®æ¥ç¶ãè©Šã¿ãŸããã
Patroni ã XNUMX çªç®ã®ã¬ããªã«ã§èµ·åãããšãããŒãã¯èµ·åããŸããããè€è£œã§ããŸããã§ããã ãããŠã次ã®ãããªã¬ããªã±ãŒã·ã§ã³ã©ã°ã圢æãããŸããã ã€ãŸããXNUMX ã€ã®ããŒãã¯ãã¹ãŠæå®ã®äœçœ®ã«ãããŸããããXNUMX çªç®ã®ããŒããé ããŠããŸããã
åæã«ãæžã蟌ãŸãããã°ãèŠããšããã©ã³ã¶ã¯ã·ã§ã³ ãã°ãç°ãªãããã«ã¬ããªã±ãŒã·ã§ã³ãéå§ã§ããªãã£ãããšãããããŸãã ãããŠããã¹ã¿ãŒãæäŸãããã©ã³ã¶ã¯ã·ã§ã³ ãã° (recovery.conf ã§æå®ãããŠãããã®) ã¯ãçŸåšã®ããŒãã«ãŸã£ããé©åããŸããã
ãããŠããã§ç§ã¯ééããç¯ããŸããã ééã£ããã¹ã¿ãŒã«æ¥ç¶ããŠãããšãã仮説ãæ€èšŒããã«ã¯ãrecovery.conf ã®å 容ã確èªããå¿ èŠããããŸããã ããããç§ã¯ããã«å¯ŸåŠããŠããã ãã§ããã®ããšãæãã€ããªãã£ãããŸãã¯ã¬ããªã«ãé ããŠããŠè£å ããå¿ èŠãããããšã«æ°ã¥ããŸãããã€ãŸããã©ããããããäžæ³šæã«äœæ¥ããŸããã ãããç§ã®ãžã§ã€ã³ãã§ããã
30 ååŸã管çè ã¯ãã§ã«æ¥ãŠããŸãããã€ãŸããã¬ããªã«ã§ Patroni ãåèµ·åããŸããã ãããããŠããŸã£ãã®ã§ãè£å ããå¿ èŠããããšæããŸããã ãããŠç§ã¯æã£ã - ããããŒããåèµ·åããŠãããããããäœãè¯ãããšãèµ·ãããããããªãã å埩ãå§ãŸããŸããã ãããŠåºå°ãéèšãããæ¥ç¶ãåãå ¥ããæºåãæŽããŸããã
ã¬ããªã±ãŒã·ã§ã³ãéå§ãããŸããã ãããããã® XNUMX ååŸããã©ã³ã¶ã¯ã·ã§ã³ ãã°ãèªåã«é©ããŠããªããšãããšã©ãŒã衚瀺ããã圌女ã¯èœã¡ãŠããŸããŸããã
ãŸãåéããããšæããŸããã Patroni ãå床åèµ·åããŸãããPostgres ãåèµ·åããã®ã§ã¯ãªããéæ³ã®ããã«ããŒã¿ããŒã¹ãèµ·åããããšãæåŸ ã㊠Patroni ãåèµ·åããŸããã
ã¬ããªã±ãŒã·ã§ã³ãåã³éå§ãããŸãããããã©ã³ã¶ã¯ã·ã§ã³ ãã°å ã®ããŒã¯ã¯ç°ãªã£ãŠãããååã®éå§è©Šè¡ãšåãã§ã¯ãããŸããã§ããã ã¬ããªã±ãŒã·ã§ã³ãåã³åæ¢ããŸããã ãããŠãã¡ãã»ãŒãžã¯ãã§ã«å°ãç°ãªã£ãŠããŸããã ãããŠãããã¯ç§ã«ãšã£ãŠããŸãæçã§ã¯ãããŸããã§ããã
ãããŠã次ã®ããšãé ã«æµ®ãã³ãŸãããPostgres ãåèµ·åãããããã®æç¹ã§çŸåšã®ãã¹ã¿ãŒã«ãã§ãã¯ãã€ã³ããäœæããŠããã©ã³ã¶ã¯ã·ã§ã³ ãã°å ã®ãã€ã³ããå°ãåã«ç§»åããŠãå¥ã®ç¬éããå埩ãéå§ããããšãããã©ããªãã§ãããã? ããã«ãWALã®åšåº«ããŸã ãããŸããã
Patroni ãåèµ·åãããã¹ã¿ãŒã§ããã€ãã®ãã§ãã¯ãã€ã³ããå®è¡ããã¬ããªã«ãéãããšãã«ããã€ãã®åèµ·åãã€ã³ããå®è¡ããŸããã ãããŠããã¯åœ¹ã«ç«ã¡ãŸããã ãªãããã圹ç«ã€ã®ãããããŠãããã©ã®ããã«æ©èœããã®ããé·ãéèããŸããã ãããŠã¬ããªã«ãèµ·åããŸããã ãããŠã¬ããªã±ãŒã·ã§ã³ã¯å£ããªããªããŸããã
ç§ã«ãšã£ãŠããã®ãããªåé¡ã¯æãè¬ã«æºã¡ãåé¡ã®äžã€ã§ãããããã§å®éã«äœãèµ·ãã£ãã®ããæªã ã«å°æããŠããŸãã
ããã§ã®åœ±é¿ã¯äœã§ãããã? Patroni ã¯æå³ãããšããã«ãšã©ãŒãªãåäœããŸãã ãããåæã«ãããã§ãã¹ãŠãããŸããããšãã 100% ã®ä¿èšŒã¯ãããŸããã ã¬ããªã«ã¯èµ·åããå¯èœæ§ããããŸãããååäœç¶æ ã§ããå¯èœæ§ããããå€ãããŒã¿ãååšãããããã¢ããªã±ãŒã·ã§ã³ã¯ãã®ãããªã¬ããªã«ãæäœã§ããŸããã
ãã¡ã€ã©ãŒã®åŸã¯ãã¯ã©ã¹ã¿ãŒå ã§ãã¹ãŠãæ£åžžã§ããããšãã€ãŸããå¿ èŠãªæ°ã®ã¬ããªã«ãååšããã¬ããªã±ãŒã·ã§ã³ã®é 延ããªãããšãåžžã«ç¢ºèªããå¿ èŠããããŸãã
ãããã®åé¡ãæ€èšããŠããäžã§ãç§ã¯ææ¡ãããŠãããŸãã ãããã XNUMX ã€ã®ã¹ã©ã€ãã«çµåããŠã¿ãŸããã ããããããã¹ãŠã®ã¹ããŒãªãŒã XNUMX ã€ã®ã¹ã©ã€ãã«ãŸãšããŠè©±ãã ãã§æžãã§ãããã
Patroni ã䜿çšããå Žåã¯ãç£èŠãå¿ èŠã§ãã èªåãã¡ã€ã«ãªãŒããŒããã€çºçããããåžžã«ç¥ã£ãŠããå¿ èŠããããŸããèªåãã¡ã€ã«ãªãŒããŒãçºçããããšãç¥ããªããšãã¯ã©ã¹ã¿ãŒãå¶åŸ¡ã§ããªãããã§ãã ãããŠããã¯æªãããšã§ãã
åãã¡ã€ã©ãŒã®åŸã¯ãåžžã«ã¯ã©ã¹ã¿ãŒãæåã§ãã§ãã¯ããå¿ èŠããããŸãã Patroni ã DCS ã·ã¹ãã ã䜿çšããŠãã¬ããªã«ã®æ°ãåžžã«ææ°ã§ããããšãã¬ããªã±ãŒã·ã§ã³ã®é 延ããªãããšãã¹ããªãŒãã³ã° ã¬ããªã±ãŒã·ã§ã³ã«é¢é£ãããã°ã«ãšã©ãŒããªãããšã確èªããå¿ èŠããããŸãã
èªååã¯æ£åžžã«æ©èœããPatroni ã¯éåžžã«åªããããŒã«ã§ãã ããã¯æ©èœããŸãããã¯ã©ã¹ã¿ãŒãæãŸããç¶æ ã«ããããšã¯ã§ããŸããã ãããŠããããç¥ããªããã°ãç§ãã¡ã¯å°ã£ãŠããŸããŸãã
ãããŠããããŒãã¯ç¹å¹è¬ã§ã¯ãªãã Postgres ãã©ã®ããã«æ©èœããããã¬ããªã±ãŒã·ã§ã³ãã©ã®ããã«æ©èœããããPatroni ã Postgres ãšã©ã®ããã«é£æºããããããŒãéã®éä¿¡ãã©ã®ããã«æäŸãããããç解ããå¿ èŠããããŸãã ããã¯ãæã®åé¡ã解決ããããã«å¿ èŠã§ãã
蚺æã®åé¡ã«ã©ã®ããã«ã¢ãããŒãããã°ããã§ãããã? ããŸããŸãç§ãã¡ã¯ããŸããŸãªã¯ã©ã€ã¢ã³ãã䜿çšããŠããã誰ã ELK ã¹ã¿ãã¯ãæã£ãŠããªãããã6 ã€ã®ã³ã³ãœãŒã«ãš 2 ã€ã®ã¿ããéããŠãã°ãæŽçããå¿ èŠããããŸããã äžæ¹ã®ã¿ãã§ã¯åããŒãã® Patroni ãã°ã衚瀺ãããããäžæ¹ã®ã¿ãã§ã¯ Consul ãã°ã衚瀺ãããå¿ èŠã«å¿ã㊠Postgres ã®ãã°ã衚瀺ãããŸãã ããã蚺æããã®ã¯éåžžã«å°é£ã§ãã
ç§ã¯ã©ã®ãããªã¢ãããŒãããšã£ãŠããã®ã§ãããã? ãŸãããã¡ã€ã©ãŒãå°çãããšãã«ãã€ãèŠãŸãã ãããŠç§ã«ãšã£ãŠãããã¯å氎嶺ã§ãã ç§ã¯ç³åè ã®åãç³åäžãç³ååŸã«äœãèµ·ãã£ãã®ããèŠãŠãããŸãã ãã¡ã€ã«ãªãŒããŒã«ã¯ XNUMX ã€ã®ããŒã¯ããããŸããããã¯éå§æéãšçµäºæéã§ãã
次ã«ããã¡ã€ã©ãŒããåã®ã€ãã³ãã®ãã°ã調ã¹ãŸããã€ãŸãããã¡ã€ã©ãŒãçºçããçç±ãæ¢ããŸãã
ãããŠãããã«ããããã®ãããªç¶æ³ãèµ·ãããªãããã«ïŒãããŠãã®çµæããã¡ã€ã©ãŒãååšããªããªãïŒãäœãèµ·ãã£ãã®ãããããŠå°æ¥äœãã§ããã®ããç解ããããã®å šäœåãåŸãããŸãã
ãããŠç§ãã¡ã¯æ®æ®µã©ããèŠãŠããã®ã§ããããïŒ ç§ã¯ããèŠãŠããŸãïŒ
- ãŸãã¯ããããŒãã®ãã°ãžã
- 次ã«ãPatroni ãã°ã§èŠã€ãã£ãå 容ã«å¿ããŠãPostgres ãã°ãŸã㯠DCS ãã°ã調ã¹ãŸãã
- ãŸããã·ã¹ãã ãã°ããããã¡ã€ã©ãŒã®åå ããããããšããããŸãã
ããããŒãã«ã€ããŠã©ãæããŸããïŒ ããããŒããšã¯ãšãŠãè¯ãé¢ä¿ãç¯ããŠããŸãã ç§ã®æèŠã§ã¯ããããä»æ¥ã®æé«ã®ãã®ã§ãã ä»ã«ãããããã®è£œåãç¥ã£ãŠããŸãã ãããã¯ãStolonãRepmgrãPg_auto_failoverãPAF ã§ãã 4ã€ã®ããŒã«ã å šéšè©ŠããŠã¿ãŸããã ããããŒããäžçªå¥œãã§ãã
ãããããŒãããå§ãããŸããïŒããšèããããã ç§ã¯ããããŒãã奜ããªã®ã§ãããçããŸãã ãããŠãããæçããæ¹æ³ãåŠãã ããã«æããŸãã
ç§ãè¿°ã¹ãåé¡ä»¥å€ã« Patroni ã«ã©ã®ãããªåé¡ãããã®ãââç¥ãããå Žåã¯ããã€ã§ããã®ããŒãžããã§ãã¯ããŠãã ããã
人ã ã足ãæã£ãŠèªæ®ºãããšããèå³æ·±ã話ãããã€ããããŸãã ãšãŠãæçã§ãã ããªãã¯ãããèªãã§ãããããå¿ èŠããªãããšãç解ããŠããŸãã ç§ã¯èªåèªèº«ãã«ãã«ãèšããŸããã
ãããŠããã®ãããžã§ã¯ããéçºããŠããã Zalando ãã€ãŸã Alexander Kukushkin ãš Alexey Klyukin ã«å€å€§ãªæè¬ãç³ãäžããããšæããŸãã Aleksey Klyukin ã¯å ±èè ã® XNUMX 人ã§ãçŸåšã¯ Zalando ã§åããŠããŸãããããã®è£œåã«åãçµã¿å§ããã®ã¯ XNUMX 人ã§ãã
ãããŠããããŒãã¯ãšãŠãã¯ãŒã«ãªãã®ã ãšæããŸãã 圌女ãååšããã®ã¯å¬ãããã圌女ã«ãšã£ãŠã¯èå³æ·±ãããšã ã ãããŠãPatroni ã«ããããæžããŠãã ãã£ããã¹ãŠã®è²¢ç®è ã«æ·±ãæè¬ããŸãã ããããŒãã幎霢ãéããããšã«ãããæçããã¯ãŒã«ã§å¹ççã«ãªãããšãé¡ã£ãŠããŸãã ãã§ã«æ©èœããŠããŸãããããã«æ¹è¯ãããããšãæåŸ ããŠããŸãã ãããã£ãŠãPatroni ã䜿çšããäºå®ãããå Žåã¯ãå¿é ããå¿ èŠã¯ãããŸããã ããã¯åªãããœãªã¥ãŒã·ã§ã³ã§ãããå®è£ ããŠäœ¿çšã§ããŸãã
ããã§å šéšã§ãã 質åãããå Žåã¯ã質åããŠãã ããã
質å
ãå ±åããããšãããããŸãïŒ ãã¡ã€ã©ãŒã®åŸã§ã泚ææ·±ã確èªããå¿ èŠãããå Žåããªãèªåãã¡ã€ã©ãŒãå¿ èŠãªã®ã§ãããã?
æ°ãããã®ã ããã ç§ãã¡ã¯åœŒå¥³ãšäžç·ã«XNUMX幎ããçµã£ãŠããŸããã å®å šãªæ¹ãè¯ãã§ãã ç§ãã¡ã¯å®éã«çŸå Žã«å ¥ã£ãŠããã¹ãŠãæ¬åœã«ããŸããããã©ããã確èªããããšèããŠããŸãã ããã¯å€§äººã®äžä¿¡æã®ã¬ãã«ã§ããå確èªããŠç¢ºèªããã»ããããã§ãããã
äŸãã°ãæè¡ã£ãŠèŠãŸããããïŒ
æã§ã¯ãªããéåžžã¯ã»ãŒããã«èªåãã¡ã€ã«ã«ã€ããŠåŠã³ãŸãã éç¥ãåãåããšãèªåãã¡ã€ã«ãçºçããããšãããããŸãã ç§ãã¡ã¯ããã«èŠã«è¡ããŸãã ãã ãããããã®ãã§ãã¯ã¯ãã¹ãŠç£èŠã¬ãã«ã«åŒãäžããå¿ èŠããããŸãã REST APIçµç±ã§Patroniã«ã¢ã¯ã»ã¹ãããšå±¥æŽãæ®ããŸãã å±¥æŽã«ãã£ãŠããã¡ã€ã©ãŒãçºçãããšãã®ã¿ã€ã ã¹ã¿ã³ãã確èªã§ããŸãã ããã«åºã¥ããŠç£èŠãè¡ãããšãã§ããŸãã å±¥æŽãã€ãã³ãã®æ°ã確èªã§ããŸãã ããã«ã€ãã³ããããå Žåã¯ãèªåãã¡ã€ã«ãçºçããŠããŸãã è¡ã£ãŠèŠãããšãã§ããŸãã ãŸãã¯ãç£èŠèªååã«ããããã¹ãŠã®ã¬ããªã«ãé©åã«é 眮ãããŠãããé 延ããªãããã¹ãŠãæ£åžžã§ããããšã確èªãããŸããã
ããããšãããããŸãïŒ
çŽ æŽãããã話ãããããšãããããŸããïŒ DCS ã¯ã©ã¹ã¿ãŒã Postgres ã¯ã©ã¹ã¿ãŒããé ãé¢ããå Žæã«ç§»åããå Žåããã®ã¯ã©ã¹ã¿ãŒãå®æçã«ãµãŒãã¹ãåããå¿ èŠããããŸãã? DCS ã¯ã©ã¹ã¿ãŒã®äžéšããªãã«ããå¿ èŠãããããŸãã¯ãããã«å¯ŸããŠäœããè¡ãå¿ èŠããããªã©ã®ãã¹ã ãã©ã¯ãã£ã¹ã¯äœã§ãã? ãã®æ§é å šäœã¯ã©ã®ããã«ããŠåç¶ããã®ã§ãããã? ãããŠããããã®ããšã¯ã©ããã£ãŠè¡ãã®ã§ããããïŒ
ããäŒæ¥ã§ã¯ãã³ã³ããŒãã³ãã® XNUMX ã€ãŸãã¯è€æ°ãæ éããå Žåã«äœãèµ·ããããšããåé¡ã®ãããªãã¯ã¹ãäœæããå¿ èŠããããŸããã ãã®ãããªãã¯ã¹ã«åŸã£ãŠããã¹ãŠã®ã³ã³ããŒãã³ããé çªã«æ€èšãããããã®ã³ã³ããŒãã³ãã«é害ãçºçããå Žåã®ã·ããªãªãæ§ç¯ããŸãã ãããã£ãŠãé害ã·ããªãªããšã«ãå埩ã®ããã®ã¢ã¯ã·ã§ã³ ãã©ã³ãç«ãŠãããšãã§ããŸãã DCS ã®å Žåãããã¯æšæºã€ã³ãã©ã¹ãã©ã¯ãã£ã®äžéšãšããŠæäŸãããŸãã ãããŠç®¡çè ãããã管çããŠãããç§ãã¡ã¯ãã§ã«ããã管çãã管çè ãšãäºæ ãçºçããå Žåã«ãããä¿®æ£ãã管çè ã®èœåã«äŸåããŠããŸãã DCS ããŸã£ãããªãå Žåã¯ããããå°å ¥ããŸãããåæã«ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®è²¬ä»»ãè² ããªããããç¹ã«ç£èŠã¯ããŸããããäœãç£èŠããæ¹æ³ãšæšå¥šäºé ãæäŸããŸãã
ã€ãŸãããã¹ãã§äœããè¡ãåã«ãPatroni ãç¡å¹ã«ãããã¡ã€ã©ãŒãç¡å¹ã«ãããã¹ãŠãç¡å¹ã«ããå¿ èŠãããããšãæ£ããç解ããŸããã?
ããã¯ãDCS ã¯ã©ã¹ã¿ãŒå ã®ããŒãã®æ°ã«ãã£ãŠç°ãªããŸãã å€æ°ã®ããŒããããããã®ãã¡ã® XNUMX ã€ã®ããŒã (ã¬ããªã«) ã ããç¡å¹ã«ãããšãã¯ã©ã¹ã¿ãŒã¯ã¯ã©ãŒã©ã ãç¶æããŸãã ãããŠããããŒãã¯åŒãç¶ãå¶æ¥ãç¶ããŠããã ãããŠäœãèªçºãããŸããã ããå€ãã®ããŒãã«åœ±é¿ãäžããè€éãªæäœãããããããååšããªããšã¯ã©ãŒã©ã ãç Žå£ãããå¯èœæ§ãããå Žåã¯ãPatroni ãäžæåæ¢ããã®ãåççãããããŸããã ããã«ã¯ã察å¿ããã³ãã³ã (patronictl äžæåæ¢ãpatronictl åé) ããããŸãã ãã äžæåæ¢ããã ãã§ããããã®æç¹ã§ã¯ãªãŒããã¡ã€ã©ãŒã¯æ©èœããŸããã DCS ã¯ã©ã¹ã¿ãŒã®ã¡ã³ããã³ã¹ãè¡ã£ãåŸãäžæåæ¢ã解é€ããŠçšŒåãç¶ç¶ããŸãã
ã©ããããããšãããããŸããïŒ
ãå ±åããã ããŸããŠèª ã«ããããšãããããŸãïŒ è£œåããŒã ã¯ããŒã¿ã®æ倱ã«ã€ããŠã©ãæããŠããŸãã?
補åããŒã ã¯æ°ã«ããŠããŸããããããŒã ãªãŒããŒã¯å¿é ããŠããŸãã
ã©ã®ãããªä¿èšŒããããŸãã?
ä¿èšŒã¯éåžžã«é£ããã§ãã Alexander Kukushkin ã¯ããRPO ãš RTO ã®èšç®æ¹æ³ããã€ãŸãå埩æéãšå€±ãããå¯èœæ§ã®ããããŒã¿ã®éã«é¢ããã¬ããŒããäœæããŠããŸãã ãããã®ã¹ã©ã€ããèŠã€ããŠç 究ããå¿ èŠããããšæããŸãã ç§ãèŠããŠããéããããããèšç®ããæ¹æ³ã«ã€ããŠã¯å ·äœçãªæé ããããŸãã ã©ãã ãã®ãã©ã³ã¶ã¯ã·ã§ã³ã倱ãããå¯èœæ§ãããããã©ãã ãã®ããŒã¿ã倱ãããå¯èœæ§ããããã ãªãã·ã§ã³ãšããŠãPatroni ã¬ãã«ã§åæã¬ããªã±ãŒã·ã§ã³ã䜿çšã§ããŸãããããã¯äž¡åã®å£ã§ããããŒã¿ã®ä¿¡é Œæ§ã確ä¿ã§ããããé床ãäœäžãããã®ã©ã¡ããã§ãã åæã¬ããªã±ãŒã·ã§ã³ããããŸããããããããŒã¿æ倱ã«å¯Ÿãã 100% ã®ä¿è·ãä¿èšŒãããã®ã§ã¯ãããŸããã
ã¢ã¬ã¯ã»ã€ãçŽ æŽãããã¬ããŒããããããšãïŒ ãŒãã¬ãã«ã®ä¿è·ã« Patroni ã䜿çšããçµéšã¯ãããŸãã? ã€ãŸããåæã¹ã¿ã³ãã€ãšäœµçšãããšããããšã§ããããã ãããæåã®è³ªåã§ãã ãããŠXNUMXã€ç®ã®è³ªåã ããŸããŸãªãœãªã¥ãŒã·ã§ã³ã䜿çšããŸããã ç§ãã¡ã¯ Repmgr ã䜿çšããŸãããããªãŒããã¡ã€ã©ãŒã¯äœ¿çšããŸããã§ããããçŸåšã¯ãªãŒããã¡ã€ã©ãŒãå«ããããšãèšç»ããŠããŸãã ãããŠã代æ¿ãœãªã¥ãŒã·ã§ã³ãšã㊠Patroni ãæ€èšããŸãã Repmgrãšæ¯èŒããå©ç¹ã¯äœã ãšæããŸãã?
æåã®è³ªåã¯åæã¬ããªã«ã«é¢ãããã®ã§ããã 誰ããæãã£ãŠããã®ã§ãããã§ã¯èª°ãåæã¬ããªã±ãŒã·ã§ã³ã䜿çšããŸããïŒããã€ãã®ã¯ã©ã€ã¢ã³ãã¯ãã§ã«åæã¬ããªã±ãŒã·ã§ã³ã䜿çšããŠããŸãããååãšããŠããã©ãŒãã³ã¹ã®åé¡ã«æ°ã¥ããŠããŸãã - è¬æŒè ã®ã¡ã¢ïŒã ãã ããåæã¬ããªã±ãŒã·ã§ã³ ã¯ã©ã¹ã¿ãŒã«ã¯å°ãªããšã XNUMX ã€ã®ããŒããå¿ èŠã§ãããšããã«ãŒã«ãç¬èªã«éçºããŸãããããã¯ãXNUMX ã€ã®ããŒããããããã¹ã¿ãŒãŸãã¯ã¬ããªã«ã«é害ãçºçããå ŽåãPatroni ããã®ããŒããã¹ã¿ã³ãã¢ãã³ ã¢ãŒãã«åãæ¿ããŠãã¢ããªã±ãŒã·ã§ã³ãç¶ç¶ããŠåäœããããã«ããããã§ããä»äºã ãã®å ŽåãããŒã¿ã倱ãããå±éºæ§ããããŸãã
XNUMX çªç®ã®è³ªåã«é¢ããŠã¯ãæŽå²çãªçç±ãããç§ãã¡ã¯ Repmgr ã䜿çšããŠãããäžéšã®ã¯ã©ã€ã¢ã³ãã§ã¯çŸåšã䜿çšããŠããŸãã äœãèšããã§ããããïŒ Patroni ã«ã¯ããã«äœ¿ãããªãŒããã¡ã€ã©ãŒãä»å±ããŠãããRepmgr ã«ã¯æå¹ã«ããå¿ èŠãããè¿œå æ©èœãšããŠãªãŒããã¡ã€ã©ãŒãä»å±ããŠããŸãã åããŒã㧠Repmgr ããŒã¢ã³ãå®è¡ããå¿ èŠããããŸãããã®åŸããªãŒããã¡ã€ã©ãŒãæ§æã§ããŸãã
Repmgr ã¯ãPostgres ããŒããçããŠãããã©ããã確èªããŸãã Repmgr ããã»ã¹ã¯çžäºã«ååšã確èªããŸãããããã¯ããŸãå¹ççãªã¢ãããŒãã§ã¯ãããŸããã ãããã¯ãŒã¯åé¢ã®è€éãªã±ãŒã¹ã§ã¯ã倧èŠæš¡ãª Repmgr ã¯ã©ã¹ã¿ãŒãããã€ãã®å°ããªã¯ã©ã¹ã¿ãŒã«å解ãããŠãåäœãç¶ããå¯èœæ§ããããŸãã ç§ã¯é·ãé Repmgr ããã©ããŒããŠããŸããã§ãããä¿®æ£ããããããããŸãã...ãããã¯ä¿®æ£ãããŠããªããããããŸããã ããããStolon æ°ã Patroni æ°ãè¡ã£ãŠããããã«ãDCS å ã®ã¯ã©ã¹ã¿ãŒã®ç¶æ ã«é¢ããæ å ±ãåé€ããããšãæãçŸå®çãªéžæè¢ã§ãã
ã¢ã¬ã¯ã»ã€ã質åãããã®ã§ããããããããããã£ãšã€ãŸããªã質åãããããŸããã æåã®äŸã® XNUMX ã€ã§ã¯ãDCS ãããŒã«ã« ãã·ã³ãããªã¢ãŒã ãã¹ãã«ç§»åããŸããã ç§ãã¡ã¯ããããã¯ãŒã¯ãç¬èªã®ç¹æ§ãæã¡ãããèªäœã§çããŠãããã®ã§ããããšãç解ããŠããŸãã ãŸããäœããã®çç±ã§ DCS ã¯ã©ã¹ã¿ãŒã䜿çšã§ããªããªã£ãå Žåã¯ã©ããªãã®ã§ãããã? çç±ã¯èšããŸãããããããã¯ãŒã«ãŒã®éªæªãªæã«ãããã®ããå®éã®åé¡ãŸã§ãããããã®çç±ãèããããŸãã
倧ããªå£°ã§ã¯èšããŸããã§ããããã¯ã©ãŒã©ã ãæºããããã«ã¯ãDCS ã¯ã©ã¹ã¿ãŒããã§ã€ã«ãªãŒããŒããå¿ èŠããããŸããã€ãŸããå¥æ°ã®ããŒãã§ãªããã°ãªããŸããã DCS ã¯ã©ã¹ã¿ãŒã䜿çšã§ããªããªã£ãããã¯ã©ãŒã©ã ãæºããããªããªã£ããããå Žå (ã€ãŸããäœããã®ãããã¯ãŒã¯ã®åå²ãããŒãã®é害ãªã©) ã¯ã©ããªããŸãã? ãã®å ŽåãPatroni ã¯ã©ã¹ã¿ãŒã¯èªã¿åãå°çšã¢ãŒãã«ãªããŸãã Patroni ã¯ã©ã¹ã¿ãŒã¯ã¯ã©ã¹ã¿ãŒã®ç¶æ ãšäœããã¹ãããå€æã§ããŸããã DCS ã«æ¥ç¶ããŠæ°ããã¯ã©ã¹ã¿ãŒç¶æ ãããã«ä¿åããããšã¯ã§ããªããããã¯ã©ã¹ã¿ãŒå šäœãèªã¿åãå°çšã«ãªããŸãã ãããŠããªãã¬ãŒã¿ãŒã«ããæåä»å ¥ãŸã㯠DCS ãå埩ãããŸã§åŸ ã¡ãŸãã
ãã£ããèšããšãDCS ã¯ç§ãã¡ã«ãšã£ãŠåºå°ãã®ãã®ãšåããããéèŠãªãµãŒãã¹ã«ãªãã®ã§ããããïŒ
ã¯ãã¯ãã éåžžã«å€ãã®çŸä»£äŒæ¥ã«ãããŠãService Discovery ã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã®äžå¯æ¬ ãªéšåã§ãã ã€ã³ãã©ã¹ãã©ã¯ãã£ã«ããŒã¿ããŒã¹ãååšããåããå®è£ ãããŠããŸãã çžå¯Ÿçã«èšãã°ãã€ã³ãã©ã¹ãã©ã¯ãã£ãç«ã¡äžããããDC ã«ãããã€ãããããã« Service Discovery ãå©çšã§ããããã«ãªããŸããã Consul ã§ããã°ããã®äžã« DNS ãæ§ç¯ã§ããŸãã ããã Etcd ã®å ŽåãKubernetes ã¯ã©ã¹ã¿ãŒã®äžéšãååšããå¯èœæ§ããããããã«ä»ã®ãã¹ãŠããããã€ãããŸãã Service Discovery ã¯ãã§ã«çŸä»£ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã«äžå¯æ¬ ãªéšåã«ãªã£ãŠããããã«æããŸãã ãããŠã圌ãã¯ããŒã¿ããŒã¹ã«ã€ããŠèãããããã¯ããã«æ©ã段éã§ããã«ã€ããŠèããŸãã
ããããšãããããŸãïŒ
åºæïŒ habr.com