http://sourceforge.jp/projects/ultramonkey-l7/docs/uml7-administration_manual_v3.2_ja/ja/1/uml7-administration_manual_v3.2_ja.txt
UltraMonkey-L7 관리자 설명서 v3.2 [v3.0.x 대응 판]
==================================================
변경 내용]
2005.10.25 [v1.0] 초판
2005.11.15 [v1.1] 설명서의 결함을 수정
2006.03.02 [v1.2] 옵션에 대한 설명 추가
2006.07.07 [v1.3] 목차 재검토 및 kssl 보충 설명 추가에 따른 수정
2007.01.19 [v1.4] 기능에 따른 수정
2007.02.19 [v1.4.1] l7directord 결함 수정에 따른 URL 지속성 부분 수정
2007.10.12 [v1.4.2] l7vs-0.6.1 공개에 따른 일부 관련 수정
2007.10.12 [v1.5] l7vs-1.0.0 공개에 따른 일부 관련 수정 (구현되지 않음 분 기술 삭제)
2008.1.6 [v1.6] UM-L7 1.0.1-0 버전에 따른 l7directord.cf 샘플 수정
2008.1.6 [v1.7] sessionless 프로토콜 모듈의 예제 구성을 추기
2008.4.13 [v1.8] l7vsd-1.x-lilith-rc-1 출시에 따른 수정
2008.5.30 [v1.9] v2.0.0-x 버전에 따른 수정
2008.12.17 [v2.0] v2.1.0-0 릴리스에 따른 수정
2009.01.27 [v2.1] v2.1.1-0 릴리스에 따른 수정 (sslid 모듈 옵션 설명
수정)
2009.03.17 [v2.2] v2.1.2-0 릴리스에 따른 수정 (ip 모듈 옵션 설명)
2009.06.17 [v2.3] v2.1.2-2 출시에 따른 수정 (cinsert, cpassive, crewrite 모듈
콸라룸푸르 관련 기술을 삭제)
2010.08.17 [v3.0] v3.0.0에 따른 수정
2011.03.03 [v3.1] tproxy 해당 커널을 수정
2011.11.22 [v3.2] statistic 짧은 옵션을 수정
================================================== ==============================
1 전제 조건
1.1 프레임 워크 부에 대해서
1.2 프로토콜 처리부에
1.3 일정 부에 대해서
1.4 제어 명령 부에 대해서
1.5 실제 서버 모니터링 처리부에
2 l7vsadm 명령에 대한 설명
2.1 명령 요약
2.2 명령 요약
2.3 명령 형식 목록
2.4 각 명령 설명
2.5 ProtocolModule 옵션 설명
3 l7vsadm 설정 예
3.1 SSL Session ID 모듈의 설정 예
3.2 Sessionless 모듈 구성 예
3.3 IP address 모듈 구성 예
4 L7 서버 모니터링 설정 도구에 대한 설명
4.1 설정 파일 (l7directord.cf) 설명
4.2 l7directord.cf 예제 설명
4.3 샘플
5 Replication 기능
5.1 Replication 기능에 대한 설명
6 UltraMonkey-L7 설정 파일에 대한 설명
6.1 설정 파일 (l7vs.cf) 설명
6.2 l7vs.cf 예제 설명
7 SSL 설정 파일에 대한 설명
7.1 설정 파일 (sslproxy.target.cf) 설명
7.2 sslproxy.target.cf 예제 설명
8 기타
8.1 snmpd 설명
8.2 Transparent Proxy 기능
================================================== ==============================
1 전제 조건
UltraMonkey-L7은 Linux에서 실행되는 Layer7 부하 분산 소프트웨어입니다.
다음과 같은 기능 부로 구성되어 있습니다.
————————————————– ——————————
1.1 프레임 워크 부에 대해서
Layer7 정보를 기반으로 부하 분산의 기본 기능 부분입니다.
이에 ProtocolModule을 결합하여 다양한 프로토콜을 지원하는 부하
분산을 제공합니다.
————————————————– ——————————
1.2 프로토콜 처리부에
각종 프로토콜에 대한 Layer7 부하 분산 분류 조건을 결정하는 기능 부분입니다.
프로토콜 처리 부분은 다음 ProtocolModule 있습니다. Client 패킷을
기다리지 않고 RealServer가 선행 응답 프로토콜 (SMTP, FTP 등)로 배분을
하는 경우에는 sessionless 또는 ip 모듈을 사용해야합니다.
· sessionless
RealServer에 배분을 일정 부분에 맡겨 UltraMonkey-L7는 아무것도 실시
없는 Sessionless 모듈
· ip
Client의 IP 주소를 바탕으로 RealServer에 배분하는 모듈.
· sslid
RealServer 측에서 부여된 SSL Session ID를 UltraMonkey-L7하고 관리할 수
에서 세션 관리를 SSL Session ID 모듈
————————————————– ——————————
1.3 일정 부에 대해서
VirtualService에서 RealServer 대해로드 균형 조정 배분의 가중치 조건을 결정
기능 부분입니다.
스케줄링은 다음 방식이 해당 ScheduleModule 손가락
설정하여 최적의 일정 계획을 선택할 수 있습니다.
· rr
사용 가능한 RealServer에 대해 동등하게 요청을 할당하는 라운드 로비
렌 방식
· wrr
RealServer마다 설정된 부하 값은 클라이언트의 요청을 할당
맞출 가중치 배분 방식
· lc
연결된 연결이 가장 적은 RealServer에 요청을 할당
되는 최소 연결 방식
————————————————– ——————————
1.4 제어 명령 부에 대해서
프레임 워크 부분에 VirtualService의 생성 · 삭제 및 배분 대상 서버 설정
UltraMonkey-L7 기능 제어 등을위한 명령을 제공합니다.
————————————————– ——————————
1.5 실제 서버 모니터링 처리부에
실제 서버를 모니터링하는 기능 부분입니다. 제어 명령 부를 통해 각종 설정을
하는 기능도 제공합니다. (자세한 내용은 4 참조)
================================================== ==============================
2 l7vsadm 명령에 대한 설명
————————————————– ——————————
2.1 명령 요약
l7vsadm 명령은 다음과 같은 기본 형식으로 실행합니다.
기본 서식
l7vsadm – 제어 유형 옵션 – 매개 변수 옵션 설정 값 …
l7vsadm 명령 옵션은 어떻게 설정, 제어를 실시하는지 지정하는 제어
종류 옵션과 제어 유형 지원 설정을 지정하는 매개 변수 옵션이 아
수 있습니다.
또한 매개 변수 옵션은 프레임 워크에 다양한 설정 제어를 행
하기위한 옵션 이외에 각 ProtocolModule마다 각종 설정을위한
ProtocolModule 옵션이 있습니다.
(ProtocolModule 옵션 대한 자세한 내용은 2.5 참조)
————————————————– ——————————
2.2 명령 요약
l7vsadm 명령 실행 가능한 명령의 목록은 다음과 같습니다.
(1) List 표시 명령 (자세한 내용은 2.4.1 참조)
프레임 워크의 각종 정보 (VirtualService, RealServer 등록 정보)
내용을 표시하는 명령
(2) VirtualService 설정 명령 (자세한 내용은 2.4.2 참조)
지정된 VirtualService 추가, 삭제 및 지정된 VirtualService에
설정되어있는 파라미터를 변경하는 명령 및 등록되어있는 모든
VirtualService을 일괄 삭제하는 명령
(3) RealServer 설정 명령 (자세한 내용은 2.4.3 참조)
지정된 VirtualService 대한 RealServer 추가, 삭제 및 지정
한 RealServer에 설정되어있는 파라미터를 변경하는 명령
(4) Replication 기능 제어 명령 (자세한 내용은 2.4.4 참조)
Replication 기능에 대한 각종 제어 (Replication 기능 시작 / 정지, 강제로
즉시 Replicate 실행 Replication 데이터의 덤프)하는 명령
(5) 기록 기능 제어 명령 (자세한 내용은 2.4.5 참조)
로그 기능에 대한 각종 제어 (부하 분산 프로세스 작업 로그 레벨 변경)하는
명령
(6) SNMPAgent 제어 명령 (자세한 내용은 2.4.6 참조)
SNMPAgent 관한 각종 제어 (SNMPAgent의 활성화 / 비활성화, MIB 수집 간격 변경
로그 함정 발 기능의 유효 / 무효 로그 함정 발 수준 변경
HTTP 요청 통계 삭제)하는 명령
(7) 변수 관리 기능 제어 명령 (자세한 내용은 2.4.7 참조)
변수 관리 기능에 관한 각종 제어 (구성 매개 변수를 다시로드) 할
명령
(8) Help 표시 명령 (자세한 내용은 2.4.8 참조)
명령 형식 및 사용 방법을 표시하는 명령
————————————————– ——————————
2.3 명령 형식 목록
l7vsadm 명령 실행 명령 형식 목록은 다음과 같습니다.
(각 옵션에 대한 설명 및 사용에 대한 자세한 내용은 2.4 참조)
l7vsadm-A-t service-address-m proto-module [module-args]
[-s scheduler] [-u connection-count] [-b sorry-server] [- masq | - tproxy]
[-f sorry-flag] [-Q QoSval-up] [-q QoSval-down] [-z ssl-config-file]
[-O socket-option] [-L access-log-flag]
[-a access-log-file [logrotate-args]
l7vsadm-E-t service-address-m proto-module [module-args]
[-s scheduler] [-u connection-count] [-b sorry-server] [- masq | - tproxy]
[-f sorry-flag] [-Q QoSval-up] [-q QoSval-down] [-L access-log-flag]
l7vsadm-D-t service-address-m proto-module [module-args]
l7vsadm-C
l7vsadm-a | e-t service-address-m proto-module [module-args]
-r server-address [-w weight] [- masq | - tproxy]
l7vsadm-d-t service-address-m proto-module [module-args]
-r server-address
l7vsadm-R-s replication-switch
l7vsadm-R-f
l7vsadm-R-d
l7vsadm-L-c log-category-l log-level
l7vsadm-S [-f snmp-flag] [-i update-interval] [-t log-trap-flag]
[-l log-trap-level]
l7vsadm-S-r [-t service-address-m proto-module]
l7vsadm-P-r reload-parameter
l7vsadm-l [-n]
l7vsadm-V [-n]
l7vsadm-K [-n]
l7vsadm-h
————————————————– ——————————
2.4 각 명령 설명
다음 각 명령 형식 옵션 설명, 사용 방법을 보여줍니다.
지정 필수 매개 변수 옵션은 해당 형식으로 지정해야하는 옵션
이며, 지정 가능한 매개 변수 옵션은 해당 형식으로 지정할 수 있으며, 생략도 가능
옵션임을 나타냅니다.
또한 각 옵션의 괄호 안의 설명은 long 표현 옵션입니다.
2.4.1 List 표시 명령
· 서식
l7vsadm
l7vsadm-l [-n]
l7vsadm-K [-n]
l7vsadm-V [-n]
· 제어 유형 옵션 (필수)
-l (- list) : 구성 정보 list를 표시한다.
-K (- key) : key 정보를 포함하는 구성 정보 list를 표시한다.
-V (- verbose) : 설정에 대한 자세한 list를 표시한다.
· 지정 필수 매개 변수 옵션
없음
· 지정 가능 매개 변수 옵션
-n (- numeric) : Endpoint (IP-Address : port) 이름 확인하지 않고 표시
한다.
· 설명
List 표시 명령 옵션에 의해 출력되는 정보는 다음과 같다.
1)-l 지정할 때
· Version 정보 [UltraMonkey-L7의 Version]
· VirtualService 정보 [Protocol, VirtualService의 Endpoint,
ProtocolModule 이름 ScheduleModule 이름
· RealServer 정보 [RealServer의 Endpoint 패킷 전송
Scheduler의 weight 서버 연결 정보
2)-K 지정시
· Version 정보 [UltraMonkey-L7의 Version]
· VirtualService 정보 [Protocol, VirtualService의 Endpoint,
ScheduleModule 이름, SSL 설정 파일 이름
소켓 옵션 액세스 로그 플래그
액세스 로그 파일 이름
액세스 로그 회전 설정 문자열
· RealServer 정보 [RealServer의 Endpoint 패킷 전송
Scheduler의 weight 서버 연결 정보
3)-V 지정할 때
· Version 정보 [UltraMonkey-L7의 Version]
· Log 정보
부하 분산된 프로세스 Log 카테고리
Log 카테고리 동작 Log-Level]
· Replication 정보 [Replication 기능 상태 (모드)
· SNMP 정보 [SNMPAgent 기능 상태 (active / inactive)
로그 트랩 상태 (on / off), 함정 발 로그 수준
[MIB 정보의 최소 수집 간격 SNMPAgent 시작 시간,
마지막 요청 시간, 마지막 트랩 시간]
[GET 요청 수, SET 요청 수, 트랩 총수]
· VirtualService 정보 [Protocol, VirtualService의 Endpoint,
ProtocolModule 이름 Scheduler 이름
ProtocolModule 옵션 문자열
· RealServer 정보
[RealServer의 Endpoint 패킷 전송
Scheduler의 weight 서버 연결 정보
[Sorry Server
SorryServer의 Endpoint 패킷 전송]
[Max Connection 연결 제한 값
[Sorry Flag Sorry 플래그
[SSL Config File SSL 설정 파일
[Access Log 액세스 로그 플래그
[Access Log File 액세스 로그 파일
[Access Log Rotate
액세스 로그 회전 설정 문자열
[TCP_DEFER_ACCEPT enable / disable]
[TCP_NODELAY enable / disable]
[TCP_CORK enable / disable]
[TCP_QUICKACK enable / disable / auto]
[Current Upload / Limit
위 처리량 값 (Mbps) / QoS (위)의 QoS 값 (Mbps)
[Current Download / Limit
내려가는 처리량 값 (Mbps) / QoS (하행)의 QoS 값 (Mbps)
[HTTP Total Requests HTTP 요청 총수]
[HTTP GET Requests HTTP GET 요청 총수]
[HTTP POST Requests HTTP POST 요청 총수]
2.4.2 VirtualService 설정 명령
1) VirtualService 추가
· 서식
l7vsadm-A service-address-m protocol-module [module-args]
[-s schedule-module] [-u connection-count] [-b sorry-server]
[-f sorry-flag] [- masq | - tproxy] [-Q up-stream-QoS-bps]
[-q down-stream-QoS-bps] [-z ssl-config-file] [-O socket-option]
[-L access-log-flag] [-a access-log-file [logrotate-args]
· 제어 유형 옵션 (필수)
-A (- add-service) : VirtualService를 추가합니다.
· 지정 필수 매개 변수 옵션
-t (- tcp-service) : VirtualService의 Endpoint를 지정한다.
(예) IPv4 :-t 10.10.0.1:80
(예) IPv6 :-t [:: 1] : 80
-m (- proto-module) : ProtocolModule 이름을 지정합니다.
(예)-m sessionless
ProtocolModule 이름 뒤에 ProtocolModule 옵션
프로그램 (module-args)를 지정할 수있다.
(예)-m sslid – timeout 100
지정할 수 ProtocolModule 및
ProtocolModule 옵션 대한 자세한 내용은 2.5 참조
· 지정 가능 매개 변수 옵션
-s (- scheduler) : ScheduleModule 이름을 지정합니다.
(예)-s rr-s lc-s wrr
지정할 수 ScheduleModule는 rr (RoundRobin)
wrr (WeightedRoundRobin) lc (LeastConnection)
지정하지 않으면 기본값은 rr이다.
-u (- upper) VirtualService 연결 수의 상한 치를 설정한다.
제한을 초과하는 연결은 SorryServer 접속이된다.
설정 가능한 범위는 0 ~ 100000의 정수로 지정
하지 않으면 기본값은 0 (제한 없음,
SorryServer 연결하지)가된다.
-b (- bypass) : SorryServer의 Endpoint를 지정한다.
(예 :-t sorry01 : http-t 10.10.0.1:80)
0.0.0.0:0을 지정하면 SorryServer의
Endpoint를 지울 수있다.
-f (- flag) : Sorry 상태 설정 플래그를 설정한다.
설정 가능한 값은 0 또는 1로 1을 지정하면
Sorry 상태가 0을 지정하면 Sorry 상태 해석
제외된다.
지정하지 않으면 기본값은 0 (Sorry 상태 해석
제외)이된다.
- masq : SorryServer에 패킷 전송을 Masquarade
방식으로하고, SorryServer에서 UltraMonkey-L7
서버에서 연결 보인다. – tproxy를 지정하지
경우이 방식이 기본이된다.
- tproxy : SorryServer에 패킷 전송을 Transparent
Proxy 방식으로하고, SorryServer에서 Client가 직접
직접 연결하는 것처럼 보인다.
이 기능을 사용하려면 8.2 설정이 필요하다.
-Q (- qos-up) : Client에서 VirtualService 대한 대역폭 제한
를 bps로 설정한다.
설정 가능한 범위는 0부터 999까지의 정수 + 단위 (최대
999K, 999M, 999G)에서 지정하지 않으면 기본값
기본값은 0 (제한 없음)이된다.
단위는 K (킬로), M (메가), G (기가)를 지정
필요가있다.
-q (- qos-down) : RealServer에서 VirtualService 대한 대역폭 제한
한계치를 설정한다.
설정 가능한 범위는 0부터 999까지의 정수 + 단위 (최대
999K, 999M, 999G)에서 지정하지 않으면 기본값
기본값은 0 (제한 없음)이된다.
단위는 K (킬로), M (메가), G (기가)를 지정
필요가있다.
-z (- ssl) : VirtualService에 Client와 SSL 통신
시 SSL 구성 파일을 전체 경로로 설정한다.
설정 경로의 최대 길이는 반각 문자 최대 256 문장
자 지정 가능하다. 이 옵션은 지정된 장소
우 VirtualService와 Client 간의 통신 처리에 문의
있어 SSL 처리 기능을 사용할 수 있도록되어 지정
되지 않은 경우 종래의 움직임을한다.
또한이 옵션을 지정할 때 프로토콜 모듈
모듈로 sslid을 지정하면 에러가된다.
-O (- sockopt) VirtualService 및 RealServer와 연결 사용
소켓 옵션을 설정하도록 지정한다.
가능한 옵션은 다음에서 쉼표로 구분된 손가락
설정 가능.
※ VirtualService 추가 때만 설정할 수 있으며, 변경
수 없습니다.
deferaccept – VirtualService 수신기 소켓
포트에 TCP_DEFER_ACCEPT 설정.
설정하면 TCP 연결이 완료되면,
Client에서 데이터 패킷이 도착
때까지 연결 완료로 간주하게된다.
※ 클라이언트에서 연결 후 채용
에스트가 반드시 전송되지
경우 (SMTP, FTP 등)은 지정
하지 마십시오.
nodelay – Client 및 RealServer와 통신
소켓에 TCP_NODELAY를 설정합니다.
설정하면 패킷 전송시 MTU
로 정해져있는 사이즈 (일반적으로 1500
바이트) 미만 않고 즉시 전송
한다.
cork – Client 및 RealServer와 통신
소켓에 TCP_CORK 설정.
설정하면 TCP_NODELAY 반대로
가능한 데이터를 요약 거동을
한다.
quickackon – Client 및 RealServer와 통신
소켓에 TCP_QUICKACK을 항상
로 설정합니다. 설정하면 패킷이 연속
계속 해왔다 경우 하나하나의 경로
패킷에 대해 즉시 ACK를 반환합니다.
quickackoff – Client 및 RealServer와 통신
소켓의 TCP_QUICKACK을 항상
클리어한다. 설정하면 모든
패킷의 지연 ACK 타임
아웃 기다렸다가 ACK를 반환합니다.
-L (- access-log) : 액세스 로그 출력 플래그를 설정한다.
설정 가능한 값은 0 또는 1로 1을 지정하면
액세스 로그를 출력하고, 0을 지정하면 액세스
기록 해제된다.
지정하지 않으면 기본값은 0 (액세스로
아날로그 출력 해제)가된다.
-a (- access-log-name) : 액세스 로그 출력 파일을 지정한다. 액세스
세스로구 출력 플래그를 출력으로 설정했을 경우,
필수 지정 항목입니다. 액세스 로그 회전 구성
설정을 logrotate-args로 설정할 수 있습니다.
logrotate-args를 생략하면, 설정 파일
본 매뉴얼의 기본 설정에서 로테
프로그램을 실시한다.
그러나 이미 추가한 VirtualService에서
지정된 액세스 로그 대상과 동일한 출력을
지정된 경우 액세스 로그 회전
설정을 변경 할 수 없다.
또한 logrotate-args를 생략하면 이미 추가
加 끝난 VirtualService 액세스 로그 로우
테이션 설정 회전한다.
logrotate-args로 설정 가능한 옵션은
이하.
- ac-rotate-type (필수)
회전 타입으로, “date”
“size”, “datesize”어떤을 지정한다.
- ac-rotate-max-backup-index (필수)
백업 파일의 최대 개수를 1 이상 12
이하의 범위에서 지정합니다.
- ac-rotate-max-filesize
(- ac-rotate-type에서 “size”, “datesize”
지정시 필수)
로그의 최대 크기를 지정한다.
설정 가능한 범위는 65535 ~ ULONG_MAX까지
숫자의 정수로 지정 단위는 K (킬로)
M (메가), G (기가)를 지정 가능.
또한, K, M, G를 지정하면 그 값을 바이
트 단위로 변환한 결과가 65535 ~ ULONG_MAX
까지의 값이 아니면 안된다.
- ac-rotate-rotation-timing
(- ac-rotate-type에서 “date”, “datesize”
지정시 필수)
회전하는 타이밍을 “year”
“month”, “week”, “date”, “hour”어떤
이 결정된다.
- ac-rotate-rotation-timing-value
(- ac-rotate-type에서 “date”, “datesize”
지정시 필수)
회전하는 날짜와 시간을 지정한다.
지정 형식은 아래.
- ac-rotate-rotation-timing “year”시 :
“MM / dd hh : mm”(매년 MM 월 dd 일 hh시 mm 분)
- ac-rotate-rotation-timing “month”시 :
“dd hh : mm”(매월 dd 일 hh시 mm 분)
- ac-rotate-rotation-timing “week”시 :
“WEEK hh : mm”(매주 WEEK 요일 hh시 mm 분)
- ac-rotate-rotation-timing “date”시
“hh : mm”(매일 hh시 mm 분)
- ac-rotate-rotation-timing “hour”시
“mm”(시간당 mm 분)
설정 가능한 값은, MM (1 ~ 12), dd (1 ~ 31)
hh (0 ~ 23) mm (0-59), WEEK ( “sun”, “mon”
“tue”, “wed”, “thu”, “fri”, “sat”)
· 설명
-t,-m 지정된 VirtualService을 새로 등록한다.
지정되지 않은 지정 가능한 매개 변수 옵션은 초기 값으로 설정된다.
지정할 수있는 스케줄러의 특징은 다음과 같습니다.
rr – Round Robin (라운드 로빈)
사용 가능한 실제 서버에 균등하게 요청을 할당한다.
wrr – Weighted Round Robin (가중 라운드 로빈)
사용 가능한 실제 서버에 가중치에 따라 요청을 할당
맞춥니다. 가중치는-w 옵션을 지정합니다.
lc – Least-Connection (최소 연결)
연결된 연결이 가장 적은 실제 서버에 대해 리쿠에
파업을 허용한다.
SorryServer 관련 설정 내용은 다음의주의가 필요.
· VirtualService가 서비스 제공 불가 상태 (Sorry 상태)가 된
이를 해결하기 위해 서버의 Endpoint를 설정한다.
서비스 제공 불가 상태 (Sorry 상태)에는 세 가지가있다.
·-u 옵션에서 지정한 연결 수를 초과하는 경우
· 접속 가능한 RealServer가없는 경우
·-f 옵션으로 명시적으로 Sorry 상태로 설정된 경우
(※) 액세스 로그 관련 설정 내용은 다음의주의가 필요.
액세스 로그 출력 파일 설정 (- access-log-name)은 VirtualService
바꾸기 명령으로 변경할 수 없다. 따라서 액세스 로깅
플래그 (- access-log)를 0에서 1로 변경 가능성이있는 경우
미리 VirtualService를 추가할 때 액세스 로그 출력 파일 설정을
하고 둘 필요가있다.
2) VirtualService 삭제
· 서식
l7vsadm-D-t service-address-m proto-module [module-args]
· 제어 유형 옵션 (필수)
-D (- delete-service) : 지정한 VirtualService을 삭제합니다.
· 지정 필수 매개 변수 옵션
-t (- tcp-service) : VirtualService의 Endpoint를 지정한다.
(예) IPv4 :-t 10.10.0.1:80
(예) IPv6 :-t [:: 1] : 80
-m (- proto-module) : ProtocolModule 이름을 지정합니다.
(예)-m sessionless
· 지정 가능 매개 변수 옵션
없음
· 설명
-t,-m 지정된 VirtualService을 삭제합니다.
3) VirtualService의 일괄 삭제
· 서식
l7vsadm-C
· 제어 유형 옵션 (필수)
-C (- flush) : 등록된 모든 VirtualService 일괄
삭제한다.
· 지정 필수 매개 변수 옵션
없음
· 지정 가능 매개 변수 옵션
없음
· 설명
등록되어있는 모든 VirtualService가 삭제됩니다.
4) VirtualService 변경
· 서식
l7vsadm-E-t service-address-m protocol-module [module-args]
[-s schedule-module] [-u connection-count] [-b sorry-server]
[-f sorry-flag] [- masq | - tproxy] [-Q up-stream-QoS-bps]
[-q down-stream-QoS-bps] [-L access-log-flag]
· 제어 유형 옵션 (필수)
-E (- edit-service) : 지정한 VirtualService 구성 정보를 변경
있다.
· 지정 필수 매개 변수 옵션
다음 매개 변수는 변경 이전 VirtualService을 확인하기 위해 지정하고
이러한 매개 변수 변경 사항은 변경 명령을 할 수 없기 때문에 변경할
경우 삭제 명령 추가 명령을 할 필요가있다.
-t (- tcp-service) : VirtualService의 Endpoint를 지정한다.
(예) IPv4 :-t 10.10.0.1:80
(예) IPv6 :-t [:: 1] : 80
-m (- proto-module) : ProtocolModule 이름을 지정합니다.
(예)-m sessionless
ProtocolModule 이름 뒤에 ProtocolModule 옵션
프로그램 (module-args)를 지정할 수있다.
(예)-m sessionless – forwarded-for
지정할 수 ProtocolModule 및
ProtocolModule 옵션 대한 자세한 내용은 2.5 참조
· 지정 가능 매개 변수 옵션
다음은 변경 가능한 파라미터이다.
· 지정 가능 매개 변수 옵션
-s (- scheduler) : ScheduleModule 이름을 지정합니다.
(예)-s rr-s lc-s wrr
지정할 수 ScheduleModule는 rr (RoundRobin)
wrr (WeightedRoundRobin) lc (LeastConnection).
지정하지 않으면 기본값은 rr이다.
-u (- upper) VirtualService 연결 수의 상한 치를 설정한다.
제한을 초과하는 연결은 SorryServer 접속이된다.
설정 가능한 범위는 0 ~ 100000의 정수로 지정
않은 경우 기본값은 0 (제한 없음,
SorryServer 연결하지)가된다.
-b (- bypass) : SorryServer의 Endpoint를 지정한다.
(예 :-t sorry01 : http-t 10.10.0.1:80)
0.0.0.0:0을 지정하면 SorryServer의
Endpoint를 지울 수있다.
-f (- flag) : Sorry 상태 설정 플래그를 설정한다.
설정 가능한 값은 0 또는 1로 1을 지정하면
Sorry 상태가 0을 지정하면 Sorry 상태 해석
제외된다.
지정하지 않으면 기본값은 0 (Sorry 상태 해석
제외)이된다.
- masq : SorryServer에 패킷 전송을 Masquarade
방식으로하고, SorryServer에서 UltraMonkey-L7
서버에서 연결 보인다. -tproxy를 지정하지
경우이 방식이 기본이된다.
- tproxy : SorryServer에 패킷 전송을 Transparent
Proxy 방식으로하고, SorryServer에서 Client가 직접
직접 연결하는 것처럼 보인다.
이 기능을 사용하려면 8.1 설정이 필요합니다.
-Q (- qos-up) : Client에서 VirtualService 대한 대역폭 제한
를 bps로 설정한다.
설정 가능한 범위는 0부터 999까지의 정수 + 단위 (최대
999K, 999M, 999G)에서 지정하지 않으면 기본값
기본값은 0 (제한 없음)이된다.
단위는 K (킬로), M (메가), G (기가)를 지정
필요가있다.
-q (- qos-down) : RealServer에서 VirtualService 대한 대역폭 제한
한계치를 설정한다.
설정 가능한 범위는 0부터 999까지의 정수 + 단위 (최대
999K, 999M, 999G)에서 지정하지 않으면 기본값
기본값은 0 (제한 없음)이된다.
단위는 K (킬로), M (메가), G (기가)를 지정
필요가있다.
-L (- access-log) : 액세스 로그 출력 플래그를 설정한다.
설정 가능한 값은 0 또는 1로 1을 지정하면
액세스 로그를 출력하고, 0을 지정하면 액세스로
아날로그 출력 해제된다.
· 설명
-t,-m 지정된 VirtualService 구성 정보를 지정할 수 매개 변수 오
옵션에서 지정한 값으로 변경한다.
지정 필수 매개 변수 옵션의 값을 변경할 수 없다.
등록시 ProtocolModule 옵션 (module-args)를 지정하는 경우
지정해야합니다.
지정되지 않은 지정 가능 매개 변수 옵션의 값은 변경되지 않는다.
지정할 수있는 스케줄러의 특징은 다음과 같습니다.
rr – Round Robin (라운드 로빈)
사용 가능한 실제 서버에 균등하게 요청을 할당한다.
wrr – Weighted Round Robin (가중 라운드 로빈)
사용 가능한 실제 서버에 가중치에 따라 요청을 할당
맞춥니다. 가중치는-w 옵션을 지정합니다.
lc – Least-Connection (최소 연결)
연결된 연결이 가장 적은 실제 서버에 대해 리쿠에
파업을 허용한다.
SorryServer 관련 설정 내용은 다음의주의가 필요.
· VirtualService가 서비스 제공 불가 상태 (Sorry 상태)가 된
이를 해결하기 위해 서버의 Endpoint를 설정한다.
서비스 제공 불가 상태 (Sorry 상태)에는 세 가지가있다.
·-u 옵션에서 지정한 연결 수를 초과하는 경우
· 접속 가능한 RealServer가없는 경우
·-f 옵션으로 명시적으로 Sorry 상태로 설정된 경우
(※) 액세스 로그 관련 설정 내용은 다음의주의가 필요.
액세스 로그 출력 파일 설정 (- access-log-name)은 VirtualService
바꾸기 명령으로 변경할 수 없다. 따라서 액세스 로깅
플래그 (- access-log)를 0에서 1로 변경 가능성이있는 경우
미리 VirtualService를 추가할 때 액세스 로그 출력 파일 설정을
하고 둘 필요가있다.
2.4.3 RealServer 설정 명령
1) RealServer 추가
· 서식
l7vsadm-a-t service-address-m proto-module [module-args]-r
server-address [-w weight] [- masq | - tproxy]
· 제어 유형 옵션 (필수)
-a (- add-server) : 지정한 VirtualService에 RealServer 추가
한다.
· 지정 필수 매개 변수 옵션
-t (- tcp-service) : VirtualService의 Endpoint를 지정한다.
(예) IPv4 :-t 10.10.0.1:80
(예) IPv6 :-t [:: 1] : 80
-m (- proto-module) : ProtocolModule 이름을 지정합니다.
(예)-m sessionless
-r (- real-server) : 추가 RealServer의 Endpoint를 지정한다.
(예) IPv4 :-r 10.10.0.1:80
(예) IPv6 :-r [:: 1] : 80
· 지정 가능 매개 변수 옵션
-w (- weight) : RealServer에 배분하는 데 사용되는 weight 값을
설정한다.
설정 가능한 범위는 0 ~ 100 사이의 정수 값으로 지정해야합니다.
하지 않으면 기본값은 1 (분류 가능)이다.
0을 지정하면, 분류 불가가된다.
- masq : RealServer에 패킷 전송을 Masquarade
방식으로하고, RealServer에서 UltraMonkey-L7
서버에서 연결 보인다. -tproxy를 지정하지
경우이 방식이 기본이된다.
- tproxy : RealServer에 패킷 전송을 Transparent
Proxy 방식으로하고, RealServer에서 Client가 직접
직접 연결하는 것처럼 보인다.
· 설명
-t,-m 지정된 VirtualService에-r로 지정한 RealServer을 새로운
계곡 등록한다.
지정되지 않은 지정 가능한 매개 변수 옵션은 초기 값으로 설정된다.
2) RealServer 삭제
· 서식
l7vsadm-d-t service-address-m proto-module [module-args]-r
server-address
· 제어 유형 옵션 (필수)
-d (- delete-server) : 지정한 VirtualService에서 RealServer을 삭제
제거한다.
· 지정 필수 매개 변수 옵션
-t (- tcp-service) : VirtualService의 Endpoint를 지정한다.
(예) IPv4 :-t 10.10.0.1:80
(예) IPv6 :-t [:: 1] : 80
-m (- proto-module) : ProtocolModule 이름을 지정합니다.
(예)-m sessionless
-r (- real-server) : 추가 RealServer의 Endpoint를 지정한다.
(예) IPv4 :-r 10.10.0.1:80
(예) IPv6 :-r [:: 1] : 80
· 지정 가능 매개 변수 옵션
없음
· 설명
-t,-m 지정된 VirtualService에서-r로 지정한 RealServer을
삭제한다.
3) RealServer 변경
· 서식
l7vsadm-e-t service-address-m proto-module [module-args]-r
server-address [-w weight]
· 제어 유형 옵션 (필수)
-e (- edit-server) : 지정한 VirtualService의 RealServer 정보를
변경한다.
· 지정 필수 매개 변수 옵션
-t (- tcp-service) : VirtualService의 Endpoint를 지정한다.
(예) IPv4 :-t 10.10.0.1:80
(예) IPv6 :-t [:: 1] : 80
-m (- proto-module) : ProtocolModule 이름을 지정합니다.
(예)-m sessionless
-r (- real-server) : 추가 RealServer의 Endpoint를 지정한다.
(예) IPv4 :-r 10.10.0.1:80
(예) IPv6 :-r [:: 1] : 80
· 지정 가능 매개 변수 옵션
-w (- weight) : RealServer에 배분하는 데 사용되는 weight 값을
설정한다.
설정 가능한 범위는 0 ~ 100 사이의 정수 값으로 지정해야합니다.
하지 않으면 기본값은 1 (분류 가능)이다.
0을 지정하면, 분류 불가가된다.
· 설명
-t,-m 지정된 VirtualService에 등록되어있는-r로 지정한
RealServer 구성 정보를 지정할 수 매개 변수 옵션에서 지정한 값으로
변경한다.
지정 필수 매개 변수 옵션의 값을 변경할 수 없다.
지정되지 않은 지정 가능한 매개 변수 옵션은 변경되지 않는다.
2.4.4 Replication 기능 제어 명령
· 서식
l7vsadm-R-s replication-switch
l7vsadm-R-f
l7vsadm-R-d
· 제어 유형 옵션 (필수)
-R (- replication) : Replication 기능 제어 명령을 실행한다.
· 지정 필수 매개 변수 옵션
-s (- switch) : Replication 기능 시작 / 정지를 지정한다.
start를 지정하면 Replication 기능 시작입니다
stop를 지정하면 Replication 기능 정지가된다.
-f (- force) : 데이터를 강제 즉시 복제합니다.
-d (- dump) : Replication 데이터 덤프를 실행한다.
· 지정 가능 매개 변수 옵션
없음
· 설명
Replication 기능 각종 제어 (Replication 기능 시작 / 정지, 강제로
즉시 복제, Replication 데이터의 덤프)를 실시한다.
2.4.5 로그 기능 제어 명령
· 서식
l7vsadm-L-c log-category-l log-level
· 제어 유형 옵션 (필수)
-L (- log) : 로깅 제어 명령을 실행한다.
· 지정 필수 매개 변수 옵션
-c (- category) : l7vsd 출력 로그 수준을 변경하는 경우 변경
l7vsd 로그 범주 문자열을 지정한다.
지정할 수있는 로그 카테고리는 다음 설명을 참조
all을 지정하면 모든 로깅 범주의 로깅 수준
이 일괄 변경됩니다.
-l (- level) : 부하 분산 프로세스의 출력 로그를 지정 동작 로구레베
르로 변경합니다.
지정 가능한 로그 수준은 fatal, error, warn, info,
debug의 5 종류.
· 지정 가능 매개 변수 옵션
없음
· 설명
로깅 각종 제어 (부하 분산 프로세스 작업 로그 레벨 변경)을 실시한다.
로깅 범주 문자열 약어 문자열로 지정하는 것도 가능하다.
로깅 범주 문자열 목록은 다음과 같다.
지정 가능한 로그 범주 문자열 (약어)
l7vsd_network (nw)
l7vsd_network_qos (nw_qos)
l7vsd_network_bandwidth (nw_bw)
l7vsd_network_num_connection (nw_conn)
l7vsd_network_access (nw_acc)
l7vsd_mainthread (mth)
l7vsd_virtualservice (vs)
l7vsd_virtualservice_thread (vs_th)
l7vsd_session (ss)
l7vsd_session_thread (ss_th)
l7vsd_realserver (rs)
l7vsd_sorryserver (sorry)
l7vsd_module (mod)
l7vsd_replication (rep)
l7vsd_replication_sendthread (rep_sth)
l7vsd_parameter (para)
l7vsd_logger (logger)
l7vsd_command (cmd)
l7vsd_start_stop (stastp)
l7vsd_system (sys)
l7vsd_system_memory (sys_mem)
l7vsd_system_endpoint (sys_ep)
l7vsd_system_signal (sys_sig)
l7vsd_system_environment (sys_env)
l7vsd_snmpagent (agent)
l7vsd_protocol (prot)
l7vsd_schedule (sched)
all (약어 없음)
2.4.6 SNMPAgent 제어 명령
· 서식
l7vsadm-S [-f snmp-flag] [-i update-interval]
[-t log-trap-flag] [-l log-trap-level]
l7vsadm-S-r [-t service-address-m proto-module]
· 제어 유형 옵션 (필수)
-S (- snmp) : SNMPAgent 제어 명령을 실행한다.
· 지정 필수 매개 변수 옵션
없음.
· 지정 가능 매개 변수 옵션
-f (- flag) : SNMPAgent 기능 활성화 / 비활성화를 지정합니다.
지정할 수있는 값은 1과 0의 2 종류
1을 지정하면 SNMPAgent 기능 활성화되고 0을 지정하면 SNMPAgent
기능 비활성화되는
-i (- interval) : SNMPAgent 기능 MIB 정보의 최소 수집 간격 (초)을 지정한다.
유효한 값은 0 이상의 정수입니다.
지정된 수집 기간이 0 인 경우 MIB 정보 캐쉬가 무효가된다.
-t (- logtrap) SNMPAgent 로그 함정 발 기능의 활성화 / 비활성화를 지정합니다.
지정할 수있는 값은 1과 0의 2 종류
1을 지정하면 SNMPAgent 로그 트랩 기능 활성화되고
0을 지정하면 SNMPAgent 로그 트랩 기능 무효가된다.
-l (- logtraplevel) SNMPAgent 로그 함정 발 수준을 지정합니다.
지정 가능한 로그 수준은 fatal, error, warn, info, debug의
5 종류.
-r (- refresh) : HTTP 요청 통계를 지웁니다.
-r 옵션에 따라 가상 서비스를 지정할 수있다.
가상 서비스를 지정할 때 해당 가상 서비스의 HTTP 통계
클리어한다.
가상 서비스를 지정하지 않을 때, 모든 가상 서비스의 HTTP 통계
정보를 지웁니다.
HTTP 통계를 클리어했을 때에 서버 연결 정보 (InactConn)도
클리어한다.
· 설명
SNMPAgent 각종 제어 (SNMPAgent 기능 활성화 / 비활성화, MIB 수집 간격 변경
SNMPAgent 로그 함정 발 기능의 유효 / 무효 로그 함정 발 수준 변경
HTTP 요청 통계 삭제)한다.
2.4.7 변수 관리 기능 제어 명령
· 서식
l7vsadm-P-r reload-parameter
· 제어 유형 옵션 (필수)
-P (- parameter) : 변수 관리 기능의 제어 명령을 실행한다.
· 지정 필수 매개 변수 옵션
-r (- reload) : 지정된 구성 매개 변수를 다시로드하고 설정을 반영
한다.
지정할 수있는 구성 매개 변수 문자열은 replication,
logger, snmpagent가 all을 지정한 경우
모든 종류의 구성 매개 변수를 다시로드되고 반영
된다.
· 지정 가능 매개 변수 옵션
없음
· 설명
변수 관리 기능 각종 제어 (구성 매개 변수를 다시로드)를 실시한다.
새로고침 지정할 수있는 구성 매개 변수는 Replication 기능 설정
(replication), 로깅 설정 (logger) SNMPAgent 설정
(snmpagent)이다.
추가 구성 매개 변수를 지정 가능하지만, 미래의 확장용으로 준비하고
때문에 지정해도 아무것도 일어나지 않는다.
지정할 수있는 구성 매개 변수 문자열 목록은 다음과 같다.
지정 가능한 매개 변수 문자열에
all
l7vsd (지정 가능하지만 미대응)
command (지정 가능하지만 미대응)
session (지정 가능하지만 미대응)
virtualservice (지정 가능하지만 미대응)
module (지정 가능하지만 미대응)
replication
logger
l7vsadm (지정 가능하지만 비활성)
snmpagent
ssl (지정 가능하지만 비활성)
2.4.8 Help 표시 명령
· 서식
l7vsadm-h
· 제어 유형 옵션 (필수)
-h (- help) : 명령 사용법을 표시한다.
· 지정 필수 매개 변수 옵션
없음
· 지정 가능 매개 변수 옵션
없음
· 설명
명령 형식 및 각 옵션의 설명이 표시됩니다.
————————————————– ——————————
2.5 ProtocolModule 옵션 설명
ProtocolModule 옵션은 각 ProtocolModule 세션 관리 방식을 지원
설정이며, 옵션의 지정 방법은 각 ProtocolModule 따라 다르지만,
기본적인 형식은 다음과 유사하게됩니다.
기본 서식
- moudule-option module-args
다음 각 ProtocolModule 옵션 옵션 설명 사용 방법을 보여줍니다.
또한 각 옵션의 괄호 안의 설명은 생략 표현의 옵션입니다.
(1) Session less 모듈 옵션
RealServer에 배분을 일정 부분에 맡겨 UltraMonkey-L7는 아무것도 줄
원 않는 모듈
(UltraMonkey-L4와 거의 같은 동작을하는 모듈)
- forwarded-for (-F)
Client의 IP 주소를 X-Forwarded-For 헤더 필드에 삽입
하도록 지시한다.
기본 (지정하지 않으면) 동작은 삽입하지 않는다.
- sorry-uri URI 문자열 (-S)
SorryServer 연결 시에 취득하는 URI를 단일 따옴표 ( ‘)로 묶어야
이 결정된다.
- statistic (-c)
· HTTP 요청 수를
· HTTP GET 요청 총수
· HTTP POST 요청 총수
위의 세 가지 통계 통계하도록 지정한다.
설정 가능한 값은 0 또는 1로 1을 지정하면 정보를 통계하여 0을 지정하면
정보를 통계하지 않는다. 지정하지 않으면 기본값은 0이된다.
(2) IP 모듈 옵션
Client의 IP 주소를 바탕으로 RealServer에 배분하는 모듈
- timeout 숫자 (-T)
UltraMonkey-L7에서 세션 정보를 관리하는 기간 (초)을 설정한다.
설정 가능한 범위는 0 ~ INT_MAX 정수로 지정하지 않으면 기본값
기본값은 3600 (1 시간)이다. 0을 지정하면 관리 기간은 무제한 마라
있다.
- forwarded-for (-F)
Client의 IP 주소를 X-Forwarded-For 헤더 필드에 삽입
하도록 지시한다.
기본 (지정하지 않으면) 동작은 삽입하지 않는다.
- reschedule (-R)
세션 유지 실패시 재조정하도록 지정한다.
지정하지 않으면 기본값은 – no-reschedule된다.
- no-reschedule (-N)
세션 유지 실패시 다시 예약을하지 않도록 지정한다.
- sorry-uri URI 문자열 (-S)
SorryServer 연결 시에 취득하는 URI를 단일 따옴표 ( ‘)로 묶어야
이 결정된다.
- statistic (-c)
· HTTP 요청 수를
· HTTP GET 요청 총수
· HTTP POST 요청 총수
위의 세 가지 통계 통계하도록 지정한다.
설정 가능한 값은 0 또는 1로 1을 지정하면 정보를 통계하여 0을 지정하면
정보를 통계하지 않는다. 지정하지 않으면 기본값은 0이된다.
(3) SSL Session ID 모듈 (sslid) 옵션
RealServer 측에서 부여된 SSL Session ID를 UltraMonkey-L7에서 관리하는이
와 세션 관리를하는 모듈입니다.
- timeout (-T) 수치
UltraMonkey-L7 v2까지 사용하는 옵션이며, 호환성
위해 유치하고있다. 지정해도 효과가 없다.
- maxlist (-M) 수치
UltraMonkey-L7에서 세션 정보 (SSL Session ID)를 관리하는 것이 다람쥐
포트 수를 설정한다.
설정 가능한 범위는 0 ~ INT_MAX의 정수로 지정하지 않으면 기본값
기본값은 1024이다.
0을 지정하면 목록 수는 기본값 1024이된다.
- reschedule (-R)
세션 유지 실패시 재조정하도록 지정한다.
지정하지 않으면 기본값은 – no-reschedule된다.
- no-reschedule (-N)
세션 유지 실패시 다시 예약을하지 않도록 지정한다.
================================================== ==============================
3 l7vsadm 설정 예
각 ProtocolModule 대한 설정 예는 다음과 같습니다.
————————————————– ——————————
3.1 Sessionless 모듈 구성 예
Sessionless 모듈의 사용은 필수 옵션은 없습니다.
# l7vsadm-A-t 192.168.8.100:80-m sessionless-s rr
# l7vsadm-a-t 192.168.8.100:80-m sessionless-r 192.168.16.11:80
# l7vsadm-a-t 192.168.8.100:80-m sessionless-r 192.168.16.12:80
이상의 설정에서 각 RealServer에 배분합니다.
IPv6를 이용한 경우는 다음과 같습니다.
# l7vsadm-A-t [xxxx : xxxx : xxxx :: : 80-m sessionless-s rr
# l7vsadm-a-t [xxxx : xxxx : xxxx :: : 80-m sessionless-r yyyy : yyyy : yyyy ::: 80
# l7vsadm-a-t [xxxx : xxxx : xxxx :: : 80-m sessionless-r 192.168.16.12:80
※ 주소 끝의 []는 선택 사항입니다. IPv4와 혼합 가능. IP address 모듈
SSL SessionID 모듈에서도 IPv6 주소의 이용 방법은 동일합니다.
————————————————– ——————————
3.2 IP address 모듈 구성 예
세션 관리 기간을 지정하고 Client의 IP 주소를 X-Forwarded-For
필드에 삽입하는 경우에는 다음과 같이 설정합니다.
# l7vsadm-A-t 192.168.8.100:80-m ip – timeout 7200 – forwarded-for-s rr
# l7vsadm-a-t 192.168.8.100:80-m ip-r 192.168.16.11:80
# l7vsadm-a-t 192.168.8.100:80-m ip-r 192.168.16.12:80
이상의 설정에서 각 RealServer에 배분합니다.
————————————————– ——————————
3.3 SSL Session ID 모듈의 설정 예
SSL Session ID를 관리하는 목록 수를 지정하는 설정입니다.
# l7vsadm-A-t 192.168.8.100:80-m sslid – maxlist 512-s rr
# l7vsadm-a-t 192.168.8.100:80-m sslid-r 192.168.16.11:80
# l7vsadm-a-t 192.168.8.100:80-m sslid-r 192.168.16.12:80
이상의 설정에서, 512 개의 SSL Session ID를 관리합니다.
================================================== ==============================
4 L7 서버 모니터링 설정 도구에 대한 설명
————————————————– ——————————
4.1 설정 파일 (l7directord.cf) 설명
UltraMonkey-L7은 2에 표시된 명령 기반의 설정 방법과 l7directord에
따라 구성 파일을 사용한 설정 방법이 있습니다.
여기서는 설정 파일이다 l7directord.cf 설명합니다. 자세한 내용은
l7directord (1)를 참조 바랍니다.
————————————————– ——————————
4.2 l7directord.cf 설정 항목
설정 파일의 샘플은 / etc/ha.d/conf/l7directord.cf.sample에 설치
르됩니다. 환경에 맞추어 편집한 후 / etc/ha.d/conf/l7directord.cf 또는
/ etc/ha.d/l7directord.cf에 저장하고 l7directord를 시작하면 분류 설정
l7vsd에 반영됩니다.
4.2.1 전체 설정
구성 파일 시작 부분에 설정 항목 이름이 적혀있는 것은 전체에 관련된 설정
설정 항목에서 모든 VirtualService에 효과가 있습니다.
VirtualService하여 설정을 바꾸려면 일부 설정 항목만 아래의
VirtualService마다 설정 덮어쓸 수 있습니다.
4.2.1.1 RealServer 모니터링 설정
RealServer 모니터링에 대한 시간과 횟수에 대한 설정
(1) checktimeout (기본값 : 5)
Ping 모니터링 포트 모니터링이 설정 초 미만으로 성공적인 응답을 얻을 수 없다
경우 모니터 실패로 감시 실패 횟수를 1 증가시킵니다.
(2) negotiatetimeout (기본값 : 5)
서비스 모니터링이 설정 초 미만으로 성공적인 응답을 얻을 수없는 경우
감시 실패로 감시 실패 횟수를 1 증가시킵니다.
(3) checkinterval (기본값 : 10)
이 설정 초 간격으로 모니터링을 실시합니다.
(4) retryinterval (기본값 : 5)
감시 실패하면이 설정 초 간격으로 모니터링을 실시합니다. checkinterval
다음 초 단위로 설정하는 것으로, 이상 감지 시간을 단축할 수 있습니다.
(5) checkcount (기본값 : 3)
모니터 실패 횟수가이 설정 횟수에 도달하면 대상 서버를 이상과 판
절단하고 l7vsd에서 분리합니다.
서버 이상하다고 판단하는 시간에 대한 예를 들면
checktimeout = 5 (또는 negotiatetimeout = 5)
retryinterval = 1
checkcount = 3
위의 설정에서 서버에 이상이 감시가 항상 시간 초과하면
첫 번째 모니터링을 시작 5 초 후에 시간 초과 (실패 1 차), 1 초 후에
다음 모니터링을 시작 5 초 후에 시간 초과 (실패 2 번째), 1 초간 기다렸다가
다음 모니터링을 시작 5 초 후에 시간 초과 (실패 3 번째)하여 서버 이상
판단되고 분류에서 제외된다. 즉, 모니터링 시작 17 초 후
서버 이상이된다. (5 + 1 + 5 + 1 + 5 = 17)
그러나 여기에 제시된 초는 모두 타임 아웃했을 경우이기 때문에 이상
판단있는 최대 시간 (초)이되고, 예를 들어 서비스 모니터링 서버
서비스를 제공하는 프로세스가 다운 있었을 경우는 특정 포트에 연결
실패하기 때문에 모니터링 시작 후 즉시 실패로 판단된다. 따라서 위의
예라면 약 2 초 후에 3 번 모니터링 실패하고 서버 이상으로 판단된다.
(0 + 1 + 0 + 1 + 0 = 2)
서버 정전 후 모니터링에 성공하면 자동으로 l7vsd의 배분 대상으로
추가된다.
4.2.1.2 로깅 설정
l7directord 로깅에 대한 설정
(1) logfile (기본값 : / var/log/l7vs/l7directord.log)
l7directord 로그 대상을 지정합니다. 절대 경로로 작성 (시작가 /)
경우 해당 파일에 출력하고, 그렇지 않으면 syslog에 나와
힘이됩니다. syslog에 기록될 설정치가 설비되어 있습니다
합니다.
(예 : logfile = / var/log/l7vs/l7directord.log, logfile = local0)
(2) supervised
이 설정을 한 경우 l7directord 프로세스가 데몬이되지 않고 동
로운 로그를 표준 출력, 표준 오류에 출력한다.
설정 항목 중 supervised에만 뒤에 값을 취하지 않고 (= 1 등은 필요 없어
있습니다) supervised로 작성하면된다.
이 설정은 외부 도구로 daemontools 데몬 모니터링을 할 때 유
유효합니다.
4.2.1.3 RealServer 이상시 설정
모니터 이상시 동작에 대한 설정
(1) quiescent (기본값 : yes)
RealServer 이상시 l7vsd의 배분에서 제외되지만, 그 제외
방법에 관한 설정입니다. 이 설정을 사용하면 이상하다고 판단되는
한 RealServer은 l7vsd에서 제거되지 않고, 무게 (weight)가 0으로 설정
설정되는 것으로, 배분 대상에서 제외됩니다. 사용하지 않는 경우, l7vsd
에서 제거됩니다.
(2) fallback
VirtualService에 속하는 RealServer가 모두 이상이 어떤
RealServer에 배분 수 없게 된 경우에 자동으로 추가되는
대체 RealServer 설정입니다. IP 주소와 포트 번호를 지정합니다.
이 설정은 추가된 fallback 서버는 RealServer가 회복
성공적으로 배분을 할 수있게되었을 때 자동으로 삭제됩니다.
(예 : fallback = 127.0.0.1:80)
4.2.1.4 설정 파일 모니터링 설정
설정 파일의 변경을 모니터링하는 설정
l7directord는 설정 파일을 정기적으로 모니터링하고 변경 사항이 발생하면 간다
무덤의 동작을 일으킬 수 있습니다. 설정 파일 모니터링에서는 구성 파일
파일의 MD5 체크섬이 변화하면, 내용이 변경된 것으로 판단하고
있으며, 파일 업데이트 시간만이 변화하는 경우는 무시됩니다.
(1) configinterval (기본값 : 10)
설정 파일의 변경을 모니터링하는 초 간격을 지정합니다.
(예 : configinterval = 5)
(2) autoreload (기본값 : no)
설정 파일이 변경되었다는 것을 감지하면 그 변경된 내용을
프로세스에 반영할지 여부를 설정합니다.
(3) callback
이 설정에 절대 경로로 실행 파일을 지정하면 설정 파일
르의 변화를 감지했을 때 구성 파일을 인수로 실행합니다. 이
설정 autoreload 설정과 관계없이 autoreload이 no의 경우도 실행
됩니다.
4.2.2 VirtualService마다 설정
virtual 행 다음으로 선두에 들여쓰기가 놓여져 설정 항목 이름이 적혀있다
것은 그 virtual에 대해서만 작용하는 설정입니다.
4.2.2.1 VirtualService 정의
(1) virtual
VirtualService의 IP 주소와 포트 번호를 지정한다.
이 설정 항목만 줄의 시작 부분에 쓸 필요가있다
(예 : virtual = 192.168.0.2:80, virtual = [:: 1] : 80)
(2) module (기본값 : sessionless)
VirtualService 설정 프로토콜 모듈과 필요한 경우 그
옵션을 지정한다. 현재 구성 가능한 프로토콜 모듈은 다음의
3.
sessionless, ip, sslid
(예 : module = sessionless – forwarded-for)
(3) scheduler (기본값 : rr)
VirtualService 설정 일정 모듈을 지정합니다. 현재 손가락
설정 가능한 일정 모듈은 세 가지.
rr, wrr, lc
(예 : scheduler = lc)
(4) sorryserver
VirtualService이 sorry 상태가되었을 때 할당되는 Sorry 선생님
서버의 IP 주소, 포트 번호, 패킷 전송 방식을 지정한다.
패킷 전송은 masq 또는 tproxy을 지정하고 기본값은 masq 설정
설정된다. 또한 tproxy 설정을 사용하려면 8.1 설정이 필요합니다.
(예 : sorryserver = 192.168.1.101:80 tproxy)
(5) maxconn (기본값 : 0)
VirtualService 당 최대 동시 연결 수를 지정합니다. 이것 이상의 연결
이 경우, Sorry 서버에 배분된다. 0을 지정하면
제한 없음이다.
(예 : maxconn = 1000)
(6) qosup (기본값 : 0)
VirtualService 당 허용 처리량 (업스트림)를 지정한다. 이
설정 이상의 처리량하는 경우에는 패킷의 전송이 지연됩니다
있다. 0을 지정하면 제한 없음이된다.
(예 : qosup = 200K)
(7) qosdown (기본값 : 0)
VirtualService 당 허용 처리량 (하행 방향)을 지정한다. 이
설정 이상의 처리량하는 경우에는 패킷의 전송이 지연됩니다
있다. 0을 지정하면 제한 없음이된다.
(예 : qosdown = 100M)
(8) sslconfigfile
VirtualService가 Client와 통신시 SSL 통신을하는 경우 SSL
설정 파일의 경로를 지정한다.
(예 : sslconfigfile = / etc/l7vs/sslproxy/sslproxy.target.cf)
(9) socketoption
VirtualService (TCP)에서 사용하는 소켓 옵션을 지정한다.
(예 : socketoption = deferaccept, nodelay, quickackoff)
(10) accesslog
액세스 로그 출력 여부를 yes, no로 설정한다.
(예 : accesslog = yes)
(11) accesslogfile
액세스 로깅되는 로그 파일 이름의 전체 경로를 지정한다.
(예 : accesslogfile = / var/log/l7vs/l7vsd_conn.log)
(12) accesslog_rotate_type
회전 타입으로, date, size, datesize 어떤을
지정한다.
(예 : accesslog_rotate_type = datesize)
(13) accesslog_rotate_max_backup_index
백업 파일의 최대 개수를 지정한다.
(예 : accesslog_rotate_max_backup_index = 2)
(14) accesslog_rotate_max_filesize
로그의 최대 크기를 지정한다. K (킬로), M (메가), G (기가)의 지정도
가능.
(예 : accesslog_rotate_max_filesize = 100M)
(15) accesslog_rotate_rotation_timing
회전하는 타이밍을 year, month, week, date, hour
어떤 지정한다.
(예 : accesslog_rotate_rotation_timing = month)
(16) accesslog_rotate_rotation_timing_value
회전하는 날짜와 시간을 지정한다.
(예 : accesslog_rotate_rotation_timing_value = “1 23:59″)
4.2.2.2 RealServer 정의 및 모니터링 설정
(1) real
RealServer의 IP 주소와 포트 번호를 지정한다. 옵션으로
패킷 전송 가중치 (weight) 아래의 request, receive를
RealServer마다 개별적으로 설정할 수있다. 또한 패킷 전송 방식은 masq,
tproxy가 지정할 수 있습니다. 또한 IP 주소는 ->를 끼고 범위 지정할
수도 있습니다. 또한 tproxy 설정을 사용하려면 8.1 설정
필요합니다.
(예 : real = 192.168.0.11:80,
real = 192.168.0.11:80 masq 100 index.html ‘Test Page’,
real = 192.168.0.11-> 192.168.0.15:80 tproxy)
(2) checkport
RealServer를 모니터링할 때 real에서 지정한 포트 번호와 다른
포트 모니터링 요청을 보낼 때 사용할 포트 번호를 설정합니다.
(3) checktype (기본값 : negotiate)
RealServer 모니터링 방법을 지정합니다. 다음의 6 종류에서 선택합니다.
negotiate : 서비스 모니터링을
connect : 포트 모니터링하는
ping : Ping 모니터링하는
숫자 : 서비스 모니터링 및 포트 감시를 병용하는
custom : 사용자 정의 모니터링하는
off : 감시없이 항상 서버 이상하다고 판단되는
on : 감시없이 항상 서버 정상으로 판단
negotiate의 경우 아래의 설정을 할 필요가 있습니다. 수치의 경우는,
설정한 수치 횟수 포트 모니터링 및 1 회 서비스 모니터링을 반복합니다.
서비스 모니터링에 의한 부하가 큰 경우에 유용합니다. custom의 경우 아래
의 customcheck 설정을해야합니다.
(4) service (기본값 : none)
서비스 모니터링시 모니터링 서비스를 지정합니다. 다음의 13 종류에서 선택
합니다.
1) http
HTTP 연결하고 문서 루트에 요청 보내기 응답
확인합니다. 응답 코드가 4xx, 5xx의 경우는 감시 실패와
결정됩니다. 아래의 request, receive, httpmethod, virtualhost
옵션으로 설정할 수 있습니다.
2) https
HTTPS 연결하고 모니터링합니다. 다른 사람은 http와 동일.
3) smtp
SMTP 연결하고 서버가 정상적인 SMTP 응답을 확인한다.
4) pop
POP3로 접속하여 서버가 정상적인 POP3 응답을 확인한다.
아래의 login, passwd를 옵션으로 설정 가능.
5) imap
IMAP에 연결하고 서버가 정상적인 IMAP 응답을 확인한다.
아래의 login, passwd를 옵션으로 설정 가능.
6) ftp
FTP로 접속하여 login, passwd 설정 값으로 로그인할 수
확인한다. 아래의 request, receive를 옵션으로 설정 가능.
7) ldap
LDAP에 연결하고 서버가 정상적인 LDAP 응답을 확인한다.
아래의 request, receive를 옵션으로 설정 가능.
8) dns
DNS 서버에 연결하고 이름 확인이 성공적으로 수행할 것을 확인한다. 아래
의 request, receive를 설정할 필요가있다.
9) nntp
NNTP 연결하고 서버가 정상적인 NNTP 응답 (상태 코드 2xx)
를 반환하는지 확인한다.
10) pgsql
지정된 PostgreSQL 데이터베이스 (database 항목에서 지정)에 접속
수 있는지 확인한다. 아래의 request, receive를 옵션으로
て 설정할 수 있습니다.
11) mysql
지정된 MySQL 데이터베이스 (database으로 지정)에 연결할 수
확인한다. 아래의 request, receive를 옵션으로 설정
가능.
12) sip
SIP 서버에 연결하고 지정된 Call ID 정상적인 응답 (상태
코드 200)을 반환하는지 확인한다. 아래의 login을 참조.
13) none
아무것도하지 않고 서버 정상으로 판단한다.
(5) request
다음과 같이 service의 설정에 따라 동작이 다르다.
i) http, https
모니터링을위한 URL을 http:// 안에 지정 또는 URI로 지정한다. 지정
하면 해당 URL을 검색하는 요청 (GET 또는 HEAD)를
전송한다. URI의 경우, 선두의 / 붙여도 붙이지 않아도 상관 없어
있다.
(예 : request = http://192.168.0.2/foo/bar/index.html,
request = / doc / manual.html,
request = favicon.ico)
ii) ftp
모니터링을위한 파일을 지정한다. FTP 모니터링은 로그인 후 /로 이동합니다
하기 위해 /에서 상대 경로로 작성해도 절대 경로로 작성
수 있었다. 지정하면 해당 파일이 GET 수 있는지 확인
있다.
(예 : request = / etc / passwd,
request = etc / hosts)
iii) ldap
LDAP 검색시 BaseDN를 지정한다. 지정된 경우 BaseDN
을 범위 base 필터 (objectClass = *) 검색하여 찾을이
지 확인한다.
(예 : request = dc = my-domain, dc = com)
iv) dns
DNS 이름 확인하기위한 요청을 지정한다. 지정된 요청
를 정방향 또는 역방향 수 있는지 확인한다. 아래의 receive도 설정
설정해야합니다.
(예 : request = www.example.com,
request = 127.0.0.1)
v) pgsql, mysql
데이터베이스 연결 후 전송하는 쿼리를 지정합니다. 결과가 0 행
경우 모니터링 실패 판단된다.
(예 : request = ‘select * from test’,
request = ‘insert into test values (1)’,
request = ‘delete from test where test = 1′)
(6) receive
다음과 같이 service의 설정에 따라 동작이 다르다. 모두
request 설정이 필수적이다.
i) http, https
검색된 URL의 데이터에 여기서 지정하는 문자열이 존재하는가
확인된다. 항상 Perl의 정규식 확인하므로 ‘.’등의 글을
글자는 주의할 필요가있다.
(예 : receive = “DOCTYPE HTML PUBLIC”
receive = “2009 \. [01] [0-9] \ [0-3] [0-9]“)
ii) ftp
검색된 파일의 데이터에 여기서 지정하는 문자열이 있는지
이 확인된다. 항상 Perl의 정규식 확인하므로 ‘.’등의
문자는 주의할 필요가있다.
(예 : receive = “root * \ / bin \ / bash”
receive = “127 \ .0 \ .0 \ .1″)
iii) ldap
LDAP 검색 결과에 여기서 지정하는 문자열이 있는지 확인되지
있다. 항상 Perl의 정규식 확인하므로 ‘.’등의 문자주의
필요가있다.
(예 : receive = ‘dc = my-domain, dc = com’,
receive = ‘^ dc = [^,] +, dc = [^,] + $’)
iv) dns
DNS에서 request로 설정 값을 이름 확인 결과를 지정합니다.
(예 : receive = ’192 .168.0.101 ‘
receive = ‘localhost’)
v) pgsql, mysql
request에 지정된 쿼리를 처리 결과의 행수를 1 이상으로 지정
합니다.
(예 : receive = 1)
(7) login
service에 따라 약간 동작이 다르다.
i) pop, imap, ftp, pgsql, mysql
로그인 이름으로 사용된다. passwd 설정도 필요.
(예 : login = postgres)
ii) sip
Call ID로 사용된다.
(8) passwd
service가 pop, imap, ftp, pgsql, mysql 때 로그인 암호
드 사용된다.
(예 : passwd = password)
(9) httpmethod (기본값 : GET)
service가 http, https시로 요청 방법을 지정
있습니다. GET 또는 HEAD 지정할 수 있습니다.
(예 : httpmethod = HEAD)
(10) virtualhost
service가 http, https 자에게 요청의 Host 필드
를 지정합니다.
(예 : virtualhost = www.example.net)
(11) database
service가 pgsql, mysql 때 연결하려는 데이터베이스 이름을 지정합니다
합니다.
(예 : database = template1)
(12) realdowncallback
RealServer 이상을 감지했을 때 실행할 파일을 지정합니다. 손가락
설정되면 이상 서버의 IP 주소를 인수로 파일을 실행
됩니다.
(예 : realdowncallback = / usr / local / bin / down_notify.sh)
(13) realrecovercallback
RealServer 복구를 감지했을 때 실행할 파일을 지정합니다. 손가락
설정되면 이상에서 복구 서버의 IP 주소를 인수로
파일이 실행됩니다.
(예 : realrecovercallback = / usr / local / bin / recover_notify.sh)
(14) customcheck
checktype에 custom을 지정했을 때, RealServer 모니터로 실행
명령을 지정합니다. 명령 실행 결과가 0이면 감시 성공, 그
되지 않은 경우는 감시 실패합니다. 명령 문자열의 _IP_ 모니터링
대상 RealServer의 IP 주소로 _PORT_ 포트 번호로 대체
수 있습니다.
(예 : customcheck = wget-q-O / dev / null http://_IP_:_PORT_/)
4.2.2.3 덮어쓸 수있는 전체 설정 항목
다음 전체 설정은 VirtualService마다 설정에 작성할 수 있
온,이 경우 전체 설정 항목 설정을 무시하고 그 VirtualService
만의 고유한 설정으로 취급된다.
· checkcount
· checkinterval
· retryinterval
· checktimeout
· negotiatetimeout
· quiescent
· fallback
4.3 샘플
예를 들어, 기대하는 기능을 갖게하기 위해 설정 패턴을 몇 가지 든다.
각각에 대해 언급하지 않는 정의 값에 대해서는 디폴트 값을 사용하여야한다.
1) 두 RealServer에 배분 Ping 모니터링하는
virtual = xxx.xxx.xxx.xxx : 80
real = 192.168.1.2:80
real = 192.168.1.3:80
checktype = ping
2) 두 RealServer에 각각 가중치를 2:3로 바꾸고, 가중치의 배분
한다. 또한 서비스 모니터링하고 Apache의 mod_status를 사용하여 유휴
상태 worker가 있는지 확인한다.
virtual = xxx.xxx.xxx.xxx : 80
real = 192.168.1.2:80 2
real = 192.168.1.3:80 3
scheduler = wrr
service = http
request = / server-status
receive = “[1-9] [0-9]? idle workers”
3) 두 RealServer에 배분 sslid 모듈을 사용하여 클라이언트
세션을 유지한다.
virtual = xxx.xxx.xxx.xxx : 443
real = 192.168.1.2:443
real = 192.168.1.3:443
module = sslid
4) IPv6 구성 예
주소 끝의 []는 선택 사항입니다. IPv4와 혼합 가능.
virtual = xxxx : xxxx : xxxx :: : 80
real = 192.168.1.2:80
real = [:: 1] : 80
virtual = xxxx : xxxx : xxxx ::: 8080
real = :: 1:80
================================================== ==============================
5 Replication 기능
————————————————– ——————————
5.1 Replication 기능에 대한 설명
Replication 기능은 Heartbeat2의 이중화 구성시, MASTER 서버와
SLAVE 서버 사이에서 SSL 세션 ID 정보 VirtualService의 QoS 정보
Sorry 플래그 정보를 동기화하는 데 사용하는 기능입니다.
Replication 기능은 이중화 구성 및 기능 수행 상황에 따라 다음 상태
(Replication Mode)에서 작동합니다.
현재 상태는 “l7vsadm-V”명령으로 확인할 수 있습니다.
SINGLE : 비 중복 구성에서 Replication이 작동하지 않는 상태
MASTER : 이중화 구성으로 Replication가 MASTER 서버로 실행 (동기
원)의 상태
SLAVE : 이중화 구성으로 Replication이 SLAVE 서버로 실행 (동기
대상)이있는 상태
MASTER_STOP : MASTER (원본)에서 명령은 Replication 기능 중지
상태
SLAVE_STOP : SLAVE (대상)에서 명령은 Replication 기능 중지
상태
위의 MASTER ⇔ MASTER_STOP, SLAVE ⇔ SLAVE_STOP 상태 전환은 Replication
기능 제어 명령 “l7vsadm-R-s stop”, “l7vsadm-R-s start”으로 할
수 있습니다.
Replication 기능 설정 (대향 서버 정보 사용 구성 요소 정보는
UltraMonkey-L7 설정 파일에서 replication 섹션에 설명합니다.
설정 방법에 대한 자세한 내용은 6 UltraMonkey-L7 설정 파일의 설명을 참조
또한 Replication 기능 제어 명령은 강제로 현재 Replication 데이터
를 SLAVE 서버에 반영시키고, 현재 Replication 데이터를 덤프하는
수 있습니다.
Replication 기능 제어 명령 자세한 내용은 2.4.4 Replication 기능 제어 명령을
참조
================================================== ==============================
6 UltraMonkey-L7 설정 파일에 대한 설명
————————————————– ——————————
6.1 설정 파일 (l7vs.cf) 설명
UltraMonkey-L7 관한 각종 설정을 작성할 수 있습니다.
설정 가능한 항목은 logger] [l7vsadm] [l7vsd] [virtualservice]
[replication] [session]의 6 종류로, 각각의 섹션별로 설명합니다.
[logger]
· UltraMonkey-L7을 구성하는 각 프로세스 (l7vsd/l7vsadm/SNMPAgent) 로그
출력에 대한 설정 (로그 파일, 로그 순환 로그 수준)
을 설명합니다.
[l7vsadm]
· l7vsadm 명령에 대한 설정 (이중 부팅 검사, l7vsd 연결 검사의
등)을 설명합니다.
[replication]
· Replication 기능 설정 (대향 서버 정보 사용 구성 요소 정보
)을 작성합니다.
[l7vsd]
· l7vsd 프로세스에 대한 설정 (파일 열기 최대 수)를 작성합니다.
[vitrualservice]
· VitrualService 관한 설정 (세션 처리량 산출 간격 등)
기술합니다.
[replication]
· Replication 기능 설정 (대향 서버 정보 사용 구성 요소 정보의
등)을 설명합니다.
[snmpagent]
· SNMPAgnet에 대한 설정을 설명합니다.
[session]
세션에 관한 설정 (수신 버퍼 크기 등)을 설명합니다.
————————————————– ——————————
6.2 l7vs.cf 예제 설명
# 로거 섹션
[logger]
# l7vsd 출력 로그 파일
l7vsd_log_filename = “/ var/log/l7vs/l7vsd.log”
# 로그 회전 방법
# 크기 “size”날짜 “date”, 날짜 + 사이즈 “datesize”를 지정할 수 있습니다
l7vsd_rotation = “size”
# 순환의 백업 파일 생성 수
# 1에서 12으로 지정할 수 있습니다
l7vsd_max_backup_index = “10″
# 크기의 회전시의 파일 크기
# 65535에서 ULONG_MAX를 지정할 수 있습니다
# K (킬로), M (메가), G (기가)의 지정도 가능합니다
l7vsd_max_filesize = “10M”
# 액세스 로그 회전 방법
# 크기 “size”날짜 “date”, 날짜 + 사이즈 “datesize”를 지정할 수 있습니다
l7vsd_accesslog_rotate_type = “size”
# 액세스 로그 회전에 의한 백업 파일 생성 수
# 1에서 12으로 지정할 수 있습니다
l7vsd_accesslog_rotate_max_backup_index = “10″
# 접근 로그 크기에 따라 회전시의 파일 크기
# 65535에서 ULONG_MAX를 지정할 수 있습니다
# K (킬로), M (메가), G (기가)의 지정도 가능합니다
l7vsd_accesslog_rotate_max_filesize = “10M”
# 로그 카테고리 l7vsd_network의 기본 로그 수준
# debug, info, warn, error, fatal 지정할 수 있습니다
l7vsd_network = “warn”
l7vsd_network_qos = “warn”
l7vsd_network_bandwidth = “warn”
l7vsd_network_num_connection = “warn”
l7vsd_network_access = “warn”
l7vsd_mainthread = “warn”
l7vsd_virtualservice = “warn”
l7vsd_virtualservice_thread = “warn”
l7vsd_session = “warn”
l7vsd_session_thread = “warn”
l7vsd_realserver = “warn”
l7vsd_sorryserver = “warn”
l7vsd_module = “warn”
l7vsd_replication = “warn”
l7vsd_replication_sendthread = “warn”
l7vsd_parameter = “warn”
l7vsd_logger = “warn”
l7vsd_command = “warn”
l7vsd_start_stop = “warn”
l7vsd_system = “warn”
l7vsd_system_memory = “warn”
l7vsd_system_endpoint = “warn”
l7vsd_system_signal = “warn”
l7vsd_system_environment = “warn”
l7vsd_snmpbridge = “warn”
l7vsd_protocol = “warn”
l7vsd_schedule = “warn”
# l7vsadm 출력 로그 파일
l7vsadm_log_filename = “/ var/log/l7vs/l7vsadm.log”
# 로그 회전 방법
l7vsadm_rotation = “date”
# 순환의 백업 파일 생성 수
l7vsadm_max_backup_index = “10″
# 날짜별로 순환시 타이밍 (주기)
# 매년 “year”매월 “month”매주 “week”매일 “date”매시 “hour”가
# 수 있습니다
l7vsadm_rotation_timing = “month”
# 날짜별로 순환시 타이밍 (전환 시간)
# 매시 “hour”예 -> “30″
# 매일 “date”예 -> “10:30″
# 매주 “week”예 -> “tue 10:30″
# 매월 “month”예 -> “15 10:30″
# 매년 “year”지정시 예 -> “5 / 15 10:30″
# ※ 회전 타이밍은 최대 매년주기 (1 년마다)의 사양으로하고있다
# 때문에 윤년 2 / 29는 예외 세월로 설정해도 에러가된다.
l7vsadm_rotation_timing_value = “1 12:01″
# 로그 카테고리 l7vsadm_parse의 기본 로그 수준
# debug, info, warn, error, fatal 지정할 수 있습니다
l7vsadm_parse = “warn”
l7vsadm_operate = “warn”
l7vsadm_config_result = “warn”
l7vsadm_common = “warn”
l7vsadm_logger = “warn”
l7vsadm_parameter = “warn”
l7vsadm_module = “warn”
l7vsadm_protocol = “warn”
l7vsadm_schedule = “warn”
# snmpagent 출력 로그 파일
snmp_log_filename = “/ var/log/l7vs/snmpagent.log”
# 로그 회전 방법
snmp_rotation = “datesize”
# 순환의 백업 파일 생성 수
snmp_max_backup_index = “10″
# 크기의 회전시의 파일 크기
snmp_max_filesize = “30M”
# 날짜별로 순환시 타이밍 (주기)
snmp_rotation_timing = “week”
# 날짜별로 순환시 타이밍 (전환 시간)
snmp_rotation_timing_value = “wed 23:59″
# 로그 카테고리 snmpagent_start_stop의 기본 로그 수준
# debug, info, warn, error, fatal 지정할 수 있습니다
snmpagent_start_stop = “warn”
snmpagent_manager_receive = “warn”
snmpagent_manager_send = “warn”
snmpagent_l7vsd_receive = “warn”
snmpagent_l7vsd_send = “warn”
snmpagent_logger = “warn”
snmpagent_parameter = “warn”
snmpagent_system = “warn”
snmpagent_system_memory = “warn”
snmpagent_system_endpoint = “warn”
snmpagent_system_signal = “warn”
snmpagent_system_environment = “warn”
# l7vsadm 섹션
[l7vsadm]
# l7vsadm 명령 이중 부팅 검사시 재시도 간격 (초)
cmd_interval = 1
# l7vsadm 명령 이중 부팅 검사시 재시도 횟수 (회)
cmd_count = 10
# l7vs 연결 확인시 재시도 간격 (초)
con_interval = 1
# l7vs 연결 확인시 재시도 횟수 (회)
con_count = 10
# l7vsd 섹션
[l7vsd]
# 파일 열기 리소스 제한
maxfileno = 65535
# virtualservice 섹션
[virtualservice]
# 세션 스레드 풀 크기
session_thread_pool_size = 32
# 처리량을 계산하는 간격
throughput_calc_interval = 500
# VirtualService가 관리하는 세션이 사용할 CPU 개수
num_of_core_uses = 0
# replication 섹션
[replication]
# 데이터 대상 (SLAVE)의 IP 주소
# 호스트 이름으로 작성할 수 있습니다
# IPv6 형식으로 작성할 수 있습니다
# (IPv6 설정 예 : ip_addr = “[fe80 :: 1]“)
ip_addr = “192.168.0.254″
# MASTER에서 데이터를 수신 port 번호
# 서비스 이름으로 작성할 수 있습니다
service_name = “40000″
# MASTER로부터 데이터를 수신하는 IP 주소
# IPv6 형식으로 작성할 수 있습니다
# (IPv6 설정 예 : ip_addr = “[fe80 :: 1]“)
recv_ip_addr = “192.168.0.253″
# 데이터 (1 블록 = 512 byte)의 송신 간격 (uS)
# 10에서 10000으로 지정할 수 있습니다
interval = 1000
# 강제 Replication 명령을 실행할 때 데이터
# (1 블록 = 512 byte)의 송신 간격 (mS)
# 4 400으로 지정할 수 있습니다
compulsorily_interval = 40
# Replication 기능의 구성 요소 이름
# 구성 요소 ID (cmponent_id_xx)는 통번에서 0에서 99까지 지정
cmponent_id_00 = “virtualservice”
# 구성 요소를 사용하는 블록 크기
# (1 블록 = 512 byte)입니다
# 구성 요소 ID (cmponent_id_xx)와 쌍으로 지정하고 0에서 100000
# 지정할 수 있습니다
cmponent_size_00 = 64
cmponent_id_01 = “sslid”
cmponent_size_01 = 222
# snmpagent 섹션
[snmpagent]
# SNMPAgent 기능 활성화 또는 비활성화
# true 또는 false를 지정할 수 있습니다
enable = “false”
# MIB 정보의 최소 수집 간격 (s)
# 0에서 2147483647까지 지정할 수 있습니다
cache_update_interval = 1
# 로그 함정 발 기능 활성화 또는 비활성화
# true 또는 false를 지정할 수 있습니다
logtrap = “false”
# TRAP 발 로깅 수준
# debug, info, warn, error, fatal 지정할 수 있습니다
logtrap_level = “warn”
# 위 QoS 경고 경고 임계값
# 1에서 100까지 지정할 수 있습니다
qos_up_alert_on = 85
# 위 QoS 경고 경고 취소 한계
# 1에서 100까지 지정할 수 있습니다
qos_up_alert_off = 50
# 내려가는 QoS 경고 경고 임계값
# 1에서 100까지 지정할 수 있습니다
qos_down_alert_on = 85
# 내려가는 QoS 경고 경고 취소 한계
# 1에서 100까지 지정할 수 있습니다
qos_down_alert_off = 50
# 나머지 세션 경고 경고 임계값
# 1에서 2147483647까지 지정할 수 있습니다
sessionpool_alert_on = 85
# 나머지 세션 경고 경고 취소 한계
# 1에서 2147483647까지 지정할 수 있습니다
sessionpool_alert_off = 50
# 트랩 큐 폴링 간격 (nS)
# 1에서 1000000000까지 지정할 수 있습니다
trap_queue_polling_interval = 100000000
# 트랩 큐 최대값
# 1에서 2147483647까지 지정할 수 있습니다
trap_queue_max_size = 1000
# session 섹션
[session]
# 세션 업스트림 Socket 버퍼 크기
upstream_buffer_size = 8192
# 세션 하행 방향 Socket 버퍼 크기
downstream_buffer_size = 8192
================================================== ==============================
7 SSL 설정 파일에 대한 설명
————————————————– ——————————
7.1 설정 파일의 설명
클라이언트와의 SSL 통신에 대한 각종 설정을 작성할 수 있습니다.
[ssl] 섹션에 모든 설정을 설명합니다.
SSL 설정 파일은 UltraMonkey-L7 설정 도구에서 VirtualService 추가
때 명령 옵션으로 지정합니다. VirtualService 서로 다른 SSL 설정
설정 파일을 지정할 수 있습니다.
[ssl] 섹션
· SSL 통신에 대한 설정을 설명합니다.
(※) v3에서 l7vsd 단체로 SSL 해독이 가능하게되었습니다.
(v2까지 sslproxy이 필요했습니다)
————————————————– ——————————
7.2 sslproxy.target.cf 예제 설명
# ssl 섹션
[ssl]
# SSL 핸드 셰이크 프로세스의 제한 시간 값 (초)
timeout_sec = 30
# 루트 인증서 디렉토리 경로
ca_dir = “/ etc/l7vs/sslproxy /”
# 루트 인증서 파일 (빈 문자열도 가능)
ca_file = “root.pem”
# 서버 인증서 체인 디렉토리 경로
cert_chain_dir = “/ etc/l7vs/sslproxy /”
# 서버 인증서 체인 파일
cert_chain_file = “server.pem”
# 비밀 열쇠 디렉토리 경로
private_key_dir = “/ etc/l7vs/sslproxy /”
# 비밀 키 파일
private_key_file = “server.pem”
# 비밀 키 암호화 유형 (SSL_FILETYPE_PEM 또는 SSL_FILETYPE_ASN1)
private_key_filetype = “SSL_FILETYPE_PEM”
# 비밀키 암호 디렉토리 경로
private_key_passwd_dir = “/ etc/l7vs/sslproxy /”
# 비밀키 암호 파일
private_key_passwd_file = “passwd.txt”
# 인증서 유효성 검사 옵션 (복수 지정 가능 ※, OpenSSL 정의 항목)
verify_options = “SSL_VERIFY_FAIL_IF_NO_PEER_CERT”
verify_options = “SSL_VERIFY_CLIENT_ONCE”
# 검증 인증서 계층
verify_cert_depth = 9
# SSL 옵션 (복수 지정 가능 ※, OpenSSL 정의 항목)
ssl_options = “SSL_OP_ALL”
ssl_options = “SSL_OP_NO_SSLv2″
# 일시 키 디렉토리 경로 (SSL 옵션 “SSL_OP_SINGLE_DH_USE”이
지정된 경우에만 필요하다)
tmp_dh_dir = “/ etc/l7vs/sslproxy /”
# 일시 키 파일 이름 (SSL 옵션 “SSL_OP_SINGLE_DH_USE”이
지정된 경우에만 필요하다)
tmp_dh_file = “dh512.pem”
# 암호화 스위트 (OpenSSL 정의 항목)
cipher_list = “ALL :! ADH :! LOW :! EXP :! MD5 : @ STRENGTH”
# 세션 캐시 (on, off)
session_cache = “on”
# 세션 캐시 크기가 0이 지정된 경우, 사이즈 제한 없음
session_cache_size = 20480
# 세션 캐시 시간 제한
# 0이 지정된 경우, 기본값 300 초
session_cache_timeout = 300
(※) verify_options, ssl_options 내용은 해당 옵션 행을 여러 행 지정할
하는 수 있습니다.
================================================== ==============================
8 기타
————————————————– ——————————
8.1 snmpd 설명
8.1.1 설정 파일 (snmpd.conf)에 대한 설명
master agentx <-Master agentx 사용 여부 플래그
access <- 모든 iso 트리를 액세스할 수 설정.
trap2sink <- 트랩 싱크 지정.
8.1.2 snmpd.conf의 예제 설명
# net-snmp configuration file.
# / etc / snmp / snmpd.conf
master agentx # Master agentx 사용 여부 플래그 추가
com2sec ultramonkey_sec default ultramonkey_com # 네트워크의 범위와 커뮤니티 이름을 정의
group ultramonkey_group v1 ultramonkey_sec # 보안 이름과 SNMP의 보안 모델을 그룹 이름으로 정의
group ultramonkey_group v2c ultramonkey_sec
group ultramonkey_group usm ultramonkey_sec
view ultramonkey included .1.3.6.1.4.1.32132.1 # SNMP에서 구할 수있는 정보의 범위를 지정
access ultramonkey_group “”any noauth exact ultramonkey none none # 모든 iso 트리를 액세스할 수 설정.
trap2sink 127.0.0.1 public # 트랩 싱크 지정을 추가합니다.
————————————————– ——————————
8.2 Transparent Proxy에 대해
VirtualService 만들 때 RealServer 추가시 – tproxy 옵션을 붙이는 것으로,
Transparent Proxy 기능이 활성화되어 RealServer 및 SorryServer에 배분
시에 클라이언트의 IP 주소를 bind하여 연결합니다. 이 기능을 사용하면
RealServer 및 SorryServer 클라이언트에서 직접 연결된 것처럼 보이게
하는 수 있습니다.
그러나이 기능을 사용하려면 다음 세 가지 조건을 충족해야합니다.
(1) UltraMonkey-L7 서버의 커널 버전이 다음을 충족
2.6.28 이상 (RHEL6.0 이상)
(2) RealServer, SorryServer과 UltraMonkey-L7가 다른 서버의 경우 RealServer,
SorryServer 기본 게이트웨이 UltraMonkey-L7 서버를 설정하는
수
(3) 다음 iptables, ip rule, ip route 설정을 할
iptables-t mangle-N DIVERT
iptables-t mangle-A DIVERT-j MARK – set-mark 1
iptables-t mangle-A DIVERT-j ACCEPT
ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0 / 0 dev lo table 100
추가적으로 조건에 따라 다음 (i) 또는 (ii) 설정을 할
(i) RealServer, SorryServer과 UltraMonkey-L7가 다른 서버의 경우
iptables-t mangle-A PREROUTING-p tcp-m socket-j DIVERT
(ii) RealServer, SorryServer과 UltraMonkey-L7가 동일한 서버의 경우
(단, 루프백 주소는 설정할 수 없다)
iptables-t mangle-A OUTPUT-p tcp-s 서버 주소 \
- sport 서버 포트-j DIVERT
(※) (i), (ii) 동시 설정 가능
==================================================