운영 중인 L7 VIP 중 HTTP/1.1을 사용하던 서비스에 HTTP/2를 적용한 후, 로그인 시 통신 에러가 발생하는 이슈가 있었습니다.
브라우저 개발자 모드로 확인해보니 ERR_HTTP2_PROTOCOL_ERROR 에러가 발생하고 있었습니다. 이에 따라 HTTP/2 적용을 롤백하고 원인을 파악해야 했습니다.
이전에 HTTP/2를 사용하는 서비스에서 쿠키 관련 이슈가 있었고, 쿠키 개수가 일정한 개수를 넘기면 에러가 발생했던 적이 있었습니다. 개발 쪽에서 소스 코드 수정으로 쿠키 개수를 감소시켜 해소했던 사례가 있었습니다.
이번에는 쿠키 관련 이슈가 아니었고 HTTP 헤더 관련 이슈였습니다.
curl 명령어로 헤더를 하나씩 추가해 테스트를 진행했고, 헤더 개수가 58개까지는 정상적으로 성공했으나 59개부터 에러가 발생하는 것을 알 수 있었습니다.
AWS ALB에 적용된 서비스에서는 증상이 발생하지 않았고, F5에 적용된 서비스에서만 발생했습니다. 이에 관련 설정 및 유사 사례를 검색한 결과, 비슷한 사례를 찾을 수 있었습니다.
https://my.f5.com/manage/s/article/K000137741
발견한 사례에 따르면, HTTP 프로필에 구성된 최대 헤더 수 값을 초과할 경우 RST_STREAM, GOAWAY 에러가 발생한다고 합니다.
이를 바탕으로 현재 적용된 HTTP/2 프로필을 확인해보니, 실제로 RST_STREAM, GOAWAY 에러가 발생했음을 확인할 수 있었습니다.
에러 발생을 확인한 후, HTTP Profile에 설정된 헤더 개수 제한을 확인했습니다.
[Local Traffic ›› Profiles : Services : HTTP ›› http_profile]
Maximum Header Count 옵션으로 헤더 개수가 64개로 제한되어 있었습니다. HTTP 헤더에는 curl로 생성한 헤더 외에도 host, agent 등 기본 정보가 포함되어 있어, 59개부터 문제가 발생했던 것입니다.
따라서 Maximum Header Count 옵션을 2배인 128개로 늘리고 테스트한 결과, 정상적으로 응답이 돌아왔습니다. 실제 서비스에 적용해본 후 이상 없이 작동하는 것을 확인하고 이슈를 종료했습니다.
- Maximum Header Count: 64
- 헤더 개수 59개부터 에러 발생
- Maximum Header Count : 128
- 헤더 최대 카운트를 2배인 128개로 늘리고 증상 확인 시 정상 응답 확인
[참고 사이트]
[Overview of HTTP/2 Statistics]
https://my.f5.com/manage/s/article/K000137190
[HTTP/2 BIG-IP responds with GOAWAY - Frame Size Error and closes the stream with RST_STREAM]
https://my.f5.com/manage/s/article/K000137741
[HTTP header count exceeded maximum allowed count]
'Network' 카테고리의 다른 글
[Network] M3 Mac에 네트워크 시뮬레이터 eve-ng 설치하기 (0) | 2025.03.16 |
---|---|
[Zabbix] Linux snmpget, snmpwalk로 snmp 조회하기 (1) | 2024.11.10 |
[Zabbix] 설정 미반영 현상 해소 기록 (SNMP 알수 없음, proxy disk 100%, logrotate) (0) | 2024.08.17 |
[NSX-T] Domain/URL 기반 LB 적용하기 (0) | 2024.08.04 |
[Azure] IPsecVPN 터널링 연결하기 (3) (0) | 2024.05.17 |