AX 로드 밸런싱 구성 경험 설명 (1) - 건강 검진


 
건강 검사는 부하 균형에서 가장 기본적인 기능이자 전체 부하 균형 처리 과정에서 가장 중요한 부분이다.백엔드 애플리케이션의 고가용성을 확보하기 위해 부하 균형은 정의된 건강 검사 방법을 통해 백엔드 서버나 애플리케이션의 건강 상태를 실시간으로 검사합니다. 백엔드 서버가 고장났을 때 부하 균형은 이러한 문제점을 발견하고 서버를 애플리케이션 서비스 그룹에서 배출하여 정상적인 클라이언트 요청을 고장난 서버로 전송하지 않도록 합니다.사용자가 백엔드에 정상적으로 접근할 수 있도록 합니다.
때때로 서버가 여전히 실행되고 있지만 어떤 원인, 예를 들어 소프트웨어 작성의 빈틈이나 관련 응용 중간부품이나 데이터베이스에 문제가 생겨 서버에서 실행되는 응용 시스템이 정상적으로 작동하지 못하게 된다.이런 상황에서 응용 상태(때로는 응용 내용 기반)를 측정할 수 있는 건강 검사 방법을 채택해야 한다.
 

ICMP 프로토콜 기반 건강검진


ICMP를 이용한 건강검진은 부하 균형에 가장 많이 사용되고 기본적인 건강검진 방식이다.부하 균형은 검출된 서버에 ICMP Request를 보냅니다. 서버의 ICMP Reply를 받을 수 있다면 서버가 현재 정상적으로 작동하고 있음을 의미합니다.일반적인 상황에서 ICMP 건강검진은 서버가 실행 중이라는 것만 설명할 수 있지만 서버에서 실행되는 응용에 대해 아무런 감지가 없기 때문에 ICMP 건강검진은 체인 부하가 균형적인 배치 환경에 자주 사용되고 응용 서버의 부하가 균형적인 환경에서 ICMP는 그다지 신뢰할 수 없다.
 

TCP 프로토콜 기반 건강 검진


일반적인 응용 프로그램은 고정된 감청 포트를 사용한다. 예를 들어 HTTP는 80포트, FTP는 21/20포트, HTTPS는 443포트 등이다.따라서 TCP 건강검진은 부하 균형과 대응하는 서버 응용 포트에서 TCP를 세 번 악수하는 것이다. 악수에 성공하면 서버에서 응용이 정상적으로 작동하고 악수에 실패하면 현재 서버의 운행이 정상적이지 않다는 것을 의미한다.
 

UDP 프로토콜 기반 건강 검진


TCP에 비해 UDP는 연결이 없는 프로토콜입니다. 프로토콜의 상호작용은 더욱 간단하지만 건강검진 방법은 간단하지 않습니다.TCP의 경우 TCP 연결이 제대로 이루어지지 않는 한 서버 측 응용 서비스가 정상적이지 않다는 것을 설명할 수 있기 때문이다.그러나 UDP를 이용하여 통신할 때 서버가 UDP 요청 메시지를 받을 때 반드시 확인해야 한다는 엄격한 요구는 없다.따라서 UDP 건강검진은 주로 UDP의 건강검진 보고서를 보낸 후 ICMP unreachable의 메시지를 받을 수 있는지를 보는 것이다.만약 이런 메시지를 받지 못했다면 응용이 정상적으로 실행되고 있음을 나타낸다.이러한 ICMP 메시지가 표시되면 응용 프로그램에 장애가 발생했습니다.
 

응용 내용 기반의 건강 검사 방법


흔히 볼 수 있는 ICMP, TCP, UDP 건강 검사 방법을 이용하여 서버의 건강 상태를 검사할 수 있지만 서버와 세 번의 악수를 할 수 있지만 서버가 클라이언트 요청에 정상적으로 응답하지 못하는 것을 발견할 수 있다.이런 상황에서 우리는 더욱 진일보하여 응용 내용을 바탕으로 하는 건강 검사 방법을 채택해야 한다.
예를 들어 웹 응용 서버에 대해 우리는 클라이언트가 응답한 내용이나 응답 상태 코드에 따라 웹 응용 서버의 건강 상태를 판단하는 HTTP 요청을 보내는 것을 모의할 수 있다.
 

