DRX 를 구성하는 환경에 대한 다음 항목들의 사전조사를 통해 버퍼 운영 정책을 결정하고 DRX 가 구동하는데 적합한 사양과 구성방식을 결정합니다.
2.1. 운영환경 사전조사
2.1.1. 운영체제
- Windows(2008 이상) 64비트 / Linux (CentOS 6.4 이상) 64비트
2.1.2 운영머신 사양
- 최소 1GHz 이상의 x86/x64 호환 프로세서(2GHz 이상 권장), 최소 4 core 이상 권장
- 최소 4G 이상 물리메모리
- 최대 10TB 용량 디스크
2.1.3. 복제 리소스 개수
- 최대 100 채널
2.1.4. 운영서버 I/O 부하 측정
- 운영서버 복제 대상 디스크의 읽기/쓰기 I/O 데이터 측정 (최소 1~2주일 기준 평균/peak I/O)
- 측정 방법
- Windows : 성능모니터 도구 이용 디스크 I/O 데이터 취합
- Linux: iostat 등 유틸리티 이용 디스크 I/O 데이터 취합
- 측정결과에 따라 버퍼운영 정책 결정
- 압축, 암호화 정책 결정
2.1.5. 복제 대역
- 최소 10Mbps~100Mbps 요구
2.2. DRX 구성
운영환경의 I/O 부하도 및 압축 사용 여부에 따라 로컬 구성방식 또는 전용 구성 방식을 사용할 지 결정합니다.
- 로컬 구성 방식이 일반적이나 복제 부하가 크고 WAN 구간 가속이 필요할 경우 전용 구성 방식을 권고 합니다.
2.3. 버퍼 운영 정책
- DRX의 물리적 버퍼 사양 계측을 위해 네트워크 대역, 운영 머신 I/O 부하도에 대한 사전조사가 필요 합니다.
- 사전 조사 항목
- 운영머신의 리소스당 평균 I/O 양
- 최대 I/O 양
- 최대 I/O 지속시간
- 운영 머신의 평균 I/O 와 최대 I/O 의 수치는 적절한 버퍼링 환경을 구축하기 위한 근거 자료가 됩니다.
- 사전 데이터 미확보 시 하기 3번 case 기준의 권장 버퍼 사양에 따라 구성 후 운영 및 버퍼 크기에 대한 조정(튜닝) 과정이 필요 합니다.
case | 버퍼 | 비고 | |
---|---|---|---|
1 | 평균 I/O < 대역폭 < 최대 I/O | (최대 I/O - 대역폭) * 최대 I/O 지속시간 | 예) 평균 50MB/s I/O, 100Mbps 대역폭, 최대 200MB/s, 최대 I/O 10초간 지속 (200MB/s - 약 10MB/s) * 10초 = 약 2GB |
2 | 대역폭 < 평균 I/O < 최대 I/O |
| |
3 | 평균 I/O < 최대 I/O < 대역폭 |
| 예)1Gbps 대역폭, 1G Buffer = 최대 100MB/s I/O를 약 10초간 유지 가능 |
2.3.1 혼잡 정책
- 혼잡상태란 복제부하가 가중되어 DRX의 버퍼링할 여유공간이 남아 있지 않아 버퍼링이 불가한 상태를 의미합니다.
- 혼잡(congestion)정책: DRX의 버퍼가 혼잡상태에 진입할 경우 DRBD에서 대응하는 정책입니다.
- 혼잡정책 설정 방법
- drbd.conf
resource r0 { proxy { memlimit 1G: } net { on-congestion pull-ahead; congestion-fill 950M; } }
- memlimit : DRX 버퍼
- on-congestion : 혼잡정책 설정
- congestion-fill : 혼잡인지 시점 설정, 위 예시에서 950M 바이트 데이터가 버퍼링되는 시점을 혼잡시점으로 인지
- 혼잡상황에서의 DRBD의 대응 정책은 3가지이며 WAN 구간 비동기 복제 운영 시에는 Ahead 모드의 설정을 권고 합니다.
- Block: 버퍼가 비워질 때 까지(버퍼의 큐잉할 수 있을 때까지) I/O 대기 합니다. (기본값)
- Disconnect: 복제 연결을 단절합니다. (StandAlone 상태로 진입), Linux DRBD 미지원
- Ahead: 지연 복제 모드 진입. (복제 연결은 유지하되 복제는 중단, 로컬 I/O 는 oos 로 기록), 혼잡 해제 시 oos 에 대한 리싱크 수행.
2.3.2. 버퍼 조정 가이드
- DRBD의 Ahead 모드(지연복제) 비동기 복제 구성을 전제로 합니다.
- 복제 연결이 유지되는 구간의 측정치에 대해서만 고려합니다.
- 24~72시간 기준으로 다음의 방법을 통해 DRBD가 Ahead 모드로 진입하는 회수(혼잡 진입 회수)를 취합합니다.
- drbd 로그상의 "Congestion-fill threshold reached" 의 출력 회수 취합
- drbdsetup events2 명령을 통한 Ahead 진입 회수 확인
- 취합한 혼잡진입 회수를 기준으로 버퍼의 크기 사양의 적절성을 판단합니다.
- 혼잡빈도가 잦은 경우 후속 리싱크 구간의 증가로 인해 원격지 데이터가 Inconsistent 가 되는 빈도가 높을 경우 버퍼 크기의 증설을 고려합니다.
- 버퍼를 증설 했음에도 혼잡구간이 빈도가 낮아지지 않을 경우 압축에 대해 고려합니다.
2.3.3. 물리 메모리 사양
- WAN 100Mbps 대역폭, 최대 I/O 200MB/s , 최대 I/O 지속시간 10초 기준
리소스 개수 | DRX 기본 메모리 | 송신 버퍼용 메모리 | 압축/암호화 버퍼 | 메모리 요구사양 | 운영서버 메모리 권장 사양 |
---|---|---|---|---|---|
1 | 100MB | 1 * (200MB-10MB) * 10초 = 1.9GB | 1 * 약 100MB | 2 .1GB | 4GB 이상 |
5 | 100MB | 5 * (200MB-10MB) * 10초 = 9.5GB | 5 * 약 100MB | 10.1GB | 16GB 이상 |
10 | 100MB | 10 * (200MB-10MB) * 10초 = 19GB | 10 * 약 100MB | 20.1GB | 32GB 이상 |
20 | 100MB | 20 * (200MB-10MB) * 10초 = 38GB | 20 * 약 100MB | 40.1GB | 64GB 이상 |
50 | 100MB | 50 * (200MB-10MB) * 10초 = 95GB | 50 * 약 100MB | 100.1GB | 128GB 이상 |
100 | 100MB | 100 * (200MB-10MB) * 10초 = 190GB | 100 * 약 100MB | 200.1GB | 256GB 이상 |
- DRX 서버 최소 메모리 사양 공식: 100MB + 리소스 개수 * (최대 I/O(MB/s) - 대역폭(MB/s)) * 최대 I/O 지속시간(초) + 리소스 개수 *(압축/암호화 버퍼)
- 일정 기간 내에 측정한 최대 I/O가 복제 대역폭보다 낮다고 해서 DRX 버퍼링을 고려하지 않는 것은 바람직 하지 않습니다. 운영환경의 애플리케이션의 특성에 따라 최대 I/O 가 급등하는 상황에 대비할 필요가 있으므로 DRX 버퍼는 여유공간을 갖고 구성하는것이 바람직 합니다.
- 최대 I/O 가 대역폭보다 낮은 수치일 경우 계산 수식상 음수가 될 수 있으므로 이럴 경우 "최대 I/O(MB/s) - 대역폭(MB/s)"의 값은 최소한 1MB/s이상의 값으로 계산합니다.
- 여기서 대역폭의 값은 WAN 환경에서 가변적 수치입니다. WAN 구간 대역폭은 일반적으로 보장 대역폭이 아닌 네트웍 상황에 따라 변동이 심한 가변대역의 특성을 가지기 때문에 통상 WAN 대역폭은 10~100Mbps 정도의 대역으로 간주하여 1MB/s ~10MB/s 로 추산하는 것이 버퍼링 관점에서 적당합니다.
- 일정 기간 내에 측정한 최대 I/O가 복제 대역폭보다 낮다고 해서 DRX 버퍼링을 고려하지 않는 것은 바람직 하지 않습니다. 운영환경의 애플리케이션의 특성에 따라 최대 I/O 가 급등하는 상황에 대비할 필요가 있으므로 DRX 버퍼는 여유공간을 갖고 구성하는것이 바람직 합니다.
- 메모리(버퍼)의 크기는 복제 도중 네트워크 혼잡상황에 따른 버퍼 넘침(overflow) 이후의 DRBD 비동기 복제 운영 정책과 관련되며 버퍼의 크기에 따라 혼잡상태로 진입하는 빈도가 달라집니다.(버퍼가 작을 수록 혼잡빈도가 높아짐)
- 위 예시에서 1개의 복제 세션(WAN 100Mbps, 최대 I/O 200MB/s로 추산) 운영의 경우 요구되는 메모리는 2.9GB(4G 권장) 이며 최대 I/O 가 지속될 때 약 10초 후 혼잡 상태에 진입하게 됨을 의미 합니다.