MySQL Orchestrator๋ก High Availability(HA) ๊ตฌ์ถ
MySQL Orchestroator๋?
MySQL Orchestrator๋ GitHub์ openark/orchestrator ํ๋ก์ ํธ์์ ํธ์คํ
๋๊ณ ์๋ ์คํ์์ค ๋๊ตฌ๋ก, MySQL ๋ณต์ (Replication) ํ ํด๋ก์ง๋ฅผ ๊ด๋ฆฌํ๊ณ ๊ณ ๊ฐ์ฉ์ฑ(HA)์ ํ๋ณดํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
Orchestrator๋ฅผ ๋์ ํ๋ฉด ๋ณต์กํ MySQL ๋ณต์ ๊ตฌ์กฐ๋ฅผ ์ง๊ด์ ์ธ UI๋ก ์๊ฐํํ ์ ์์ผ๋ฉฐ, ์๋ก ์ถ๊ฐ๋๋ ์ธ์คํด์ค๋ ์๋์ผ๋ก ๊ฐ์งํฉ๋๋ค. ๋ํ, UI ์์์ ๋๋๊ทธ ์ค ๋๋กญ๋ง์ผ๋ก ๋ณต์ ์ฐ๊ฒฐ ๊ตฌ์กฐ๋ฅผ ์์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
์ฌ๋ฌ ์ฅ์ ์ด ์์ง๋ง, Orchestrator์ ๊ฐ์ฅ ํต์ฌ์ ์ธ ๊ธฐ๋ฅ์ ์๋ํ๋ ๋ณต๊ตฌ(Auto Failover)์
๋๋ค. Master/Slave ๊ตฌ์กฐ์์ Master ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋, ๊ฐ๋ฐ์๊ฐ ๋ฏธ๋ฆฌ ์ค์ ํ ๊ท์น์ ๋ฐ๋ผ ๊ฐ์ฅ ์ ํฉํ Slave๋ฅผ ์ฐพ์ Master๋ก ์น๊ฒฉ์ํต๋๋ค. ์ด๋ฅผ ํตํด ์๋ ๊ฐ์
์์ด ์๋น์ค์ ๊ฐ์ฉ์ฑ์ ์ง์์ ์ผ๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค.
Orchestrator GUI

master db์ ์ธ์คํด์ค๋ฅผ ๋ฑ๋กํ๋ฉด ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํด๋ฌ์คํฐ ํํฉ์ด ๋ํ๋ฉ๋๋ค.
ํ๋์ ์: ํ์ฌ ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ ๋ด์ ์ ์์ ์ธ ์ธ์คํด์ค๋ฅผ ์๋ฏธํฉ๋๋ค.
์ฃผํฉ์/๋นจ๊ฐ์ ์์ ๋ณต์ ์ง์ฐ์ด ๋ฐ์ํ๊ฑฐ๋, ์ ๊ทผํ ์ ์๋ ๋ฑ ์ํ๊ฐ ์ข์ง ์์ Slave ์ธ์คํด์ค๋ฅผ ๋ํ๋ด๊ณ , ๊ฒ์์ ์: ์๋ต์ด ์๊ฑฐ๋(Down), ๊ด๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ ์๋ฒ๋ฅผ ์๋ฏธํฉ๋๋ค.

์์ธ ๋์๋ณด๋ ํ๋ฉด์ ๋ณด๋ฉด, Master DB๋ง ๋ฑ๋กํ๋๋ผ๋ ์ฐ๊ฒฐ๋ Slave DB๊น์ง ์๋์ผ๋ก ํ์งํ์ฌ ํ ํด๋ก์ง ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ค๋๋ค. ์๋ฅผ ๋ค์ด 1090b:3306(Master)๊ณผ 428c4:3306(Slave)์ ๊ด๊ณ๊ฐ ์ฐ๊ฒฐ์ ์ผ๋ก ํํ๋ฉ๋๋ค.
์๋ Failover
Orchestrator์ Failover ๋ชจ๋๋ ๊ธฐ๋ณธ๊ฐ(Default)์ด '์๋'์ผ๋ก ์ค์ ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ณ๋ ์ค์ ์์ด๋ ์ฅ์ ๋ฐ์ ์ ๊ด๋ฆฌ์๊ฐ ์ง์ ์ธ์งํ๊ณ ์กฐ์นํด์ผ ํฉ๋๋ค.