스크립트 기반 건강 검사 방법


어떤 경우, 사용자의 일부 응용 특수성 때문에 일반적인 건강 검사 방법과 건강 검사를 할 수 없다.예를 들어 일부 체인 건강 상태 검사를 할 때 반드시 지정된 원본 주소로 체인의 건강 검사를 해야 한다. 이런 상황에서 우리는 간단한 스크립트로 문제를 해결할 수 있다.
 
A10의 AX는 간단한 ICMP, TCP, UDP부터 응용 콘텐츠 검사를 바탕으로 하는 HTTP, HTTPS, FTP, SIP 등 다양한 건강 검사 방법을 제공한다.다음은 A10 네트워크의 AX 로드 밸런싱을 예로 들어 일반적인 로드 밸런싱 구성 방법을 설명합니다.
 

AX의 기본 건강 검진 방법


AX에서는 기본적으로 서버와 서버에 구성된 포트에 대한 상태 검사가 수행됩니다.서버 자체에 대해 ICMP 방식으로 건강 검사를 하고, 서버에 구성된 포트에 대해서는 포트 유형에 따라 TCP 또는 UDP 건강 검사 방법을 사용합니다.다음 예:

  
  
  
  
  1. slb server rs-test 192.168.203.101  
  2.    port 80  tcp  
  3.    port 8080  tcp  

백엔드 서버에 80 포트의 HTTP 서비스가 시작되었지만 부하 균형에 8080 포트가 설정되었음에도 불구하고 서버에 이 포트는 어떠한 서비스도 배치하지 않았다.추가 건강검진 방법을 구성할 필요 없이 AX에서 현재 이러한 서비스의 건강 상태를 확인했습니다.

  
  
  
  
  1. ax-1#show health stat  
  2. Health monitor statistics  
  3. ...< >...  
  4.    
  5. IP address           Port  Health monitor  Status Cause(Up/Down) Retry PIN  
  6. --------------------------------------------------------------------------------  
  7. 192.168.203.101            default         UP     11 /7  @8      7     0  /0  0  
  8. 192.168.203.101      80    default         UP     20 /0  @0      0     0  /0  0  
  9. 192.168.203.101      8080  default         DOWN   0  /81 @3      0     0  /0  0  
  10. ax-1#  

위의 출력에서 알 수 있듯이 AX는 서버와 응용 포트에 대해 기본적인 건강 검진 방법을 채택하고 있다.서버의 80/8080 포트에 대한 AX 테스트 결과는 다음과 같습니다.
1) 서버는 "ping"이 가능하므로 상태는 "UP"입니다.
2) 80포트는 TCP 연결이 가능하므로 상태는 "UP"
3) 8080 포트는 TCP 연결을 설정할 수 없으므로 상태는 "DOWN"입니다.
또한 특히 AX 건강검진의 자원 소모를 줄이기 위해 AX가 서버에서 건강검진에 실패하면 포트에 대한 건강검진을 하지 않는다는 점도 지적해야 한다.따라서 실제 배치할 때 서버가 ICMP 요청에 정상적으로 응답할 수 있는지 확인해야 한다. 그렇지 않으면 응용 프로그램의 건강 검사 결과에 영향을 줄 수 있다.
 

건강 검사 방법의 전역 매개 변수


