Patroni์ ์ฃผ์ ๋ชฉํ๋ PostgreSQL์ ๊ณ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ Patroni๋ ๊ธฐ์ฑ ๋๊ตฌ๊ฐ ์๋ ํ ํ๋ฆฟ ์ผ๋ฟ์ ๋๋ค (์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์์ ๋์ ์์). ํ ์คํธ ๋ฉ์์ Patroni๋ฅผ ์ค์ ํ๋ฉด ์ธ๋ป ๋ณด๊ธฐ์ Patroni๊ฐ ์ผ๋ง๋ ํ๋ฅญํ ๋๊ตฌ์ธ์ง, ํด๋ฌ์คํฐ๋ฅผ ์ค๋จํ๋ ค๋ ์ฐ๋ฆฌ์ ์๋๋ฅผ ์ผ๋ง๋ ์ฝ๊ฒ ์ฒ๋ฆฌํ๋์ง ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก ํ๋ก๋์ ํ๊ฒฝ์์๋ ํ ์คํธ ๋ฉ์์์ฒ๋ผ ๋ชจ๋ ๊ฒ์ด ํญ์ ์๋ฆ๋ต๊ณ ์ฐ์ํ๊ฒ ๋ฐ์ํ์ง๋ ์์ต๋๋ค.
๋ ์์ ์ ๋ํด ์กฐ๊ธ ๋งํด ์ค๊ฒ. ์ ๋ ์์คํ ๊ด๋ฆฌ์๋ก ์์ํ์ต๋๋ค. ์น ๊ฐ๋ฐ์์ ์ผํ์ต๋๋ค. ์ ๋ 2014๋ ๋ถํฐ Data Egret์์ ์ผํ๊ณ ์์ต๋๋ค. ์ด ํ์ฌ๋ Postgres ๋ถ์ผ์ ์ปจ์คํ ์ ์ข ์ฌํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ ํํ Postgres๋ฅผ ์ ๊ณตํ๊ณ ๋งค์ผ Postgres์ ํ๋ ฅํ๋ฏ๋ก ์ด์๊ณผ ๊ด๋ จ๋ ์ ๋ฌธ ์ง์์ด ๋ค๋ฆ ๋๋ค.
๊ทธ๋ฆฌ๊ณ 2018๋ ๋ง๋ถํฐ ์ฒ์ฒํ Patroni๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฝ๊ฐ์ ๊ฒฝํ์ด ์ถ์ ๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ป๊ฒ๋ ๊ทธ๊ฒ์ ์ง๋จํ๊ณ , ์กฐ์ ํ๊ณ , ๋ชจ๋ฒ ์ฌ๋ก์ ๋๋ฌํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ณด๊ณ ์์์ ๋๋ ๊ทธ๋ค์ ๋ํด ์ด์ผ๊ธฐํ ๊ฒ์ ๋๋ค.
Postgres ์ธ์๋ ์ ๋ Linux๋ฅผ ์ข์ํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ฐ๋ฅด๊ณ ํํํ๋ ๊ฒ์ ์ข์ํ๊ณ ์ฝ์ด๋ฅผ ์์งํ๋ ๊ฒ์ ์ข์ํฉ๋๋ค. ์ ๋ ๊ฐ์ํ, ์ปจํ ์ด๋, ๋์ปค, ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ข์ํฉ๋๋ค. ์ค๋๋ ๊ด๋ฆฌ ์ต๊ด์ด ์ํฅ์ ๋ฏธ์น๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด ๋ชจ๋ ๊ฒ์ด ์ ์๊ฒ ํฅ๋ฏธ๋ก์ ์ต๋๋ค. ๋๋ ๋ชจ๋ํฐ๋ง์ ๋ค๋ฃจ๋ ๊ฒ์ ์ข์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ๋ณต์ , ๋ฐฑ์ ๊ณผ ๊ฐ์ ๊ด๋ฆฌ์ ๊ด๋ จ๋ Postgres๋ฅผ ์ข์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ฐ ์๊ฐ์๋ Go๋ก ๊ธ์ ์๋๋ค. ์ ๋ ์ํํธ์จ์ด ์์ง๋์ด๊ฐ ์๋๋๋ค. ์ ๋ Go๋ก ์ ์์ ์ ์ํด ๊ธ์ ์๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋์๊ฒ ์ฆ๊ฑฐ์์์ค๋๋ค.
- ๋ง์ ๋ถ๋ค์ด Postgres์ ๊ธฐ๋ณธ์ ์ผ๋ก HA(๊ณ ๊ฐ์ฉ์ฑ)๊ฐ ์๋ค๋ ๊ฒ์ ์๊ณ ๊ณ์ค ๊ฒ์ ๋๋ค. HA๋ฅผ ์ป์ผ๋ ค๋ฉด ๋ฌด์ธ๊ฐ๋ฅผ ์ค์นํ๊ณ ๊ตฌ์ฑํ๊ณ ๋ ธ๋ ฅํ๊ณ ์ป์ด์ผ ํฉ๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ง ๋๊ตฌ๊ฐ ์์ผ๋ฉฐ Patroni๋ HA๋ฅผ ๊ฝค ๋ฉ์ง๊ณ ์ ํด๊ฒฐํ๋ ๋๊ตฌ ์ค ํ๋์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ๊ฒ์ ํ ์คํธ ๋ฉ์ ๋ฃ๊ณ ์คํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์๋ํ๋์ง ํ์ธํ ์ ์๊ณ ์ผ๋ถ ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์์ผ๋ฉฐ Patroni๊ฐ ์ด๋ป๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ด ๋ชจ๋ ํ๋ฅญํ๊ฒ ์๋ํ๋ค๋ ๊ฒ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
- ๊ทธ๋ฌ๋ ์ค์ ๋ก ์ฐ๋ฆฌ๋ ๋ค๋ฅธ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๋ฌธ์ ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
- ์ฐ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ์ง๋จํ๋์ง, ๋ฌด์์ ์กฐ์ ํ๋์ง, ๋์์ด ๋์๋์ง ์ฌ๋ถ๋ฅผ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
- Patroni ์ค์น ๋ฐฉ๋ฒ์ ์ค๋ช ํ์ง ์๊ฒ ์ต๋๋ค. ์ธํฐ๋ท์์ Google์ ๊ฒ์ํ ์ ์๊ณ ๊ตฌ์ฑ ํ์ผ์ ๋ณด๊ณ ๋ชจ๋ ๊ฒ์ด ์ด๋ป๊ฒ ์์๋๊ณ ๊ตฌ์ฑ๋๋์ง ์ดํดํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฒด๊ณ, ์ํคํ ์ฒ๋ฅผ ์ดํดํ๊ณ ์ธํฐ๋ท์์ ์ด์ ๋ํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
- ๋๋ ๋ค๋ฅธ ์ฌ๋์ ๊ฒฝํ์ ๋ํด ์ด์ผ๊ธฐํ์ง ์์ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ง๋ฉดํ ๋ฌธ์ ์ ๋ํด์๋ง ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ Patroni ๋ฐ PostgreSQL ์ด์ธ์ ๋ฌธ์ ์ ๋ํด์๋ ์ด์ผ๊ธฐํ์ง ์๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ท ํ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋ฌ์คํฐ๊ฐ ๋ฌด๋์ก์ ๋ ์ด์ ๋ํด ์ด์ผ๊ธฐํ์ง ์๊ฒ ์ต๋๋ค.
๋ณด๊ณ ์๋ฅผ ์์ํ๊ธฐ ์ ์ ์ฝ๊ฐ์ ๋ฉด์ฑ ์กฐํญ์ด ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ง๋ฉดํ ์ด ๋ชจ๋ ๋ฌธ์ ๋ ์ด์ ์ฒซ 6-7-8๊ฐ์ ๋์ ๋ฐ์ํ์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฐ๋ฆฌ๋ ๋ด๋ถ ๋ชจ๋ฒ ์ฌ๋ก์ ๋๋ฌํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ์ ๋ฌธ์ ๋ ์ฌ๋ผ์ก์ต๋๋ค. ๊ทธ๋์ XNUMX๊ฐ์์ฏค ์ ์ ๋ณด๊ณ ๊ฐ ๋์๋๋ฐ, ๊ทธ ๋ ๋ชจ๋ ๊ฒ์ด ๋จธ๋ฆฌ์ ์์ํ๊ณ ๋ชจ๋ ๊ฒ์ ์๋ฒฝํ๊ฒ ๊ธฐ์ตํ์ต๋๋ค.
๋ณด๊ณ ์๋ฅผ ์ค๋นํ๋ ๊ณผ์ ์์ ๋๋ ์ด๋ฏธ ์ค๋๋ ์ฌํ ๋ถ์์ ์ ๊ธฐํ๊ณ ๋ก๊ทธ๋ฅผ ๋ณด์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ถ ์ธ๋ถ ์ฌํญ์ ์์ด๋ฒ๋ฆฌ๊ฑฐ๋ ๋ฌธ์ ๋ถ์ ์ค์ ์ผ๋ถ ์ธ๋ถ ์ฌํญ์ ์์ ํ ์กฐ์ฌํ ์ ์์๊ธฐ ๋๋ฌธ์ ์ด๋ค ์์ ์์๋ ๋ฌธ์ ๊ฐ ์ถฉ๋ถํ ๊ณ ๋ ค๋์ง ์์๊ฑฐ๋ ์ ๋ณด๊ฐ ๋ถ์กฑํ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ง๊ธ์ ์ค๋กํฉ๋๋ค.
ํจํธ๋ก๋๊ฐ ๋ฌด์์ธ๊ฐ์?
- HA ๊ตฌ์ถ์ ์ํ ํ ํ๋ฆฟ์ ๋๋ค. ์ค๋ช ์์ ๊ทธ๋ ๊ฒ ๋์ ์์ต๋๋ค. ์ ๊ด์ ์์ ์ด๊ฒ์ ๋งค์ฐ ์ ํํ ์ค๋ช ์ ๋๋ค. Patroni๋ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฌ์ฑ ์ด ์๋๋๋ค. ์ฆ, ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ํํ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด ๋ ธ๋ ฅํด์ผ ํฉ๋๋ค.
- ์ด๊ฒ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค์ ์ค์น๋๋ ์์ด์ ํธ ์๋น์ค์ด๋ฉฐ Postgres๋ฅผ ์ํ ์ผ์ข ์ ์ด๊ธฐํ ์์คํ ์ ๋๋ค. Postgres๋ฅผ ์์ํ๊ณ ํด๋ฌ์คํฐ์ ํ ํด๋ก์ง๋ฅผ ์ค์ง, ๋ค์ ์์, ์ฌ๊ตฌ์ฑ ๋ฐ ๋ณ๊ฒฝํฉ๋๋ค.
- ๋ฐ๋ผ์ ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์๋ ํ์ฌ ํ์๋๋ ๊ฒ์ฒ๋ผ ์ผ์ข ์ ์คํ ๋ฆฌ์ง๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๊ด์ ์์ Patroni๋ ์ธ๋ถ ์์คํ ์ ์ํ๋ฅผ ์ ์ฅํ๋ ๊ฒฝ๋ก๋ฅผ ํํ์ต๋๋ค. ๋ถ์ฐ ๊ตฌ์ฑ ์คํ ๋ฆฌ์ง ์์คํ ์ ๋๋ค. Etcd, Consul, ZooKeeper ๋๋ kubernetes Etcd, ์ฆ ์ด๋ฌํ ์ต์ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ Patroni์ ๊ธฐ๋ฅ ์ค ํ๋๋ ์๋ ํ์ผ๋ฌ๋ฅผ ์ค์ ๋ง ํ๋ฉด ์์์์ ๊บผ๋ผ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋น๊ต๋ฅผ ์ํด Repmgr์ ์ฌ์ฉํ๋ฉด ํ์ผ๋ฌ๊ฐ ํฌํจ๋ฉ๋๋ค. Repmgr์ ์ฌ์ฉํ๋ฉด ์ ํ์ด ๊ฐ๋ฅํ์ง๋ง ์๋ ํ์ผ์ ์ํ๋ฉด ์ถ๊ฐ๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. Patroni์๋ ์ด๋ฏธ ์๋ ํ์ผ๋ฌ๊ฐ ์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๋ง์ ๊ฒ๋ค์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ตฌ์ฑ ์ ์ง ๊ด๋ฆฌ, ์ ๋ณต์ ๋ณธ ์์ ๋ถ๊ธฐ, ๋ฐฑ์ ๋ฑ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ณด๊ณ ์์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฏ๋ก ์ด์ผ๊ธฐํ์ง ์๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์ ๊ฒฐ๊ณผ๋ Patroni์ ์ฃผ์ ์์ ์ ํด๋ฌ์คํฐ๊ฐ ๊ณ์ ์๋ํ๊ณ ์์ฉ ํ๋ก๊ทธ๋จ์ด ํด๋ฌ์คํฐ ํ ํด๋ก์ง์ ๋ณ๊ฒฝ ์ฌํญ์ ์ธ์ํ์ง ๋ชปํ๋๋ก ์๋ ํ์ผ์ ์ ์์ ์ ์ผ๋ก ์ํํ๋ ๊ฒ์ ๋๋ค.
ํ์ง๋ง Patroni๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ๋ฉด ์์คํ ์ด ์กฐ๊ธ ๋ ๋ณต์กํด์ง๋๋ค. ์ด์ ์ Postgres๊ฐ ์์๋ค๋ฉด Patroni๋ฅผ ์ฌ์ฉํ ๋ Patroni ์์ฒด๋ฅผ ์ป๊ณ ์ํ๊ฐ ์ ์ฅ๋ DCS๋ฅผ ์ป์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ป๊ฒ๋ ์๋ํด์ผ ํฉ๋๋ค. ๊ทธ๋์ ๋ฌด์์ด ์๋ชป๋ ์ ์์ต๋๊น?
ํ์๋ ์ ์์:
- Postgres๊ฐ ์ค๋จ๋ ์ ์์ต๋๋ค. ๋ง์คํฐ ๋๋ ๋ณต์ ๋ณธ์ผ ์ ์์ผ๋ฉฐ ๋ ์ค ํ๋๊ฐ ์คํจํ ์ ์์ต๋๋ค.
- Patroni ์์ฒด๊ฐ ๊นจ์ง ์ ์์ต๋๋ค.
- ์ํ๊ฐ ์ ์ฅ๋ DCS๊ฐ ์ค๋จ๋ ์ ์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋คํธ์ํฌ๊ฐ ๋์ด์ง ์ ์์ต๋๋ค.
์ด ๋ชจ๋ ์ฌํญ์ ๋ณด๊ณ ์์์ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค.
์ผ์ด์ค๊ฐ ๋ง์ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํ๋ค๋ ๊ด์ ์ด ์๋๋ผ, ์ผ์ด์ค๊ฐ ๋ ๋ณต์กํด์ง ๋ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฃผ๊ด์ ์ธ ๋๋์ผ๋ก ๋ณด๋ฉด ์ด ์ผ์ด์ค๊ฐ ์ ์๊ฒ๋ ์ด๋ ต๋ค, ๋ถํดํ๊ธฐ๊ฐ ์ด๋ ค์ ์ต๋๋ค... ๊ทธ ๋ฐ๋๋ ์ด๋ค ์ผ์ด์ค๋ ๊ฐ๋ฒผ์์ ๋ถํดํ๊ธฐ ์ฌ์ ์ต๋๋ค.
์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ๊ฐ ๊ฐ์ฅ ์ฝ์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๋ฅผ ๊ฐ์ ธ์ ๋์ผํ ํด๋ฌ์คํฐ์ DCS ์คํ ๋ฆฌ์ง๋ฅผ ๋ฐฐํฌํ ๊ฒฝ์ฐ์ ๋๋ค. ์ด๊ฒ์ ๊ฐ์ฅ ํํ ์ค์์ ๋๋ค. ์ด๋ ์ํคํ ์ฒ๋ฅผ ๊ตฌ์ถํ ๋, ์ฆ ์๋ก ๋ค๋ฅธ ๊ตฌ์ฑ ์์๋ฅผ ํ ๊ณณ์ ๊ฒฐํฉํ๋ ์ค์์ ๋๋ค.
๊ทธ๋์ ํ์ผ๋ฌ๊ฐ ์์๋๋ฐ ๋ฌด์จ ์ผ์ด ์์๋์ง ์ฒ๋ฆฌํ๋ฌ ๊ฐ์.
์ฌ๊ธฐ์ ํ์ผ๋ฌ๊ฐ ๋ฐ์ํ ์์ ์ ๊ด์ฌ์ด ์์ต๋๋ค. ์ฆ, ํด๋ฌ์คํฐ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ์ด ์๊ฐ์ ๊ด์ฌ์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ์ผ๋ฌ๋ ํญ์ ์ฆ๊ฐ์ ์ธ ๊ฒ์ ์๋๋๋ค. ์ฆ, ์๊ฐ ๋จ์๊ฐ ๊ฑธ๋ฆฌ์ง ์์ผ๋ฉฐ ์ง์ฐ๋ ์ ์์ต๋๋ค. ์ค๋ ์ง์๋ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์์ ์๊ฐ๊ณผ ์ข ๋ฃ ์๊ฐ์ด ์์ต๋๋ค. ์ฆ, ์ฐ์ ์ด๋ฒคํธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ์ธ ๊ฐ์ง ๊ฐ๊ฒฉ์ผ๋ก ๋๋๋๋ค. ํ์ผ๋ฌ ์ด์ , ํ์ผ๋ฌ ๋์ ๋ฐ ํ์ผ๋ฌ ์ดํ์ ์๊ฐ์ด ์์ต๋๋ค. ์ฆ, ์ด ํ์๋ผ์ธ์ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ๊ณ ๋ คํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ๋จผ์ , ํ์ผ๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ๋ฐ์ํ ์์ธ, ํ์ผ๋ฌ๋ก ์ด์ด์ง ์์ธ์ด ๋ฌด์์ธ์ง ์ฐพ์ต๋๋ค.
๋ก๊ทธ๋ฅผ ๋ณด๋ฉด ์ ํ์ ์ธ Patroni ๋ก๊ทธ์ผ ๊ฒ์ ๋๋ค. ๊ทธ๋ ์๋ฒ๊ฐ ๋ง์คํฐ๊ฐ ๋์๊ณ ๋ง์คํฐ์ ์ญํ ์ด ์ด ๋ ธ๋๋ก ๋์ด๊ฐ๋ค๊ณ ๋งํฉ๋๋ค. ์ฌ๊ธฐ์์ ๊ฐ์กฐ ํ์๋ฉ๋๋ค.
๋ค์์ผ๋ก ํ์ผ๋ฌ๊ฐ ๋ฐ์ํ ์ด์ , ์ฆ ๋ง์คํฐ ์ญํ ์ด ํ ๋ ธ๋์์ ๋ค๋ฅธ ๋ ธ๋๋ก ์ด๋ํ๊ฒ ๋ง๋ ์ด๋ฒคํธ๊ฐ ๋ฌด์์ธ์ง ์ดํดํด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ชจ๋ ๊ฒ์ด ๊ฐ๋จํฉ๋๋ค. ์คํ ๋ฆฌ์ง ์์คํ ๊ณผ ์ํธ ์์ฉํ๋ ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ฃผ์ธ์ DCS์ ํจ๊ป ์ผํ ์ ์๋ค๋ ๊ฒ, ์ฆ ์ํธ ์์ฉ์ ์ด๋ค ์ข ๋ฅ์ ๋ฌธ์ ๊ฐ ์์์ ๊นจ๋ฌ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๋ ์ด์ ์ฃผ์ธ์ด ๋ ์ ์๋ค๊ณ ๋งํ๊ณ ์ฌ์ํฉ๋๋ค. ์ด "๊ฐ๋ฑ๋ ์๊ธฐ" ์ค์ ์ ํํ ๊ทธ๊ฒ์ ๋งํฉ๋๋ค.
ํ์ผ๋ฌ ์ด์ ์ ์ด๋ฒคํธ๋ฅผ ๋ณด๋ฉด ๋ง๋ฒ์ฌ๊ฐ ๊ณ์๋๋ ๋ฐ ๋ฌธ์ ๊ฐ ๋ ๋ฐ๋ก ๊ทธ ์ด์ ๋ฅผ ์ ์ ์์ต๋๋ค.
Patroni ๋ก๊ทธ๋ฅผ ๋ณด๋ฉด ๋ง์ ์ค๋ฅ์ ์๊ฐ ์ด๊ณผ๊ฐ ์์์ ์ ์ ์์ต๋๋ค. ์ฆ, Patroni ์์ด์ ํธ๊ฐ DCS์ ์๋ํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ํฌํธ 8500์์ ํต์ ํ๋ Consul ์์ด์ ํธ์ ๋๋ค.
์ฌ๊ธฐ์ ๋ฌธ์ ๋ Patroni์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋์ผํ ํธ์คํธ์์ ์คํ๋๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ Consul ์๋ฒ๋ ๋์ผํ ๋ ธ๋์์ ์์๋์์ต๋๋ค. ์๋ฒ์ ๋ก๋๋ฅผ ์์ฑํจ์ผ๋ก์จ Consul ์๋ฒ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๋ค์ ์ ๋๋ก ์์ฌ ์ํต์ ํ ์ ์์์ต๋๋ค.
์ผ๋ง ํ ๋ถํ๊ฐ ๊ฐ๋ผ์์์ ๋ Patroni๋ ์์ด์ ํธ์ ๋ค์ ํต์ ํ ์ ์์์ต๋๋ค. ์ ์์ ์ธ ์์ ์ด ์ฌ๊ฐ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ Pgdb-2 ์๋ฒ๊ฐ ๋ค์ ๋ง์คํฐ๊ฐ ๋์์ต๋๋ค. ์ฆ, ๋ ธ๋๊ฐ ๋ง์คํฐ์ ๊ถํ์ ์ฌ์ํ๊ณ ๋ค์ ์ธ์ํ์ฌ ๋ชจ๋ ๊ฒ์ด ๊ทธ๋๋ก ๋ฐํ๋๋ ์์ ๋ฐ์ ์ด ์์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์๋ชป๋ ๊ฒฝ๋ณด๋ก ๊ฐ์ฃผ๋๊ฑฐ๋ Patroni๊ฐ ๋ชจ๋ ๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ํํ๋ค๊ณ ๊ฐ์ฃผ๋ ์ ์์ต๋๋ค. ์ฆ, ๊ทธ๋ ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ์ ์งํ ์ ์์์ ๊นจ๋ซ๊ณ ๊ถํ์ ์ ๊ฑฐํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ Consul ์๋ฒ๊ฐ ๊ธฐ์ง์ ๋์ผํ ํ๋์จ์ด์ ์๋ค๋ ์ฌ์ค ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ๋ถํ: ๋์คํฌ ๋๋ ํ๋ก์ธ์์ ๋ถํ ์ฌ๋ถ์ ๊ด๊ณ์์ด Consul ํด๋ฌ์คํฐ์์ ์ํธ ์์ฉ์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํจ๊ป ์ด๋ฉด ์ ๋๋ค๊ณ ๊ฒฐ์ ํ๊ณ Consul์ ์ํด ๋ณ๋์ ํด๋ฌ์คํฐ๋ฅผ ํ ๋นํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Patroni๋ ์ด๋ฏธ ๋ณ๋์ Consul๊ณผ ํจ๊ป ์์ ํ๊ณ ์์์ต๋๋ค. ์ฆ, ๋ณ๋์ Consul ํด๋ฌ์คํฐ์ธ ๋ณ๋์ Postgres ํด๋ฌ์คํฐ๊ฐ ์์์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ ๋๊ฑฐํ์ง ์๋๋ก ํด๋ํ๊ณ ๋ณด๊ดํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ธฐ๋ณธ ์ง์นจ์ ๋๋ค.
์ต์ ์ผ๋ก ttl, loop_wait, retry_timeout ๋งค๊ฐ๋ณ์๋ฅผ ๋นํ ์ ์์ต๋๋ค. ์ฆ, ์ด๋ฌํ ๋งค๊ฐ๋ณ์๋ฅผ ๋๋ ค ์ด๋ฌํ ๋จ๊ธฐ ๋ก๋ ํผํฌ์์ ์ด์๋จ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋์ด๋ก๋๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์์ผ๋ฏ๋ก ๊ฐ์ฅ ์ ํฉํ ์ต์ ์ ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด๋ฌํ ๋งค๊ฐ ๋ณ์์ ํ๊ณ๋ฅผ ๋์ด์ค ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ค์ ๋ก ๋์์ด ๋์ง ์์ ์๋ ์์ต๋๋ค.
์์๋ค์ํผ ์ฒซ ๋ฒ์งธ ๋ฌธ์ ๋ ๊ฐ๋จํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ธฐ์ง์ ํจ๊ป DCS๋ฅผ ๊ฐ์ ธ ์์ ๋ฃ์์ต๋๋ค. ๋ฌธ์ ๊ฐ ์๊ฒผ์ต๋๋ค.
๋ ๋ฒ์งธ ๋ฌธ์ ๋ ์ฒซ ๋ฒ์งธ ๋ฌธ์ ์ ๋น์ทํฉ๋๋ค. DCS ์์คํ ๊ณผ์ ์ํธ ์ด์ฉ์ฑ ๋ฌธ์ ๊ฐ ๋ค์ ๋ฐ์ํ๋ค๋ ์ ์์ ์ ์ฌํฉ๋๋ค.
๋ก๊ทธ๋ฅผ ๋ณด๋ฉด ๋ค์ ํต์ ์ค๋ฅ๊ฐ ์์์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Patroni๋ DCS์ ์ํธ ์์ฉํ ์ ์์ผ๋ฏ๋ก ํ์ฌ ๋ง์คํฐ๊ฐ ๋ณต์ ๋ชจ๋๋ก ์ ํ๋๋ค๊ณ ๋งํฉ๋๋ค.
์ด์ ๋ง์คํฐ๋ ๋ณต์ ๋ณธ์ด ๋๋ฉฐ, ์ฌ๊ธฐ์ Patroni๋ ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค. pg_rewind๋ฅผ ์คํํ์ฌ ํธ๋์ญ์ ๋ก๊ทธ๋ฅผ ๋๊ฐ์ ๋ค์ ์ ๋ง์คํฐ์ ์ฐ๊ฒฐํ์ฌ ์ ๋ง์คํฐ๋ฅผ ๋ฐ๋ผ์ก์ต๋๋ค. ์ฌ๊ธฐ์ Patroni๋ ์ ๋๋ก ์๋ํฉ๋๋ค.
์ฌ๊ธฐ์์ ํ์ผ๋ฌ ์ด์ ์ ์์น, ์ฆ ํ์ผ๋ฌ๋ฅผ ๊ฐ์ง๊ฒ ๋ ์ค๋ฅ๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค. ์ด์ ๊ด๋ จํ์ฌ Patroni ๋ก๊ทธ๋ ์์ ํ๊ธฐ์ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค. ๊ทธ๋ ์ผ์ ํ ๊ฐ๊ฒฉ์ผ๋ก ๊ฐ์ ๋ฉ์์ง๋ฅผ ์๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๋ก๊ทธ๋ฅผ ๋น ๋ฅด๊ฒ ์คํฌ๋กคํ๊ธฐ ์์ํ๋ฉด ๋ก๊ทธ์์ ๋ก๊ทธ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒ์ ๋ณผ ์ ์์ผ๋ฉฐ ์ด๋ ์ผ๋ถ ๋ฌธ์ ๊ฐ ์์๋์์์ ์๋ฏธํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋นจ๋ฆฌ ์ด๊ณณ์ผ๋ก ๋์๊ฐ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ๋ด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์์ ์ธ ์ํฉ์์ ๋ก๊ทธ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ ๋๋ค. ์ ๊ธ ์์ ์๋ฅผ ํ์ธํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ ์๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ Patroni๊ฐ ์๋ตํด์ผ ํ๋ ์ผ๋ถ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด ๊ฒฝ์ฐ์๋ ๊ด์ฐฎ์ต๋๋ค. ์ค๋ฅ๊ฐ ์์๋ ๊ณณ์ ์ฐพ๊ณ ์์ต๋๋ค.
์ค๋ฅ๊ฐ ๋ํ๋๊ธฐ ์์ํ ์ง์ ์ผ๋ก ์คํฌ๋กคํ๋ฉด ์๋ ํ์ผ์ค๋ฒ๊ฐ ์์์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ์ ์ค๋ฅ๋ DCS์์ ์ํธ ์์ฉ๊ณผ ๊ด๋ จ์ด ์๊ณ ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ์๋ Consul์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ฑฐ๊ธฐ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง Consul ๋ก๊ทธ๋ ์ดํด๋ด ๋๋ค.
ํ์ผ๋ฌ์ ์๊ฐ๊ณผ Consul ๋ก๊ทธ์ ์๊ฐ์ ๋๋ต ๋น๊ตํ๋ฉด Consul ํด๋ฌ์คํฐ์ ์ด์์ด Consul ํด๋ฌ์คํฐ์ ๋ค๋ฅธ ๊ตฌ์ฑ์์ ์กด์ฌ๋ฅผ ์์ฌํ๊ธฐ ์์ํ์์ ์ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ Consul ์์ด์ ํธ์ ๋ก๊ทธ๋ ๋ณด๋ฉด ๊ทธ๊ณณ์์ ์ผ์ข ์ ๋คํธ์ํฌ ๋ถ๊ดด๊ฐ ์ผ์ด๋๊ณ ์์์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Consul ํด๋ฌ์คํฐ์ ๋ชจ๋ ๊ตฌ์ฑ์์ ์๋ก์ ์กด์ฌ๋ฅผ ์์ฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ํ์ผ๋ฌ์ ์๋๋ ฅ์ด์์ต๋๋ค.
์ด๋ฌํ ์ค๋ฅ ์ด์ ์ ๋ฐ์ํ ์ผ์ ์ดํด๋ณด๋ฉด ๋ชจ๋ ์ข ๋ฅ์ ์ค๋ฅ๊ฐ ์์์ ์ ์ ์์ต๋๋ค. .
๊ฐ์ฅ ๊ฐ๋จํ ๋๋ต์ ๋คํธ์ํฌ๋ฅผ ๋ณต๊ตฌํ๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ฐ๋จ์ ์ ์๋ ์ ์๊ฒ๋ ์ด๋ ๊ฒ ๋งํ๊ธฐ๊ฐ ์ฝ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ณ ๊ฐ์ด ํญ์ ๋คํธ์ํฌ๋ฅผ ์๋ฆฌํ ์ฌ๋ ฅ์ด ์๋ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ DC์ ๊ฑฐ์ฃผํ ์ ์์ผ๋ฉฐ ๋คํธ์ํฌ๋ฅผ ์๋ฆฌํ ์ ์๊ฑฐ๋ ์ฅ๋น์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ต์ ์ด ํ์ํฉ๋๋ค.
์ต์ ์ด ์์ต๋๋ค:
- ์ ์๊ฐ์๋ ๋ฌธ์์์๋ ๊ฐ์ฅ ๊ฐ๋จํ ์ต์ ์ 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๋ฅผ ์ฌ์ฉํ๋ ๋ง์ ์ฌ๋๋ค์ด ์ด ๋ช ๋ น์ ์ต์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด ๋ช ๋ น์ ํด๋ฌ์คํฐ์ ํ์ฌ ์ํ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ๋ป ๋ณด๊ธฐ์ ์ด ๊ทธ๋ฆผ์ ์ ์์ผ๋ก ๋ณด์ผ ์ ์์ต๋๋ค. ๋ง์คํฐ๊ฐ ์๊ณ ๋ณต์ ๋ณธ์ด ์์ผ๋ฉฐ ๋ณต์ ์ง์ฐ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ๊ทธ๋ฆผ์ ์ด ํด๋ฌ์คํฐ์ XNUMX๊ฐ๊ฐ ์๋ XNUMX๊ฐ์ ๋ ธ๋๊ฐ ์์ด์ผ ํ๋ค๋ ๊ฒ์ ์๊ธฐ ์ ๊น์ง๋ ์ ์์ ๋๋ค.
๋ฐ๋ผ์ ์๋ ํ์ผ์ด ์์ต๋๋ค. ์ด ์๋ ํ์ผ ์ดํ ๋ณต์ ๋ณธ์ด ์ฌ๋ผ์ก์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ ๊ฐ ์ ์ฌ๋ผ์ก๋์ง ์์๋ด๊ณ ๊ทธ๋ ๋ฅผ ๋ค์ ๋ฐ๋ ค์ ๋ณต์ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ๋ก๊ทธ๋ก ์ด๋ํ์ฌ ์๋ ํ์ผ์ค๋ฒ๊ฐ ์๋ ์ด์ ๋ฅผ ํ์ธํฉ๋๋ค.
์ด ๊ฒฝ์ฐ ๋ ๋ฒ์งธ ๋ณต์ ๋ณธ์ด ๋ง์คํฐ๊ฐ ๋์์ต๋๋ค. ์ฌ๊ธฐ ๊ด์ฐฎ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋จ์ด์ก๊ณ ํด๋ฌ์คํฐ์ ์๋ ๋ณต์ ๋ณธ์ ์ดํด๋ด์ผ ํฉ๋๋ค. Patroni ๋ก๊ทธ๋ฅผ ์ด์ด๋ณด๋ pg_rewind ๋จ๊ณ์์ ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํ๋ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํ๋ ค๋ฉด ํธ๋์ญ์ ๋ก๊ทธ๋ฅผ ๋๊ฐ๊ณ ๋ง์คํฐ์์ ํ์ํ ํธ๋์ญ์ ๋ก๊ทธ๋ฅผ ์์ฒญํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ง์คํฐ๋ฅผ ๋ฐ๋ผ์ก์์ผ ํฉ๋๋ค.
์ด ๊ฒฝ์ฐ ํธ๋์ญ์ ๋ก๊ทธ๊ฐ ์์ผ๋ฉฐ ๋ณต์ ๋ณธ์ ์์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ค๋ฅ์ ํจ๊ป Postgres๋ฅผ ์ค์งํฉ๋๋ค. ๋ฐ๋ผ์ ํด๋ฌ์คํฐ์ ์์ต๋๋ค.
ํด๋ฌ์คํฐ์ ์๋ ์ด์ ์ ๋ก๊ทธ๊ฐ ์๋ ์ด์ ๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ ๋ง์คํฐ์๊ฒ ๊ฐ์ ๊ทธ๊ฐ ๋ก๊ทธ์ ๋ฌด์์ ๊ฐ์ง๊ณ ์๋์ง ์ดํด๋ด ๋๋ค. pg_rewind๊ฐ ์๋ฃ๋์์ ๋ ์ฒดํฌํฌ์ธํธ๊ฐ ๋ฐ์ํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ํธ๋์ญ์ ๋ก๊ทธ ์ค ์ผ๋ถ๋ ๋จ์ํ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ด์ ๋ง์คํฐ๊ฐ ์ ๋ง์คํฐ์ ์ฐ๊ฒฐํ๊ณ ์ด๋ฌํ ๋ก๊ทธ๋ฅผ ์ฟผ๋ฆฌํ๋ ค๊ณ ์๋ํ์ ๋ ์ด๋ฏธ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์ด ์กด์ฌํ์ง ์์์ต๋๋ค.
์ด๋ฌํ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋์ ํ์์คํฌํ๋ฅผ ๋น๊ตํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ฐจ์ด๋ ๋ฌธ์ ๊ทธ๋๋ก 150๋ฐ๋ฆฌ์ด์ ๋๋ค. ์ฆ, ์ฒดํฌํฌ์ธํธ๊ฐ 369๋ฐ๋ฆฌ์ด์ ์๋ฃ๋๊ณ WAL ์ธ๊ทธ๋จผํธ์ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ๊ทธ๋๋ก 517์์ 150๋ฐ๋ฆฌ์ด ํ์ ์ด์ ๋ณต์ ๋ณธ์์ ๋๊ฐ๊ธฐ๊ฐ ์์๋์์ต๋๋ค. ์ฆ, ๋ฌธ์ ๊ทธ๋๋ก 150๋ฐ๋ฆฌ์ด๋ฉด ์ถฉ๋ถํ์ฌ ๋ณต์ ๋ณธ์ด ์ฐ๊ฒฐ๋์ด ์์ต์ ์ป์ ์ ์์ต๋๋ค.
์ต์ ์ ๋ฌด์์ ๋๊น?
์ฒ์์๋ ๋ณต์ ์ฌ๋กฏ์ ์ฌ์ฉํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํ์ต๋๋ค. ์๋ ์ฒซ ๋จ๊ณ์์ ์ฐ๋ฆฌ๋ ์ฌ๋กฏ์ ๊ป์ต๋๋ค. ์ฌ๋กฏ์ ๋ง์ WAL ์ธ๊ทธ๋จผํธ๊ฐ ๋์ ๋๋ฉด ๋ง์คํฐ๋ฅผ ์ญ์ ํ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์์ต๋๋ค. ๊ทธ๋ ๋จ์ด์ง ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๋ ์ฌ๋กฏ์์ด ํ๋์ ๊ณ ์ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ฌ๋กฏ์ด ํ์ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๊ณ ์ฌ๋กฏ์ ๋ฐํํ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฌ๊ธฐ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ง์คํฐ๊ฐ ๋ณต์ ๋ณธ์ผ๋ก ์ด๋ํ๋ฉด ์ฌ๋กฏ์ ์ญ์ ํ๊ณ ์ฌ๋กฏ๊ณผ ํจ๊ป WAL ์ธ๊ทธ๋จผํธ๋ฅผ ์ญ์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฌธ์ ๋ฅผ ์์ ๊ธฐ ์ํด wal_keep_segments ๋งค๊ฐ๋ณ์๋ฅผ ๋์ด๊ธฐ๋ก ํ์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 8 ์ธ๊ทธ๋จผํธ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ 1์ผ๋ก ์ฌ๋ฆฌ๊ณ ์ผ๋ง๋ ๋ง์ ์ฌ์ ๊ณต๊ฐ์ด ์๋์ง ํ์ธํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ wal_keep_segments๋ฅผ ์ํด 000GB๋ฅผ ๊ธฐ๋ถํ์ต๋๋ค. ์ฆ, ์ ํํ ๋ ๋ชจ๋ ๋ ธ๋์์ ํญ์ 16GB์ ํธ๋์ญ์ ๋ก๊ทธ๋ฅผ ์์ฝํฉ๋๋ค.
๋ํ ์ฅ๊ธฐ ์ ์ง ๊ด๋ฆฌ ์์ ๊ณผ ์ฌ์ ํ ๊ด๋ จ์ด ์์ต๋๋ค. ๋ณต์ ๋ณธ ์ค ํ๋๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋๊ณ ์ถ์ต๋๋ค. ์ํํธ์จ์ด, ์๋ง๋ ์ด์ ์ฒด์ ๋ฑ์ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ๋ณต์ ๋ณธ์ ๋๋ฉด ํด๋น ๋ณต์ ๋ณธ์ ์ฌ๋กฏ๋ ์ ๊ฑฐ๋ฉ๋๋ค. ์์ wal_keep_segments๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณต์ ๋ณธ์ด ์ค๋ซ๋์ ์์ผ๋ฉด ํธ๋์ญ์ ๋ก๊ทธ๊ฐ ์์ค๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ณต์ ๋ณธ์ ์์ฑํ๊ณ ์ค์ง๋ ํธ๋์ญ์ ๋ก๊ทธ๋ฅผ ์์ฒญํ์ง๋ง ๋ง์คํฐ์๋ ์์ ์ ์์ต๋๋ค. ๋ณต์ ๋ณธ๋ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๋ง์ ์์ ์ก์ง๋ฅผ ๋ณด์ ํ๊ณ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์์ฐ ๊ธฐ์ง๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ฏธ ์งํ ์ค์ธ ํ๋ก์ ํธ๊ฐ ์์ต๋๋ค.
ํ์ผ๋ฌ๊ฐ ์์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ค์ด๊ฐ์ ์ดํด ๋ณด์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ ์์ด๊ณ ๋ณต์ ๋ณธ์ด ์ ์๋ฆฌ์ ์์ผ๋ฉฐ ๋ณต์ ์ง์ฐ์ด ์์ต๋๋ค. ๋ก๊ทธ์๋ ์ค๋ฅ๊ฐ ์์ผ๋ฉฐ ๋ชจ๋ ๊ฒ์ด ์ ์์ ๋๋ค.
์ ํ ํ์ ์ผ๋ถ ๋ฐ์ดํฐ๊ฐ ์์ด์ผ ํ๋ค๊ณ ๋งํ์ง๋ง ํ๋์ ์์ค์์ ๋ณผ ์ ์์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๋ค์๊ฒ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ์ดํดํด์ผ ํฉ๋๋ค.
pg_rewind๊ฐ ๊ทธ๊ฒ๋ค์ ๋์น ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ฆ์ ์ดํดํ์ง๋ง ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๋ณด๋ฌ๊ฐ์ต๋๋ค.
๋ก๊ทธ์์ ์ธ์ ํ์ผ๋ฌ๊ฐ ๋ฐ์ํ๋์ง, ๋๊ฐ ๋ง์คํฐ๊ฐ ๋์๋์ง, ๋๊ฐ ์ด์ ๋ง์คํฐ์ธ์ง, ์ธ์ ๋ณต์ ๋ณธ์ด ๋๊ธฐ๋ฅผ ์ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ๊ธธ์ ์์๋ค.
์ด์ ๋ง์คํฐ๊ฐ ์ฌ๋ถํ ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Patroni๋ ์๋ ์คํ์ ๋ฑ๋ก๋์์ต๋๋ค. ํจํธ๋ก๋๋ฅผ ๋ฐ์นญํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ทธ๋ Postgres๋ฅผ ์์ํ์ต๋๋ค. ๋ณด๋ค ์ ํํ๊ฒ๋ Postgres๋ฅผ ์์ํ๊ธฐ ์ ์ ๋ณต์ ๋ณธ์ผ๋ก ๋ง๋ค๊ธฐ ์ ์ Patroni๋ pg_rewind ํ๋ก์ธ์ค๋ฅผ ์์ํ์ต๋๋ค. ์ด์ ๋ฐ๋ผ ๊ทธ๋ ํธ๋์ญ์ ๋ก๊ทธ์ ์ผ๋ถ๋ฅผ ์ง์ฐ๊ณ ์ ๋ก๊ทธ๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ์ฐ๊ฒฐํ์ต๋๋ค. ์ฌ๊ธฐ์ Patroni๋ ์์๋๋ก ํ๋ช ํ๊ฒ ์์ ํ์ต๋๋ค. ํด๋ฌ์คํฐ๊ฐ ๋ณต์๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ์ผ๋ฌ 3๊ฐ ๋ ธ๋ ๋ค์์ 3๊ฐ ๋ ธ๋๋ฅผ ๊ฐ์ก์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ๋ฉ์ง๋๋ค.
์ผ๋ถ ๋ฐ์ดํฐ๊ฐ ์์ค๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ์ผ๋ง๋ ๋ง์ ๊ฒ์ ์์๋์ง ์ดํดํด์ผ ํฉ๋๋ค. ๋๊ฐ๊ธฐ ํ ์๊ฐ์ ์ฐพ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌํ ์ผ์ง ํญ๋ชฉ์์ ์ฐพ์ ์ ์์ต๋๋ค. ๋๊ฐ๊ธฐ๊ฐ ์์๋์ด ๊ฑฐ๊ธฐ์์ ๋ฌด์ธ๊ฐ๋ฅผ ํ๊ณ ๋๋ฌ์ต๋๋ค.
ํธ๋์ญ์ ๋ก๊ทธ์์ ์ด์ ๋ง์คํฐ๊ฐ ์ค๋จ๋ ์์น๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ด๊ฒ์ด ๋งํฌ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ ๋ฒ์งธ ํ์, ์ฆ ์ด์ ๋ง์คํฐ์ ์ ๋ง์คํฐ๊ฐ ๋ค๋ฅธ ๊ฑฐ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
์ผ๋ฐ์ ์ธ pg_wal_lsn_diff๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๋ ํ์๋ฅผ ๋น๊ตํฉ๋๋ค. ์ด ๊ฒฝ์ฐ 17MB๋ฅผ ์ป์ต๋๋ค. ๋ง๋ ์ ๋ ๋ชจ๋๊ฐ ์ค์ค๋ก ๊ฒฐ์ ํฉ๋๋ค. ๋๊ตฐ๊ฐ์๊ฒ๋ 17MB๊ฐ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ๋๊ตฐ๊ฐ์๊ฒ๋ ๋ง๊ณ ์ฉ๋ฉํ ์ ์๋ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์์ ๊ฐ ๊ฐ์ธ์ ๋น์ฆ๋์ค์ ํ์์ ๋ฐ๋ผ ์ค์ค๋ก ๊ฒฐ์ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ ์ค์ค๋ก ๋ฌด์์ ์์๋์ต๋๊น?
๋จผ์ , ์ค์ค๋ก ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ์์คํ ์ฌ๋ถํ ํ ์๋ ์์ํ๋ ค๋ฉด ํญ์ Patroni๊ฐ ํ์ํฉ๋๊น? ์ข ์ข ์ฐ๋ฆฌ๋ ์ ์ค์น์๊ฒ ๊ฐ์ ๊ทธ๊ฐ ์ผ๋ง๋ ๋ฉ๋ฆฌ ๊ฐ๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์๋ง๋ ํธ๋์ญ์ ๋ก๊ทธ์ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ฒ์ฌํ๊ณ ๊ฑฐ๊ธฐ์ ๋ฌด์์ด ์๋์ง ํ์ธํ์ญ์์ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฐ์ดํฐ๋ฅผ ์์ด๋ฒ๋ฆด ์ ์๋์ง ๋๋ ์ด ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๊ธฐ ์ํด ์ด์ ๋ง์คํฐ๋ฅผ ๋ ๋ฆฝ ์คํํ ๋ชจ๋๋ก ์คํํด์ผ ํ๋์ง ์ดํดํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ด ๋ฐ์ดํฐ๋ฅผ ํ๊ธฐํ ์ ์๋์ง ๋๋ ๋ณต์ํ ์ ์๋์ง ๊ฒฐ์ ํ๊ณ ์ด ๋ ธ๋๋ฅผ ๋ณต์ ๋ณธ์ผ๋ก ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค.
๋ํ "maximum_lag_on_failover" ๋งค๊ฐ๋ณ์๊ฐ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ด ๋งค๊ฐ๋ณ์์ ๊ฐ์ 1MB์ ๋๋ค.
๊ทธ๋ ์ด๋ป๊ฒ ์ผํฉ๋๊น? ๋ณต์ ์ง์ฐ์ผ๋ก ์ธํด ๋ณต์ ๋ณธ์ด 1MB์ ๋ฐ์ดํฐ ๋ค์ ์๋ ๊ฒฝ์ฐ ์ด ๋ณต์ ๋ณธ์ ์ ๊ฑฐ์ ์ฐธ์ฌํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์๊ธฐ ํ์ผ์ค๋ฒ๊ฐ ๋ฐ์ํ๋ฉด Patroni๋ ์ด๋ค ๋ณต์ ๋ณธ์ด ๋ค์ณ์ ธ ์๋์ง ์ดํด๋ด ๋๋ค. ๋ง์ ์์ ํธ๋์ญ์ ๋ก๊ทธ์ ๋ค์ฒ์ง๋ฉด ๋ง์คํฐ๊ฐ ๋ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ง์ ๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํ๋ ๋งค์ฐ ์ฐ์ํ ๋ณด์ ๊ธฐ๋ฅ์ ๋๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ Patroni ํด๋ฌ์คํฐ์ DCS์ ๋ณต์ ์ง์ฐ์ด ์ผ์ ๊ฐ๊ฒฉ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ค๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. 30์ด๊ฐ ๊ธฐ๋ณธ ttl ๊ฐ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ฐ๋ผ์ DCS์์ ๋ณต์ ๋ณธ์ ๋ํด ํ๋์ ๋ณต์ ์ง์ฐ์ด ์๋ ์ํฉ์ด ์์ ์ ์์ง๋ง ์ค์ ๋ก๋ ์์ ํ ๋ค๋ฅธ ์ง์ฐ์ด ์๊ฑฐ๋ ์ง์ฐ์ด ์ ํ ์์ ์ ์์ต๋๋ค. ์ฆ, ์ด๊ฒ์ ์ค์๊ฐ์ด ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ํญ์ ์ค์ ๊ทธ๋ฆผ์ ๋ฐ์ํ๋ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ฉ์ง ๋ ผ๋ฆฌ๋ฅผ ํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์ค์ ์ํ์ ํญ์ ๋จ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ต์ ์ ๊ฒฝ์ฐ์๋ ํ๋์ ๊ณต์์ด ์๊ณ , ํ๊ท ์ ์ธ ๊ฒฝ์ฐ์๋ ๋ ๋ค๋ฅธ ๊ณต์์ด ์์ต๋๋ค. ์ฆ, Patroni ๊ตฌํ์ ๊ณํํ๊ณ ์์ค๋ ์ ์๋ ๋ฐ์ดํฐ์ ์์ ํ๊ฐํ ๋ ์ด๋ฌํ ๊ณต์์ ์์กดํ๊ณ ์์ค๋ ์ ์๋ ๋ฐ์ดํฐ์ ์์ ๋๋ต์ ์ผ๋ก ์์ํด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ข์ ์์์ด ์์ต๋๋ค. ์ด์ ๋ง์คํฐ๊ฐ ์์ ์ ์งํํ๋ฉด ์ผ๋ถ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ก ์ธํด ์์ ์ ์งํํ ์ ์์ต๋๋ค. ์ฆ, ์ผ์ข ์ autovacuum์ด ์์๊ณ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ ํธ๋์ญ์ ๋ก๊ทธ์ ์ ์ฅํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ฌด์ํ๊ณ ์์ ์ ์์ต๋๋ค. ์ด๊ฒ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด๊ฒ์ด maximum_lag_on_failover๊ฐ ์ค์ ๋๊ณ ํ์ผ๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋ก๊ทธ๊ฐ ํ์๋๋ ๋ฐฉ์์ด๋ฉฐ ์ ๋ง์คํฐ๋ฅผ ์ ํํด์ผ ํฉ๋๋ค. ๋ ํ๋ฆฌ์นด๋ ์์ ์ด ์ ๊ฑฐ์ ์ฐธ์ฌํ ๋ฅ๋ ฅ์ด ์๋ค๊ณ ํ๊ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๋ ๋ฆฌ๋ ๊ฒฝ์ฃผ์ ์ฐธ๊ฐํ๊ธฐ๋ฅผ ๊ฑฐ๋ถํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ก์ด ๋ง์คํฐ๊ฐ ์ ํ๋ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ ์์ค์ ๋ํ ์ถ๊ฐ ์กฐ์น์ ๋๋ค.
์ฌ๊ธฐ ์ ํ์ Postgres์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์์ฑํ ์ ํ ํ์ด ์์ต๋๋ค. ๋์์ SSH๋ฅผ ํตํด ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ง์คํฐ ์์ฒด์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ ํ์ผ๋ ๋ฐ์ํ์ง ์์ต๋๋ค.
์ด ํธ์คํธ๋ ๊ฐ์ ๋ก ์ฌ๋ถํ ๋์์ต๋๋ค. ์ฌ๋ถํ ์ผ๋ก ์ธํด ์๋ ํ์ผ์ด ๋ฐ์ํ์ง๋ง ์ง๊ธ์ ์ดํดํ๋ ๊ฒ์ฒ๋ผ ์๋ ์๋ ํ์ผ์ ์ํํ ์ ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋ถํ ํ ํ์ฌ ๋ง์คํฐ์ ๋ํด ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ์ด๋ฏธ ๋ณผ ๊ฒ์ ๋๋ค.
๋์์ ์ฐ๋ฆฌ๋ ๋์คํฌ์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ๋ฏธ๋ฆฌ ์๊ณ ์์์ต๋๋ค. ์ฆ, ์ด๋๋ฅผ ํ๊ณ ๋ฌด์์ ์ฐพ์์ผ ํ๋์ง ๋ชจ๋ํฐ๋ง์ ํตํด ์ด๋ฏธ ์๊ณ ์์์ต๋๋ค.
์ฐ๋ฆฌ๋ postgres ๋ก๊ทธ์ ๋ค์ด๊ฐ์ ๊ฑฐ๊ธฐ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๋ณด๊ธฐ ์์ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ปค๋ฐ์ด XNUMX, XNUMX, XNUMX์ด ๋์ ์ง์๋๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ์ด๋ ์ ํ ์ ์์ ์ด์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ autovacuum์ด ๋งค์ฐ ๋๋ฆฌ๊ณ ์ด์ํ๊ฒ ์์๋๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋์คํฌ์์ ์์ ํ์ผ์ ๋ณด์์ต๋๋ค. ์ฆ, ์ด๋ค์ ๋ชจ๋ ๋์คํฌ ๋ฌธ์ ์ ์งํ์ ๋๋ค.
์์คํ dmesg(์ปค๋ ๋ก๊ทธ)๋ฅผ ์กฐ์ฌํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์คํฌ ์ค ํ๋์ ๋ฌธ์ ๊ฐ ์์์ ํ์ธํ์ต๋๋ค. ๋์คํฌ ํ์ ์์คํ ์ ์ํํธ์จ์ด Raid์์ต๋๋ค. ์ฐ๋ฆฌ๋ /proc/mdstat๋ฅผ ์ดํด๋ณด๊ณ ํ๋์ ๋๋ผ์ด๋ธ๊ฐ ๋๋ฝ๋์์์ ํ์ธํ์ต๋๋ค. ์ฆ, 8๊ฐ์ ๋์คํฌ๋ก ๊ตฌ์ฑ๋ Raid๊ฐ ์๋๋ฐ ํ๋๊ฐ ์์ต๋๋ค. ์ฌ๋ผ์ด๋๋ฅผ ์์ธํ ๋ณด๋ฉด ์ถ๋ ฅ์์ โโsde๊ฐ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์กฐ๊ฑด๋ถ๋ก ๋งํ๋ฉด ๋์คํฌ๊ฐ ๋จ์ด์ก์ต๋๋ค. ์ด๋ก ์ธํด ๋์คํฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ Postgres ํด๋ฌ์คํฐ๋ก ์์ ํ ๋ ์์ฉ ํ๋ก๊ทธ๋จ์์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๊ฒฝ์ฐ Patroni๋ ์๋ฒ ์ํ, ๋์คํฌ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ์์ ์ด ์๊ธฐ ๋๋ฌธ์ Patroni๋ ์ด๋ค ์ ์ผ๋ก๋ ์ฐ๋ฆฌ๋ฅผ ๋์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด๋ฌํ ์ํฉ์ ์ธ๋ถ ๋ชจ๋ํฐ๋ง์ ํตํด ๋ชจ๋ํฐ๋งํด์ผ ํฉ๋๋ค. ์ธ๋ถ ๋ชจ๋ํฐ๋ง์ ๋์คํฌ ๋ชจ๋ํฐ๋ง์ ์ ์ํ๊ฒ ์ถ๊ฐํ์ต๋๋ค.
ํ์ฑ์ด๋ ์์น๋ ์ํํธ์จ์ด๊ฐ ์ฐ๋ฆฌ๋ฅผ ๋์ธ ์ ์์๊น? ์ฐ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๋์ Patroni๊ฐ DCS ํด๋ฌ์คํฐ์ ๊ณ์ ์ํธ ์์ฉํ๊ณ ๋ฌธ์ ๋ฅผ ๋ณด์ง ์์๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฐ ์ฐ๋ฆฌ๋ฅผ ๊ฑฐ์ ๋์์ฃผ์ง ์์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ์ฆ, DCS์ Patroni์ ๊ด์ ์์ ๋ณผ ๋ ์ค์ ๋ก ๋์คํฌ์ ๋ฌธ์ ๊ฐ ์์์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฉ์ฑ์ ๋ฌธ์ ๊ฐ ์์์ง๋ง ํด๋ฌ์คํฐ์๋ ๋ชจ๋ ๊ฒ์ด ์๋์์ต๋๋ค.
๋ด ์๊ฐ์ ์ด๊ฒ์ ๋ด๊ฐ ์์ฃผ ์ค๋ซ๋์ ์กฐ์ฌํ ๊ฐ์ฅ ์ด์ํ ๋ฌธ์ ์ค ํ๋์ด๋ฉฐ ๋ง์ ๋ก๊ทธ๋ฅผ ์ฝ๊ณ ๋ค์ ์ ํํ์ฌ ํด๋ฌ์คํฐ ์๋ฎฌ๋ ์ดํฐ๋ผ๊ณ ๋ถ๋ ์ต๋๋ค.
๋ฌธ์ ๋ ์ด์ ๋ง์คํฐ๊ฐ ์ผ๋ฐ ๋ณต์ ๋ณธ์ด ๋ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ, Patroni๊ฐ ์์ํ๊ณ Patroni๋ ์ด ๋ ธ๋๊ฐ ๋ณต์ ๋ณธ์ผ๋ก ์กด์ฌํ์ง๋ง ๋์์ ์ผ๋ฐ ๋ณต์ ๋ณธ์ด ์๋์ ๋ณด์ฌ์ฃผ์์ต๋๋ค. ์ด์ ๊ทธ ์ด์ ๋ฅผ ์๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด ๋ด๊ฐ ๊ทธ ๋ฌธ์ ์ ๋ถ์์์ ๊ฐ์งํ ๊ฒ์ ๋๋ค.
์ด๋ป๊ฒ ์์๋์์ต๋๊น? ์ด์ ๋ฌธ์ ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋์คํฌ ๋ธ๋ ์ดํฌ๋ก ์์๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ XNUMX, XNUMX์ด ๋์ ์ปค๋ฐ์ ํ์ต๋๋ค.
์ฐ๊ฒฐ์ด ๋๊ฒผ์ต๋๋ค. ์ฆ, ํด๋ผ์ด์ธํธ๊ฐ ๋์ด์ก์ต๋๋ค.
๋ค์ํ ์ ๋์ ๋งํ์ด ์์์ต๋๋ค.
๋ฐ๋ผ์ ๋์คํฌ ํ์ ์์คํ ์ ๋ฐ์์ด ์ข์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์๊ฒ ๊ฐ์ฅ ์ ๋นํ ๊ฒ์ ๋์ฐฉํ ์ฆ๊ฐ์ ์ธ ์ข ๋ฃ ์์ฒญ์ ๋๋ค. Postgres์๋ ์ธ ๊ฐ์ง ์ข ๋ฃ ๋ชจ๋๊ฐ ์์ต๋๋ค.
- ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ค์ค๋ก ์ฐ๊ฒฐ์ ๋์ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ์ฐ์ํฉ๋๋ค.
- ์ฐ๋ฆฌ๊ฐ ์ข ๋ฃํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ๊ฐ์ ๋ก ๋์ ๋ ๋น ๋ฆ ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ฆ์. ์ด ๊ฒฝ์ฐ Immediate๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ข ๋ฃํ๋ผ๊ณ ์ง์ํ์ง๋ ์๊ณ ๊ฒฝ๊ณ ์์ด ์ข ๋ฃ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ด์ ์ฒด์ ๋ ์ด๋ฏธ RST ๋ฉ์์ง(์ฐ๊ฒฐ์ด ์ค๋จ๋์๊ณ ํด๋ผ์ด์ธํธ๊ฐ ๋ ์ด์ ์ก์ ๊ฒ์ด ์๋ค๋ TCP ๋ฉ์์ง)๋ฅผ ๋ณด๋ ๋๋ค.
๋๊ฐ ์ด ์ ํธ๋ฅผ ๋ณด๋์ต๋๊น? Postgres ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ ์ด๋ฌํ ์ ํธ๋ฅผ ์๋ก์๊ฒ ๋ณด๋ด์ง ์์ต๋๋ค. ์ฆ, ์ด๊ฒ์ kill-9์ ๋๋ค. ๊ทธ๋ค์ ๊ทธ๋ฐ ๊ฒ๋ค์ ์๋ก์๊ฒ ๋ณด๋ด์ง ์๊ณ ๊ทธ๋ฐ ๊ฒ๋ค์๋ง ๋ฐ์ํฉ๋๋ค. ์ฆ, ์ด๊ฒ์ Postgres์ ๊ธด๊ธ ์ฌ์์์ ๋๋ค. ๋๊ฐ ๋ณด๋๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋๋ "๋ง์ง๋ง" ๋ช ๋ น์ ๋ณด์๊ณ ์ฐ๋ฆฌ์ ํจ๊ป ์ด ์๋ฒ์ ๋ก๊ทธ์ธํ ํ ์ฌ๋์ ๋ณด์์ง๋ง ๋๋ฌด ๋ถ๋๋ฌ์์ ์ง๋ฌธ์ ํ ์ ์์์ต๋๋ค. ์๋ง๋ kill -9 ์์ ๊ฒ์ ๋๋ค. ๋ก๊ทธ์ kill -9๊ฐ ํ์๋ฉ๋๋ค. Postgres๋ kill -9๊ฐ ํ์ํ๋ค๊ณ ๋งํ์ง๋ง ๋ก๊ทธ์์ ๋ณด์ง ๋ชปํ์ต๋๋ค.
์์ธํ ์ดํด๋ณด๋ฉด Patroni๊ฐ ๊ฝค ์ค๋ ์๊ฐ(54์ด) ๋์ ๋ก๊ทธ์ ์ฐ์ง ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ํ์์คํฌํ๋ฅผ ๋น๊ตํ๋ฉด ์ฝ 54์ด ๋์ ๋ฉ์์ง๊ฐ ์์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ์๊ฐ ๋์ ์๋ ํ์ผ์ด ์์์ต๋๋ค. Patroni๋ ์ฌ๊ธฐ์ ๋ค์ ํ๋ฅญํ ์ผ์ ํ์ต๋๋ค. ์ฐ๋ฆฌ์ ์ ์ค์น๋์ ๋ง๋ ์ ์์์ต๋๋ค. ๊ทธ์๊ฒ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ก์ด ์ฃผ์ธ์ ์ ์ถ์ด ์์๋์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ชจ๋ ๊ฒ์ด ์ ํ๋ ธ์ต๋๋ค. ์ฐ๋ฆฌ์ pgsql01์ ์๋ก์ด ๋ฆฌ๋๊ฐ ๋์์ต๋๋ค.
๋ง์คํฐ๊ฐ ๋ ๋ณต์ ๋ณธ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋ฒ์งธ ๋ต๋ณ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋ฒ์งธ ๋ณต์ ๋ณธ์ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๊ทธ๋ ๋ ์ฌ๊ตฌ์ฑ์ ์๋ํ์ต๋๋ค. ๋ด๊ฐ ์๊ธฐ๋ก ๊ทธ๋ ๋ recovery.conf๋ฅผ ๋ณ๊ฒฝํ๊ณ Postgres๋ฅผ ๋ค์ ์์ํ๊ณ ์ ๋ง์คํฐ์ ์ฐ๊ฒฐํ๋ ค๊ณ ํ์ต๋๋ค. ๊ทธ๋ ๋ ์๋ํ๊ณ ์๋ ๋ฉ์์ง๋ฅผ 10์ด๋ง๋ค ์์ฑํ์ง๋ง ์ฑ๊ณตํ์ง ๋ชปํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ์๋ ์ค์ ์ฆ์ ์ข ๋ฃ ์ ํธ๊ฐ ์ด์ ๋ง์คํฐ์ ๋์ฐฉํฉ๋๋ค. ๋ง์คํฐ๊ฐ ๋ค์ ์์๋ฉ๋๋ค. ๋ํ ์ด์ ๋ง์คํฐ๊ฐ ์ฌ๋ถํ ๋๊ธฐ ๋๋ฌธ์ ๋ณต๊ตฌ๊ฐ ์ค์ง๋ฉ๋๋ค. ์ฆ, ๋ณต์ ๋ณธ์ด ์ข ๋ฃ ๋ชจ๋์ ์๊ธฐ ๋๋ฌธ์ ๋ณต์ ๋ณธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์ด๋ ์์ ์์ ์๋ํ์ง๋ง ๋ณต์ ๊ฐ ์์๋์ง ์์์ต๋๋ค.
์ ์ผํ ์ถ์ธก์ recovery.conf์ ์ด์ ๋ง์คํฐ ์ฃผ์๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ง์คํฐ๊ฐ ๋ํ๋๋ฉด ๋ ๋ฒ์งธ ๋ณต์ ๋ณธ์ ์ฌ์ ํ โโ์ด์ ๋ง์คํฐ์ ์ฐ๊ฒฐ์ ์๋ํ์ต๋๋ค.
Patroni๊ฐ ๋ ๋ฒ์งธ ๋ณต์ ๋ณธ์์ ์์ํ์ ๋ ๋ ธ๋๊ฐ ์์๋์์ง๋ง ๋ณต์ ํ ์ ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ ๋ณต์ ์ง์ฐ์ด ํ์ฑ๋์์ต๋๋ค. ์ฆ, ์ธ ๊ฐ์ ๋ ธ๋๊ฐ ๋ชจ๋ ์ ์๋ฆฌ์ ์์์ง๋ง ๋ ๋ฒ์งธ ๋ ธ๋๊ฐ ๋ค์ฒ์ก์ต๋๋ค.
๋์์ ๊ธฐ๋ก๋ ๋ก๊ทธ๋ฅผ ๋ณด๋ฉด ํธ๋์ญ์ ๋ก๊ทธ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ณต์ ๊ฐ ์์๋์ง ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๋ง์คํฐ๊ฐ ์ ๊ณตํ๋ ํธ๋์ญ์ ๋ก๊ทธ(recovery.conf์ ์ง์ ๋จ)๋ ๋จ์ํ ํ์ฌ ๋ ธ๋์ ๋ง์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ๋๋ ์ค์๋ฅผ ์ ์ง๋ ๋ค. ์ฐ๋ฆฌ๊ฐ ์๋ชป๋ ๋ง์คํฐ์ ์ฐ๊ฒฐํ๊ณ ์๋ค๋ ๋ด ๊ฐ์ค์ ํ ์คํธํ๊ธฐ ์ํด ์์ recovery.conf์ ๋ฌด์์ด ์๋์ง ํ์ธํด์ผ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ด๊ฒ์ ์ฒ๋ฆฌํ๊ณ ์์๊ณ ๋์๊ฒ ๋ฐ์ํ์ง ์์๊ฑฐ๋ ๋ณต์ ๋ณธ์ด ๋ค์ณ์ ธ ๋ค์ ์ฑ์์ผํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ์ฆ, ์ด๋ป๊ฒ ๋ ๋ถ์ฃผ์ํ๊ฒ ์์ ํ์ต๋๋ค. ์ด๊ฒ์ ๋ด ๊ด์ ์ด์์ต๋๋ค.
30๋ถ ํ ๊ด๋ฆฌ์๊ฐ ์ด๋ฏธ ์์ต๋๋ค. ์ฆ, ๋ณต์ ๋ณธ์์ Patroni๋ฅผ ๋ค์ ์์ํ์ต๋๋ค. ๋๋ ์ด๋ฏธ ๊ทธ๊ฒ์ ๋๋ด๊ณ ๋ค์ ์ฑ์์ผํ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ Patroni๋ฅผ ๋ค์ ์์ํ๊ฒ ์ต๋๋ค. ์๋ง๋ ์ข์ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๊ฒ์ ๋๋ค. ๋ณต๊ตฌ๊ฐ ์์๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ์ง๊ฐ ์ด๋ฆฌ๋ฉด ์ฐ๊ฒฐ์ ์๋ฝํ ์ค๋น๊ฐ ๋์์ต๋๋ค.
๋ณต์ ๊ฐ ์์๋์์ต๋๋ค. ๊ทธ๋ฌ๋ XNUMX๋ถ ํ ๊ทธ๋ ๋ ํธ๋์ญ์ ๋ก๊ทธ๊ฐ ๊ทธ๋ ์๊ฒ ์ ํฉํ์ง ์๋ค๋ ์ค๋ฅ์ ํจ๊ป ๋จ์ด์ก์ต๋๋ค.
๋ค์ ์์ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค. Patroni๋ฅผ ๋ค์ ์์ํ๊ณ Postgres๋ฅผ ๋ค์ ์์ํ์ง ์๊ณ Patroni๋ฅผ ๋ค์ ์์ํ์ต๋๋ค. ๋ง์ ์ฒ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ณต์ ๊ฐ ๋ค์ ์์๋์์ง๋ง ํธ๋์ญ์ ๋ก๊ทธ์ ํ์๊ฐ ๋ฌ๋ผ ์ด์ ์์ ์๋์ ๋์ผํ์ง ์์์ต๋๋ค. ๋ณต์ ๊ฐ ๋ค์ ์ค์ง๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฉ์์ง๋ ์ด๋ฏธ ์ฝ๊ฐ ๋ฌ๋์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋์๊ฒ ๊ทธ๋ค์ง ์ ์ตํ์ง ์์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋์๊ฒ ๋ฐ์ํฉ๋๋ค. Postgres๋ฅผ ๋ค์ ์์ํ๋ฉด ํ์ฌ ๋ง์คํฐ์ ์ฒดํฌ ํฌ์ธํธ๋ฅผ ๋ง๋ค์ด ํธ๋์ญ์ ๋ก๊ทธ์ ํฌ์ธํธ๋ฅผ ์กฐ๊ธ ์์ผ๋ก ์ด๋ํ์ฌ ๋ณต๊ตฌ๊ฐ ๋ค๋ฅธ ์๊ฐ๋ถํฐ ์์๋๋๋กํฉ๋๊น? ๋ํ ์ฐ๋ฆฌ๋ ์ฌ์ ํ WAL์ ์ฃผ์์ ๊ฐ์ง๊ณ ์์์ต๋๋ค.
Patroni๋ฅผ ๋ค์ ์์ํ๊ณ ๋ง์คํฐ์์ ๋ช ๊ฐ์ ์ฒดํฌํฌ์ธํธ๋ฅผ ์ํํ์ผ๋ฉฐ ๋ณต์ ๋ณธ์ด ์ด๋ ธ์ ๋ ๋ช ๊ฐ์ ๋ค์ ์์์ ์ ์ํํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์์ด ๋์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์ ๋์์ด ๋์๊ณ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ค๋ซ๋์ ์๊ฐํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณต์ ๊ฐ ์์๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณต์ ๊ฐ ๋ ์ด์ ์ฐข์ด์ง์ง ์์์ต๋๋ค.
๋์๊ฒ ๊ทธ๋ฌํ ๋ฌธ์ ๋ ๋ ๋ถ๊ฐ์ฌ์ํ ๋ฌธ์ ์ค ํ๋์ด๋ฉฐ, ๊ทธ๊ณณ์์ ์ค์ ๋ก ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ์ฌ์ ํ ์์ํดํฉ๋๋ค.
์ฌ๊ธฐ์ ์ด๋ค ์๋ฏธ๊ฐ ์์ต๋๊น? Patroni๋ ์ค๋ฅ ์์ด ์๋ํ ๋๋ก ์๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋์์ ์ด๊ฒ์ด ์ฐ๋ฆฌ์๊ฒ ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ๋ค๋ 100% ๋ณด์ฅ์ ์๋๋๋ค. ๋ณต์ ๋ณธ์ด ์์๋ ์ ์์ง๋ง ๋ฐ์ฏค ์๋ํ๋ ์ํ์ผ ์ ์์ผ๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋๋ ๋ฐ์ดํฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ณต์ ๋ณธ๊ณผ ํจ๊ป ์๋ํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ผ๋ฌ ์ดํ์๋ ํด๋ฌ์คํฐ์ ๋ชจ๋ ๊ฒ์ด ์ ์์ธ์ง, ์ฆ ํ์ํ ๋ณต์ ๋ณธ ์๊ฐ ์๊ณ ๋ณต์ ์ง์ฐ์ด ์๋์ง ํญ์ ํ์ธํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉด์ ๊ถ์ฅ ์ฌํญ์ ์ ์ํ๊ฒ ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ๋ค์ ๋ ๊ฐ์ ์ฌ๋ผ์ด๋๋ก ๊ฒฐํฉํ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค. ์๋ง๋ ๋ชจ๋ ์ด์ผ๊ธฐ๋ ๋ ๊ฐ์ ์ฌ๋ผ์ด๋๋ก ๊ฒฐํฉ๋์ด ๋งํ ์ ์์ต๋๋ค.
Patroni๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ชจ๋ํฐ๋ง์ด ์์ด์ผ ํฉ๋๋ค. autofileover๊ฐ ์๋ค๋ ๊ฒ์ ๋ชจ๋ฅด๋ฉด ํด๋ฌ์คํฐ๋ฅผ ์ ์ดํ ์ ์๊ธฐ ๋๋ฌธ์ autofileover๊ฐ ์ธ์ ๋ฐ์ํ๋์ง ํญ์ ์์์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋์๋ค.
๊ฐ ํ์ผ๋ฌ ์ดํ์๋ ํญ์ ํด๋ฌ์คํฐ๋ฅผ ์๋์ผ๋ก ํ์ธํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํญ์ ์ต์ ๋ณต์ ๋ณธ ์๋ฅผ ์ ์งํ๊ณ , ๋ณต์ ์ง์ฐ์ด ์๊ณ , Patroni์ DCS ์์คํ ์ ํตํด ์คํธ๋ฆฌ๋ฐ ๋ณต์ ์ ๊ด๋ จ๋ ๋ก๊ทธ์ ์ค๋ฅ๊ฐ ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
์๋ํ๋ ์ฑ๊ณต์ ์ผ๋ก ์๋ํ ์ ์์ผ๋ฉฐ Patroni๋ ๋งค์ฐ ์ข์ ๋๊ตฌ์ ๋๋ค. ์๋ํ ์ ์์ง๋ง ํด๋ฌ์คํฐ๋ฅผ ์ํ๋ ์ํ๋ก ๊ฐ์ ธ์ค์ง๋ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋ํด ์์ง ๋ชปํ๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๊ณค๊ฒฝ์ ์ฒํ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ Patroni๋ ๋ง๋ณํต์น์ฝ์ด ์๋๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ ํ Postgres๊ฐ ์๋ํ๋ ๋ฐฉ์, ๋ณต์ ๊ฐ ์๋ํ๋ ๋ฐฉ์, Patroni๊ฐ Postgres์ ์๋ํ๋ ๋ฐฉ์, ๋ ธ๋ ๊ฐ ํต์ ์ด ์ ๊ณต๋๋ ๋ฐฉ์์ ์ดํดํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ์ํฉ๋๋ค.
์ง๋จ ๋ฌธ์ ์ ์ด๋ป๊ฒ ์ ๊ทผํฉ๋๊น? ๋ค๋ฅธ ํด๋ผ์ด์ธํธ์ ์์ ํ๊ณ ์๋ฌด๋ ELK ์คํ์ ๊ฐ์ง๊ณ ์์ง ์๊ณ 6๊ฐ์ ์ฝ์๊ณผ 2๊ฐ์ ํญ์ ์ด์ด ๋ก๊ทธ๋ฅผ ์ ๋ ฌํด์ผ ํ์ต๋๋ค. ํ ํญ์๋ ๊ฐ ๋ ธ๋์ ๋ํ Patroni ๋ก๊ทธ๊ฐ ์๊ณ ๋ค๋ฅธ ํญ์๋ Consul ๋ก๊ทธ ๋๋ ํ์ํ ๊ฒฝ์ฐ Postgres๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ์ง๋จํ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต์ต๋๋ค.
๋๋ ์ด๋ค ์ ๊ทผ ๋ฐฉ์์ ์ทจํ์ต๋๊น? ์ฒซ์งธ, ํ์ผ๋ฌ๊ฐ ์ธ์ ๋์ฐฉํ๋์ง ํญ์ ํ์ธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์๊ฒ ์ด๊ฒ์ ๋ถ์๋ น์ ๋๋ค. ํ์ผ๋ฌ ์ด์ , ํ์ผ๋ฌ ๋์, ํ์ผ๋ฌ ์ดํ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ์ดํด๋ด ๋๋ค. fileover์๋ ๋ ๊ฐ์ง ํ์๊ฐ ์์ต๋๋ค. ์์ ์๊ฐ๊ณผ ์ข ๋ฃ ์๊ฐ์ ๋๋ค.
๋ค์์ผ๋ก ํ์ผ๋ฌ ์ด์ ์ ์ด๋ฒคํธ์ ๋ํ ๋ก๊ทธ๋ฅผ ์ดํด๋ด ๋๋ค. ์ฆ, ํ์ผ๋ฌ๊ฐ ๋ฐ์ํ ์ด์ ๋ฅผ ์ฐพ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๊ทธ๋ฌํ ์ํฉ์ด ๋ฐ์ํ์ง ์๋๋ก ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๊ณ ์์ผ๋ก ๋ฌด์์ ํ ์ ์๋์ง ์ดํดํ๋ ๊ทธ๋ฆผ์ ์ ๊ณตํฉ๋๋ค(๊ฒฐ๊ณผ์ ์ผ๋ก ํ์ผ๋ฌ๊ฐ ์์ต๋๋ค).
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ณดํต ์ด๋๋ฅผ ๋ด ๋๊น? ๋๋ ๋ณธ๋ค:
- ๋จผ์ Patroni ๋ก๊ทธ๋ก ์ด๋ํฉ๋๋ค.
- ๋ค์์ผ๋ก Patroni ๋ก๊ทธ์์ ์ฐพ์ ๋ด์ฉ์ ๋ฐ๋ผ Postgres ๋ก๊ทธ ๋๋ DCS ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค.
- ๋ํ ์์คํ ๋ก๊ทธ๋ฅผ ํตํด ํ์ผ๋ฌ์ ์์ธ์ ํ์ ํ ์๋ ์์ต๋๋ค.
Patroni์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํฉ๋๊น? ์ ๋ Patroni์ ๋งค์ฐ ์ข์ ๊ด๊ณ๋ฅผ ์ ์งํ๊ณ ์์ต๋๋ค. ์ ์๊ฐ์๋ ์ด๊ฒ์ด ์ค๋๋ ์ต๊ณ ์ ๋๋ค. ๋๋ ๋ค๋ฅธ ๋ง์ ์ ํ์ ์๊ณ ์์ต๋๋ค. ์ด๋ค์ Stolon, Repmgr, Pg_auto_failover, PAF์ ๋๋ค. 4 ๋๊ตฌ. ๋๋ ๊ทธ๋ค ๋ชจ๋๋ฅผ ์๋ํ๋ค. ์ ๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ํจํธ๋ก๋์ ๋๋ค.
๊ทธ๋ค์ด ์ ์๊ฒ "Patroni๋ฅผ ์ถ์ฒํฉ๋๊น?"๋ผ๊ณ ๋ฌป๋๋ค๋ฉด. ๋๋ Patroni๋ฅผ ์ข์ํ๊ธฐ ๋๋ฌธ์ ์๋ผ๊ณ ๋งํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ๊ทธ๊ฒ์ ์๋ฆฌํ๋ ๋ฒ์ ๋ฐฐ์ ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ๊ฐ ์ธ๊ธํ ๋ฌธ์ ์ธ์ Patroni์ ์ด๋ค ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์๋์ง ์๊ณ ์ถ์ผ์๋ฉด ์ธ์ ๋ ์ง ํ์ด์ง๋ฅผ ํ์ธํ์ธ์.
๋ฐ์ ์ด์ ์๋ ์ฌ๋๋ค์ ๋ํ ํฅ๋ฏธ๋ก์ด ์ด์ผ๊ธฐ๊ฐ ์์ต๋๋ค. ๋งค์ฐ ์ ์ตํฉ๋๋ค. ๊ทํ๋ ๊ทธ๋ ๊ฒ ํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ ์ฝ๊ณ ์ดํดํฉ๋๋ค. ๋๋ ๋ ์์ ์ ๋๋ฑ ๊ฑฐ๋ ธ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ Zalando, ์ฆ Alexander Kukushkin๊ณผ Alexey Klyukin์๊ฒ ํฐ ๊ฐ์ฌ๋ฅผ ์ ํ๊ณ ์ถ์ต๋๋ค. Aleksey Klyukin์ ๊ณต๋ ์ ์ ์ค ํ ๋ช ์ด๋ฉฐ ๋ ์ด์ Zalando์์ ์ผํ์ง ์์ง๋ง ์ด ์ ํ์ผ๋ก ์์ ์ ์์ํ ๋ ์ฌ๋์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋ Patroni๊ฐ ๋งค์ฐ ๋ฉ์ง ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ๊ทธ๋ ๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ด ๊ธฐ์๊ณ ๊ทธ๋ ์๊ฒ ํฅ๋ฏธ ๋กญ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Patroni์ ํจ์น๋ฅผ ์์ฑํ๋ ๋ชจ๋ ๊ธฐ์ฌ์์๊ฒ ํฐ ๊ฐ์ฌ๋ฅผ ๋๋ฆฝ๋๋ค. ํจํธ๋ก๋๊ฐ ๋์ด๊ฐ ๋ค์๋ก ๋ ์ฑ์ํด์ง๊ณ , ๋ฉ์๊ณ , ๋ฅ๋ฅ ์ ์ด ๋๊ธธ ๋ฐ๋๋๋ค. ์ด๋ฏธ ๊ธฐ๋ฅ์ ์ด์ง๋ง ๋ ๋์์ง๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ฐ๋ผ์ Patroni๋ฅผ ์ฌ์ฉํ ๊ณํ์ด๋ผ๋ฉด ๋๋ ค์ํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ ์ข์ ์๋ฃจ์ ์ด๋ฉฐ ๊ตฌํํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๊ฒ ๋ค์ผ. ์ง๋ฌธ์ด ์์ผ๋ฉด ๋ฌผ์ด๋ณด์ญ์์ค.
์ง๋ฌธ
์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ํ์ผ๋ฌ ์ดํ์๋ ๋งค์ฐ ์ฃผ์ ๊น๊ฒ ์ดํด๋ด์ผ ํ๋ ๊ฒฝ์ฐ ์๋ ํ์ผ๋ฌ๊ฐ ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ ๋ฌผ๊ฑด์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ ์ ํจ๊ปํ ์ง 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