ILB는 다음과 같은 선택적 유형의 서버 상태 검사를 제공합니다.
내장 핑 프로브
내장 TCP 프로브
내장 UDP 프로브
상태 검사로 실행할 수 있는 사용자 제공 사용자 정의 테스트
기본적으로 ILB는 상태 검사를 수행하지 않습니다. 로드 균형 조정 규칙을 만들 때 각 서버 그룹에 대해 상태 검사를 지정할 수 있습니다. 로드 균형 조정 규칙당 하나의 상태 검사만 구성할 수 있습니다. 가상 서비스가 사용으로 설정된 동안, 사용으로 설정된 가상 서비스와 연관된 서버 그룹에서 상태 검사가 자동으로 시작되고 정기적으로 반복됩니다. 가상 서비스를 사용 안함으로 설정하면 즉시 상태 검사가 중지됩니다. 가상 서비스를 다시 사용으로 설정하면 이전 상태 검사 상태는 보존되지 않습니다.
상태 검사를 실행하기 위해 TCP, UDP 또는 사용자 정의 테스트 프로브를 지정할 때 ILB는 기본적으로 핑 프로브를 보내 지정된 TCP, UDP 또는 사용자 정의 테스트 프로브를 서버로 보내기 전에 서버에 연결할 수 있는지 확인합니다. 핑 프로브가 실패하면 해당 서버가 사용 안함으로 설정되고 상태 검사 상태가 unreachable이 됩니다. 핑 프로브는 성공하지만 TCP, UDP 또는 사용자 정의 테스트 프로브가 실패하면 서버가 사용 안함으로 설정되고 상태 검사 상태는 dead가 됩니다.
UDP 프로브를 제외한 기본 핑 프로브를 사용 안함으로 설정할 수 있습니다. 핑 프로브는 항상 UDP 상태 검사에 대한 기본 프로브입니다.
상태 검사를 만들고 로드 균형 조정 규칙을 만들 때 서버 그룹에 상태 검사를 지정할 수 있습니다. 다음 예에서는 2개의 상태 검사 객체, hc1 및 hc-myscript가 생성됩니다. 첫번째 상태 검사는 내장 TCP 프로브를 사용합니다. 두번째 상태 검사는 사용자 정의 테스트인 /var/tmp/my-script를 사용합니다.
# ilbadm create-healthcheck -h hc-timeout=3,\ hc-count=2,hc-interval=8,hc-test=tcp hc1 # ilbadm create-healthcheck -h hc-timeout=3,\ hc-count=2,hc-interval=8,hc-test=/var/tmp/my-script hc-myscript
인수는 다음과 같습니다.
상태 검사가 완료되지 않은 경우 실패한 것으로 간주되는 시간 초과를 지정합니다.
hc-test 상태 검사 실행 시도 횟수를 지정합니다.
연속 상태 검사 사이의 간격을 지정합니다. 모든 서버에 동시에 프로브를 보내는 것을 피하기 위해 실제 간격은 0.5 * hc-interval 및 1.5 * hc-interval 사이에서 무작위로 설정됩니다.
상태 검사 유형을 지정합니다. 내장 상태 검사(예: tcp, udp 및 ping) 또는 전체 경로 이름으로 지정해야 하는 외부 상태 검사를 지정할 수 있습니다.
사용자가 제공한 사용자 정의 테스트는 바이너리 또는 스크립트일 수 있습니다.
테스트는 시스템의 어느 위치에나 있을 수 있습니다. create-healthcheck 하위 명령을 사용할 때는 절대 경로를 지정해야 합니다.
create-rule 하위 명령에서 상태 검사 사양의 일부로 테스트를 지정하는 경우(예: /var/tmp/my-script) 다음과 같이 ilbd 데몬이 프로세스를 포크하고 테스트를 실행합니다.
/var/tmp/my-script $1 $2 $3 $4 $5
인수는 다음과 같습니다.
VIP(리터럴 IPv4 또는 IPv6 주소)
서버 IP(리터럴 IPv4 또는 IPv6 주소)
프로토콜(UDP, TCP를 문자열로)
숫자 포트 범위(hc-port에 대한 사용자 지정 값)
테스트에서 실패를 반환하기 전에 대기해야 하는 최대 시간(초) 지정된 시간을 넘어 테스트를 실행하면 테스트가 중지될 수 있고 실패로 간주됩니다. 이 값은 사용자 정의 값으로 hc-timeout에 지정됩니다.
사용자 제공 테스트는 모든 인수를 사용할 필요가 없지만, 반드시 다음 중 하나를 반환해야 합니다.
마이크로초 단위의 RTT(라운드 트립 시간)
테스트에서 RTT를 계산하지 않는 경우 0
실패한 경우 -1
기본적으로 상태 검사 테스트는 PRIV_PROC_FORK, RIV_PROC_EXEC 및 RIV_NET_ICMPACCESS 권한으로 실행됩니다.
더 광범위한 권한 세트가 필요한 경우 테스트에 setuid를 구현해야 합니다. 권한에 대한 자세한 내용은 privileges(5) 매뉴얼 페이지를 참조하십시오.
구성된 상태 검사에 대한 자세한 정보를 얻으려면 다음 명령을 실행합니다.
# ilbadm show-healthcheck HCNAME TIMEOUT COUNT INTERVAL DEF_PING TEST hc1 3 2 8 Y tcp hc2 3 2 8 N /var/usr-script
ilbadm list-hc-result 명령을 사용하여 상태 검사 결과를 얻을 수 있습니다. 규칙이나 상태 검사가 지정되지 않은 경우 모든 상태 검사가 나열됩니다.
다음 예에는 rule1이라는 규칙과 연관된 상태 검사 결과가 표시되어 있습니다.
# ilbadm show-hc-result rule1 RULENAME HCNAME SERVERID STATUS FAIL LAST NEXT RTT rule1 hc1 _sg1:0 dead 10 11:01:19 11:01:27 941 rule1 hc1 _sg1:1 alive 0 11:01:20 11:01:34 1111
출력의 LAST 열에는 서버에서 상태 검사가 수행된 시간이 표시됩니다. NEXT 열에는 다음 상태 검사가 수행될 시간이 표시됩니다.
ilbadm delete-healthcheck 명령을 사용하여 상태 검사를 삭제합니다. 다음 예에서는 hc1이라는 상태 검사를 삭제합니다.
# ilbadm delete-healthcheck hc1