Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

Patroni์˜ ์ฃผ์š” ๋ชฉํ‘œ๋Š” PostgreSQL์— ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Patroni๋Š” ๊ธฐ์„ฑ ๋„๊ตฌ๊ฐ€ ์•„๋‹Œ ํ…œํ”Œ๋ฆฟ ์ผ๋ฟ์ž…๋‹ˆ๋‹ค (์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์„œ์— ๋‚˜์™€ ์žˆ์Œ). ํ…Œ์ŠคํŠธ ๋žฉ์—์„œ Patroni๋ฅผ ์„ค์ •ํ•˜๋ฉด ์–ธ๋œป ๋ณด๊ธฐ์— Patroni๊ฐ€ ์–ผ๋งˆ๋‚˜ ํ›Œ๋ฅญํ•œ ๋„๊ตฌ์ธ์ง€, ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ค‘๋‹จํ•˜๋ ค๋Š” ์šฐ๋ฆฌ์˜ ์‹œ๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ํ…Œ์ŠคํŠธ ๋žฉ์—์„œ์ฒ˜๋Ÿผ ๋ชจ๋“  ๊ฒƒ์ด ํ•ญ์ƒ ์•„๋ฆ„๋‹ต๊ณ  ์šฐ์•„ํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋‚˜ ์ž์‹ ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋งํ•ด ์ค„๊ฒŒ. ์ €๋Š” ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋กœ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์›น ๊ฐœ๋ฐœ์—์„œ ์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” 2014๋…„๋ถ€ํ„ฐ Data Egret์—์„œ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํšŒ์‚ฌ๋Š” Postgres ๋ถ„์•ผ์˜ ์ปจ์„คํŒ…์— ์ข…์‚ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ •ํ™•ํžˆ Postgres๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๋งค์ผ Postgres์™€ ํ˜‘๋ ฅํ•˜๋ฏ€๋กœ ์šด์˜๊ณผ ๊ด€๋ จ๋œ ์ „๋ฌธ ์ง€์‹์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  2018๋…„ ๋ง๋ถ€ํ„ฐ ์ฒœ์ฒœํžˆ Patroni๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•ฝ๊ฐ„์˜ ๊ฒฝํ—˜์ด ์ถ•์ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ๋“  ๊ทธ๊ฒƒ์„ ์ง„๋‹จํ•˜๊ณ , ์กฐ์ •ํ•˜๊ณ , ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ณด๊ณ ์„œ์—์„œ ๋‚˜๋Š” ๊ทธ๋“ค์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Postgres ์™ธ์—๋„ ์ €๋Š” Linux๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ฐŒ๋ฅด๊ณ  ํƒํ—˜ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜๊ณ  ์ฝ”์–ด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐ€์ƒํ™”, ์ปจํ…Œ์ด๋„ˆ, ๋„์ปค, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ๊ด€๋ฆฌ ์Šต๊ด€์ด ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ชจ๋“  ๊ฒƒ์ด ์ €์—๊ฒŒ ํฅ๋ฏธ๋กœ์› ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ๋ณต์ œ, ๋ฐฑ์—…๊ณผ ๊ฐ™์€ ๊ด€๋ฆฌ์™€ ๊ด€๋ จ๋œ Postgres๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ฐ€ ์‹œ๊ฐ„์—๋Š” Go๋กœ ๊ธ€์„ ์”๋‹ˆ๋‹ค. ์ €๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ €๋Š” Go๋กœ ์ œ ์ž์‹ ์„ ์œ„ํ•ด ๊ธ€์„ ์”๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์ฆ๊ฑฐ์›€์„์ค๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

  • ๋งŽ์€ ๋ถ„๋“ค์ด Postgres์— ๊ธฐ๋ณธ์ ์œผ๋กœ HA(๊ณ ๊ฐ€์šฉ์„ฑ)๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๊ณ„์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. HA๋ฅผ ์–ป์œผ๋ ค๋ฉด ๋ฌด์–ธ๊ฐ€๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์–ป์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋„๊ตฌ๊ฐ€ ์žˆ์œผ๋ฉฐ Patroni๋Š” HA๋ฅผ ๊ฝค ๋ฉ‹์ง€๊ณ  ์ž˜ ํ•ด๊ฒฐํ•˜๋Š” ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๊ฒƒ์„ ํ…Œ์ŠคํŠธ ๋žฉ์— ๋„ฃ๊ณ  ์‹คํ–‰ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ  ์ผ๋ถ€ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Patroni๊ฐ€ ์–ด๋–ป๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ๋ชจ๋‘ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ง„๋‹จํ–ˆ๋Š”์ง€, ๋ฌด์—‡์„ ์กฐ์ •ํ–ˆ๋Š”์ง€, ๋„์›€์ด ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

  • Patroni ์„ค์น˜ ๋ฐฉ๋ฒ•์€ ์„ค๋ช…ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท์—์„œ Google์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ณ  ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋ณด๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜๊ณ  ๊ตฌ์„ฑ๋˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฒด๊ณ„, ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ธํ„ฐ๋„ท์—์„œ ์ด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๊ฒฝํ—˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ง๋ฉดํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋งŒ ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  Patroni ๋ฐ PostgreSQL ์ด์™ธ์˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋Š” ์ด์•ผ๊ธฐํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ท ํ˜•๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋ฌด๋„ˆ์กŒ์„ ๋•Œ ์ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋ณด๊ณ ์„œ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์•ฝ๊ฐ„์˜ ๋ฉด์ฑ… ์กฐํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ง๋ฉดํ•œ ์ด ๋ชจ๋“  ๋ฌธ์ œ๋Š” ์šด์˜ ์ฒซ 6-7-8๊ฐœ์›” ๋™์•ˆ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์šฐ๋ฆฌ๋Š” ๋‚ด๋ถ€ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ์˜ ๋ฌธ์ œ๋Š” ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ XNUMX๊ฐœ์›”์ฏค ์ „์— ๋ณด๊ณ ๊ฐ€ ๋‚˜์™”๋Š”๋ฐ, ๊ทธ ๋•Œ ๋ชจ๋“  ๊ฒƒ์ด ๋จธ๋ฆฌ์— ์ƒ์ƒํ–ˆ๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์™„๋ฒฝํ•˜๊ฒŒ ๊ธฐ์–ตํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ณด๊ณ ์„œ๋ฅผ ์ค€๋น„ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋‚˜๋Š” ์ด๋ฏธ ์˜ค๋ž˜๋œ ์‚ฌํ›„ ๋ถ„์„์„ ์ œ๊ธฐํ•˜๊ณ  ๋กœ๊ทธ๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ผ๋ถ€ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์žŠ์–ด๋ฒ„๋ฆฌ๊ฑฐ๋‚˜ ๋ฌธ์ œ ๋ถ„์„ ์ค‘์— ์ผ๋ถ€ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์™„์ „ํžˆ ์กฐ์‚ฌํ•  ์ˆ˜ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์‹œ์ ์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ์ถฉ๋ถ„ํžˆ ๊ณ ๋ ค๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ง€๊ธˆ์€ ์‹ค๋ก€ํ•ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

ํŒจํŠธ๋กœ๋‹ˆ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

  • HA ๊ตฌ์ถ•์„ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค. ์„ค๋ช…์„œ์— ๊ทธ๋ ‡๊ฒŒ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ๊ด€์ ์—์„œ ์ด๊ฒƒ์€ ๋งค์šฐ ์ •ํ™•ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. Patroni๋Š” ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌ˜์ฑ…์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ฆ‰, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ํ˜œํƒ์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค์— ์„ค์น˜๋˜๋Š” ์—์ด์ „ํŠธ ์„œ๋น„์Šค์ด๋ฉฐ Postgres๋ฅผ ์œ„ํ•œ ์ผ์ข…์˜ ์ดˆ๊ธฐํ™” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. Postgres๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ† ํด๋กœ์ง€๋ฅผ ์ค‘์ง€, ๋‹ค์‹œ ์‹œ์ž‘, ์žฌ๊ตฌ์„ฑ ๋ฐ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ˜„์žฌ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ผ์ข…์˜ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๊ด€์ ์—์„œ Patroni๋Š” ์™ธ๋ถ€ ์‹œ์Šคํ…œ์— ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ๊ตฌ์„ฑ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. Etcd, Consul, ZooKeeper ๋˜๋Š” kubernetes Etcd, ์ฆ‰ ์ด๋Ÿฌํ•œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  Patroni์˜ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” ์ž๋™ ํŒŒ์ผ๋Ÿฌ๋ฅผ ์„ค์ •๋งŒ ํ•˜๋ฉด ์ƒ์ž์—์„œ ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋น„๊ต๋ฅผ ์œ„ํ•ด Repmgr์„ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ผ๋Ÿฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. Repmgr์„ ์‚ฌ์šฉํ•˜๋ฉด ์ „ํ™˜์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ž๋™ ํŒŒ์ผ์„ ์›ํ•˜๋ฉด ์ถ”๊ฐ€๋กœ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Patroni์—๋Š” ์ด๋ฏธ ์ž๋™ ํŒŒ์ผ๋Ÿฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋งŽ์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ตฌ์„ฑ ์œ ์ง€ ๊ด€๋ฆฌ, ์ƒˆ ๋ณต์ œ๋ณธ ์Ÿ์•„ ๋ถ“๊ธฐ, ๋ฐฑ์—… ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋ณด๊ณ ์„œ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฏ€๋กœ ์ด์•ผ๊ธฐํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ทธ๋ฆฌ๊ณ  ์ž‘์€ ๊ฒฐ๊ณผ๋Š” Patroni์˜ ์ฃผ์š” ์ž‘์—…์€ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๊ณ„์† ์ž‘๋™ํ•˜๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํด๋Ÿฌ์Šคํ„ฐ ํ† ํด๋กœ์ง€์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ž๋™ ํŒŒ์ผ์„ ์ž˜ ์•ˆ์ •์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

