ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toInfrastructure
์๋ฌธ ์ฝ๊ธฐ
๋ฐ์ดํฐ ํฌํธ ์๋ UPS๋ฅผ ์ํ Router Ping ๊ธฐ๋ฐ Graceful Shutdown ๊ตฌํ
๐๏ธ Building my home server: Part 9
AI ์์ฝ
Context
๋ฐ์ดํฐ ์ธํฐํ์ด์ค๊ฐ ์๋ Consumer-grade UPS ์ฌ์ฉ์ผ๋ก ์ธํด ์ ์ ์ฐจ๋จ ์ ์๋ฒ์ Graceful Shutdown ๋ถ๊ฐ ์ํฉ ๋ฐ์. ๊ฐ์์ค๋ฌ์ด ์ ์ ์ข ๋ฃ์ ๋ฐ๋ฅธ Filesystem ์์ ๋ฐ Docker Container ๋ฐ์ดํฐ ์ ์ค ์ํ์ ํด๊ฒฐํ๊ธฐ ์ํ ์๋ํ ๊ธฐ์ ํ์.
Technical Solution
- Router์ ์ ์ ์์กด์ฑ์ ์ด์ฉํ Network-based Detection ์ฒด๊ณ ์ค๊ณ
- 30์ด ๊ฐ๊ฒฉ์ Ping ์ ์ก๊ณผ 10ํ ์ฐ์ ์คํจ ์ 5๋ถ ๋ด ์ข ๋ฃํ๋ Threshold ๊ธฐ๋ฐ ์ํ ํ๋ณ ๋ก์ง ๊ตฌํ -- Router Reboot์ Power Outage ๊ตฌ๋ถ์ ์ํด 5๋ถ์ด๋ผ๋ ์๊ฐ์ ์๊ณ์น๋ฅผ ์ค์ ํ Trade-off ์ ์ฉ
- node-exporter์ Textfile Collector๋ฅผ ํตํ Prometheus ๋ฉํธ๋ฆญ ๋ ธ์ถ๋ก ๋ณ๋ Exporter ์๋ ๊ด์ธก์ฑ ํ๋ณด
- Ansible Playbook์ ํตํ ์คํฌ๋ฆฝํธ ๋ฐฐํฌ ๋ฐ @reboot Cron Job ๋ฑ๋ก์ผ๋ก ์ค์ ์๋ํ ๋ฐ ๋ณต๊ตฌ ์ฒด๊ณ ๊ตฌ์ถ
์ค์ฒ ํฌ์ธํธ
- ํ๋์จ์ด ์ ์ฝ ์ ์ฃผ๋ณ ์ฅ์น์ ์ํ ๋ณํ๋ฅผ ํตํ ๊ฐ์ ํ์ง ๊ฐ๋ฅ ์ฌ๋ถ ๊ฒํ - ์ผ์์ ์ฅ์ ์ ์น๋ช ์ ์ฅ์ ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ์ ์ ํ Retry ํ์ ๋ฐ Timeout ์ค์ - ์ถ๊ฐ ์๋น์ค ์ค์น ์์ด ๊ธฐ์กด Monitoring Agent์ ํ์ฅ ๊ธฐ๋ฅ(Textfile Collector ๋ฑ) ํ์ฉ ๋ฐฉ์ ๊ณ ๋ ค