AX의 건강 검진 방법에는 다음과 같은 공통 매개변수가 있습니다.
1) 검사 간격(Interval): AX가 건강검진을 하는 시간 간격을 나타냅니다. 간격이 적을수록 검사가 정확하지만 시스템이 건강검진에 사용하는 비용이 많습니다.
2) 최대 재시도 횟수(Max Retry): AX가 건강검진에 실패한 후 애플리케이션 또는 서버를 DOWN으로 표시하기 전에 수행해야 하는 건강검진 횟수를 나타냅니다.
3) 시간 초과(Timeout): AX가 백업을 기다리는 최대 시간 초과, 이 시간을 초과하면 건강검진에 문제가 있음을 나타냅니다.
4) 복구 전 재시도 횟수(Up-Retry): 백엔드에서 건강 검진을 적용하지 못했을 때 AX가 서버를 DOWN 상태로 표시했습니다.이때 서버가 정상 상태로 돌아갑니다. Up-Retry는 AX가 몇 번 건강검진을 받아야 서버를 진정으로 UP 상태로 표시할 수 있습니다.
위의 네 가지 파라미터는 AX의 건강검진 방법의 전역 파라미터로 전역 모드에서 수정할 수도 있고 단독 건강검진 방법에서 정의할 수도 있다.일반적인 경우, 어떤 수정도 하지 말고 기본 설정을 사용하는 것을 권장합니다.
전역 모드의 수정 명령은 다음과 같습니다.

  
  
  
  
  1. health global interval 10 timeout 3 retry 2 up-retry 2  

 

AX에서 기본 건강검진 방법 닫기


AX의 기본 건강검진 방법은 구성을 단순화하고 사용 효과도 좋지만 어떤 이유로 건강검진 방법을 닫아야 한다면 다음과 같은 두 가지 방법이 있습니다.
1) 서버나 포트에서 no health-check로 기본 건강 검진 방법을 닫습니다.이 방법은 단독 서버를 닫는 건강 검사 방법에 적용된다.구체적인 방법은 다음 구성 예제를 참조하십시오.

  
  
  
  
  1. slb server rs-test 192.168.203.101  
  2.    no health-check  
  3.    port 80  tcp  
  4.    port 8080  tcp  
  5.        no health-check  
  6. !  

2) 리얼 서버template 또는 리얼포트template를 이용하여 기본적인 건강검진 방법을 닫습니다.이 방법은 모든 (또는 대량) 서버를 닫는 기본 건강 검사 방법에 적용됩니다.

  
  
  
  
  1. slb template server default  
  2.    no health-check  
  3. !  
  4. !  
  5. slb template port default  
  6.    no health-check  
  7. !  

기본적으로, 리얼 서버와 아래에 설정된 포트는 기본 서버template와porttemplate를 불러옵니다. 리얼 서버에서 다른 사용자 정의template를 인용하지 않으면.그러나 서버나port에서 다른 건강검진 방법을 정의하면 서버(또는port)에서 건강검진 방법의 우선순위는template에서 정의한 건강검진 방법보다 높다.
 

사용자 정의 건강검진 방법 사용


AX에서 사용자 정의 건강검진 방법을 사용하려면 두 단계가 필요합니다.먼저 건강 검진 방법을 정의해야 하고, 그 다음에 이 건강 검진 방법을 사용해야 하는 서버나 포트에 사용자 정의 건강 검진 방법을 불러와야 한다.구체적인 방법은 다음 예제를 참조하십시오.
 

  
  
  
  
  1. health monitor hc-http  
  2.  method http url GET /check.html expect response-code 200,300-304  
  3. !  
  4. slb server rs-test 192.168.203.101  
  5.    port 80  tcp  
  6.        health-check hc-http  
  7. !  

 
비록 고급스러울수록 복잡한 건강 검사가 응용 건강 상태에 대한 감지가 정확하지만 이런 검사 방법은 부하 균형 자원과 응용 시스템의 자원 사용에 일정한 압력을 가져왔다.따라서 AX의 기본 건강검진 방법을 수정할 때 이러한 건강검진이 서버나 부하 균형에 미치는 영향을 충분히 고려하고 검사 정밀도와 시스템 부하 사이의 균형점을 선택해야 한다.
 
E.S.
 

좋은 웹페이지 즐겨찾기