ํ•˜์ง€๋งŒ Patroni๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์‹œ์Šคํ…œ์ด ์กฐ๊ธˆ ๋” ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ์ด์ „์— Postgres๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด Patroni๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ Patroni ์ž์ฒด๋ฅผ ์–ป๊ณ  ์ƒํƒœ๊ฐ€ ์ €์žฅ๋œ DCS๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ๋“  ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌด์—‡์ด ์ž˜๋ชป๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํŒŒ์†๋  ์ˆ˜ ์žˆ์Œ:

  • Postgres๊ฐ€ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ ๋˜๋Š” ๋ณต์ œ๋ณธ์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Patroni ์ž์ฒด๊ฐ€ ๊นจ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒํƒœ๊ฐ€ ์ €์žฅ๋œ DCS๊ฐ€ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋„คํŠธ์›Œํฌ๊ฐ€ ๋Š์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ์‚ฌํ•ญ์„ ๋ณด๊ณ ์„œ์—์„œ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์ผ€์ด์Šค๊ฐ€ ๋งŽ์€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ๋‹ค๋Š” ๊ด€์ ์ด ์•„๋‹ˆ๋ผ, ์ผ€์ด์Šค๊ฐ€ ๋” ๋ณต์žกํ•ด์งˆ ๋•Œ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฃผ๊ด€์ ์ธ ๋Š๋‚Œ์œผ๋กœ ๋ณด๋ฉด ์ด ์ผ€์ด์Šค๊ฐ€ ์ €์—๊ฒŒ๋Š” ์–ด๋ ต๋‹ค, ๋ถ„ํ•ดํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค... ๊ทธ ๋ฐ˜๋Œ€๋„ ์–ด๋–ค ์ผ€์ด์Šค๋Š” ๊ฐ€๋ฒผ์›Œ์„œ ๋ถ„ํ•ดํ•˜๊ธฐ ์‰ฌ์› ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€์žฅ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ๋™์ผํ•œ ํด๋Ÿฌ์Šคํ„ฐ์— DCS ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋ฐฐํฌํ•œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ€์žฅ ํ”ํ•œ ์‹ค์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ, ์ฆ‰ ์„œ๋กœ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ•œ ๊ณณ์— ๊ฒฐํ•ฉํ•˜๋Š” ์‹ค์ˆ˜์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํŒŒ์ผ๋Ÿฌ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ๋Š”์ง€ ์ฒ˜๋ฆฌํ•˜๋Ÿฌ ๊ฐ€์ž.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์—ฌ๊ธฐ์„œ ํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์‹œ์ ์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋œ ์ด ์ˆœ๊ฐ„์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํŒŒ์ผ๋Ÿฌ๋Š” ํ•ญ์ƒ ์ฆ‰๊ฐ์ ์ธ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ฆ‰, ์‹œ๊ฐ„ ๋‹จ์œ„๊ฐ€ ๊ฑธ๋ฆฌ์ง€ ์•Š์œผ๋ฉฐ ์ง€์—ฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ž˜ ์ง€์†๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์‹œ์ž‘ ์‹œ๊ฐ„๊ณผ ์ข…๋ฃŒ ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์—ฐ์† ์ด๋ฒคํŠธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ์„ธ ๊ฐ€์ง€ ๊ฐ„๊ฒฉ์œผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ํŒŒ์ผ๋Ÿฌ ์ด์ „, ํŒŒ์ผ๋Ÿฌ ๋™์•ˆ ๋ฐ ํŒŒ์ผ๋Ÿฌ ์ดํ›„์— ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ด ํƒ€์ž„๋ผ์ธ์˜ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ๋จผ์ €, ํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•œ ์›์ธ, ํŒŒ์ผ๋Ÿฌ๋กœ ์ด์–ด์ง„ ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์ฐพ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด ์ „ํ˜•์ ์ธ Patroni ๋กœ๊ทธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Š” ์„œ๋ฒ„๊ฐ€ ๋งˆ์Šคํ„ฐ๊ฐ€ ๋˜์—ˆ๊ณ  ๋งˆ์Šคํ„ฐ์˜ ์—ญํ• ์ด ์ด ๋…ธ๋“œ๋กœ ๋„˜์–ด๊ฐ”๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋‹ค์Œ์œผ๋กœ ํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ด์œ , ์ฆ‰ ๋งˆ์Šคํ„ฐ ์—ญํ• ์ด ํ•œ ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋งŒ๋“  ์ด๋ฒคํŠธ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋™์•ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์ธ์€ DCS์™€ ํ•จ๊ป˜ ์ผํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ, ์ฆ‰ ์ƒํ˜ธ ์ž‘์šฉ์— ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Š” ๋” ์ด์ƒ ์ฃผ์ธ์ด ๋  ์ˆ˜ ์—†๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‚ฌ์ž„ํ•ฉ๋‹ˆ๋‹ค. ์ด "๊ฐ•๋“ฑ๋œ ์ž๊ธฐ" ์ค„์€ ์ •ํ™•ํžˆ ๊ทธ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

ํŒŒ์ผ๋Ÿฌ ์ด์ „์˜ ์ด๋ฒคํŠธ๋ฅผ ๋ณด๋ฉด ๋งˆ๋ฒ•์‚ฌ๊ฐ€ ๊ณ„์†๋˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ๋œ ๋ฐ”๋กœ ๊ทธ ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Patroni ๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด ๋งŽ์€ ์˜ค๋ฅ˜์™€ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, Patroni ์—์ด์ „ํŠธ๊ฐ€ DCS์™€ ์ž‘๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํฌํŠธ 8500์—์„œ ํ†ต์‹ ํ•˜๋Š” Consul ์—์ด์ „ํŠธ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” Patroni์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋™์ผํ•œ ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Consul ์„œ๋ฒ„๋Š” ๋™์ผํ•œ ๋…ธ๋“œ์—์„œ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์— ๋กœ๋“œ๋ฅผ ์ƒ์„ฑํ•จ์œผ๋กœ์จ Consul ์„œ๋ฒ„์—๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ œ๋Œ€๋กœ ์˜์‚ฌ ์†Œํ†ต์„ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์–ผ๋งˆ ํ›„ ๋ถ€ํ•˜๊ฐ€ ๊ฐ€๋ผ์•‰์•˜์„ ๋•Œ Patroni๋Š” ์—์ด์ „ํŠธ์™€ ๋‹ค์‹œ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ •์ƒ์ ์ธ ์ž‘์—…์ด ์žฌ๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ™์€ Pgdb-2 ์„œ๋ฒ„๊ฐ€ ๋‹ค์‹œ ๋งˆ์Šคํ„ฐ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋…ธ๋“œ๊ฐ€ ๋งˆ์Šคํ„ฐ์˜ ๊ถŒํ•œ์„ ์‚ฌ์ž„ํ•˜๊ณ  ๋‹ค์‹œ ์ธ์ˆ˜ํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์ด ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ์ž‘์€ ๋ฐ˜์ „์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์ž˜๋ชป๋œ ๊ฒฝ๋ณด๋กœ ๊ฐ„์ฃผ๋˜๊ฑฐ๋‚˜ Patroni๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๊ณ  ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ทธ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์—†์Œ์„ ๊นจ๋‹ซ๊ณ  ๊ถŒํ•œ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Consul ์„œ๋ฒ„๊ฐ€ ๊ธฐ์ง€์™€ ๋™์ผํ•œ ํ•˜๋“œ์›จ์–ด์— ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ๋ถ€ํ•˜: ๋””์Šคํฌ ๋˜๋Š” ํ”„๋กœ์„ธ์„œ์˜ ๋ถ€ํ•˜ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด Consul ํด๋Ÿฌ์Šคํ„ฐ์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ทธ๋ฆฌ๊ณ  ํ•จ๊ป˜ ์‚ด๋ฉด ์•ˆ ๋œ๋‹ค๊ณ  ๊ฒฐ์ •ํ•˜๊ณ  Consul์„ ์œ„ํ•ด ๋ณ„๋„์˜ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํ• ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Patroni๋Š” ์ด๋ฏธ ๋ณ„๋„์˜ Consul๊ณผ ํ•จ๊ป˜ ์ž‘์—…ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ณ„๋„์˜ Consul ํด๋Ÿฌ์Šคํ„ฐ์ธ ๋ณ„๋„์˜ Postgres ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์„ ๋™๊ฑฐํ•˜์ง€ ์•Š๋„๋ก ํœด๋Œ€ํ•˜๊ณ  ๋ณด๊ด€ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์นจ์ž…๋‹ˆ๋‹ค.

์˜ต์…˜์œผ๋กœ ttl, loop_wait, retry_timeout ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋น„ํ‹€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋Š˜๋ ค ์ด๋Ÿฌํ•œ ๋‹จ๊ธฐ ๋กœ๋“œ ํ”ผํฌ์—์„œ ์‚ด์•„๋‚จ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜์ด๋กœ๋“œ๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์˜ต์…˜์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ํ•œ๊ณ„๋ฅผ ๋„˜์–ด์„ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์‹ค์ œ๋กœ ๋„์›€์ด ๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์•„์‹œ๋‹ค์‹œํ”ผ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ธฐ์ง€์™€ ํ•จ๊ป˜ DCS๋ฅผ ๊ฐ€์ ธ ์™€์„œ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋‘ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. DCS ์‹œ์Šคํ…œ๊ณผ์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์ ์—์„œ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด ๋‹ค์‹œ ํ†ต์‹  ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Patroni๋Š” DCS์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ˜„์žฌ ๋งˆ์Šคํ„ฐ๊ฐ€ ๋ณต์ œ ๋ชจ๋“œ๋กœ ์ „ํ™˜๋œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ๋งˆ์Šคํ„ฐ๋Š” ๋ณต์ œ๋ณธ์ด ๋˜๋ฉฐ, ์—ฌ๊ธฐ์„œ Patroni๋Š” ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. pg_rewind๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ๋ฅผ ๋˜๊ฐ์€ ๋‹ค์Œ ์ƒˆ ๋งˆ์Šคํ„ฐ์— ์—ฐ๊ฒฐํ•˜์—ฌ ์ƒˆ ๋งˆ์Šคํ„ฐ๋ฅผ ๋”ฐ๋ผ์žก์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ Patroni๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์—ฌ๊ธฐ์—์„œ ํŒŒ์ผ๋Ÿฌ ์ด์ „์˜ ์œ„์น˜, ์ฆ‰ ํŒŒ์ผ๋Ÿฌ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๊ด€๋ จํ•˜์—ฌ Patroni ๋กœ๊ทธ๋Š” ์ž‘์—…ํ•˜๊ธฐ์— ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Š” ์ผ์ •ํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋ฅผ ์”๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๋กœ๊ทธ๋ฅผ ๋น ๋ฅด๊ฒŒ ์Šคํฌ๋กคํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋กœ๊ทธ์—์„œ ๋กœ๊ทธ๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” ์ผ๋ถ€ ๋ฌธ์ œ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋นจ๋ฆฌ ์ด๊ณณ์œผ๋กœ ๋Œ์•„๊ฐ€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ๋ด…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ •์ƒ์ ์ธ ์ƒํ™ฉ์—์„œ ๋กœ๊ทธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ž…๋‹ˆ๋‹ค. ์ž ๊ธˆ ์†Œ์œ ์ž๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์†Œ์œ ์ž๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ Patroni๊ฐ€ ์‘๋‹ตํ•ด์•ผ ํ•˜๋Š” ์ผ๋ถ€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ์—๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ์‹œ์ž‘๋œ ๊ณณ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ธฐ ์‹œ์ž‘ํ•œ ์ง€์ ์œผ๋กœ ์Šคํฌ๋กคํ•˜๋ฉด ์ž๋™ ํŒŒ์ผ์˜ค๋ฒ„๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ์˜ ์˜ค๋ฅ˜๋Š” DCS์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ๊ณผ ๊ด€๋ จ์ด ์žˆ๊ณ  ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” Consul์„ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ๊ธฐ์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ Consul ๋กœ๊ทธ๋„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

