소개 #
프록시 서비스는 클라이언트가 하나 이상의 서비스에 대한 연결을 투명하게 관리하고 애플리케이션 수준(OSI 모델의 계층 7)에서 고급 데이터 또는 연결 처리를 제공하도록 설계된 소프트웨어입니다. 이를 달성하기 위해 프록시 서비스는 클라이언트와 서버 사이의 원활한 연결을 보장하기 위해 클라이언트와 연결을 설정합니다.
프록시 서비스(역방향 프록시로 효과적으로 작동)를 통해 로드 밸런싱을 구현할 때 원활한 연결을 위해 시간 제한을 사용자 정의하는 것이 중요합니다. 클라이언트 또는 응용 프로그램 서비스의 특성에 따라 기본 시간 초과 값이 충분하지 않을 수 있습니다. 시간 초과 관련 오류는 다음 위치의 시스템 로그에 기록됩니다. / var / log / syslog이므로 잠재적인 문제가 있는지 이 파일을 검토하는 것이 중요합니다.
이 문서에서는 프록시 서버의 일반적인 시간 초과 문제를 분석하고 식별하는 방법에 대한 통찰력을 제공합니다. 조사해야 할 주요 정보는 시간 초과가 백엔드 측에서 발생하는지 아니면 클라이언트 측에서 발생하는지 여부입니다. 이렇게 구별한 후에는 적절한 시간 제한 조정을 적용할 수 있습니다.
백엔드 측 시간 초과 #
백엔드 측에서 시간 초과가 발생하면 해당 메시지가 다음과 같이 표시됩니다.
Aug 21 09:23:06 noid-ee-01 파운드: noid-proxy-farm-01, 서비스 noid-service-01, 백엔드 10.100.200.10:443, (7ff830b85700) 오류 복사 서버 cont: 연결 시간 초과 Aug 21 09 :23:06 noid-ee-01 파운드: noid-proxy-farm-01, 서비스 noid-service-01, 백엔드 10.100.200.11:443, (7ff832d8b700) 오류 복사 서버 cont: 연결 시간이 초과되었습니다. 21월 09일 23:16: 01 noid-ee-01 파운드: noid-proxy-farm-01, 서비스 noid-service-10.100.200.10, 백엔드 443:7, (799926700ff21) 오류 복사 서버 cont: 연결 시간 초과 Aug 09 23:18:01 noid- ee-01 파운드: noid-proxy-farm-01, 서비스 noid-service-10.100.200.10, 백엔드 443:7, (830ff6700bc21) 오류 복사 서버 cont: 깨진 파이프 09월 23일 19:01:01 noid-ee-01 파운드 : noid-proxy-farm-10.100.200.10, 서비스 noid-service-444, 백엔드 7:15, (5f8f700a21c09) connect_nb: 폴링 시간 초과 23월 24일 01:01:01 noid-ee-10.100.200.11 파운드: noid-proxy-farm -443, 서비스 noid-service-7, 백엔드 79:9, (7700ff21a09a23) 오류 복사 서버 계속: 연결 시간이 초과되었습니다. 24월 01일 01:01:10.100.200.10 noid-ee-443 파운드: noid-proxy-farm-7, 서비스 noid-service-79, 백엔드 28:700, (XNUMXffXNUMXaXNUMXbXNUMX) 오류 복사 서버 cont: 연결 시간이 초과되었습니다.
이러한 백엔드 시간 초과 오류는 관련 항목을 지정합니다. 농장, 서비스예산 및 백엔드 오류와 관련이 있습니다. 이 정보는 문제와 연결된 백엔드를 명확하게 식별합니다. 여러 팜, 서비스 또는 백엔드가 시간 초과 문제와 관련된 경우 잠재적인 네트워킹 문제를 조사하기 위해 추가 정보를 수집해야 할 수 있습니다.
팜 로그를 활성화하면 아래 발췌된 로그에 설명된 것처럼 특정 백엔드가 처음에는 신속하게 응답하지만 갑자기 시간 초과 문제가 발생하는 인스턴스가 표시될 수 있습니다.
25월 19일 57:04:01 noid-ee-01 파운드: noid-proxy-farm-185.106.182.130, my.service.com 25 - - [2024/Jan/19:57:04:0000 +1.1] "GET / myserv/ HTTP/200" 9 3.0 "" "Mozilla/01 (호환 가능; ...)" (noid-service-10.100.200.10 -> 443:XNUMX) 0.039초 25월 19일 57:04:01 noid-ee-01 파운드: noid-proxy-farm-88.111.111.111, my.service.com 25 - - [2024/Jan/19:57:04:0000 +1.1] "GET / myserv/ HTTP/200" 9 3.0 "" "Mozilla/01 (호환 가능; ...)" (noid-service-10.100.200.10 -> 443:XNUMX) 0.035초 25월 19일 57:04:01 noid-ee-01 파운드: noid-proxy-farm-01, 서비스 noid-service-10.100.200.10, 백엔드 443:7, (8fcd0eb700fXNUMX) connect_nb: 폴링 시간이 초과되었습니다. 25월 19일 57:04:01 noid-ee-01 파운드: noid-proxy-farm-01, 서비스 noid-service-10.100.200.10, 백엔드 443:7, (8fcd0eb700f10.100.200.10) 백엔드 443:25 연결: 연결 시간이 초과되었습니다. 19월 57일 04:01:01 noid-ee-7 파운드: noid-proxy-farm-8, (0fcd700eb10.100.200.10f443) BackEnd 01:25 팜에서 사망(사망): 'noid-proxy-farm-19', 서비스: 'ocp-ocuco-com' 57월 04일 01:01:01 noid-ee-10.100.200.10 파운드: noid-proxy-farm-443, 서비스 noid-service-7, 백엔드 8:0, (700fcdXNUMXebXNUMXfXNUMX) 백엔드 작동 중지(죽음) )
이 동작은 백엔드가 연결 제한에 도달하여 추가 연결이 불가능함을 나타낼 수 있습니다. 또는 백엔드가 연결을 충분히 빠르게 해제하지 않아 병목 현상이 발생함을 시사할 수도 있습니다. 이 문제를 해결하려면 백엔드를 모니터링하고 더 많은 연결을 허용하거나 백엔드를 추가하여 서비스를 확장하는 등의 최적화를 구현하는 것이 좋습니다.
동일한 서비스 내에서 특정 백엔드에서만 시간 초과 문제가 발생하는 경우 이는 해당 특정 백엔드에 느린 애플리케이션 제공 또는 네트워킹 문제와 관련된 문제가 있을 수 있음을 의미합니다. 이러한 오류에 대한 해결 방법이나 완화 방법은 아래에 설명되어 있습니다.
클라이언트 측 시간 초과 #
반대로 클라이언트 시간 초과는 syslog 다음 형식으로 :
18월 07일 31:38:01 noid-ee-01 파운드: noid-proxy-farm-7, (8862187700f12.91.1.78) 18에서 읽은 오류: 연결 시간이 초과되었습니다. 07월 31일 43:01:01 noid-ee-7 파운드: noid -proxy-farm-8863, (71700f12.2.1.105c18) 07에서 읽은 오류: 연결 시간이 32월 03일 01:01:7 noid-ee-886275 파운드: noid-proxy-farm-700, (12.41.1.58f18e07) 32에서 읽은 오류입니다. 07: 연결 시간 초과 01월 01일 7:8880:84700 noid-ee-12.88.1.67 파운드: noid-proxy-farm-18, (07f32d16) 01에서 읽은 오류: 01월 7일 8880933700:12.3.1.158:XNUMX noid-ee -XNUMX 파운드: noid-proxy-farm-XNUMX, (XNUMXfXNUMX) XNUMX에서 읽은 오류: 연결 시간이 초과되었습니다.
로그에 팜 또는 서비스 정보가 없으면 클라이언트의 요청이 프록시에 올바르게 도달하지 못했음을 나타냅니다. 클라이언트가 HTTP 요청을 실행하는 데 오랜 시간이 걸리므로 프록시가 요청 서비스를 인식하지 못하게 됩니다. IP 주소 배열은 문제가 내부 네트워크, 외부 클라이언트 또는 특정 방화벽을 통해 도착하는 클라이언트와 관련된 것인지 식별하는 데 도움이 될 수 있습니다.
또한 외부 고객의 경우 적법성을 확인하는 것이 중요합니다. AbuseIP 서비스를 활용하면 그러한 정보를 수집하는 데 도움이 될 수 있습니다.
또한 클라이언트 시간 초과 문제를 해결하려면 프록시가 연결을 조기에 종료하지 않는지 확인하는 것이 중요합니다. 프록시에 의한 조기 연결 끊김을 방지하려면 연결 시간 초과와 백엔드 시간 초과의 합이 클라이언트 시간 초과보다 작아야 합니다.
이러한 오류를 해결하거나 완화하는 방법에 대한 자세한 내용은 아래를 참조하세요.
백엔드 측 시간 초과 문제 해결 #
네트워크 계층 검증 #
우선, 네트워킹 계층의 안정성을 확인하고 중복된 패킷, 손실된 패킷 또는 심각한 대기 시간 변동이 없는지 확인하는 것이 중요합니다. 네트워크 계층 확인을 수행하려면 다음 단계를 따르세요.
1. 로드 밸런서에서 백엔드로 ping을 실행하고 몇 분 동안 실행되도록 허용합니다.
root@noid-ee-01:~# ping 10.100.200.10
2. 실행 중 ping 응답을 관찰합니다.
PING 10.100.200.10 (10.100.200.10) 56(84) 바이트의 데이터. 64에서 10.100.200.10바이트: icmp_seq=1 ttl=64 time=0.395 ms 64에서 10.100.200.10바이트: icmp_seq=2 ttl=64 time=0.626 ms 64에서 10.100.200.10바이트: icmp_seq=3 ttl=64 time=0.178 64 ms [...] 10.100.200.10에서 21바이트: icmp_seq=64 ttl=0.502 time=64 ms 10.100.200.10에서 22바이트: icmp_seq=64 ttl=0.638 시간=64 ms 10.100.200.10에서 23바이트: icmp_seq=64 ttl=0.573 시간=10.100.200.10ms ^C --- XNUMX 핑 통계 --- 23개 패킷 전송, 23개 수신, 0% 패킷 손실, 시간 140ms rtt 최소/평균/최대/mdev = 0.178/0.539/0.854/0.141ms
이 응답은 패킷 손실이나 대기 시간 문제 없이 네트워크가 안정적임을 나타냅니다. 네트워킹 계층의 신뢰성을 확인하기 위해 핑 테스트 중에 이상이 없는지 확인하십시오.
또한 문제가 복제될 때 tcpdump를 실행하면 네트워크 트래픽을 분석하여 통신이 지연되거나 특정 패킷이 누락되는 특정 순간을 정확히 찾아낼 수 있습니다. 다음 명령을 활용하십시오:
root@noid-ee-01:~# tcpdump -i 모든 tcp 포트 PORT 및 호스트 BACKENDIP -w /tmp/capture.pcap
이 명령은 다음과 같은 파일을 생성합니다. /tmp/capture.pcap, Wireshark를 사용하여 분석할 수 있습니다. 상당한 양의 트래픽을 캡처하는 경우 이 파일이 급격히 커질 수 있으므로 주의하세요.
프록시 시간 초과 조정 #
다양한 시간 초과 조정 팜 고급 구성 특히 각 요청에 추가 시간이 필요하거나 네트워크 성능이 느린 경우 애플리케이션 서버의 요구 사항에 맞게 프록시 동작을 조정할 수 있습니다. 다음 권장 사항을 고려하십시오.
백엔드 연결 시간 초과: 최대 시간을 설정합니다. 잇다() 선택한 백엔드에 대한 작업입니다. 메시지가 다음과 같은 경우 "connect_nb: 폴링 시간이 초과되었습니다." 감지되면 이 값을 기본값인 20초에서 30초 또는 40초로 늘리는 것이 좋습니다. 시간 초과로 인해 다른 곳에서 근본적인 문제가 해결될 수도 있다는 점을 염두에 두고 관찰된 결과를 기반으로 값을 점차적으로 높입니다.
백엔드 응답 시간 초과: 메시지가 나타나면 이 값을 조정하세요. "오류 복사 서버 계속: 연결 시간이 초과되었습니다." 식별됩니다. 마찬가지로 해당 메시지가 감소할 때까지 이 값을 점진적으로 늘립니다. 그러나 이 값을 과도하게 늘리면 백엔드 측의 근본적인 문제가 가려질 수 있으므로 주의하십시오. 기본값은 45초이므로 60초 이상으로 늘려서 오류가 없는지 모니터링하는 것이 좋습니다.
부활된 백엔드 확인 빈도: 간헐적인 HTTP 503 오류(사용 가능한 서비스 백엔드가 없음을 나타냄)를 유발하는 네트워킹 또는 애플리케이션 서버 문제로 인해 더 높은 시간 제한이 필요한 경우 이 값을 10초에서 5로 줄이는 것이 좋습니다. 이 조정은 백엔드를 작동 중지로 표시할 때 오탐지를 완화하는 데 도움이 됩니다. 시간 초과로. 프록시 로드 밸런서는 이 컨텍스트에서 특정 문제를 완화할 수 있으므로 시간 초과가 정상 제한 내에 있는지 분석합니다.
시간 초과의 정상성을 확인하려면 철저한 분석을 수행하십시오. 프록시 부하 분산 장치에는 특정 시간 초과 관련 문제를 해결하고 완화하는 기능이 있습니다.
자세한 내용은 다음 문서를 참조하세요.
상태 확인 구성 #
Farm Guardian은 가용성에 따라 백엔드를 활성화하거나 비활성화하는 목적으로 사용됩니다. 이 시나리오에서는 Farm Guardian을 활용하면 백엔드의 실제 가용성을 확인할 수 있습니다. 이 프로세스는 프록시와 독립적 및 병렬로 작동하여 백엔드 문제가 실제로 백엔드 측의 병목 현상에 영향을 미치는지 여부를 확인하는 수단을 제공합니다. 또한 백엔드가 다운된 것으로 표시될 때 백엔드 통계를 조사하여 해당 서버에서 처리하는 연결 수를 확인할 수 있으므로 각 백엔드의 연결 제한을 식별할 수 있습니다.
TCP에 대한 FarmGuardian 검사를 구성하면 시스템 또는 웹 서버 계층의 병목 현상을 나타낼 수 있는 백엔드와의 핸드셰이크 관련 문제를 식별할 수 있습니다. 반면, HTTP에 대한 FarmGuardian 검사를 구성하면 백엔드가 있는 애플리케이션 계층의 문제를 식별하여 애플리케이션 또는 데이터베이스 계층의 잠재적인 병목 현상을 지적하는 데 도움이 됩니다.
클라이언트 측 시간 초과 수정 #
네트워크 계층 검증 #
네트워크의 안정성을 검증하려면 다른 서버나 머신에서 로드 밸런싱 팜에 구성된 가상 IP의 IP 주소로 핑 테스트를 실행하세요. 이는 외부 관점을 보장하고 네트워크의 신뢰성을 확인하는 데 도움이 됩니다.
합법적인 고객 확인 #
시간 초과 문제가 합법적인 클라이언트, 로봇 또는 잠재적인 공격자와 관련되어 있는지 확인하는 보안 도구를 사용하십시오. 시간 초과가 승인되지 않은 사용자와 연결되어 있는 경우 IPDS 블랙리스트 및/또는 DoS 보호를 구현하여 서비스를 보호하고 유효한 실제 사용자에게만 서비스가 제공되도록 하세요.
프록시 시간 초과 조정 #
또한 로드 밸런서를 통해 서비스에 연결하는 클라이언트의 특성을 수용하도록 프록시 시간 초과를 조정하는 것이 좋습니다. 예를 들어 모바일 기반 클라이언트, 방화벽 문제 또는 느린 네트워크로 인해 응답 시간이 길어지는 경우 클라이언트 요청 시간 초과 에서 옵션 고급 설정 LSLB 농장의. 기본값은 다음과 같습니다. 30 초; 특정 요구 사항에 따라 60초 이상으로 늘릴 수 있습니다. 클라이언트 시간 초과 값은 연결 시간 초과와 백엔드 응답 시간 초과의 합계를 초과해야 합니다.
자세한 내용은 다음 문서를 참조하세요.