09ConnectControl — 서버 부하 분산ConnectControl — 서버 부하 분산
ConnectControl 은 Check Point Security Gateway나 Cluster를 지나 그 뒤에 있는 여러 서버로 가는 트래픽을 분산 해 주는 Check Point 솔루션입니다. 게이트웨이가 이미 트래픽을 들여다보고 있으니, 부하 분산을 얹는다고 해서 Security Gateway나 Cluster Member의 메모리·CPU를 추가로 잡아먹지 않 는다는 점이 큰 장점입니다. 이 장은 ConnectControl이 어떻게 동작하는지, 그리고 환경에 맞게 설정하는 전체 절차를 빠짐없이 풀어 둡니다.
동작 원리 — Logical Server와 패킷 흐름
핵심 개념은 Logical Server 입니다. 부하 분산 대상이 되는 여러 물리 서버를 하나의 가상 IP(Virtual IP) 주소 하나로 대표 하는 객체로, SmartConsole에서 정의합니다. 클라이언트는 이 하나의 IP로 접속하고, Logical Server는 부하 분산 대상 애플리케이션을 향한 서비스 요청을 받아 적절한 물리 서버로 넘깁 니다.

클라이언트가 ConnectControl로 부하 분산되는 애플리케이션에 접근을 요청하면, 그 요청은 Security Gateway나 Cluster를 거쳐 흐릅니다. 단계별로 보면 다음과 같습니다.
| 단계 | 설명 |
|---|---|
| 1 — Client request | 클라이언트가 애플리케이션 서버의 논리 IP 주소(Logical Server에 지정된 주소)로 연결을 시작합니다. |
| 2 — Internet | 서비스 요청이 인터넷을 통과합니다. |
| 3 — Security Gateway | 요청이 Logical Server의 목적지 공인 IP 주소(Security Gateway 위에 있음)에 도착합니다. 요청은 Rule Base의 Logical Server 규칙에 매칭되고, Security Gateway는 요청을 Logical Server 그룹의 내부 IP 주소로 보냅니다. |
| 4 — Logical Server | ConnectControl이 선택된 부하 분산 방식에 따라 Logical Server 그룹에서 요청에 가장 적합한 서버를 결정합니다. |
ConnectControl 구성 절차
아래는 환경에 ConnectControl을 설정하는 단계를 순서대로 설명한 것입니다.
1단계 — Object Explorer 열기
SmartConsole 에서 Objects 메뉴 > Object Explorer 를 클릭합니다(또는 Ctrl+E).
2단계 — 서버마다 Host 객체 만들기
부하 분산할 서버마다 Host 객체를 정의합니다. Object Explorer 툴바에서 New > Host 를 클릭합니다.
3단계 — Network Group 객체 만들기
부하 분산할 서버들의 Host 객체를 모두 담을 Network Group 객체를 정의합니다. Object Explorer 툴바에서 New > Network Group 을 클릭한 뒤,
a. 그룹 이름을 짓습니다(예: HTTP_Server_Group).
b. 각 서버의 Host 객체를 그룹에 추가합니다.
4단계 — Logical Server 객체 정의
Object Explorer 툴바에서 New > Network Object > More > Logical Server 를 클릭합니다.
a. New Logical Server 창에서 ConnectControl Logical Server의 이름을 입력합니다. b. Virtual IP 주소를 입력합니다. 이 IP는 반드시 공인 IP 주소 여야 하며, 부하 분산할 모든 트래픽은 클러스터를 거치도록 보내야 합니다.
c. 서버 타입(Server type) 을 선택합니다(아래 설명 참고). d. 서버 그룹(Server group) 을 선택합니다 — 앞서 정의한 Server Group 객체를 고르거나 새로 정의합니다. 그룹의 멤버는 host, Security Gateway, 또는 OSE 장치 여야 합니다. e. 환경에 맞는 persistency(연결 고정) 모드를 선택합니다(아래 설명 참고). f. 환경에 맞는 부하 분산 방식(Balance method) 을 선택합니다(아래 설명 참고). g. OK 를 누릅니다.
서버 타입 — HTTP vs Other
Logical Server 객체를 만들 때 서버 타입을 HTTP 또는 Other 로 정합니다. 이 구분은 중요합니다. ConnectControl이 클라이언트와의 연결을 서버 타입에 따라 다르게 처리 하기 때문입니다.
HTTP 타입 은 HTTP 리디렉션(HTTP redirection)을 사용 합니다. 오프사이트(offsite) HTTP 서버와 폼 기반(form-based) 애플리케이션을 지원하지만 HTTP 프로토콜에서만 동작 합니다. HTTP Logical Server는 모든 HTTP 연결 세션을 하나의 서버로 보내 도록 보장하는데, 이는 많은 웹 애플리케이션이 요구하는 동작입니다. ConnectControl은 선택된 부하 분산 방식에 따라 Security Gateway 뒤에 있거나 오프사이트에 있는 올바른 물리 서버를 찾고, 이후의 세션 연결은 계속 그 한 서버로 향합니다.
Other 타입 은 NAT(주소 변환)으로 트래픽을 그룹 서버에 보냅 니다. 이 Logical Server는 HTTP를 포함한 모든 프로토콜을 지원 하며 가장 효과적으로 부하를 분산하지만, 서버가 Security Gateway에 의해 NAT되어야 합니다. ConnectControl은 각 서비스 요청을 중재해 요청을 받을 서버를 고른 뒤, NAT으로 들어오는 패킷의 목적지 IP 주소를 바꿉니다. 반환(return) 연결이 열리면 서버와 클라이언트 사이에 자동으로 연결이 맺어지고, 패킷 속 서버의 출발지 주소는 Logical Server의 IP 주소로 변환됩니다. 패킷이 돌아올 때 Security Gateway는 패킷의 원래 주소를 Logical Server의 IP 주소로 변환합니다.
Persistency(연결 고정)
이 설정은 ConnectControl이 처음 고른 서버에 클라이언트의 연결을 계속 묶 어 둡니다.
- Persistency by server 는 여러 웹 서버가 있는 부하 분산 환경의 폼(forms) 같은 HTTP 애플리케이션 에 유용합니다. ConnectControl이 HTTP 클라이언트의 모든 요청을 한 서버로 보내므로, 서로 다른 서버가 요청을 받을 때 생기는 데이터 손실 없이 클라이언트가 폼을 작성할 수 있습니다.
- Persistency by service 는 서버 그룹에서 여러 서비스를 부하 분산 할 때 유용합니다. 예를 들어 HTTP와 FTP를 각각 돌리는 서버 두 대로 구성된 이중화 환경에서, ConnectControl은 한 클라이언트의 트래픽을 올바른 서비스의 서버 로 보냅니다. 이렇게 하면 Persistency by server에서 생길 수 있는, 한 서버에 부하가 몰리는 상황을 막아 줍니다.