ํŒŒ์ผ๋Ÿฌ์˜ ์‹œ๊ฐ„๊ณผ Consul ๋กœ๊ทธ์˜ ์‹œ๊ฐ„์„ ๋Œ€๋žต ๋น„๊ตํ•˜๋ฉด Consul ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ด์›ƒ์ด Consul ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์›์˜ ์กด์žฌ๋ฅผ ์˜์‹ฌํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ Consul ์—์ด์ „ํŠธ์˜ ๋กœ๊ทธ๋„ ๋ณด๋ฉด ๊ทธ๊ณณ์—์„œ ์ผ์ข…์˜ ๋„คํŠธ์›Œํฌ ๋ถ•๊ดด๊ฐ€ ์ผ์–ด๋‚˜๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Consul ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ๊ตฌ์„ฑ์›์€ ์„œ๋กœ์˜ ์กด์žฌ๋ฅผ ์˜์‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ํŒŒ์ผ๋Ÿฌ์˜ ์›๋™๋ ฅ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜ ์ด์ „์— ๋ฐœ์ƒํ•œ ์ผ์„ ์‚ดํŽด๋ณด๋ฉด ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋Œ€๋‹ต์€ ๋„คํŠธ์›Œํฌ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฐ๋‹จ์— ์„œ ์žˆ๋Š” ์ €์—๊ฒŒ๋Š” ์ด๋ ‡๊ฒŒ ๋งํ•˜๊ธฐ๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ณ ๊ฐ์ด ํ•ญ์ƒ ๋„คํŠธ์›Œํฌ๋ฅผ ์ˆ˜๋ฆฌํ•  ์—ฌ๋ ฅ์ด ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Š” DC์— ๊ฑฐ์ฃผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋„คํŠธ์›Œํฌ๋ฅผ ์ˆ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์žฅ๋น„์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์˜ต์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์ œ ์ƒ๊ฐ์—๋Š” ๋ฌธ์„œ์—์„œ๋„ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์˜ต์…˜์€ Consul ๊ฒ€์‚ฌ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋‹จ์ˆœํžˆ ๋นˆ ๋ฐฐ์—ด์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์˜์‚ฌ ์š”์›์—๊ฒŒ ์ˆ˜ํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๊ณ  ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋„คํŠธ์›Œํฌ ์Šคํ†ฐ์„ ๋ฌด์‹œํ•˜๊ณ  ํŒŒ์ผ๋Ÿฌ๋ฅผ ์‹œ์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ raft_multiplier๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Consul ์„œ๋ฒ„ ์ž์ฒด์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ๊ฐ’์€ 5๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์Šคํ…Œ์ด์ง• ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์„ค๋ช…์„œ์—์„œ ์ด ๊ฐ’์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ด๊ฒƒ์€ Consul ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ์› ๊ฐ„์˜ ๋ฉ”์‹œ์ง• ๋นˆ๋„์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” Consul ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์› ๊ฐ„์˜ ์„œ๋น„์Šค ํ†ต์‹  ์†๋„์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ๋•์…˜์˜ ๊ฒฝ์šฐ ๋…ธ๋“œ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋” ์ž์ฃผ ๊ตํ™˜ํ•˜๋„๋ก ์ด๋ฏธ ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ฐํ•ด๋‚ธ ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ ์šด์˜ ์ฒด์ œ์˜ ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋Ÿฌ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ Consul ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋†’์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ "์ข‹์€" ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉฐ ์Šค์ผ€์ค„๋งํ•  ๋•Œ OS ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๊ณ ๋ คํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ Consul ์—์ด์ „ํŠธ์— ๋Œ€ํ•œ nice ๊ฐ’์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค. ์šด์˜ ์ฒด์ œ๊ฐ€ Consul ํ”„๋กœ์„ธ์Šค์— ์ž‘์—…ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ์ œ๊ณตํ•˜๋„๋ก ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋†’์˜€์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ Consul์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Etcd์˜ ์—ด๋ ฌํ•œ ์ง€์ง€์ž์ธ ์นœ๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” Etcd ๋˜๋Š” Consul ์ค‘ ์–ด๋Š ๊ฒƒ์ด ๋” ๋‚˜์€์ง€ ๊ทธ์™€ ์ •๊ธฐ์ ์œผ๋กœ ๋…ผ์Ÿํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋Š ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๋Š” ์ธก๋ฉด์—์„œ ์šฐ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Consul์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋Š” ๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์—์ด์ „ํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, Patroni์™€ Consul ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํ˜ธ ์ž‘์šฉ์€ ์ด ์—์ด์ „ํŠธ๋ฅผ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์—์ด์ „ํŠธ๋Š” ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฉ๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Patroni๋Š” ๋” ์ด์ƒ Consul ํด๋Ÿฌ์Šคํ„ฐ์™€ ์ž‘์—…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. Etcd ๊ณ„ํš์— ์—์ด์ „ํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Patroni๋Š” Etcd ์„œ๋ฒ„ ๋ชฉ๋ก๊ณผ ์ง์ ‘ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ฏธ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ํšŒ์‚ฌ์—์„œ Etcd๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Consul๋ณด๋‹ค Etcd๊ฐ€ ๋” ๋‚˜์€ ์„ ํƒ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ ๊ณ ๊ฐ์€ ๊ณ ๊ฐ์ด ์„ ํƒํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ํ•ญ์ƒ ์ œํ•œ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๊ณ ๊ฐ์„ ์œ„ํ•ด ๋Œ€๋ถ€๋ถ„ Consul์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰ ํฌ์ธํŠธ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹จ๊ธฐ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ๊ฐ€ ์งง๊ณ  ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉด์„œ ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ผ๋ถ€ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ Patroni์˜ ์ž๋™ ํŒŒ์ผ ๊ณต๊ฒฉ์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

Patroni๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด ๋ช…๋ น์— ์ต์ˆ™ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์ด ๋ช…๋ น์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ธ๋œป ๋ณด๊ธฐ์— ์ด ๊ทธ๋ฆผ์€ ์ •์ƒ์œผ๋กœ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ๊ฐ€ ์žˆ๊ณ  ๋ณต์ œ๋ณธ์ด ์žˆ์œผ๋ฉฐ ๋ณต์ œ ์ง€์—ฐ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ทธ๋ฆผ์€ ์ด ํด๋Ÿฌ์Šคํ„ฐ์— XNUMX๊ฐœ๊ฐ€ ์•„๋‹Œ XNUMX๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ธฐ ์ „๊นŒ์ง€๋Š” ์ •์ƒ์ž…๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋”ฐ๋ผ์„œ ์ž๋™ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž๋™ ํŒŒ์ผ ์ดํ›„ ๋ณต์ œ๋ณธ์ด ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๋…€๊ฐ€ ์™œ ์‚ฌ๋ผ์กŒ๋Š”์ง€ ์•Œ์•„๋‚ด๊ณ  ๊ทธ๋…€๋ฅผ ๋‹ค์‹œ ๋ฐ๋ ค์™€ ๋ณต์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ๋กœ๊ทธ๋กœ ์ด๋™ํ•˜์—ฌ ์ž๋™ ํŒŒ์ผ์˜ค๋ฒ„๊ฐ€ ์žˆ๋Š” ์ด์œ ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์ด ๊ฒฝ์šฐ ๋‘ ๋ฒˆ์งธ ๋ณต์ œ๋ณธ์ด ๋งˆ์Šคํ„ฐ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ทธ๋ฆฌ๊ณ  ๋–จ์–ด์กŒ๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์— ์—†๋Š” ๋ณต์ œ๋ณธ์„ ์‚ดํŽด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Patroni ๋กœ๊ทธ๋ฅผ ์—ด์–ด๋ณด๋‹ˆ pg_rewind ๋‹จ๊ณ„์—์„œ ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ๋ฅผ ๋˜๊ฐ๊ณ  ๋งˆ์Šคํ„ฐ์—์„œ ํ•„์š”ํ•œ ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ๋ฅผ ์š”์ฒญํ•˜๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งˆ์Šคํ„ฐ๋ฅผ ๋”ฐ๋ผ์žก์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ๊ฐ€ ์—†์œผ๋ฉฐ ๋ณต์ œ๋ณธ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ Postgres๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋Ÿฌ์Šคํ„ฐ์— ์—†์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

