å°å ¥
å°ãåã«ãç§ã¯ãã§ãŒã«ãªãŒã㌠ã¯ã©ã¹ã¿ãŒãéçºããã¿ã¹ã¯ãäžããããŸããã
ãã®æ±ºå®ã«ããããã§ã€ã«ãªãŒã㌠ã¯ã©ã¹ã¿ãŒã®ãã©ãŒã«ã ãã¬ã©ã³ãæ§ã¯ã©ã®çšåºŠã«ãªãã®ããšããåœç¶ã®çåãçããŸããã ããã調æ»ããããã«ãã¯ã©ã¹ã¿ãŒ ããŒãäžã®ããŸããŸãªé害ãã·ãã¥ã¬ãŒããããµãŒãã¹ã埩å ãããã®ãåŸ æ©ããé害ãçºçããããŒããå埩ããŠãã«ãŒãã§ãã¹ããç¶è¡ãããã¹ã ãã³ããéçºããŸããã ãã®ãããžã§ã¯ãã¯ããšããš hapgsql ãšããååã§ããããæéãçµã€ã«ã€ããŠãæ¯é³ã XNUMX ã€ãããªãååã«é£œããŠããŸããŸããã ããã§ããã©ãŒã«ã ãã¬ã©ã³ã ããŒã¿ããŒã¹ (ããã³ããããæããããŒã IP) ãåŒã³åºãããã«ããŸããã ã¯ãã¬ã³ (ãã¹ãŠã®éèŠãªåšå®ãè€è£œãããŠããã³ã³ãã¥ãŒã¿ãŒ ã²ãŒã ã®ãã£ã©ã¯ã¿ãŒ)ãããŒããã¯ã©ã¹ã¿ãŒãããã³ãããžã§ã¯ãèªäœã¯ ãã¥ãã£ã³ã« ïŒã¯ããŒã¬ã³ãäœãææïŒã
ä»ã§ã¯çµå¶é£ãèš±å¯ããŸãã
ã¯ã©ã¹ã¿ãŒã¯ä»®æ³ãã·ã³äžã«ãããã€ãããŸã
æ£ç¢ºãªæéãµãŒãã¹ ntpd
(ãªãŒãã¡ã³ã¢ãŒãïŒã å
±æãµãŒã㌠ç®æè
ã¯äžå€®ã® NTP ãµãŒããŒãšããŠæ©èœãããã®æéããã¹ãŠã®ã¯ã©ã¹ã¿ãŒã«åæ£ããããšã§ããã¹ãŠã®ãµãŒããŒãçžäºã«åæãããŸãã ãã ç®æè
é害ãçºçãããåé¢ããããšã(ã¯ã©ã¹ã¿ãŒå
ã®) ã¯ã©ã¹ã¿ãŒ ãµãŒããŒã® XNUMX ã€ãæéãåæ£ãå§ããŸãã è£å©ãã£ãã·ã¥ HTTPãããã· ã«ãåŒãäžããããŸãã ç®æè
, ãã®å©ããåããŠãä»ã®ä»®æ³ãã·ã³ã¯ Yum ãªããžããªã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã å®éã«ã¯ãæ£ç¢ºãªæå»ããããã·ãªã©ã®ãµãŒãã¹ã¯å°çšãµãŒããŒã§ãã¹ããããå¯èœæ§ãé«ããªããŸãããããŒã¹ã§ã¯ããã㯠ç®æè
ä»®æ³ãã·ã³ã®æ°ãšã¹ããŒã¹ãç¯çŽããããã ãã«äœ¿çšããŸãã
ããŒãžã§ã³
v0. VirtualBox 7 äžã® CentOS 11 ããã³ PostgreSQL 6.1 ã§åäœããŸãã
ã¯ã©ã¹ã¿ãŒæ§é
ãã¹ãŠã®ã¯ã©ã¹ã¿ãŒã¯è€æ°ã®ããŒã¿ã»ã³ã¿ãŒã«é 眮ãããXNUMX ã€ã®ãã©ãã ãããã¯ãŒã¯ã«çµåãããããã«èšèšãããŠãããåäžããŒã¿ã»ã³ã¿ãŒã®é害ããããã¯ãŒã¯åé¢ã«èããå¿ èŠããããŸãã ãããçç±ã§ã äžå¯èœ ããã®ä¿è·ã«äœ¿çšãã ã¹ããªãããã¬ã€ã³ ãšåŒã°ããæšæºçãªããŒã¹ã¡ãŒã«ãŒæè¡ ã¹ããŒãã¹ (ä»ã®ããŒãã®é ãæã¡æã) ãŸã㯠ãã§ã³ã·ã³ã°ã ãã®æ¬è³ªã¯ãã¯ã©ã¹ã¿ãŒå ã®ããŒãããäžéšã®ããŒãã«åé¡ããããå¿çããŠããªãããŸãã¯æ£ããåäœããŠããªãã®ã§ã¯ãªãããšçãå§ããå ŽåãIPMI ã UPS ã³ã³ãããŒã« ã«ãŒããªã©ã®ãå€éšãããã€ã¹ãéããŠåŒ·å¶çã«ããŒãããªãã«ããããšã§ãã ã ãã ããããã¯ãåäžã®é害ãçºçããå Žåã§ããIPMI ãŸã㯠UPS ãµãŒããŒãåäœãç¶ããå Žåã«ã®ã¿æ©èœããŸãã ããã§ã¯ãããŒã¿ã»ã³ã¿ãŒå šäœã«é害ãçºçããå Žå (ããšãã°ãé»æºåªå€±ãªã©)ãããã«å£æ» çãªé害ããä¿è·ããããšãèšç»ããŠããŸãã ãããŠããã®ãããªæåŠã§ã¯ããã¹ãŠã ã¹ããã¹-ããã€ã¹ (IPMIãUPS ãªã©) ãæ©èœããŸããã
代ããã«ãã·ã¹ãã ã¯ã¯ã©ãŒã©ã ã®èãã«åºã¥ããŠããŸãã ãã¹ãŠã®ããŒãã«ã¯é³å£°ããããå šããŒãã®åå以äžãèªèã§ããããŒãã®ã¿ãæ©èœããŸãã ãã®ãååïŒïŒãã®éã å®è¶³æ°ã ã¯ã©ãŒã©ã ã«éããªãå ŽåãããŒãã¯ãããã¯ãŒã¯ãåé¢ãããŠãããšå€æãããªãœãŒã¹ããªãã«ããå¿ èŠããããŸãã ãããããã§ã ã¹ããªãããã¬ã€ã³ä¿è·ã ãã®åäœãæ åœãããœãããŠã§ã¢ãæ©èœããªãå Žåã¯ãããšãã° IPMI ã«åºã¥ããŠã©ããããã°ãæ©èœããå¿ èŠããããŸãã
ããŒãã®æ°ãå¶æ°ã®å Žå (XNUMX ã€ã®ããŒã¿ã»ã³ã¿ãŒå ã®ã¯ã©ã¹ã¿ãŒ)ãããããäžç¢ºå®æ§ãçããå¯èœæ§ããããŸãã 50ïŒ / 50ïŒ (åååå) ãããã¯ãŒã¯åé¢ã«ããã¯ã©ã¹ã¿ãŒãã¡ããã©ååã«åå²ãããå Žåã ãããã£ãŠãå¶æ°ã®ããŒãã®å Žåã¯ã次ã®ããã«è¿œå ããŸãã ã¯ã©ãŒã©ã ããã€ã¹ ã¯ã50 çªç®ã®ããŒã¿ ã»ã³ã¿ãŒã«ããæãå®äŸ¡ãªä»®æ³ãã·ã³äžã§èµ·åã§ãããèŠæ±ã®å³ããããŒã¢ã³ã§ãã 圌ã¯ã»ã°ã¡ã³ãã® 50 〠(圌ãèŠãã»ã°ã¡ã³ã) ã«æ祚ããããã«ãã£ãŠ XNUMX%/XNUMX% ã®äžç¢ºå®æ§ã解決ããŸãã ã¯ã©ãŒã©ã ããã€ã¹ãèµ·åããããµãŒããŒã«ååãä»ããŸãã ç®æè (repmgr ã®çšèªãæ°ã«å ¥ããŸãã)ã
ãªãœãŒã¹ã¯ãé害ã®ãããµãŒããŒããæ£åžžãªãµãŒããŒãžããŸãã¯ã·ã¹ãã 管çè ã®æ瀺ã«ãã£ãŠãå Žæããå Žæãžç§»åã§ããŸãã ã¯ã©ã€ã¢ã³ããå¿ èŠãªãªãœãŒã¹ãã©ãã«ããã®ã (ã©ãã«æ¥ç¶ããã°ããã®ã) ãææ¡ã§ããããã«ã ãããŒãã£ã³ã°IP (ãããŒãIPïŒã ãããã¯ãPacemaker ãããŒãéã移åã§ãã IP ã§ã (ãã¹ãŠããã©ãã ãããã¯ãŒã¯äžã«ãããŸã)ã ããããã¯ãªãœãŒã¹ (ãµãŒãã¹) ã象城ããŠããããã®ãµãŒãã¹ (ãã®å Žåã¯ããŒã¿ããŒã¹) ã«ã¢ã¯ã»ã¹ããããã«æ¥ç¶ããå¿ èŠãããå Žæã«é 眮ãããŸãã
Tuchanka1 (å§çž®ã䌎ãåè·¯)
æ§é
èããã®ã¯ãè² è·ã®äœãå°èŠæš¡ãªããŒã¿ããŒã¹ãå€æ°ãããããèªã¿åãå°çšãã©ã³ã¶ã¯ã·ã§ã³çšã«å°çšã®ã¹ã¬ãŒã ãµãŒããŒãããã ã¹ã¿ã³ã〠ã¢ãŒãã§ç¶æããã®ã¯æ¡ç®ãåããªããšããããšã§ãã (ãã®ãããªãªãœãŒã¹ã®ç¡é§é£ãã¯å¿ èŠãããŸãã)ã
åããŒã¿ã»ã³ã¿ãŒã«ã¯ XNUMX å°ã®ãµãŒããŒããããŸãã åãµãŒããŒã«ã¯ XNUMX ã€ã® PostgreSQL ã€ã³ã¹ã¿ã³ã¹ããããŸã (PostgreSQL ã®çšèªã§ã¯ã¯ã©ã¹ã¿ãŒãšåŒã°ããŸãããæ··ä¹±ãé¿ããããã« (ä»ã®ããŒã¿ããŒã¹ããé¡æšããŠ) ã€ã³ã¹ã¿ã³ã¹ãšåŒã³ãPacemaker ã¯ã©ã¹ã¿ãŒã®ã¿ãã¯ã©ã¹ã¿ãŒãšåŒã³ãŸã)ã XNUMX ã€ã®ã€ã³ã¹ã¿ã³ã¹ã¯ãã¹ã¿ãŒ ã¢ãŒãã§åäœãããã®ã€ã³ã¹ã¿ã³ã¹ã®ã¿ããµãŒãã¹ãæäŸããŸã (ãããŒã IP ã®ã¿ãããã«ã€ãªãããŸã)ã XNUMX çªç®ã®ã€ã³ã¹ã¿ã³ã¹ã¯ XNUMX çªç®ã®ããŒã¿ã»ã³ã¿ãŒã®ã¹ã¬ãŒããšããŠæ©èœãããã¹ã¿ãŒã«é害ãçºçããå Žåã«ã®ã¿ãµãŒãã¹ãæäŸããŸãã ã»ãšãã©ã®å ŽåãXNUMX ã€ã®ã€ã³ã¹ã¿ã³ã¹ã®ãã¡ XNUMX ã€ã®ã€ã³ã¹ã¿ã³ã¹ (ãã¹ã¿ãŒ) ã ãããµãŒãã¹ãæäŸ (ãªã¯ãšã¹ãã®å®è¡) ããããããã¹ãŠã®ãµãŒã㌠ãªãœãŒã¹ã¯ãã¹ã¿ãŒçšã«æé©åãããŸã (ã¡ã¢ãªã¯shared_buffers ãã£ãã·ã¥ãªã©ã«å²ãåœãŠãããŸã)ããŸããããŒã¿ ã»ã³ã¿ãŒã® XNUMX ã€ã§é害ãçºçããå Žåã«åããŠãïŒãã¡ã€ã« ã·ã¹ãã ãã£ãã·ã¥ã«ãã次åã®åäœã§ã¯ãããã®ã®ïŒååãªãªãœãŒã¹ãåããŠããŸãã ã¹ã¬ãŒãã¯ãã¯ã©ã¹ã¿ãŒã®éåžžã®åäœäžã¯ãµãŒãã¹ãæäŸããŸãã (èªã¿åãå°çšãªã¯ãšã¹ããå®è¡ããŸãã)ããã®ãããåããã·ã³äžã®ãã¹ã¿ãŒãšã®ãªãœãŒã¹ã®äºå¥ªã¯çºçããŸããã
XNUMX ã€ã®ããŒãã®å Žåãåæã¬ããªã±ãŒã·ã§ã³ã§ã¯ã¹ã¬ãŒãã®é害ããã¹ã¿ãŒã®åæ¢ã«ã€ãªããããããã©ãŒã«ã ãã¬ã©ã³ã¹ã¯éåæã¬ããªã±ãŒã·ã§ã³ã§ã®ã¿å¯èœã§ãã
蚌人äžå±¥è¡
蚌人äžå±¥è¡ (ã¯ã©ãŒã©ã ããã€ã¹) Tuchanka1 ã¯ã©ã¹ã¿ãŒã«ã€ããŠã®ã¿æ€èšããŸãããä»ã®ãã¹ãŠã«ã€ããŠãåã話ã«ãªããŸãã ç£èŠã倱æããå Žåãã¯ã©ã¹ã¿ãŒæ§é ã¯äœãå€åããããã¹ãŠã以åãšåãããã«åäœãç¶ããŸãã ãã ããã¯ã©ãŒã©ã 㯠2 ã€ã®ãã¡ 3 ã€ã«ãªãããããã®åŸã®é害ã¯ã¯ã©ã¹ã¿ãŒã«ãšã£ãŠèŽåœçã«ãªããŸãã ãŸã æ©æ¥ã«ä¿®æ£ããå¿ èŠããããŸãã
Tuchanka1 ã®æåŠ
Tuchanka1 ã®ããŒã¿ã»ã³ã¿ãŒã® XNUMX ã€ã«é害ãçºçããŸããã ãã®å Žå ç®æè ã¯ãXNUMX çªç®ã®ããŒã¿ã»ã³ã¿ãŒã® XNUMX çªç®ã®ããŒãã«æ祚ããŸãã ããã§ã¯ã以åã®ã¹ã¬ãŒãããã¹ã¿ãŒã«å€ããããã®çµæãäž¡æ¹ã®ãã¹ã¿ãŒãåããµãŒããŒäžã§åäœããäž¡æ¹ã®ãããŒã IP ãããããæãããã«ãªããŸãã
ãã¥ãã£ã³ã«2 (ã¯ã©ã·ãã¯)
æ§é
2 ã€ã®ããŒãã®å€å žçãªã¹ããŒã ã ãã¹ã¿ãŒã¯ 2 ã€ã§åäœããã¹ã¬ãŒã㯠1 ã€ç®ã§åäœããŸãã ã©ã¡ãããªã¯ãšã¹ããå®è¡ã§ãããã (ã¹ã¬ãŒãã¯èªã¿åãå°çš)ãã©ã¡ãã float IP ã«ãã£ãŠãã€ã³ããããŸããkroganXNUMX ããã¹ã¿ãŒãkroganXNUMXsXNUMX ãã¹ã¬ãŒãã§ãã ãã¹ã¿ãŒãšã¹ã¬ãŒãã®äž¡æ¹ã«ãã©ãŒã«ã ãã¬ã©ã³ã¹ããããŸãã
XNUMX ã€ã®ããŒãã®å Žåãåæã¬ããªã±ãŒã·ã§ã³ã§ã¯ã¹ã¬ãŒãã®é害ããã¹ã¿ãŒã®åæ¢ã«ã€ãªããããããã©ãŒã«ã ãã¬ã©ã³ã¹ã¯éåæã¬ããªã±ãŒã·ã§ã³ã§ã®ã¿å¯èœã§ãã
Tuchanka2 ã®æåŠ
ããããã®ããŒã¿ã»ã³ã¿ãŒã«é害ãçºçããå Žå ç®æè XNUMXçªç®ã«æ祚ããŸãã å¯äžçšŒåããŠããããŒã¿ã»ã³ã¿ãŒã§ã¯ãã¹ã¿ãŒãèµ·åããããã¹ã¿ãŒãšã¹ã¬ãŒãã®äž¡æ¹ã®ãããŒã IP ããããæããŸãã ãã¡ããããã¹ã¿ãŒããã³ã¹ã¬ãŒãã®ãããŒã IP ããã®ãã¹ãŠã®æ¥ç¶ãšãªã¯ãšã¹ããåæã«åãå ¥ããã®ã«ååãªãªãœãŒã¹ (æ¥ç¶å¶éãªã©) ãããããã«ã€ã³ã¹ã¿ã³ã¹ãæ§æããå¿ èŠããããŸãã ã€ãŸããéåžžã®åäœäžã¯ãååãªå¶éå€ã確ä¿ãããŠããå¿ èŠããããŸãã
Tuchanka4 (å€ãã®å¥Žé·)
æ§é
ãã§ã«å¥ã®æ¥µç«¯ãã 倧éã®èªã¿åãå°çšãªã¯ãšã¹ããåãåãããŒã¿ããŒã¹ããããŸã (é«è² è·ãµã€ãã®å žåçãªã±ãŒã¹)ã Tuchanka4 ã¯ããã®ãããªãªã¯ãšã¹ããåŠçããããã« XNUMX ã€ä»¥äžã®ã¹ã¬ãŒããååšããå¯èœæ§ãããç¶æ³ã§ãããããã§ãå€ãããããã§ã¯ãããŸããã ã¹ã¬ãŒãã®æ°ãéåžžã«å€ãå Žåã¯ãéå±€ã¬ããªã±ãŒã·ã§ã³ ã·ã¹ãã ãçºæããå¿ èŠããããŸãã æå°ã®ã±ãŒã¹ (å³) ã§ã¯ãXNUMX ã€ã®ããŒã¿ ã»ã³ã¿ãŒã®ããããã« XNUMX ã€ã®ãµãŒããŒããããããããã« PostgreSQL ã€ã³ã¹ã¿ã³ã¹ããããŸãã
ãã®ã¹ããŒã ã®ãã XNUMX ã€ã®ç¹åŸŽã¯ããã§ã« XNUMX ã€ã®åæã¬ããªã±ãŒã·ã§ã³ãæ§æã§ããããšã§ãã å¯èœã§ããã°ããã¹ã¿ãŒãšåãããŒã¿ã»ã³ã¿ãŒå ã®ã¬ããªã«ã§ã¯ãªããå¥ã®ããŒã¿ã»ã³ã¿ãŒã«è€è£œããããã«æ§æãããŠããŸãã ãã¹ã¿ãŒãšåã¹ã¬ãŒãã¯ãfloat IP ã«ãã£ãŠãã€ã³ããããŸãã 幞ããªããšã«ãã¹ã¬ãŒãéã§äœããã®æ¹æ³ã§ãªã¯ãšã¹ãã®ãã©ã³ã¹ãåãå¿ èŠããããŸãã SQLãããã·ããšãã°ãã¯ã©ã€ã¢ã³ãåŽã§ãã ã¯ã©ã€ã¢ã³ãã®ã¿ã€ããç°ãªãã°ãå¿ èŠãªã¿ã€ããç°ãªãå ŽåããããŸã SQLãããã·ã誰ãã©ããå¿ èŠãšãããã¯ã¯ã©ã€ã¢ã³ãéçºè ã ããç¥ã£ãŠããŸãã ãã®æ©èœã¯ãå€éšããŒã¢ã³ãŸãã¯ã¯ã©ã€ã¢ã³ã ã©ã€ãã©ãª (æ¥ç¶ããŒã«) ãªã©ã«ãã£ãŠå®è£ ã§ããŸãã ããããã¹ãŠã¯ããã§ãŒã«ãªãŒã㌠ããŒã¿ããŒã¹ ã¯ã©ã¹ã¿ãŒã®ãããã¯ãè¶ ããŠããŸã (ãã§ãŒã«ãªãŒã㌠SQLãããã· ç¬ç«ããŠå®è£ ããããšããã¯ã©ã€ã¢ã³ãã®ãã©ãŒã«ã ãã¬ã©ã³ã¹ãšçµã¿åãããŠå®è£ ããããšãã§ããŸã)ã
Tuchanka4 ã®æåŠ
XNUMX ã€ã®ããŒã¿ ã»ã³ã¿ãŒ (ã€ãŸã XNUMX ã€ã®ãµãŒããŒ) ã«é害ãçºçããå Žåã蚌人㯠XNUMX çªç®ã®ããŒã¿ ã»ã³ã¿ãŒã«æ祚ããŸãã ãã®çµæãXNUMX å°ã®ãµãŒããŒã XNUMX çªç®ã®ããŒã¿ ã»ã³ã¿ãŒã§å®è¡ãããŸããXNUMX å°ã¯ãã¹ã¿ãŒãå®è¡ãããã¹ã¿ãŒ ãããŒã IP ã¯ãããæããŸã (èªã¿åã/æžã蟌ã¿èŠæ±ãåä¿¡ãããã)ã XNUMX çªç®ã®ãµãŒããŒã«ã¯ãåæã¬ããªã±ãŒã·ã§ã³ã§å®è¡ãããŠããã¹ã¬ãŒãããããã¹ã¬ãŒã ãããŒã IP ã® XNUMX ã€ãããããã€ã³ãããŠããŸã (èªã¿åãå°çšãªã¯ãšã¹ãã®å Žå)ã
æåã«æ³šæãã¹ãããšã¯ããã¹ãŠã®ã¹ã¬ãŒã ãããŒã IP ãã¯ãŒã«ãŒã«ãªãããã§ã¯ãªããXNUMX ã€ã ããã¯ãŒã«ãŒã«ãªããšããããšã§ãã ãããŠããããæ£ããæ±ãããã«ã¯ã次ã®ããšãå¿ èŠã«ãªããŸãã SQLãããã· ãã¹ãŠã®ãªã¯ãšã¹ããå¯äžæ®ã£ãŠãããããŒã IP ã«ãªãã€ã¬ã¯ãããŸããã ã§ããã SQLãããã· ãããããã®å Žåã¯ãæ¥ç¶ URL å ã§ãã¹ãŠã® float IP ã¹ã¬ãŒããã«ã³ãã§åºåã£ãŠãªã¹ãã§ããŸãã ãã®å Žåã libpq æ¥ç¶ã¯æåã«åäœãã IP ã«è¡ãããããã¯èªåãã¹ã ã·ã¹ãã ã§è¡ãããŸãã ããããä»ã®ã©ã€ãã©ãª (JDBC ãªã©) ã§ã¯ãããã¯æ©èœããªããããå¿ èŠã«ãªããŸãã SQLãããã·ã ããã¯ãã¹ã¬ãŒãã®ãããŒã IP ã XNUMX ã€ã®ãµãŒããŒäžã§åæã«çºçããããšãçŠæ¢ãããŠãããããè€æ°ã®ã¹ã¬ãŒã ãµãŒããŒãå®è¡ãããŠããå Žåã«ã¹ã¬ãŒã ãµãŒããŒéã§åçã«åæ£ãããããã«ããããã«è¡ãããŸãã
XNUMX çªç®: ããŒã¿ã»ã³ã¿ãŒã«é害ãçºçããå Žåã§ããåæã¬ããªã±ãŒã·ã§ã³ãç¶æãããŸãã ãŸããäºæ¬¡çãªé害ãçºçããå Žåãã€ãŸãæ®ãã®ããŒã¿ã»ã³ã¿ãŒå ã® XNUMX å°ã®ãµãŒããŒã®ãã¡ XNUMX å°ã«é害ãçºçããå Žåã§ããã¯ã©ã¹ã¿ãŒã¯ãµãŒãã¹ã®æäŸãåæ¢ããŸãããã³ãããã確èªãããã¹ãŠã®ã³ãããããããã©ã³ã¶ã¯ã·ã§ã³ã«é¢ããæ å ±ãä¿æããŸãã (äºæ¬¡é害ã®å Žåãæ倱æ å ±ã¯ãããŸãã)ã
Tuchanka3 (3 ããŒã¿ã»ã³ã¿ãŒ)
æ§é
ããã¯ãå®å šã«æ©èœããããŒã¿ ã»ã³ã¿ãŒã XNUMX ã€ãããããããã®ããŒã¿ ã»ã³ã¿ãŒãå®å šã«æ©èœããããŒã¿ããŒã¹ ãµãŒããŒãåããŠããç¶æ³ã®ã¯ã©ã¹ã¿ãŒã§ãã ãã®å Žå ã¯ã©ãŒã©ã ããã€ã¹ å¿ èŠãããŸããã 1 ã€ã®ããŒã¿ ã»ã³ã¿ãŒã«ã¯ãã¹ã¿ãŒãé 眮ãããä»ã® 2 ã€ã®ããŒã¿ ã»ã³ã¿ãŒã«ã¯ã¹ã¬ãŒããé 眮ãããŸãã ã¬ããªã±ãŒã·ã§ã³ã¯åæã§ãã¿ã€ã ANY (slave4ãslaveXNUMX) ã§ããã€ãŸããã¯ã©ã€ã¢ã³ãã¯ãããããã®ã¹ã¬ãŒããã³ããããåãå ¥ãããšæåã«å¿çãããšãã«ã³ããã確èªãåãåããŸãã ãªãœãŒã¹ã¯ããã¹ã¿ãŒã®å Žå㯠XNUMX ã€ã®ãããŒã IPãã¹ã¬ãŒãã®å Žå㯠XNUMX ã€ã®ãããŒã IP ã«ãã£ãŠç€ºãããŸãã TuchankaXNUMX ãšã¯ç°ãªããXNUMX ã€ã®ãããŒã IP ã¯ãã¹ãŠãã©ãŒã«ã ãã¬ã©ã³ãã§ãã èªã¿åãå°çš SQL ã¯ãšãªã®ãã©ã³ã¹ããšãã«ã¯ã次ã®ã³ãã³ãã䜿çšã§ããŸãã SQLãããã· (å¥åã®ãã©ãŒã«ã ãã¬ã©ã³ã¹ã䜿çš)ããŸã㯠XNUMX ã€ã®ã¹ã¬ãŒã ãããŒã IP ãã¯ã©ã€ã¢ã³ãã®ååã«å²ãåœãŠãæ®ãã®ååã XNUMX çªç®ã®ã¯ã©ã€ã¢ã³ãã«å²ãåœãŠãŸãã
Tuchanka3 ã®æåŠ
ããŒã¿ã»ã³ã¿ãŒã® XNUMX ã€ãæ éããŠããXNUMX ã€ãæ®ããŸãã XNUMX ã€ç®ã§ã¯ããã¹ã¿ãŒãšãã¹ã¿ãŒããã®ãããŒã IP ãçæãããXNUMX ã€ç®ã§ã¯ãã¹ã¬ãŒããšäž¡æ¹ã®ã¹ã¬ãŒã ãããŒã IP ãçæãããŸã (ã€ã³ã¹ã¿ã³ã¹ã¯ãäž¡æ¹ã®ã¹ã¬ãŒã ãããŒã IP ããã®ãã¹ãŠã®æ¥ç¶ãåãå ¥ããããã«ããªãœãŒã¹ãäºéã«äºçŽããå¿ èŠããããŸã)ã ãã¹ã¿ãŒãšã¹ã¬ãŒãéã®åæã¬ããªã±ãŒã·ã§ã³ã ãŸããã¯ã©ã¹ã¿ãŒã¯ãXNUMX ã€ã®ããŒã¿ã»ã³ã¿ãŒãç Žå£ãããå Žå (åæã«ç Žå£ãããªãå Žå)ãã³ãããããã³ç¢ºèªããããã©ã³ã¶ã¯ã·ã§ã³ã«é¢ããæ å ±ãä¿åããŸã (æ å ±ã®æ倱ã¯ãããŸãã)ã
ãã¡ã€ã«æ§é ãšå±éã®è©³çŽ°ãªèª¬æã¯å«ããªãããšã«ããŸããã è©ŠããŠã¿ãã人ã¯ãREADME ããã¹ãŠèªãããšãã§ããŸãã ããã§ã¯èªåãã¹ãã«ã€ããŠã®ã¿èª¬æããŸãã
èªåè©Šéšã·ã¹ãã
ããŸããŸãªé害ãã·ãã¥ã¬ãŒãããŠã¯ã©ã¹ã¿ãŒã®èé害æ§ããã¹ãããããã«ãèªåãã¹ã ã·ã¹ãã ãäœæãããŸããã ã¹ã¯ãªããã«ãã£ãŠèµ·åããã test/failure
ã ã¹ã¯ãªããã¯ããã¹ãããã¯ã©ã¹ã¿ãŒã®æ°ããã©ã¡ãŒã¿ãŒãšããŠåãåãããšãã§ããŸãã ããšãã°æ¬¡ã®ã³ãã³ãã§ãã
test/failure 2 3
XNUMX çªç®ãš XNUMX çªç®ã®ã¯ã©ã¹ã¿ãŒã®ã¿ããã¹ãããŸãã ãã©ã¡ãŒã¿ãŒãæå®ãããŠããªãå Žåã¯ããã¹ãŠã®ã¯ã©ã¹ã¿ãŒããã¹ããããŸãã ãã¹ãŠã®ã¯ã©ã¹ã¿ãŒã䞊è¡ããŠãã¹ããããçµæã tmux ããã«ã«è¡šç€ºãããŸãã Tmux ã¯å°çšã® tmux ãµãŒããŒã䜿çšãããããããã©ã«ãã® tmux ããã¹ã¯ãªãããå®è¡ã§ãããã¹ãããã tmux ãäœæãããŸãã 倧ããªãŠã£ã³ããŠãšå°ããªãã©ã³ãã§ã¿ãŒããã«ã䜿çšããããšããå§ãããŸãã ãã¹ããéå§ãããåã«ãã¹ã¯ãªãããå®äºããæç¹ã§ãã¹ãŠã®ä»®æ³ãã·ã³ãã¹ãããã·ã§ããã«ããŒã«ããã¯ãããŸãã setup
.
ã¿ãŒããã«ã¯ãã¹ã察象ã®ã¯ã©ã¹ã¿ãŒã®æ°ã«å¿ããŠåã«åå²ãããŠãããããã©ã«ãã§ã¯ (ã¹ã¯ãªãŒã³ã·ã§ããã§ã¯) 2 ã€ãããŸãã TuchankaXNUMX ãäŸã«ã³ã©ã ã®å 容ã説æããŸãã ã¹ã¯ãªãŒã³ã·ã§ããã®ããã«ã«ã¯çªå·ãä»ããããŠããŸãã
- ãã¹ãçµ±èšãããã«è¡šç€ºãããŸãã å:
- 倱æ â é害ããšãã¥ã¬ãŒããããã¹ã (ã¹ã¯ãªããå ã®é¢æ°) ã®ååã
- åå¿ â ã¯ã©ã¹ã¿ãŒãæ©èœãå埩ãããŸã§ã®ç®è¡å¹³åæé (ç§åäœ)ã ããã¯ãé害ããšãã¥ã¬ãŒãããã¹ã¯ãªããã®éå§ãããã¯ã©ã¹ã¿ãŒãæ©èœã埩å ããŠãµãŒãã¹ã®æäŸãç¶ç¶ã§ããããã«ãªãç¬éãŸã§æž¬å®ãããŸãã æéãéåžžã«çãå Žå (ããšãã°ã3 ç§) (ããã¯è€æ°ã®ã¹ã¬ãŒã (Tuchanka4 ãš TuchankaXNUMX) ãå«ãã¯ã©ã¹ã¿ãŒã§çºçããŸã)ãé害ã¯éåæã¹ã¬ãŒãã«ãããããã©ãŒãã³ã¹ã«ãŸã£ãã圱é¿ãäžããªãã£ãããšãæå³ããŸããã¯ã©ã¹ã¿ãŒã®ç¶æ ãåãæ¿ãããŸãã
- åå·® â å€ã®åºããïŒç²ŸåºŠïŒã瀺ããŸã åå¿ æšæºåå·®æ³ã䜿çšããŸãã
- ã«ãŠã³ã â ãã®ãã¹ããäœåå®è¡ããããã
- çããã°ã䜿çšããŠãã¯ã©ã¹ã¿ãŒãçŸåšå®è¡ããŠããããšãè©äŸ¡ã§ããŸãã å埩 (ãã¹ã) çªå·ãã¿ã€ã ã¹ã¿ã³ããããã³æäœã®ååã衚瀺ãããŸãã å®è¡æéãé·ããã (5 åãè¶ ãã) å Žåã¯ãåé¡ãããããšã瀺ããŸãã
- ããŒã (ããŒã) - çŸåšã®æå»ã æ§èœãèŠèŠçã«è©äŸ¡ããå Žå ãã¹ã¿ãŒãº çŸåšæå»ã¯ãfloat IP ãã¹ã¿ãŒã䜿çšããŠããŒãã«ã«åžžã«æžã蟌ãŸããŸãã æåãããšãçµæããã®ããã«ã«è¡šç€ºãããŸãã
- ããŒã (ãã«ã¹) - ã¹ã¯ãªããã«ãã£ãŠä»¥åã«èšé²ããããçŸåšæå»ã ããŒã ãã¹ã¿ãŒãžãä»ããèªã å¥Žé· ãããŒã IP çµç±ã§ã ã¹ã¬ãŒããšã¬ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãèŠèŠçã«è©äŸ¡ã§ããŸãã Tuchanka1 ã«ã¯ãããŒã IP ãæã€ã¹ã¬ãŒãã¯ãããŸãã (ãµãŒãã¹ãæäŸããã¹ã¬ãŒãã¯ãããŸãã) ããã€ã³ã¹ã¿ã³ã¹ (DB) ã XNUMX ã€ãããããããã«ã¯è¡šç€ºãããŸããã ããŒããš ããŒã XNUMXçªç®ã®ã€ã³ã¹ã¿ã³ã¹ã
- ãŠãŒãã£ãªãã£ã䜿çšããã¯ã©ã¹ã¿ãŒã®å¥å
šæ§ã®ç£èŠ
pcs mon
ã æ§é ãããŒãéã®ãªãœãŒã¹ã®ååžãããã³ãã®ä»ã®æçšãªæ å ±ã衚瀺ããŸãã - ã¯ã©ã¹ã¿ãŒå ã®åä»®æ³ãã·ã³ããã®ã·ã¹ãã ç£èŠãããã«è¡šç€ºãããŸãã ã¯ã©ã¹ã¿ãŒã«ããä»®æ³ãã·ã³ã®æ°ã«å¿ããŠããã®ãããªããã«ãããã«ååšããå ŽåããããŸãã XNUMX ã€ã®ã°ã©ã CPUè² è· (ä»®æ³ãã·ã³ã«ã¯ XNUMX ã€ã®ããã»ããµããããŸã)ãä»®æ³ãã·ã³åã ã·ã¹ãã è² è· (5 åã10 åã15 åã«ããã£ãŠå¹³åããããããLoad Average ãšåŒã°ããŸã)ãããã»ã¹ ããŒã¿ãšã¡ã¢ãªå²ãåœãŠã
- ãã¹ããå®è¡ããã¹ã¯ãªããã®ãã¬ãŒã¹ã åäœã®çªç¶ã®äžæãç¡éã®åŸ æ©ãµã€ã¯ã«ãªã©ã誀åäœãçºçããå Žåãããã§ãã®åäœã®çç±ã確èªã§ããŸãã
ãã¹ã㯠5 段éã§å®è¡ãããŸãã ãŸããã¹ã¯ãªããã¯ããããçš®é¡ã®ãã¹ããå®è¡ãããã®ãã¹ããé©çšããä»®æ³ãã·ã³ãã©ã³ãã ã«éžæããŸãã ãã®åŸãç¡éã®ãã¹ã ãµã€ã¯ã«ãå®è¡ãããä»®æ³ãã·ã³ãšé害ãæ¯åã©ã³ãã ã«éžæãããŸãã ãã¹ã ã¹ã¯ãªãã (äžã®ããã«) ãçªç¶çµäºããããäœããåŸ æ©ããç¡éã«ãŒã (XNUMX ã€ã®æäœã®å®è¡æéã XNUMX åãè¶ ãããããã¯ãã¬ãŒã¹ã§ç¢ºèªã§ããŸã) ã¯ããã®ã¯ã©ã¹ã¿ãŒäžã®ãã¹ãã®äžéšã倱æããããšã瀺ããŠããŸãã
åãã¹ãã¯æ¬¡ã®æäœã§æ§æãããŸãã
- é害ããšãã¥ã¬ãŒãããæ©èœãèµ·åããŸãã
- æºåïŒ â ã¯ã©ã¹ã¿ãŒã埩å ãããã®ãåŸ æ©ããŠããŸã (ãã¹ãŠã®ãµãŒãã¹ãæäŸãããŠããå Žå)ã
- ã¯ã©ã¹ã¿ãŒã®å埩ã¿ã€ã ã¢ãŠãã瀺ããŸã (åå¿).
- ä¿®æ£ãã â ã¯ã©ã¹ã¿ãŒã¯ã修埩äžãã§ãã ãã®åŸãå®å šã«åäœå¯èœãªç¶æ ã«æ»ãã次ã®æ éã«åããå¿ èŠããããŸãã
以äžã¯ããã¹ãã®å 容ã®èª¬æãå«ããã¹ãã®ãªã¹ãã§ãã
- ãã©ãŒã¯ãã ïŒãã©ãŒã¯ãã ã䜿çšããŠãã¡ã¢ãªäžè¶³ããçºçãããŸãã
- ã¢ãŠããªãã¹ããŒã¹: ããŒããã©ã€ãããã£ã±ãã§ãã ãã ãããã®ãã¹ãã¯ããªã象城çã§ããããã¹ãäžã«çºçããè² è·ããããã§ãããããéåžžãããŒã ãã©ã€ãããã£ã±ãã«ãªã£ãŠã PostgreSQL ã¯å€±æããŸããã
- Postgres-KILL: ã³ãã³ã㧠PostgreSQL ã匷å¶çµäºããŸã
killall -KILL postgres
. - Postgres-STOP: PostgreSQL ã³ãã³ãããã³ã°ããŸã
killall -STOP postgres
. - é»æºãåã: ã³ãã³ãã䜿çšããŠä»®æ³ãã·ã³ã®é»æºããåæãããŸãã
VBoxManage controlvm "вОÑÑÑалка" poweroff
. - ãªã»ãã: ã³ãã³ãã§ä»®æ³ãã·ã³ããªãŒããŒããŒãããŸãã
VBoxManage controlvm "вОÑÑÑалка" reset
. - SBD-STOP: ã³ãã³ã㧠SBD ããŒã¢ã³ãäžæåæ¢ããŸãã
killall -STOP sbd
. - ã·ã£ããããŠã³: SSH çµç±ã§ä»®æ³ãã·ã³ã«ã³ãã³ããéä¿¡ããŸãã
systemctl poweroff
ãã·ã¹ãã ã¯æ£åžžã«ã·ã£ããããŠã³ããŸãã - ãªã³ã¯ã解é€ãã: ãããã¯ãŒã¯åé¢ãã³ãã³ã
VBoxManage controlvm "вОÑÑÑалка" setlinkstate1 off
.
æšæºã® tmux ã³ãã³ããkill-windowãã䜿çšããŠãã¹ããå®äºãã Ctrl+B &ããŸãã¯ãdetach-clientãã³ãã³ã Ctrl-b d: ãã®æç¹ã§ãã¹ãã¯çµäºããtmux ãçµäºããä»®æ³ãã·ã³ããªãã«ãªããŸãã
ãã¹ãäžã«ç¹å®ãããåé¡
-
çŸåš çªç¬ã®æªé sbd ç£èŠãããããŒã¢ã³ãåæ¢ããããšã¯ã§ããŸãããåçµããããšã¯ãããŸããã ãããŠãã®çµæãåçµã®ã¿ãåŒãèµ·ããé害ãçºçããŸã ã³ãã·ã³ã¯ О ããŒã¹ã¡ãŒã«ãŒããããã¶ãäžãã£ãŠããªã sbdã ãã§ãã¯çš ã³ãã·ã³ã¯ ãã§ã«æã£ãŠãã
PRïŒ83 (GitHub 㧠sbd) ãã¹ã¬ããã«åãå ¥ããããŸãã ãã¹ã¿ãŒã 圌ã㯠(PR#83 ã§) Pacemaker ã«ãåæ§ã®ããšãèµ·ãããšçŽæããŸããã ã¬ããããã8 ããŸãã ãããããã®ãããªã誀åäœãã¯æšæž¬çãªãã®ã§ãããããšãã°æ¬¡ã®ãããªãã®ã䜿çšããŠäººçºçã«ç°¡åã«ã·ãã¥ã¬ãŒãã§ããŸããkillall -STOP corosync
, ããããçŸå®ã§ã¯äŒãããšã¯ãããŸããã -
У ããŒã¹ã¡ãŒã«ãŒ ã®ããŒãžã§ã³ã§ã¯ CentOS 7 æ£ããèšå®ãããŠããªã åæã¿ã€ã ã¢ãŠã Ñ ã¯ã©ãŒã©ã ããã€ã¹ã çµæãšããŠ
XNUMX ã€ã®ããŒãã«é害ãçºçããå ŽåãããçšåºŠã®ç¢ºç㧠XNUMX çªç®ã®ããŒããåèµ·åããŸã ããã¹ã¿ãŒã移åããããšã«ãªã£ãŠããå Žæã æ¡å€§ããã°æ²»ã åæã¿ã€ã ã¢ãŠã Ñ ã¯ã©ãŒã©ã ããã€ã¹ ãããã€ã¡ã³ãäž (ã¹ã¯ãªããå )setup/setup1
ïŒã ãã®ä¿®æ£ã¯éçºè ã«ãã£ãŠåãå ¥ããããŸããã§ãã ããŒã¹ã¡ãŒã«ãŒä»£ããã«ãïŒäžç¹å®ã®å°æ¥ã«ïŒãã®ã¿ã€ã ã¢ãŠããèªåçã«èšç®ãããããã«ã€ã³ãã©ã¹ãã©ã¯ãã£ãåèšèšããããšãçŽæããŸããã -
ããŒã¿ããŒã¹æ§æã§æ¬¡ã®ããã«æå®ãããŠããå Žåã
LC_MESSAGES
(ããã¹ãã¡ãã»ãŒãž) Unicode ã䜿çšã§ããŸããru_RU.UTF-8
ããã®åŸèµ·åæã« ãã¹ãã°ã¬ã¹ ãã±ãŒã«ã UTF-8 ã§ã¯ãªãç°å¢ãããšãã°ç©ºã®ç°å¢ (ããã§ã¯ ããŒã¹ã¡ãŒã«ãŒ+pgsqlms(ãã) èµ°ã ãã¹ãã°ã¬ã¹ïŒãã®åŸãã°ã«ã¯ UTF-8 æåã®ä»£ããã«çå笊ãå«ãŸããŸãã ã PostgreSQL éçºè ã¯ããã®å Žåã«äœããã¹ããã«ã€ããŠåæããŠããŸããã è²»çšãããããŸããã€ã³ã¹ããŒã«ããå¿ èŠããããŸãLC_MESSAGES=en_US.UTF-8
ããŒã¿ããŒã¹ ã€ã³ã¹ã¿ã³ã¹ãæ§æ (äœæ) ãããšãã -
wal_receiver_timeout ãèšå®ãããŠããå Žå (ããã©ã«ãã§ã¯ 60 ç§)ãtuchanka3 ã¯ã©ã¹ã¿ãŒãš tuchanka4 ã¯ã©ã¹ã¿ãŒã®ãã¹ã¿ãŒã§ã® PostgreSQL-STOP ãã¹ãäžã«
ã¬ããªã±ãŒã·ã§ã³ãæ°ãããã¹ã¿ãŒã«åæ¥ç¶ããªã ã ããã§ã®ã¬ããªã±ãŒã·ã§ã³ã¯åæã§ãããããã¹ã¬ãŒãã ãã§ãªãæ°ãããã¹ã¿ãŒãåæ¢ããŸãã PostgreSQL ãæ§æãããšãã« wal_receiver_timeout=0 ãèšå®ããããšã§åé¿ã§ããŸãã -
ForkBomb ãã¹ãäžã« PostgreSQL ã§ã¬ããªã±ãŒã·ã§ã³ãããªãŒãºãã (ã¡ã¢ãª ãªãŒããŒãããŒ) ããšãæã 芳å¯ãããŸããã
ForkBomb åŸãã¹ã¬ãŒããæ°ããââãã¹ã¿ãŒã«åæ¥ç¶ã§ããªãå Žåããã ã ç§ãããã«ééããã®ã¯ tuchanka3 ã¯ã©ã¹ã¿ãŒãš tuchanka4 ã¯ã©ã¹ã¿ãŒã®ã¿ã§ãåæã¬ããªã±ãŒã·ã§ã³ãåå ã§ãã¹ã¿ãŒãããªãŒãºããŸããã åé¡ã¯é·æé (çŽ XNUMX æé) åŸã«èªç¶ã«è§£æ±ºããŸããã ãããä¿®æ£ããã«ã¯ãããªãç 究ãå¿ èŠã§ãã çç¶ã¯åã®ãã°ãšäŒŒãŠãããåå ã¯ç°ãªããŸãããçµæã¯åãã§ãã
ã¯ããŒã¬ã³ã®åçãæ®åœ±ããå Žæ
åºæïŒ habr.com