위 그림의 흐름은 다음과 같습니다.
| 단계 | 설명 |
|---|---|
| 1 | HTTP와 FTP에 대한 여러 클라이언트 요청. |
| 2 | 인터넷. |
| 3 | Security Gateway. 서비스 요청이 Logical Server의 목적지 공인 IP 주소(Security Gateway 위)에 도착하고, Security Gateway가 요청을 Logical Server 그룹의 내부 IP 주소로 보냅니다. |
| 4 | 각각 FTP·HTTP 서비스를 갖춘 서버 두 대로 이루어진 Logical Server 그룹. ConnectControl이 두 서버 사이에서 부하를 분산합니다. |
부하 분산 방식 (Load Balancing Methods)
ConnectControl은 다음 사전 정의된 방식 중 하나에 따라 네트워크 트래픽을 부하 분산 서버에 분배합니다.
| 방식 | 설명 |
|---|---|
| Random | Security Gateway가 서비스 요청을 무작위 로 서버에 보냅니다. 모든 부하 분산 서버의 RAM·CPU가 비슷하고 같은 세그먼트에 있을 때 좋은 선택입니다. |
| Server load | Security Gateway가 새 연결을 가장 잘 감당할 수 있는 서버 를 판단합니다. |
| Round Robin | Security Gateway가 서비스 요청을 순서대로 다음 서버 에 보냅니다. 모든 부하 분산 서버의 RAM·CPU가 비슷하고 같은 세그먼트에 있을 때 좋은 선택입니다. |
| Round Trip | 지원되지 않습니다. |
| Domain | 지원되지 않습니다. |
5단계 — Object Explorer 닫기
Object Explorer 창을 닫습니다.
6단계 — Access Control로 이동
왼쪽 탐색 패널에서 Security Policies 를 클릭한 뒤 Access Control 을 클릭합니다.
7단계 — 부하 분산 규칙 추가
Access Control Policy Rule Base에 부하 분산 규칙을 추가합니다.
| Source | Destination | Services & Applications | Action |
|---|---|---|---|
*Any | Logical Server 객체 | Load-balanced Services | Accept 또는 User Auth 또는 Client Auth |
8단계 — HTTP 리디렉션용 규칙 추가
HTTP 리디렉션을 쓰는 애플리케이션이라면, 부하 분산 서버 객체들을 담은 Network Group 객체가 클라이언트와 직접 통신 하도록 허용하는 규칙도 추가합니다.
| Source | Destination | Services & Applications | Action |
|---|---|---|---|
*Any | Network Group 객체 | http | Accept |
9단계 — ConnectControl 전역 설정
상단에서 Menu > Global properties 를 클릭하고, 왼쪽 트리에서 ConnectControl 을 클릭한 뒤 환경에 맞게 설정합니다.
- Server Availability — ConnectControl이 가용한 서버를 찾는 방식을 정합니다.
- Server availability check interval 은 Security Gateway나 Cluster가 부하 분산 서버에 보내는 ping 사이의 간격(초) 을 제어합니다.
- Server check retries 는 ConnectControl이 응답 없는 서버로의 연결 전달을 멈춘 뒤, 그 서버에 다시 연락을 시도하는 횟수 를 제어합니다.
- Server Persistency — Persistency by server를 켰다면, 한 클라이언트가 한 서버를 쓰는 타임아웃 을 설정할 수 있습니다. 서버가 사용 불가가 되면 ConnectControl은 새 연결을 가용한 새 서버로 보내는데, 이때는 persistency를 우회해 부하 분산을 최적화합니다.
- Server Load Balancing — 지원되지 않습니다.
설정을 마치면 OK 를 누릅니다.
10단계 — 정책 설치
이 Security Gateway 또는 Cluster 객체에 Access Control Policy 를 설치합니다.
---
ConnectControl 운영과 함께 살펴보면 좋은 다른 기능은 그 밖의 운영 기능에서 다룹니다.