HAProxy (비기업용)과 통합
IBM NS1 Connect® HAProxy 엔터프라이즈 계정을 보유한 고객은 HAProxy 로드 밸런서에서 수집한 중요한 부하 관련 지표를 NS1 Connect 으로 전송하여 애플리케이션 엔드포인트 및 서비스 전반에서 글로벌 서버 부하 분산(GSLB)을 구성할 수 있습니다. 부하 분산 또는 부하 차단은 부하 또는 데이터 센터 용량 제한과 관련된 중단 사태를 방지함으로써 애플리케이션 제공을 최적화하는 데 도움이 되는 중요한 도구입니다. NS1 Connect 는 다양한 부하 분산 장치와의 통합을 지원하여 시스템 부하, 클라이언트 응답 시간, 연결 수 등의 부하 메트릭을 플랫폼으로 푸시하여 DNS 트래픽 조정 결정을 알리고 최적화할 수 있습니다.
시작하기 전에
- 다음 권한이 활성화된 유효한 NS1 Connect API 키가 있어야 합니다: 데이터 피드에 푸시, 데이터 소스 관리 및 데이터 피드 관리.
- 다음 지침은 도메인 엔드포인트와 서비스에 해당하는 DNS 레코드와 답변을 이미 생성했다고 가정합니다.
프로시저
다음 단계에서는 NS1 Connect 플랫폼과 HAProxy 비기업용 계정 간의 통합을 구성하는 프로세스를 간략하게 설명합니다.
사용자 정의 데이터 소스를 생성하는 방법에 대한 지침은 타사 데이터 소스 생성 을 참조하세요. NS1 API 데이터 소스 유형으로. 설정이 완료되면, 아래의 데이터 소스 옆에 있는 고유한 소스 ID를 기록해 두세요.
이전 단계에서 만든 NS1 Connect API 데이터 소스에서 데이터 피드를 만드는 방법은 데이터 피드 만들기를 참조하세요. HAProxy 에서 모니터링하는 각 엔드포인트 또는 서비스에 대해 하나의 데이터 피드를 만들어야 합니다.
HAProxy 데이터 피드에서 로드 관련 메타데이터를 자동으로 업데이트하려면 각 답변의 로드 관련 메타데이터를 수정하고 트래픽 조정 동작을 알리기 위해 하한 및 상한 워터마크를 설정해야 합니다.
- 각 데이터 피드를 해당 DNS 답변에 연결하는 방법에 대한 지침은 모니터 또는 데이터 소스를 DNS 답변에 연결 을 참조하세요. 데이터 피드를 로드 관련 메타데이터 필드(로드 평균, 활성 요청 또는 활성 연결) 중 하나에 연결해야 합니다.
- 각 답변에 대해 낮은 워터마크 메타데이터 필드를 편집하여 NS1 Connect 플랫폼이 엔드포인트에 대한 트래픽 배포 속도를 늦추기 시작해야 하는 시점을 표시합니다. 이 값은 HAProxy 에서 제공하는 현재 로드 메트릭과 비교됩니다.
- 각 답변에 대해 높은 워터마크 메타데이터 필드를 편집하여 NS1 Connect 플랫폼이 엔드포인트에 대한 트래픽 배포를 중지해야 하는 시점을 표시합니다. 이 값은 HAProxy 에서 제공하는 현재 로드 메트릭과 비교됩니다.
- (권장) Filter Chain 에서 업 필터를 사용하여 사용할 수 없는 엔드포인트를 제거하려는 경우 기본 NS1 Connect 모니터 또는 타사 데이터 소스를 업/다운 응답 메타데이터 필드에 연결하여 자동 업데이트를 사용 설정합니다.
- HAProxy 서버 또는 PoP 에 로그인하십시오.
/etc/haproxy/haproxy.cfg파일을 편집하여 "global" 섹션에 다음 줄을 추가하십시오:stats socket /var/run/haproxy.sock mode 600 level admin참고: 소켓을 대화식으로 사용해야 하는 경우, 글로벌 섹션에 타임아웃 값을 추가하여 소켓이 입력을 기다리도록 지시합니다. 예를 들어,stats timeout 1m- HAProxy 서버를 다시 로드한 다음, 다음 명령을 실행하여 통계 소켓이 제대로 작동하는지 확인합니다
echo "show info" | nc -U /var/run/haproxy.sock stdioecho "show stat" | nc -U /var/run/haproxy.sock stdio일반적인 정보와 넷캣을 사용하여 대화형이 아닌 쉼표로 구분된 통계를 볼 수 있습니다.
- 현재 연결 수를 NS1 Connect 플랫폼으로 전송하는 BASH 스크립트를 작성합니다. 다음 스크립트는 소켓을 쿼리하고, 원하는 값을 가져온 다음, 관련 데이터 피드에 POST를 보냅니다.
#!/bin/bash APIKey='<NS1_API_key>' SourceUUID='<data_source_ID>' Region='<region>' CurrConns=`echo "show info" | nc -U /var/run/haproxy.sock | grep CurrConns | cut -d " " -f2` curl -sX POST -H 'X-NSONE-Key: '$NSONE_APIKey 'https://api.nsone.net/v1/feed/'$SourceUUID -d '{"'$Region'": {"connections": '$CurrConns'}}'Replace <NS1_API_key> 를 유효한 NS1 Connect API 키(데이터 소스 및 피드 권한이 활성화된 상태)로, <data_source_ID>를 앞서 생성한 데이터 소스 ID로, <region>을 현재 PoP 의 지역(예:
lga01)으로 대체합니다.주의 : 위의 예는 활성 연결 수와 관련된 데이터 흐름을 구성하지만, 이것을 로드 평균이나 초당 활성 요청 수와 같은 다른 측정 항목으로 대체할 수 있습니다. 이 프로세스는 간단한 JSON 출력을 NS1 Connect API 데이터 피드에 게시할 수 있는 모든 메트릭과 함께 작동하도록 확장할 수 있습니다.참고 : 이 스크립트에는 어떤 프로그래밍 언어든 사용할 수 있습니다. - 스크립트를
/root/shed_load.sh로 저장하고, 다음 명령을 사용하여 루트 크론탭에서 1분에 한 번씩 실행되도록 구성합니다crontab -e그런 다음, 다음 작업을 추가합니다:
*/1 * * * * /root/shed_load.sh - 정보를 보내려는 다른 HAProxy PoPs NS1 Connect 에 대해 이 과정을 반복하여 BASH 스크립트의 <region>을 특정 PoP 의 지역과 일치하도록 변경합니다.
완료되면 HAProxy PoPs 에서 메트릭(즉, 활성 연결 수)을 NS1 Connect 으로 전송합니다.
구성을 활성화하려면 HAProxy -연결된 DNS 응답이 포함된 DNS 레코드에 대해 Filter Chain 를 만들어야 합니다. Filter Chain 에는 Shed Load 필터가 포함되어야 합니다. 업 필터, 로드 쉐어 필터, 첫 번째 N 선택 필터(순서대로)가 포함된 자동 로드 쉐어에 설명된 Filter Chain 구성을 참조하세요. 이렇게 하면 업로드로 표시되고 로드 메트릭이 허용 가능한 범위에 있는 엔드포인트만 고려되지만, 목록의 첫 번째 응답만 요청 클라이언트에 반환됩니다.