ํด๋Ÿฌ์Šคํ„ฐ์— ์—†๋Š” ์ด์œ ์™€ ๋กœ๊ทธ๊ฐ€ ์—†๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ƒˆ ๋งˆ์Šคํ„ฐ์—๊ฒŒ ๊ฐ€์„œ ๊ทธ๊ฐ€ ๋กœ๊ทธ์— ๋ฌด์—‡์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. pg_rewind๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ „ ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ๋‹จ์ˆœํžˆ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋งˆ์Šคํ„ฐ๊ฐ€ ์ƒˆ ๋งˆ์Šคํ„ฐ์— ์—ฐ๊ฒฐํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๋กœ๊ทธ๋ฅผ ์ฟผ๋ฆฌํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์„ ๋•Œ ์ด๋ฏธ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์–ด ์กด์žฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ์˜ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋น„๊ตํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ฐจ์ด๋Š” ๋ฌธ์ž ๊ทธ๋Œ€๋กœ 150๋ฐ€๋ฆฌ์ดˆ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ฒดํฌํฌ์ธํŠธ๊ฐ€ 369๋ฐ€๋ฆฌ์ดˆ์— ์™„๋ฃŒ๋˜๊ณ  WAL ์„ธ๊ทธ๋จผํŠธ์˜ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ž ๊ทธ๋Œ€๋กœ 517์—์„œ 150๋ฐ€๋ฆฌ์ดˆ ํ›„์— ์ด์ „ ๋ณต์ œ๋ณธ์—์„œ ๋˜๊ฐ๊ธฐ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฌธ์ž ๊ทธ๋Œ€๋กœ 150๋ฐ€๋ฆฌ์ดˆ๋ฉด ์ถฉ๋ถ„ํ•˜์—ฌ ๋ณต์ œ๋ณธ์ด ์—ฐ๊ฒฐ๋˜์–ด ์ˆ˜์ต์„ ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์˜ต์…˜์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ฒ˜์Œ์—๋Š” ๋ณต์ œ ์Šฌ๋กฏ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋™ ์ฒซ ๋‹จ๊ณ„์—์„œ ์šฐ๋ฆฌ๋Š” ์Šฌ๋กฏ์„ ๊ป์Šต๋‹ˆ๋‹ค. ์Šฌ๋กฏ์— ๋งŽ์€ WAL ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ๋ˆ„์ ๋˜๋ฉด ๋งˆ์Šคํ„ฐ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ๋–จ์–ด์งˆ ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ์Šฌ๋กฏ์—†์ด ํ•œ๋™์•ˆ ๊ณ ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์Šฌ๋กฏ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๊ณ  ์Šฌ๋กฏ์„ ๋ฐ˜ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ๊ฐ€ ๋ณต์ œ๋ณธ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ์Šฌ๋กฏ์„ ์‚ญ์ œํ•˜๊ณ  ์Šฌ๋กฏ๊ณผ ํ•จ๊ป˜ WAL ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ฌธ์ œ๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด wal_keep_segments ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋†’์ด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 8 ์„ธ๊ทธ๋จผํŠธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ 1์œผ๋กœ ์˜ฌ๋ฆฌ๊ณ  ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์—ฌ์œ  ๊ณต๊ฐ„์ด ์žˆ๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  wal_keep_segments๋ฅผ ์œ„ํ•ด 000GB๋ฅผ ๊ธฐ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ „ํ™˜ํ•  ๋•Œ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ํ•ญ์ƒ 16GB์˜ ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ๋ฅผ ์˜ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์žฅ๊ธฐ ์œ ์ง€ ๊ด€๋ฆฌ ์ž‘์—…๊ณผ ์—ฌ์ „ํžˆ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋„๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด, ์•„๋งˆ๋„ ์šด์˜ ์ฒด์ œ ๋“ฑ์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ์„ ๋„๋ฉด ํ•ด๋‹น ๋ณต์ œ๋ณธ์˜ ์Šฌ๋กฏ๋„ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ž‘์€ wal_keep_segments๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณต์ œ๋ณธ์ด ์˜ค๋žซ๋™์•ˆ ์—†์œผ๋ฉด ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ๊ฐ€ ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ณต์ œ๋ณธ์„ ์ƒ์„ฑํ•˜๊ณ  ์ค‘์ง€๋œ ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ๋ฅผ ์š”์ฒญํ•˜์ง€๋งŒ ๋งˆ์Šคํ„ฐ์—๋Š” ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ๋„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์–‘์˜ ์žก์ง€๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์šฐ๋ฆฌ๋Š” ์ƒ์‚ฐ ๊ธฐ์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ๋Ÿฌ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋“ค์–ด๊ฐ€์„œ ์‚ดํŽด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ด๊ณ  ๋ณต์ œ๋ณธ์ด ์ œ์ž๋ฆฌ์— ์žˆ์œผ๋ฉฐ ๋ณต์ œ ์ง€์—ฐ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์—๋„ ์˜ค๋ฅ˜๊ฐ€ ์—†์œผ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค.

์ œํ’ˆ ํŒ€์€ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ ์†Œ์Šค์—์„œ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์—๊ฒŒ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

pg_rewind๊ฐ€ ๊ทธ๊ฒƒ๋“ค์„ ๋†“์นœ ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์ฆ‰์‹œ ์ดํ•ดํ–ˆ์ง€๋งŒ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋ณด๋Ÿฌ๊ฐ”์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋กœ๊ทธ์—์„œ ์–ธ์ œ ํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€, ๋ˆ„๊ฐ€ ๋งˆ์Šคํ„ฐ๊ฐ€ ๋˜์—ˆ๋Š”์ง€, ๋ˆ„๊ฐ€ ์ด์ „ ๋งˆ์Šคํ„ฐ์ธ์ง€, ์–ธ์ œ ๋ณต์ œ๋ณธ์ด ๋˜๊ธฐ๋ฅผ ์›ํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธธ์„ ์žƒ์—ˆ๋‹ค.

์ด์ „ ๋งˆ์Šคํ„ฐ๊ฐ€ ์žฌ๋ถ€ํŒ…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Patroni๋Š” ์ž๋™ ์‹คํ–‰์— ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŒจํŠธ๋กœ๋‹ˆ๋ฅผ ๋Ÿฐ์นญํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ทธ๋Š” Postgres๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ •ํ™•ํ•˜๊ฒŒ๋Š” Postgres๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋ณต์ œ๋ณธ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์ „์— Patroni๋Š” pg_rewind ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ๊ทธ๋Š” ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ์˜ ์ผ๋ถ€๋ฅผ ์ง€์šฐ๊ณ  ์ƒˆ ๋กœ๊ทธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ Patroni๋Š” ์˜ˆ์ƒ๋Œ€๋กœ ํ˜„๋ช…ํ•˜๊ฒŒ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋ณต์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํŒŒ์ผ๋Ÿฌ 3๊ฐœ ๋…ธ๋“œ ๋‹ค์Œ์— 3๊ฐœ ๋…ธ๋“œ๋ฅผ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๋ฉ‹์ง‘๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์ผ๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ฒƒ์„ ์žƒ์—ˆ๋Š”์ง€ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜๊ฐ๊ธฐ ํ•œ ์ˆœ๊ฐ„์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ์ผ์ง€ ํ•ญ๋ชฉ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๊ฐ๊ธฐ๊ฐ€ ์‹œ์ž‘๋˜์–ด ๊ฑฐ๊ธฐ์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•˜๊ณ  ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ์—์„œ ์ด์ „ ๋งˆ์Šคํ„ฐ๊ฐ€ ์ค‘๋‹จ๋œ ์œ„์น˜๋ฅผ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ด๊ฒƒ์ด ๋งˆํฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋‘ ๋ฒˆ์งธ ํ‘œ์‹œ, ์ฆ‰ ์ด์ „ ๋งˆ์Šคํ„ฐ์™€ ์ƒˆ ๋งˆ์Šคํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ๊ฑฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ pg_wal_lsn_diff๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋‘ ํ‘œ์‹œ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ 17MB๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ๋งŽ๋“  ์ ๋“  ๋ชจ๋‘๊ฐ€ ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋Š” 17MB๊ฐ€ ๋งŽ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋Š” ๋งŽ๊ณ  ์šฉ๋‚ฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๊ฐ ๊ฐœ์ธ์€ ๋น„์ฆˆ๋‹ˆ์Šค์˜ ํ•„์š”์— ๋”ฐ๋ผ ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ ์Šค์Šค๋กœ ๋ฌด์—‡์„ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๊นŒ?

๋จผ์ €, ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์žฌ๋ถ€ํŒ… ํ›„ ์ž๋™ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ํ•ญ์ƒ Patroni๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ์ข…์ข… ์šฐ๋ฆฌ๋Š” ์˜› ์Šค์Šน์—๊ฒŒ ๊ฐ€์„œ ๊ทธ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ฉ€๋ฆฌ ๊ฐ”๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ์˜ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ  ๊ฑฐ๊ธฐ์— ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์žƒ์–ด๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋Š”์ง€ ๋˜๋Š” ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๊ธฐ ์œ„ํ•ด ์ด์ „ ๋งˆ์Šคํ„ฐ๋ฅผ ๋…๋ฆฝ ์‹คํ–‰ํ˜• ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ํ๊ธฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋˜๋Š” ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒฐ์ •ํ•˜๊ณ  ์ด ๋…ธ๋“œ๋ฅผ ๋ณต์ œ๋ณธ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ "maximum_lag_on_failover" ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์€ 1MB์ž…๋‹ˆ๋‹ค.