๊ธฐ์กด Master DB ์๋ฒ๋ฅผ ์ข ๋ฃํ๋ฉด ๋์๋ณด๋์ ์๋ต ์์(๊ฒ์์ ๋ฑ)์ผ๋ก ์ํ๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค.

์ฅ์ ๊ฐ ๋ฐ์ํ Master ์ธ์คํด์ค ๋ฉ๋ด์์ Recover๋ฅผ ํด๋ฆญํ๋ฉด, Failover ์กฐ์น๊ฐ ๊ฐ๋ฅํ ์๋ฒ ๋ฆฌ์คํธ๊ฐ ๋ํ๋ฉ๋๋ค. (Master 1๋, Slave 1๋ ๊ตฌ์ฑ์ด์๋ค๋ฉด Slave ์ธ์คํด์ค๊ฐ ํ๋ณด๋ก ๋ ธ์ถ๋ฉ๋๋ค.)

์๋์ผ๋ก Failover๋ฅผ ์ํํ๋ฉด ์ ํ๋ Slave ์ธ์คํด์ค๊ฐ ์๋ก์ด Master๋ก ์น๊ฒฉ๋๋ฉฐ, ๊ธฐ์กด ํด๋ฌ์คํฐ ๊ตฌ์กฐ์์ ๋ถ๋ฆฌ๋์ด ๋ ๋ฆฝ์ ์ธ Master ์ญํ ์ ์ํํ๊ฒ ๋ฉ๋๋ค.

์ด ๊ณผ์ ์์ ๋์ฌ๊ฒจ๋ณผ ์ ์ read_only ์์ฑ์
๋๋ค.
๊ธฐ์กด Slave 428c4 ์ธ์คํด์ค๋ read_only๊ฐ ์ผ์ ธ ์์์ง๋ง, Master๋ก ์น๊ฒฉ๋๋ ์๊ฐ Orchestrator๊ฐ ์ด๋ฅผ ์๋์ผ๋ก ํด์ ํฉ๋๋ค. ์ด๋ ApplyMySQLPromotionAfterMasterFailover ์ค์ (๊ธฐ๋ณธ๊ฐ true)์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค.
์๋ Failover
์๋ ๋ณต๊ตฌ๋ฅผ ํ์ฑํํ๊ธฐ ์ํด์๋ Orchestrator์ ์ค์ ํ์ผ์ ์์ ํด์ผ ํฉ๋๋ค.
์์ธํ ํ๋ผ๋ฏธํฐ๋ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ค ์ ์์ผ๋ฉฐ, ์ฃผ์ ์ค์ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
RecoveryPeriodBlockSeconds
๋ ธ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํด์ ๋ณต๊ตฌ๋๋ค๋ฉด, ํด๋น ํ๋ผ๋ฏธํฐ ๊ฐ(์๊ฐ) ๋์ ๋ณต๊ตฌ๋ฅผ block ํ๋ค. ์ฆ, ํ๋ฒ recover๊ฐ ๋๊ณ ์ง์ ํ ์๊ฐ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ๋ณต๊ตฌ๋์ง ์๋๋ค.
3600
30
RecoverMasterClusterFilters
๋ง์คํฐ ์ฅ์ ์ ๋ํด์ auto failover๋ฅผ ์งํํ ํด๋ฌ์คํฐ๋ฅผ ์ง์ ํ๋ ์ต์ ์ด๋ค. ์๋ฅผ๋ค์ด "slave1"๋ก ๋ช ์ํ๋ค๋ฉด ์ฌ๋ฌ ํด๋ฌ์คํฐ(Replica Set)์ด ์กด์ฌํ ๋, "slave1"์ ๋ํด์๋ง ์๋ ๋ง์คํฐ ์ฅ์ ๋ณต๊ตฌ๊ฐ ์คํ๋๋ค.
[ "master_pattern" ]
["*"]
RecoverIntermediateMasterClusterFilters
๋ณต์ ํ ํด๋ก์ง์์ ์ค๊ฐ ๋ง์คํฐ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋, ์ด๋ค ํด๋ฌ์คํฐ์์ ์๋ ๋ณต๊ตฌ๋ฅผ ์ํํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ํํฐ์ด๋ค.
["intermediate_master_pattern" ]
["*"]
PromotionIgnoreHostnameFilters
์ด ํํฐ์ ์ง์ ํ slave ๋ ธ๋๋ ๋ง์คํฐ๋ก ์น๊ฒฉ๋์ง ์๋๋ค.
[]
[]
auto failover๋ฅผ ํ์ธํ๊ธฐ ์ํด ๋ณ๊ฒฝํ ๊ตฌ์ฑ์ด๋ฉฐ, ์ง์ ๊ฐ์ ๋ช
์ํ ์ ์์ง๋ง, ํจํด์ด๋ ์ ๊ท์์ผ๋ก๋ ํํ์ด ๊ฐ๋ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด "*"๋ ๋ชจ๋ ํด๋ฌ์คํฐ๋ฅผ ์๋ฏธํฉ๋๋ค.
RecoverIntermediateMasterClusterFilters์ ๋ํด์ ์ข๋ ๋ค๋ฃจ์๋ฉด,
๋ณต์ ํ ํด๋ก์ง๊ฐ ์์ ๊ฐ์ ๊ตฌ์กฐ์ผ ๋, ์ค๊ฐ ๋ง์คํฐ๊ฐ ์คํจํ๋ฉด ๊ทธ ์๋ ์ฌ๋ ์ด๋ธ๋ค์ด ์ํฅ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ค๊ฐ ๋ง์คํฐ์์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ฌ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ฉด, ํํฐ์ ์ค์ ๋ ๋ณต๊ตฌ ๋์ ํด๋ฌ์คํฐ์ ๋ํด ์๋ ๋ณต๊ตฌ๋ฅผ ์ํํฉ๋๋ค.

