5.4. 사용 가능한 라우터 플러그인
OpenShift Container Platform 클러스터의 트래픽을 제어하기 위해 노드에 라우터를 할당할 수 있습니다. OpenShift Container Platform에서는 HAProxy를 기본 라우터로 사용하지만 옵션을 사용할 수 있습니다.
5.4.1. HAProxy 템플릿 라우터
HAProxy 템플릿 라우터 구현은 템플릿 라우터 플러그인의 참조 구현입니다. openshift3/ose-haproxy-router 리포지토리를 사용하여 템플릿 라우터 플러그인과 함께 HAProxy 인스턴스를 실행합니다.
템플릿 라우터에는 다음 두 가지 구성 요소가 있습니다.
- 엔드 포인트 및 경로를 감시하고 변경 사항을 기반으로 HAProxy를 다시 로드하는 래퍼
- 경로 및 엔드포인트를 기반으로 HAProxy 구성 파일을 빌드하는 컨트롤러
HAProxy 라우터 는 버전 1.8.1을 사용합니다.
컨트롤러 및 HAProxy는 포드 내부에 있으며 배포 구성에서 관리합니다. 라우터를 설정하는 프로세스는 oc adm router
명령으로 자동화됩니다.
컨트롤러는 HAProxy 상태를 비롯하여 변경 사항이 있는지 경로 및 엔드포인트를 감시합니다. 변경 사항이 감지되면 새 haproxy-config 파일을 빌드하고 HAProxy를 다시 시작합니다. haproxy-config 파일은 라우터의 템플릿 파일과 OpenShift Container Platform의 정보를 기반으로 구성됩니다.
HAProxy 템플릿 파일은 OpenShift Container Platform에서 현재 지원하지 않는 기능을 지원하기 위해 필요에 따라 사용자 지정할 수 있습니다. HAProxy 설명서는 HAProxy 에서 지원하는 모든 기능을 설명합니다.
다음 다이어그램에서는 데이터가 마스터에서 플러그인을 거쳐 HAProxy 구성으로 이동하는 방법을 보여줍니다.
그림 5.4. HAProxy 라우터 데이터 흐름
HAProxy 템플릿 라우터 지표
HAProxy 라우터는 외부 지표 수집 및 집계 시스템(예: Prometheus, statsd)에서 사용할 수 있도록 Prometheus 형식으로 지표를 노출하거나 게시합니다. 라우터는 HAProxy CSV 형식 지표를 제공하거나 라우터 지표를 전혀 제공하지 않도록 구성할 수 있습니다.
지표는 라우터 컨트롤러와 5초마다 HAProxy에서 수집됩니다. 라우터 지표 카운터는 라우터가 배포될 때 0으로 시작되고 시간이 지남에 따라 증가합니다. haproxy가 다시 로드될 때마다 HAProxy 지표 카운터가 0으로 재설정됩니다. 라우터는 각 프론트엔드, 백엔드 및 서버에 대한 HAProxy 통계를 수집합니다. 500대 이상의 서버가 있는 경우 리소스 사용량을 줄이기 위해 백엔드에는 여러 서버가 있을 수 있으므로 서버 대신 백엔드가 보고됩니다.
통계는 사용 가능한 HAProxy 통계의 하위 집합입니다.
다음 HAProxy 지표는 주기적으로 수집되어 Prometheus 형식으로 변환됩니다. 프런트 엔드마다 "F" 카운터가 수집됩니다. 각 백엔드에 대해 카운터를 수집하고 각 서버에 대해 "S" 서버 카운터를 수집하면 됩니다. 그렇지 않으면 각 백엔드에 대해 "B" 카운터가 수집되어 서버 카운터가 수집되지 않습니다.
자세한 내용은 라우터 환경 변수를 참조하십시오.
다음 표에서 다음을 수행합니다.
열 1 - HAProxy CSV 통계의 인덱스
2열
F | 프론트 엔드 지표 |
b | 서버 임계값으로 인해 서버 메트릭이 표시되지 않는 경우 백엔드 메트릭은 다음과 같습니다. |
B | 서버 메트릭을 표시할 때 백엔드 지표 |
S | 서버 지표. |
열 3 - 카운터
열 4 - 카운터 설명
인덱스 | 사용법 | 카운터 | 설명 |
2 | bBS | current_queue | 서버에 할당되지 않은 현재 대기 중인 요청 수입니다. |
4 | FbS | current_sessions | 현재 활성 세션 수. |
5 | FbS | max_sessions | 확인된 최대 활성 세션 수. |
7 | FbBS | connections_total | 총 연결 수. |
8 | FbS | bytes_in_total | 들어오는 바이트의 현재 합계. |
9 | FbS | bytes_out_total | 현재 보내는 바이트 합계입니다. |
13 | bS | connection_errors_total | 총 연결 오류. |
14 | bS | response_errors_total | 응답 오류 합계. |
17 | bBS | up | 백엔드의 현재 상태(1 = UP, 0 = DOWN). |
21 | S | check_failures_total | 총 실패한 상태 점검 수. |
24 | S | downtime_seconds_total | 총 가동 중지 시간(초)입니다.", nil, |
33 | FbS | current_session_rate | 최근 경과 초당 초당 현재 세션 수입니다. |
35 | FbS | max_session_rate | 초당 최대 관찰 세션 수입니다. |
40 | FbS | http_responses_total | 총 HTTP 응답, 코드 2xx |
43 | FbS | http_responses_total | 총 HTTP 응답, 코드 5xx |
60 | bS | http_average_response_latency_milliseconds | (밀리초 단위) 마지막 1024개 요청 중. |
라우터 컨트롤러는 다음 항목을 스크랩합니다. Prometheus 형식 지표만 사용할 수 있습니다.
이름 | 설명 |
template_router_reload_seconds | 라우터를 다시 로드하는 데 소요되는 시간을 초 단위로 측정합니다. |
template_router_write_config_seconds | 라우터 구성을 디스크에 쓰는 데 소요되는 시간을 초 단위로 측정합니다. |
haproxy_exporter_up | haproxy의 마지막 스크랩이 성공했습니까. |
haproxy_exporter_csv_parse_failures | CSV를 구문 분석하는 동안 오류 수입니다. |
haproxy_exporter_scrape_interval | 다른 스크랩이 허용되기 전의 시간(초)은 데이터 크기에 비례합니다. |
haproxy_exporter_server_threshold | 추적된 서버 수 및 현재 임계값. |
haproxy_exporter_total_scrapes | 현재 전체 HAProxy 스크랩. |
http_request_duration_microseconds | 마이크로초 단위의 HTTP 요청 대기 시간입니다. |
http_request_size_bytes | HTTP 요청 크기(바이트)입니다. |
http_response_size_bytes | HTTP 응답 크기(바이트)입니다. |
openshift_build_info | OpenShift가 빌드된 major, minor, git commit 및 git 버전으로 레이블이 지정된 상수 '1' 값이 있는 메트릭입니다. |
ssh_tunnel_open_count | SSH 터널 총 열린 시도 카운터 |
ssh_tunnel_open_fail_count | SSH 터널의 카운터가 열린 시도에 실패했습니다 |