๊ทธ๋Š” ์–ด๋–ป๊ฒŒ ์ผํ•ฉ๋‹ˆ๊นŒ? ๋ณต์ œ ์ง€์—ฐ์œผ๋กœ ์ธํ•ด ๋ณต์ œ๋ณธ์ด 1MB์˜ ๋ฐ์ดํ„ฐ ๋’ค์— ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ๋ณต์ œ๋ณธ์€ ์„ ๊ฑฐ์— ์ฐธ์—ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ‘์ž๊ธฐ ํŒŒ์ผ์˜ค๋ฒ„๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Patroni๋Š” ์–ด๋–ค ๋ณต์ œ๋ณธ์ด ๋’ค์ณ์ ธ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ๋งŽ์€ ์ˆ˜์˜ ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ์— ๋’ค์ฒ˜์ง€๋ฉด ๋งˆ์Šคํ„ฐ๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งŽ์€ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋งค์šฐ ์šฐ์ˆ˜ํ•œ ๋ณด์•ˆ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์— Patroni ํด๋Ÿฌ์Šคํ„ฐ์™€ DCS์˜ ๋ณต์ œ ์ง€์—ฐ์ด ์ผ์ • ๊ฐ„๊ฒฉ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 30์ดˆ๊ฐ€ ๊ธฐ๋ณธ ttl ๊ฐ’์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ DCS์—์„œ ๋ณต์ œ๋ณธ์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ๋ณต์ œ ์ง€์—ฐ์ด ์žˆ๋Š” ์ƒํ™ฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ง€์—ฐ์ด ์žˆ๊ฑฐ๋‚˜ ์ง€์—ฐ์ด ์ „ํ˜€ ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ด๊ฒƒ์€ ์‹ค์‹œ๊ฐ„์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ญ์ƒ ์‹ค์ œ ๊ทธ๋ฆผ์„ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์— ๋ฉ‹์ง„ ๋…ผ๋ฆฌ๋ฅผ ํ•  ๊ฐ€์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์†์‹ค์˜ ์œ„ํ—˜์€ ํ•ญ์ƒ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋Š” ํ•˜๋‚˜์˜ ๊ณต์‹์ด ์žˆ๊ณ , ํ‰๊ท ์ ์ธ ๊ฒฝ์šฐ์—๋Š” ๋˜ ๋‹ค๋ฅธ ๊ณต์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, Patroni ๊ตฌํ˜„์„ ๊ณ„ํšํ•˜๊ณ  ์†์‹ค๋  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ํ‰๊ฐ€ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ๊ณต์‹์— ์˜์กดํ•˜๊ณ  ์†์‹ค๋  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ๋Œ€๋žต์ ์œผ๋กœ ์ƒ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ข‹์€ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋งˆ์Šคํ„ฐ๊ฐ€ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋ฉด ์ผ๋ถ€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋กœ ์ธํ•ด ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ผ์ข…์˜ autovacuum์ด ์žˆ์—ˆ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ์— ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋ฌด์‹œํ•˜๊ณ  ์žƒ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์ด๊ฒƒ์ด maximum_lag_on_failover๊ฐ€ ์„ค์ •๋˜๊ณ  ํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ๋กœ๊ทธ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ ์ƒˆ ๋งˆ์Šคํ„ฐ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆํ”Œ๋ฆฌ์นด๋Š” ์ž์‹ ์ด ์„ ๊ฑฐ์— ์ฐธ์—ฌํ•  ๋Šฅ๋ ฅ์ด ์—†๋‹ค๊ณ  ํ‰๊ฐ€ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋…€๋Š” ๋ฆฌ๋” ๊ฒฝ์ฃผ์— ์ฐธ๊ฐ€ํ•˜๊ธฐ๋ฅผ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด ๋งˆ์Šคํ„ฐ๊ฐ€ ์„ ํƒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ์†์‹ค์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์กฐ์น˜์ž…๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์—ฌ๊ธฐ ์ œํ’ˆ์— Postgres์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ž‘์„ฑํ•œ ์ œํ’ˆ ํŒ€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— SSH๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์Šคํ„ฐ ์ž์ฒด์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž๋™ ํŒŒ์ผ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํ˜ธ์ŠคํŠธ๋Š” ๊ฐ•์ œ๋กœ ์žฌ๋ถ€ํŒ…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์žฌ๋ถ€ํŒ…์œผ๋กœ ์ธํ•ด ์ž๋™ ํŒŒ์ผ์ด ๋ฐœ์ƒํ–ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ˆ˜๋™ ์ž๋™ ํŒŒ์ผ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์žฌ๋ถ€ํŒ… ํ›„ ํ˜„์žฌ ๋งˆ์Šคํ„ฐ์— ๋Œ€ํ•ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์ด๋ฏธ ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋™์‹œ์— ์šฐ๋ฆฌ๋Š” ๋””์Šคํฌ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฏธ๋ฆฌ ์•Œ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์–ด๋””๋ฅผ ํŒŒ๊ณ  ๋ฌด์—‡์„ ์ฐพ์•„์•ผ ํ•˜๋Š”์ง€ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ†ตํ•ด ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์šฐ๋ฆฌ๋Š” postgres ๋กœ๊ทธ์— ๋“ค์–ด๊ฐ€์„œ ๊ฑฐ๊ธฐ์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ปค๋ฐ‹์ด XNUMX, XNUMX, XNUMX์ดˆ ๋™์•ˆ ์ง€์†๋˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ „ํ˜€ ์ •์ƒ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” autovacuum์ด ๋งค์šฐ ๋Š๋ฆฌ๊ณ  ์ด์ƒํ•˜๊ฒŒ ์‹œ์ž‘๋˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋””์Šคํฌ์—์„œ ์ž„์‹œ ํŒŒ์ผ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ด๋“ค์€ ๋ชจ๋‘ ๋””์Šคํฌ ๋ฌธ์ œ์˜ ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์‹œ์Šคํ…œ dmesg(์ปค๋„ ๋กœ๊ทธ)๋ฅผ ์กฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋””์Šคํฌ ์ค‘ ํ•˜๋‚˜์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋””์Šคํฌ ํ•˜์œ„ ์‹œ์Šคํ…œ์€ ์†Œํ”„ํŠธ์›จ์–ด Raid์˜€์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” /proc/mdstat๋ฅผ ์‚ดํŽด๋ณด๊ณ  ํ•˜๋‚˜์˜ ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, 8๊ฐœ์˜ ๋””์Šคํฌ๋กœ ๊ตฌ์„ฑ๋œ Raid๊ฐ€ ์žˆ๋Š”๋ฐ ํ•˜๋‚˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด๋“œ๋ฅผ ์ž์„ธํžˆ ๋ณด๋ฉด ์ถœ๋ ฅ์—์„œ โ€‹โ€‹sde๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ๊ฑด๋ถ€๋กœ ๋งํ•˜๋ฉด ๋””์Šคํฌ๊ฐ€ ๋–จ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋””์Šคํฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ  Postgres ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์ž‘์—…ํ•  ๋•Œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ทธ๋ฆฌ๊ณ ์ด ๊ฒฝ์šฐ Patroni๋Š” ์„œ๋ฒ„ ์ƒํƒœ, ๋””์Šคํฌ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์ž‘์—…์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— Patroni๋Š” ์–ด๋–ค ์‹ ์œผ๋กœ๋“  ์šฐ๋ฆฌ๋ฅผ ๋•์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ์™ธ๋ถ€ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ†ตํ•ด ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ๋ชจ๋‹ˆํ„ฐ๋ง์— ๋””์Šคํฌ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์‹ ์†ํ•˜๊ฒŒ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŽœ์‹ฑ์ด๋‚˜ ์›Œ์น˜๋… ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์šฐ๋ฆฌ๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ์„๊นŒ? ์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋™์•ˆ Patroni๊ฐ€ DCS ํด๋Ÿฌ์Šคํ„ฐ์™€ ๊ณ„์† ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ๋ณด์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฐ€ ์šฐ๋ฆฌ๋ฅผ ๊ฑฐ์˜ ๋„์™€์ฃผ์ง€ ์•Š์•˜์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, DCS์™€ Patroni์˜ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ์‹ค์ œ๋กœ ๋””์Šคํฌ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ€์šฉ์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ํด๋Ÿฌ์Šคํ„ฐ์—๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋‚ด ์ƒ๊ฐ์— ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์•„์ฃผ ์˜ค๋žซ๋™์•ˆ ์กฐ์‚ฌํ•œ ๊ฐ€์žฅ ์ด์ƒํ•œ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ ๋งŽ์€ ๋กœ๊ทธ๋ฅผ ์ฝ๊ณ  ๋‹ค์‹œ ์„ ํƒํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ผ๊ณ  ๋ถˆ๋ €์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋ฌธ์ œ๋Š” ์ด์ „ ๋งˆ์Šคํ„ฐ๊ฐ€ ์ผ๋ฐ˜ ๋ณต์ œ๋ณธ์ด ๋  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, Patroni๊ฐ€ ์‹œ์ž‘ํ–ˆ๊ณ  Patroni๋Š” ์ด ๋…ธ๋“œ๊ฐ€ ๋ณต์ œ๋ณธ์œผ๋กœ ์กด์žฌํ•˜์ง€๋งŒ ๋™์‹œ์— ์ผ๋ฐ˜ ๋ณต์ œ๋ณธ์ด ์•„๋‹˜์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ ์ด์œ ๋ฅผ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๊ทธ ๋ฌธ์ œ์˜ ๋ถ„์„์—์„œ ๊ฐ„์งํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ์ด์ „ ๋ฌธ์ œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋””์Šคํฌ ๋ธŒ๋ ˆ์ดํฌ๋กœ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” XNUMX, XNUMX์ดˆ ๋™์•ˆ ์ปค๋ฐ‹์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์—ฐ๊ฒฐ์ด ๋Š๊ฒผ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋Š์–ด์กŒ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋‹ค์–‘ํ•œ ์ •๋„์˜ ๋ง‰ํž˜์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋”ฐ๋ผ์„œ ๋””์Šคํฌ ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ๋ฐ˜์‘์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ทธ๋ฆฌ๊ณ  ์ €์—๊ฒŒ ๊ฐ€์žฅ ์‹ ๋น„ํ•œ ๊ฒƒ์€ ๋„์ฐฉํ•œ ์ฆ‰๊ฐ์ ์ธ ์ข…๋ฃŒ ์š”์ฒญ์ž…๋‹ˆ๋‹ค. Postgres์—๋Š” ์„ธ ๊ฐ€์ง€ ์ข…๋ฃŒ ๋ชจ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์Šค์Šค๋กœ ์—ฐ๊ฒฐ์„ ๋Š์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์€ ์šฐ์•„ํ•ฉ๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๊ฐ€ ์ข…๋ฃŒํ•˜๋ ค๊ณ  ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์„ ๊ฐ•์ œ๋กœ ๋Š์„ ๋•Œ ๋น ๋ฆ…๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์ฆ‰์‹œ. ์ด ๊ฒฝ์šฐ Immediate๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ข…๋ฃŒํ•˜๋ผ๊ณ  ์ง€์‹œํ•˜์ง€๋„ ์•Š๊ณ  ๊ฒฝ๊ณ  ์—†์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์šด์˜ ์ฒด์ œ๋Š” ์ด๋ฏธ RST ๋ฉ”์‹œ์ง€(์—ฐ๊ฒฐ์ด ์ค‘๋‹จ๋˜์—ˆ๊ณ  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋” ์ด์ƒ ์žก์„ ๊ฒƒ์ด ์—†๋‹ค๋Š” TCP ๋ฉ”์‹œ์ง€)๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๋ˆ„๊ฐ€ ์ด ์‹ ํ˜ธ๋ฅผ ๋ณด๋ƒˆ์Šต๋‹ˆ๊นŒ? Postgres ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋Š” ์ด๋Ÿฌํ•œ ์‹ ํ˜ธ๋ฅผ ์„œ๋กœ์—๊ฒŒ ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ด๊ฒƒ์€ kill-9์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ทธ๋Ÿฐ ๊ฒƒ๋“ค์„ ์„œ๋กœ์—๊ฒŒ ๋ณด๋‚ด์ง€ ์•Š๊ณ  ๊ทธ๋Ÿฐ ๊ฒƒ๋“ค์—๋งŒ ๋ฐ˜์‘ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ด๊ฒƒ์€ Postgres์˜ ๊ธด๊ธ‰ ์žฌ์‹œ์ž‘์ž…๋‹ˆ๋‹ค. ๋ˆ„๊ฐ€ ๋ณด๋ƒˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” "๋งˆ์ง€๋ง‰" ๋ช…๋ น์„ ๋ณด์•˜๊ณ  ์šฐ๋ฆฌ์™€ ํ•จ๊ป˜ ์ด ์„œ๋ฒ„์— ๋กœ๊ทธ์ธํ•œ ํ•œ ์‚ฌ๋žŒ์„ ๋ณด์•˜์ง€๋งŒ ๋„ˆ๋ฌด ๋ถ€๋„๋Ÿฌ์›Œ์„œ ์งˆ๋ฌธ์„ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ kill -9 ์˜€์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ์— kill -9๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. Postgres๋Š” kill -9๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๋งํ–ˆ์ง€๋งŒ ๋กœ๊ทธ์—์„œ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด Patroni๊ฐ€ ๊ฝค ์˜ค๋žœ ์‹œ๊ฐ„(54์ดˆ) ๋™์•ˆ ๋กœ๊ทธ์— ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋น„๊ตํ•˜๋ฉด ์•ฝ 54์ดˆ ๋™์•ˆ ๋ฉ”์‹œ์ง€๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ทธ๋ฆฌ๊ณ  ์ด ์‹œ๊ฐ„ ๋™์•ˆ ์ž๋™ ํŒŒ์ผ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Patroni๋Š” ์—ฌ๊ธฐ์„œ ๋‹ค์‹œ ํ›Œ๋ฅญํ•œ ์ผ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ์˜› ์Šค์Šน๋‹˜์„ ๋งŒ๋‚  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์—๊ฒŒ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด ์ฃผ์ธ์˜ ์„ ์ถœ์ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ํ’€๋ ธ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ pgsql01์€ ์ƒˆ๋กœ์šด ๋ฆฌ๋”๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋งˆ์Šคํ„ฐ๊ฐ€ ๋œ ๋ณต์ œ๋ณธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒˆ์งธ ๋‹ต๋ณ€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒˆ์งธ ๋ณต์ œ๋ณธ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋…€๋Š” ์žฌ๊ตฌ์„ฑ์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•Œ๊ธฐ๋กœ ๊ทธ๋…€๋Š” recovery.conf๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  Postgres๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ์ƒˆ ๋งˆ์Šคํ„ฐ์— ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋…€๋Š” ์‹œ๋„ํ•˜๊ณ  ์žˆ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ 10์ดˆ๋งˆ๋‹ค ์ž‘์„ฑํ•˜์ง€๋งŒ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ์‹œ๋„ ์ค‘์— ์ฆ‰์‹œ ์ข…๋ฃŒ ์‹ ํ˜ธ๊ฐ€ ์ด์ „ ๋งˆ์Šคํ„ฐ์— ๋„์ฐฉํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด์ „ ๋งˆ์Šคํ„ฐ๊ฐ€ ์žฌ๋ถ€ํŒ…๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณต๊ตฌ๊ฐ€ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ณต์ œ๋ณธ์ด ์ข…๋ฃŒ ๋ชจ๋“œ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์ œ๋ณธ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์–ด๋Š ์‹œ์ ์—์„œ ์ž‘๋™ํ–ˆ์ง€๋งŒ ๋ณต์ œ๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์œ ์ผํ•œ ์ถ”์ธก์€ recovery.conf์— ์ด์ „ ๋งˆ์Šคํ„ฐ ์ฃผ์†Œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒˆ ๋งˆ์Šคํ„ฐ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ๋‘ ๋ฒˆ์งธ ๋ณต์ œ๋ณธ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ด์ „ ๋งˆ์Šคํ„ฐ์— ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