์ค์ ์ ๋ณ๊ฒฝํ๊ณ ์ ์ฉํ๋ฉด, ๋์๋ณด๋ ์ฐ์ธก ์๋จ์ ํํธ ์์ด์ฝ์ด ํ์๋ฉ๋๋ค. ์ด๋ ํด๋น ํด๋ฌ์คํฐ์ ๋ํด ์๋ ๋ณต๊ตฌ(Auto Failover)๊ฐ ํ์ฑํ๋์์์ ์๋ฏธํฉ๋๋ค. ์ด ์ํ์์ Master ๋ ธ๋๋ฅผ ๊ฐ์ ๋ก ๋ค์ด์ํค๋ฉด, Orchestrator๊ฐ ์ฆ์ ๊ฐ์งํ์ฌ Slave๋ฅผ Master๋ก ์น๊ฒฉ์ํค๋ ๊ณผ์ ์ ํ์ธํ ์ ์์ต๋๋ค.
์ถ๊ฐ ๊ณ ๋ ค ์ฌํญ
1. ์๋ํฌ์ธํธ ๋ณ๊ฒฝ
Orchestrator๋ DB ์์ฒด์ ์น๊ฒฉ์ ์์ฃผ ์ ์ํํฉ๋๋ค. ํ์ง๋ง ์ ํ๋ฆฌ์ผ์ด์ (WAS)์ด ๋ฐ๋ผ๋ณด๋ DB ์ฃผ์๊น์ง ์๋์ผ๋ก ๋ฐ๊ฟ์ฃผ์ง๋ ์์ต๋๋ค.
๋ฌธ์ ์ : DB๋ Failover ๋์์ง๋ง, ์น ์๋ฒ๋ ์ฌ์ ํ ์ฃฝ์ด์๋ ๊ตฌ(Old) Master์ IP๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์์ด ์๋น์ค ์ฅ์ ๊ฐ ์ง์๋ ์ ์์ต๋๋ค.
Orchestrator์ Hooks ๊ธฐ๋ฅ(
PostMasterFailoverProcesses)์ ํ์ฉํ๊ธฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ฑ๋กํ์ฌ DNS ๋ ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋,
HAProxy ์ค์ ์ ๋ณ๊ฒฝํ๊ฑฐ๋,
VIP(Virtual IP)๋ฅผ ์๋ก์ด Master๋ก ์ด๋์ํค๋ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋๋ก ์ค์ ํด์ผ HA๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
2. ๊ณ ๊ฐ์ฉ์ฑ ํ๋ณด
Orchestrator ์๋ฒ ์์ฒด๊ฐ ์ฃฝ์ผ๋ฉด ๋ณต๊ตฌ๋ฅผ ํด์ค ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ค๋ฌด์์๋ Orchestrator ์๋ฒ๋ ์ฌ๋ฌ ๋๋ก ๊ตฌ์ฑํ์ฌ Orchestrator ์์ฒด์ ๊ณ ๊ฐ์ฉ์ฑ์ ํ๋ณดํ๋ ๊ฒ์ด ์ข๊ฒ ์ต๋๋ค.
Last updated