이 이미지는 IP 기반 인터페이스 자동 감지 및 환경 변수 설정을 지원하는 커스텀 Keepalived 이미지입니다.
컨테이너 실행 시 compose.yml 또는 docker run 명령어에 다음 환경 변수를 설정해주세요.
| 변수명 | 설명 | 예시 |
|---|---|---|
| KEEPALIVED_INTERFACE_IP | (권장) 이 IP를 가진 인터페이스를 자동으로 찾아 VIP를 할당합니다. | 172.16.50.222 |
| KEEPALIVED_INTERFACE | (선택) 인터페이스 이름을 직접 지정합니다. INTERFACE_IP가 설정되면 이 값은 무시될 수 있습니다. |
eth0 |
| KEEPALIVED_ROUTER_ID | VRRP Router ID (0~255). 네트워크 내 유일한 값이어야 합니다. | 52 |
| KEEPALIVED_PRIORITY | 노드 우선순위. 숫자가 높을수록 MASTER가 될 확률이 높습니다. | 100 |
| KEEPALIVED_PASSWORD | Peer 간 인증 패스워드. 모든 노드가 동일해야 합니다. | apm |
| KEEPALIVED_VIRTUAL_IPS | 서비스할 가상 IP (VIP). 반드시 서브넷 마스크(CIDR)를 포함해야 합니다. | 172.16.50.12/24 |
| KEEPALIVED_UNICAST_PEERS | 클러스터링할 상대방 노드들의 실제 IP 목록 (콤마 구분). | 172.16.50.221,172.16.50.223 |
| KEEPALIVED_STATE | 초기 상태 (MASTER or BACKUP). nopreempt 사용 시 모든 노드를 BACKUP으로 설정하세요. |
BACKUP |
같은 네트워크 대역 내에서 Router ID가 중복되면 패킷 충돌이 발생합니다. 아래 목록을 참고하여 중복되지 않는 ID를 사용하세요.
- 51: OpenStack
- 52: APM Nginx
- 53: APM Backend (구분 필수)
services:
keepalived:
image: my-custom-keepalived:latest
network_mode: "service:nginx" # 타겟 컨테이너의 네트워크 사용
cap_add:
- NET_ADMIN
- NET_BROADCAST
environment:
- KEEPALIVED_INTERFACE_IP=172.16.50.222
- KEEPALIVED_ROUTER_ID=52
- KEEPALIVED_PRIORITY=100
- KEEPALIVED_PASSWORD=password
- KEEPALIVED_VIRTUAL_IPS=172.16.50.12/24 # /24 누락 주의!
- KEEPALIVED_UNICAST_PEERS=172.16.50.221,172.16.50.223
- KEEPALIVED_STATE=BACKUP