Patroni๊ฐ€ ๋‘ ๋ฒˆ์งธ ๋ณต์ œ๋ณธ์—์„œ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ๋…ธ๋“œ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์ง€๋งŒ ๋ณต์ œํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณต์ œ ์ง€์—ฐ์ด ํ˜•์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์„ธ ๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ๋ชจ๋‘ ์ œ์ž๋ฆฌ์— ์žˆ์—ˆ์ง€๋งŒ ๋‘ ๋ฒˆ์งธ ๋…ธ๋“œ๊ฐ€ ๋’ค์ฒ˜์กŒ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋™์‹œ์— ๊ธฐ๋ก๋œ ๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์ œ๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ(recovery.conf์— ์ง€์ •๋จ)๋Š” ๋‹จ์ˆœํžˆ ํ˜„์žฌ ๋…ธ๋“œ์— ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ๋‚˜๋Š” ์‹ค์ˆ˜๋ฅผ ์ €์งˆ๋ €๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ž˜๋ชป๋œ ๋งˆ์Šคํ„ฐ์— ์—ฐ๊ฒฐํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋‚ด ๊ฐ€์„ค์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์™€์„œ recovery.conf์— ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์—ˆ๊ณ  ๋‚˜์—๊ฒŒ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ๋ณต์ œ๋ณธ์ด ๋’ค์ณ์ ธ ๋‹ค์‹œ ์ฑ„์›Œ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์–ด๋–ป๊ฒŒ ๋“  ๋ถ€์ฃผ์˜ํ•˜๊ฒŒ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด ๊ด€์ ˆ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

30๋ถ„ ํ›„ ๊ด€๋ฆฌ์ž๊ฐ€ ์ด๋ฏธ ์™”์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ณต์ œ๋ณธ์—์„œ Patroni๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๋ฏธ ๊ทธ๊ฒƒ์„ ๋๋‚ด๊ณ  ๋‹ค์‹œ ์ฑ„์›Œ์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” Patroni๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ข‹์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณต๊ตฌ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ธฐ์ง€๊ฐ€ ์—ด๋ฆฌ๋ฉด ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋ณต์ œ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ XNUMX๋ถ„ ํ›„ ๊ทธ๋…€๋Š” ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ๊ฐ€ ๊ทธ๋…€์—๊ฒŒ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๋Š” ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ๋–จ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. Patroni๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ๊ณ  Postgres๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  Patroni๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ˆ ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋ณต์ œ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜์—ˆ์ง€๋งŒ ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ์˜ ํ‘œ์‹œ๊ฐ€ ๋‹ฌ๋ผ ์ด์ „ ์‹œ์ž‘ ์‹œ๋„์™€ ๋™์ผํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ณต์ œ๊ฐ€ ๋‹ค์‹œ ์ค‘์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฉ”์‹œ์ง€๋Š” ์ด๋ฏธ ์•ฝ๊ฐ„ ๋‹ฌ๋ž์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ๊ทธ๋‹ค์ง€ ์œ ์ตํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‚˜์—๊ฒŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Postgres๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ํ˜„์žฌ ๋งˆ์Šคํ„ฐ์— ์ฒดํฌ ํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค์–ด ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ์˜ ํฌ์ธํŠธ๋ฅผ ์กฐ๊ธˆ ์•ž์œผ๋กœ ์ด๋™ํ•˜์—ฌ ๋ณต๊ตฌ๊ฐ€ ๋‹ค๋ฅธ ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์‹œ์ž‘๋˜๋„๋กํ•ฉ๋‹ˆ๊นŒ? ๋˜ํ•œ ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ WAL์˜ ์ฃผ์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

Patroni๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ๋งˆ์Šคํ„ฐ์—์„œ ๋ช‡ ๊ฐœ์˜ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ ๋ณต์ œ๋ณธ์ด ์—ด๋ ธ์„ ๋•Œ ๋ช‡ ๊ฐœ์˜ ๋‹ค์‹œ ์‹œ์ž‘์ ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์™œ ๋„์›€์ด ๋˜์—ˆ๊ณ  ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์˜ค๋žซ๋™์•ˆ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณต์ œ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณต์ œ๊ฐ€ ๋” ์ด์ƒ ์ฐข์–ด์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

๋‚˜์—๊ฒŒ ๊ทธ๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” ๋” ๋ถˆ๊ฐ€์‚ฌ์˜ํ•œ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ๊ทธ๊ณณ์—์„œ ์‹ค์ œ๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ์—ฌ์ „ํžˆ ์˜์•„ํ•ดํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ์–ด๋–ค ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? Patroni๋Š” ์˜ค๋ฅ˜ ์—†์ด ์˜๋„ํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋™์‹œ์— ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์—๊ฒŒ ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ๋‹ค๋Š” 100% ๋ณด์žฅ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ์ด ์‹œ์ž‘๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐ˜์ฏค ์ž‘๋™ํ•˜๋Š” ์ƒํƒœ์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋ณต์ œ๋ณธ๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํŒŒ์ผ๋Ÿฌ ์ดํ›„์—๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ธ์ง€, ์ฆ‰ ํ•„์š”ํ•œ ๋ณต์ œ๋ณธ ์ˆ˜๊ฐ€ ์žˆ๊ณ  ๋ณต์ œ ์ง€์—ฐ์ด ์—†๋Š”์ง€ ํ•ญ์ƒ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด์„œ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ์ œ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์„ ๋‘ ๊ฐœ์˜ ์Šฌ๋ผ์ด๋“œ๋กœ ๊ฒฐํ•ฉํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ชจ๋“  ์ด์•ผ๊ธฐ๋Š” ๋‘ ๊ฐœ์˜ ์Šฌ๋ผ์ด๋“œ๋กœ ๊ฒฐํ•ฉ๋˜์–ด ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

Patroni๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ชจ๋‹ˆํ„ฐ๋ง์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. autofileover๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ชจ๋ฅด๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— autofileover๊ฐ€ ์–ธ์ œ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ํ•ญ์ƒ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋‚˜์˜๋‹ค.

๊ฐ ํŒŒ์ผ๋Ÿฌ ์ดํ›„์—๋Š” ํ•ญ์ƒ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ์ตœ์‹  ๋ณต์ œ๋ณธ ์ˆ˜๋ฅผ ์œ ์ง€ํ•˜๊ณ , ๋ณต์ œ ์ง€์—ฐ์ด ์—†๊ณ , Patroni์™€ DCS ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ŠคํŠธ๋ฆฌ๋ฐ ๋ณต์ œ์™€ ๊ด€๋ จ๋œ ๋กœ๊ทธ์— ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž๋™ํ™”๋Š” ์„ฑ๊ณต์ ์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Patroni๋Š” ๋งค์šฐ ์ข‹์€ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์›ํ•˜๋Š” ์ƒํƒœ๋กœ ๊ฐ€์ ธ์˜ค์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ์ง€ ๋ชปํ•œ๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” ๊ณค๊ฒฝ์— ์ฒ˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Patroni๋Š” ๋งŒ๋ณ‘ํ†ต์น˜์•ฝ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ Postgres๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹, ๋ณต์ œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹, Patroni๊ฐ€ Postgres์™€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹, ๋…ธ๋“œ ๊ฐ„ ํ†ต์‹ ์ด ์ œ๊ณต๋˜๋Š” ๋ฐฉ์‹์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์†์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์ง„๋‹จ ๋ฌธ์ œ์— ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•ฉ๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์™€ ์ž‘์—…ํ•˜๊ณ  ์•„๋ฌด๋„ ELK ์Šคํƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๊ณ  6๊ฐœ์˜ ์ฝ˜์†”๊ณผ 2๊ฐœ์˜ ํƒญ์„ ์—ด์–ด ๋กœ๊ทธ๋ฅผ ์ •๋ ฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ํƒญ์—๋Š” ๊ฐ ๋…ธ๋“œ์— ๋Œ€ํ•œ Patroni ๋กœ๊ทธ๊ฐ€ ์žˆ๊ณ  ๋‹ค๋ฅธ ํƒญ์—๋Š” Consul ๋กœ๊ทธ ๋˜๋Š” ํ•„์š”ํ•œ ๊ฒฝ์šฐ Postgres๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ง„๋‹จํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์–ด๋–ค ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ–ˆ์Šต๋‹ˆ๊นŒ? ์ฒซ์งธ, ํŒŒ์ผ๋Ÿฌ๊ฐ€ ์–ธ์ œ ๋„์ฐฉํ–ˆ๋Š”์ง€ ํ•ญ์ƒ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €์—๊ฒŒ ์ด๊ฒƒ์€ ๋ถ„์ˆ˜๋ น์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ๋Ÿฌ ์ด์ „, ํŒŒ์ผ๋Ÿฌ ๋™์•ˆ, ํŒŒ์ผ๋Ÿฌ ์ดํ›„์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. fileover์—๋Š” ๋‘ ๊ฐ€์ง€ ํ‘œ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ ์‹œ๊ฐ„๊ณผ ์ข…๋ฃŒ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ ํŒŒ์ผ๋Ÿฌ ์ด์ „์˜ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ๋กœ๊ทธ๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ์ฆ‰, ํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ด์œ ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๊ทธ๋Ÿฌํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๊ณ  ์•ž์œผ๋กœ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ทธ๋ฆผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(๊ฒฐ๊ณผ์ ์œผ๋กœ ํŒŒ์ผ๋Ÿฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค).

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋ณดํ†ต ์–ด๋””๋ฅผ ๋ด…๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋ณธ๋‹ค:

  • ๋จผ์ € Patroni ๋กœ๊ทธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค์Œ์œผ๋กœ Patroni ๋กœ๊ทธ์—์„œ ์ฐพ์€ ๋‚ด์šฉ์— ๋”ฐ๋ผ Postgres ๋กœ๊ทธ ๋˜๋Š” DCS ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ์‹œ์Šคํ…œ ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ํŒŒ์ผ๋Ÿฌ์˜ ์›์ธ์„ ํŒŒ์•…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

Patroni์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ? ์ €๋Š” Patroni์™€ ๋งค์šฐ ์ข‹์€ ๊ด€๊ณ„๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ์ด๊ฒƒ์ด ์˜ค๋Š˜๋‚  ์ตœ๊ณ ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ์ œํ’ˆ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ Stolon, Repmgr, Pg_auto_failover, PAF์ž…๋‹ˆ๋‹ค. 4 ๋„๊ตฌ. ๋‚˜๋Š” ๊ทธ๋“ค ๋ชจ๋‘๋ฅผ ์‹œ๋„ํ–ˆ๋‹ค. ์ œ๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ํŒจํŠธ๋กœ๋‹ˆ์ž…๋‹ˆ๋‹ค.

๊ทธ๋“ค์ด ์ €์—๊ฒŒ "Patroni๋ฅผ ์ถ”์ฒœํ•ฉ๋‹ˆ๊นŒ?"๋ผ๊ณ  ๋ฌป๋Š”๋‹ค๋ฉด. ๋‚˜๋Š” Patroni๋ฅผ ์ข‹์•„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ๋ผ๊ณ  ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์š”๋ฆฌํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์› ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์–ธ๊ธ‰ํ•œ ๋ฌธ์ œ ์™ธ์— Patroni์— ์–ด๋–ค ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์œผ์‹œ๋ฉด ์–ธ์ œ๋“ ์ง€ ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๋ฌธ์ œ GitHub์—์„œ. ๋‹ค์–‘ํ•œ ์ด์•ผ๊ธฐ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋งŽ์€ ํฅ๋ฏธ๋กœ์šด ๋ฌธ์ œ๊ฐ€ ๋…ผ์˜๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ผ๋ถ€ ๋ฒ„๊ทธ๊ฐ€ ๋„์ž…๋˜๊ณ  ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ด๊ฒƒ์€ ํฅ๋ฏธ๋กœ์šด ์ฝ๊ธฐ์ž…๋‹ˆ๋‹ค.

๋ฐœ์— ์ด์„ ์˜๋Š” ์‚ฌ๋žŒ๋“ค์— ๋Œ€ํ•œ ํฅ๋ฏธ๋กœ์šด ์ด์•ผ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ์œ ์ตํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ฝ๊ณ  ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚˜ ์ž์‹ ์„ ๋˜‘๋”ฑ ๊ฑฐ๋ ธ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•œ Zalando, ์ฆ‰ Alexander Kukushkin๊ณผ Alexey Klyukin์—๊ฒŒ ํฐ ๊ฐ์‚ฌ๋ฅผ ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. Aleksey Klyukin์€ ๊ณต๋™ ์ €์ž ์ค‘ ํ•œ ๋ช…์ด๋ฉฐ ๋” ์ด์ƒ Zalando์—์„œ ์ผํ•˜์ง€ ์•Š์ง€๋งŒ ์ด ์ œํ’ˆ์œผ๋กœ ์ž‘์—…์„ ์‹œ์ž‘ํ•œ ๋‘ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ €๋Š” Patroni๊ฐ€ ๋งค์šฐ ๋ฉ‹์ง„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋…€๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๊ธฐ์˜๊ณ  ๊ทธ๋…€์—๊ฒŒ ํฅ๋ฏธ ๋กญ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Patroni์— ํŒจ์น˜๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ชจ๋“  ๊ธฐ์—ฌ์ž์—๊ฒŒ ํฐ ๊ฐ์‚ฌ๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํŒจํŠธ๋กœ๋‹ˆ๊ฐ€ ๋‚˜์ด๊ฐ€ ๋“ค์ˆ˜๋ก ๋” ์„ฑ์ˆ™ํ•ด์ง€๊ณ , ๋ฉ‹์žˆ๊ณ , ๋Šฅ๋ฅ ์ ์ด ๋˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ด๋ฏธ ๊ธฐ๋Šฅ์ ์ด์ง€๋งŒ ๋” ๋‚˜์•„์ง€๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Patroni๋ฅผ ์‚ฌ์šฉํ•  ๊ณ„ํš์ด๋ผ๋ฉด ๋‘๋ ค์›Œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ์ข‹์€ ์†”๋ฃจ์…˜์ด๋ฉฐ ๊ตฌํ˜„ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ๋‹ค์•ผ. ์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด ๋ฌผ์–ด๋ณด์‹ญ์‹œ์˜ค.

Patroni ์‹คํŒจ ์‚ฌ๋ก€ ๋˜๋Š” PostgreSQL ํด๋Ÿฌ์Šคํ„ฐ ์ถฉ๋Œ ๋ฐฉ๋ฒ•. ์•Œ๋ ‰์„ธ์ด ๋ ˆ์†Œํ”„์Šคํ‚ค

์งˆ๋ฌธ

์‹ ๊ณ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ํŒŒ์ผ๋Ÿฌ ์ดํ›„์—๋„ ๋งค์šฐ ์ฃผ์˜ ๊นŠ๊ฒŒ ์‚ดํŽด๋ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ž๋™ ํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ƒˆ ๋ฌผ๊ฑด์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๋…€์™€ ํ•จ๊ป˜ํ•œ ์ง€ XNUMX๋…„๋ฐ–์— ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•ˆ์ „ํ•œ ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋“ค์–ด์™€์„œ ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ๋œ ๊ฒƒ์ธ์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์„ฑ์ธ ๋ถˆ์‹ ์˜ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ™•์ธํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์•„์นจ์— ๊ฐ€์„œ ๋ดค๋Š”๋ฐ ๋งž์ฃ ?

์•„์นจ์ด ์•„๋‹ˆ๋ผ ๋ณดํ†ต ๊ฑฐ์˜ ์ฆ‰์‹œ ์ž๋™ ํŒŒ์ผ์— ๋Œ€ํ•ด ๋ฐฐ์›๋‹ˆ๋‹ค. ์•Œ๋ฆผ์„ ๋ฐ›๊ณ  ์ž๋™ ํŒŒ์ผ์ด ๋ฐœ์ƒํ•œ ๊ฒƒ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฑฐ์˜ ์ฆ‰์‹œ ๊ฐ€์„œ ๋ด…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๊ฒ€์‚ฌ๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์ˆ˜์ค€์œผ๋กœ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. REST API๋ฅผ ํ†ตํ•ด Patroni์— ์ ‘์†ํ•˜๋ฉด ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ก์„ ํ†ตํ•ด ํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋ง์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ด๋ฒคํŠธ๊ฐ€ ์žˆ์—ˆ๋Š”์ง€ ์—ญ์‚ฌ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๊ฐ€ ๋” ์žˆ์œผ๋ฉด ์ž๋™ ํŒŒ์ผ์ด ๋ฐœ์ƒํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์ž๋™ํ™”๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ๋ณต์ œ๋ณธ์ด ์ œ์ž๋ฆฌ์— ์žˆ๊ณ  ์ง€์—ฐ์ด ์—†์œผ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ธ์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

ํ›Œ๋ฅญํ•œ ์ด์•ผ๊ธฐ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! Postgres ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ๊ณณ์œผ๋กœ DCS ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ด๋™ํ•œ ๊ฒฝ์šฐ ์ด ํด๋Ÿฌ์Šคํ„ฐ๋„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์„œ๋น„์Šคํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? DCS ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ผ๋ถ€๋ฅผ ๊บผ์•ผ ํ•˜๋Š” ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ด๋ฉฐ ์ด์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ์ „์ฒด ๊ตฌ์กฐ๋Š” ์–ด๋–ป๊ฒŒ ์‚ด์•„๋‚จ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๊นŒ?

ํ•œ ํšŒ์‚ฌ์˜ ๊ฒฝ์šฐ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜ ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ๋ฌธ์ œ์˜ ๋งคํŠธ๋ฆญ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งคํŠธ๋ฆญ์Šค์— ๋”ฐ๋ผ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€ํ† ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ ์žฅ์•  ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ๋ณต๊ตฌ๋ฅผ ์œ„ํ•œ ์‹คํ–‰ ๊ณ„ํš์„ ์„ธ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  DCS์˜ ๊ฒฝ์šฐ ํ‘œ์ค€ ์ธํ”„๋ผ์˜ ์ผ๋ถ€๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ด€๋ฆฌ์ž๊ฐ€ ๊ทธ๊ฒƒ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๊ทธ๊ฒƒ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ด€๋ฆฌ์ž์™€ ์‚ฌ๊ณ  ๋ฐœ์ƒ์‹œ ๊ทธ๊ฒƒ์„ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์— ์˜์กดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. DCS๊ฐ€ ์ „ํ˜€ ์—†์œผ๋ฉด ๋ฐฐํฌํ•˜์ง€๋งŒ ์ธํ”„๋ผ์— ๋Œ€ํ•œ ์ฑ…์ž„์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํŠน๋ณ„ํžˆ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ๋ฒ•๊ณผ ๋Œ€์ƒ์— ๋Œ€ํ•œ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, Patroni๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ , ํŒŒ์ผ๋Ÿฌ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ , ํ˜ธ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ชจ๋“  ๊ฒƒ์„ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๊นŒ?

DCS ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ๋Š” ๋…ธ๋“œ ์ˆ˜์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋…ธ๋“œ๊ฐ€ ๋งŽ๊ณ  ๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜๋งŒ(๋ณต์ œ๋ณธ) ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ฟผ๋Ÿผ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Patroni๋Š” ๊ณ„์† ์šด์˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋ฌด๊ฒƒ๋„ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๋…ธ๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋ณต์žกํ•œ ์ž‘์—…์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๊ทธ ์ž‘์—…์ด ์—†์œผ๋ฉด ์ฟผ๋Ÿผ์ด ๋ง๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, Patroni๋ฅผ ์ผ์‹œ ์ค‘์ง€ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์— ์ƒ์‘ํ•˜๋Š” ๋ช…๋ น์ด ์žˆ์Šต๋‹ˆ๋‹ค - patronictl pause, patronictl resume. ์ผ์‹œ ์ค‘์ง€ํ•˜๋ฉด ์ž๋™ ํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ทธ ์‹œ๊ฐ„์— ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. DCS ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ ์ผ์‹œ ์ค‘์ง€๋ฅผ ํ•ด์ œํ•˜๊ณ  ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์‹ ๊ณ ํ•ด ์ฃผ์…”์„œ ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ œํ’ˆ ํŒ€์€ ๋ฐ์ดํ„ฐ ์†์‹ค์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

์ œํ’ˆ ํŒ€์€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ํŒ€ ๋ฆฌ๋”๋Š” ๊ฑฑ์ •ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๋ณด์žฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ณด์žฅ์€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Alexander Kukushkin์€ "RPO ๋ฐ RTO๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•"์ด๋ผ๋Š” ๋ณด๊ณ ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ณต๊ตฌ ์‹œ๊ฐ„๊ณผ ์†์‹ค๋  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ž…๋‹ˆ๋‹ค. ์ด ์Šฌ๋ผ์ด๋“œ๋ฅผ ์ฐพ์•„์„œ ๊ณต๋ถ€ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์š”. ๋‚ด๊ฐ€ ๊ธฐ์–ตํ•˜๋Š” ํ•œ, ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ๋‹จ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ฑฐ๋ž˜๋ฅผ ์žƒ์„ ์ˆ˜ ์žˆ๋Š”์ง€, ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์žƒ์„ ์ˆ˜ ์žˆ๋Š”์ง€. ์˜ต์…˜์œผ๋กœ Patroni ์ˆ˜์ค€์—์„œ ๋™๊ธฐ์‹ ๋ณต์ œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์€ ์–‘๋‚ ์˜ ๊ฒ€์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์‹ ๋ขฐ์„ฑ์ด ์žˆ๊ฑฐ๋‚˜ ์†๋„๊ฐ€ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ๋™๊ธฐ์‹ ๋ณต์ œ๊ฐ€ ์žˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ ์†์‹ค์— ๋Œ€ํ•ด 100% ๋ณดํ˜ธ๋ฅผ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

Alexey, ํ›Œ๋ฅญํ•œ ๋ณด๊ณ ์„œ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ์ œ๋กœ ๋ ˆ๋ฒจ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด Patroni๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝํ—˜์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ฆ‰, ๋™๊ธฐ ๋Œ€๊ธฐ์™€ ํ•จ๊ป˜? ์ด๊ฒƒ์ด ์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Repmgr์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ autofiler๊ฐ€ ์—†์—ˆ๊ณ  ์ด์ œ autofiler๋ฅผ ํฌํ•จํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” Patroni๋ฅผ ๋Œ€์•ˆ ์†”๋ฃจ์…˜์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Repmgr๊ณผ ๋น„๊ตํ•  ๋•Œ ์žฅ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์€ ๋™๊ธฐ์‹ ๋ณต์ œ๋ณธ์— ๊ด€ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘๊ฐ€ ๋‘๋ ค์›Œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์—์„œ ์•„๋ฌด๋„ ๋™๊ธฐ์‹ ๋ณต์ œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐœํ‘œ์ž ๋ฉ”๋ชจ). ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๋™๊ธฐ์‹ ๋ณต์ œ ํด๋Ÿฌ์Šคํ„ฐ์— ์ตœ์†Œ XNUMX๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ž์ฒด ๊ทœ์น™์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋…ธ๋“œ๊ฐ€ XNUMX๊ฐœ ์žˆ๊ณ  ๋งˆ์Šคํ„ฐ ๋˜๋Š” ๋ณต์ œ๋ณธ์ด ์‹คํŒจํ•˜๋ฉด Patroni๊ฐ€ ์ด ๋…ธ๋“œ๋ฅผ ๋…๋ฆฝํ˜• ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ณ„์†ํ•ด์„œ ์ผํ•˜๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์†์‹ค์˜ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์šฐ๋ฆฌ๋Š” Repmgr์„ ์‚ฌ์šฉํ•ด ์™”์œผ๋ฉฐ ์—ญ์‚ฌ์ ์ธ ์ด์œ ๋กœ ์—ฌ์ „ํžˆ ์ผ๋ถ€ ํด๋ผ์ด์–ธํŠธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡์„ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? Patroni๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋™ ํŒŒ์ผ๋Ÿฌ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋ฉฐ, Repmgr์€ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•˜๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์œผ๋กœ ์ž๋™ ํŒŒ์ผ๋Ÿฌ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋…ธ๋“œ์—์„œ Repmgr ๋ฐ๋ชฌ์„ ์‹คํ–‰ํ•œ ๋‹ค์Œ ์ž๋™ ํŒŒ์ผ๋Ÿฌ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Repmgr์€ Postgres ๋…ธ๋“œ๊ฐ€ ํ™œ์„ฑ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. Repmgr ํ”„๋กœ์„ธ์Šค๋Š” ์„œ๋กœ์˜ ์กด์žฌ๋ฅผ ํ™•์ธํ•˜๋Š”๋ฐ ์ด๊ฒƒ์€ ๋งค์šฐ ํšจ์œจ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ Repmgr ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ๊ณ„์† ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณต์žกํ•œ ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ ์‚ฌ๋ก€๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์˜ค๋žซ๋™์•ˆ Repmgr์„ ๋”ฐ๋ฅด์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์ˆ˜์ •๋˜์—ˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  ... ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Patroni์˜ Stolon๊ณผ ๊ฐ™์ด DCS์—์„œ ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

Alexey, ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์˜ˆ ์ค‘ ํ•˜๋‚˜์—์„œ๋Š” ๋กœ์ปฌ ์‹œ์Šคํ…œ์—์„œ ์›๊ฒฉ ํ˜ธ์ŠคํŠธ๋กœ DCS๋ฅผ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋„คํŠธ์›Œํฌ๊ฐ€ ๊ณ ์œ ํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ž์ฒด์ ์œผ๋กœ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ DCS ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? ์ด์œ ๋Š” ๋งํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œ์ปค์˜ ๋น„๋šค์–ด์ง„ ์†์—์„œ ์‹ค์ œ ๋ฌธ์ œ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋งŽ์€ ์ด์œ ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌ๊ฒŒ ๋งํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ DCS ํด๋Ÿฌ์Šคํ„ฐ๋„ ์žฅ์•  ์กฐ์น˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ฟผ๋Ÿผ์ด ์ถฉ์กฑ๋˜๋ ค๋ฉด ๋…ธ๋“œ ์ˆ˜๊ฐ€ ํ™€์ˆ˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. DCS ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜๊ฑฐ๋‚˜ ์ฟผ๋Ÿผ์„ ์ถฉ์กฑํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(์˜ˆ: ์ผ์ข…์˜ ๋„คํŠธ์›Œํฌ ๋ถ„ํ•  ๋˜๋Š” ๋…ธ๋“œ ์˜ค๋ฅ˜) ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? ์ด ๊ฒฝ์šฐ Patroni ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ฝ๊ธฐ ์ „์šฉ ๋ชจ๋“œ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. Patroni ํด๋Ÿฌ์Šคํ„ฐ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ์™€ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. DCS์— ์ ‘์†ํ•  ์ˆ˜ ์—†๊ณ  ๊ฑฐ๊ธฐ์— ์ƒˆ ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šด์˜์ž์˜ ์ˆ˜๋™ ๊ฐœ์ž… ๋˜๋Š” DCS๊ฐ€ ๋ณต๊ตฌ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

๋Œ€๋žต์ ์œผ๋กœ ๋งํ•˜๋ฉด, DCS๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ๊ธฐ์ง€๋งŒํผ์ด๋‚˜ ์ค‘์š”ํ•œ ์„œ๋น„์Šค๊ฐ€ ๋˜๋Š” ๊ฒƒ์ผ๊นŒ์š”?

์˜ˆ ์˜ˆ. ๋งŽ์€ ํ˜„๋Œ€ ๊ธฐ์—…์—์„œ ์„œ๋น„์Šค ๊ฒ€์ƒ‰์€ ์ธํ”„๋ผ์˜ ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ธํ”„๋ผ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๊ธฐ๋„ ์ „์— ์ด๋ฏธ ๊ตฌํ˜„๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๋Œ€์ ์œผ๋กœ ์ธํ”„๋ผ๊ฐ€ ์‹œ์ž‘๋˜๊ณ  DC์— ๋ฐฐํฌ๋˜์—ˆ์œผ๋ฉฐ ์ฆ‰์‹œ ์„œ๋น„์Šค ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Consul์ด๋ฉด DNS๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Etcd์ธ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์ด ๋ฐฐํฌ๋  Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ผ๋ถ€๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Service Discovery๋Š” ์ด๋ฏธ ์ตœ์‹  ์ธํ”„๋ผ์˜ ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ณด๋‹ค ํ›จ์”ฌ ์ผ์ฐ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€