이 HAProxy“다시 시작 스크립트”가 정상적으로 작동합니까?


9

이 스크립트를 여러 곳에 모았습니다. 내가 바라는 것은 다음과 같이 한 번 실행됩니다.

  1. 포트 80 및 443에 대해 모든 "NEW"http 트래픽을 일시 중지합니다. 포트를 "일시 중지"하면 오류가 발생하지 않습니다.
  2. 모든 "진행 중"요청이 완료되면 haproxy를 정상적으로 다시 시작하십시오.
  3. http 트래픽을 일시 중지하고 평소대로 비즈니스를 계속하십시오.

이것이 어떻게 작동합니까? 내가 놓친 것이 있습니까? 우리는 ip를 기반으로 수천 개의 acl 규칙을 가지고 있으며, haproxy가 참조하는 파일에 저장되어 있으며 1 분에 여러 번 다시로드해야합니다.

#!/bin/sh

# hold/pause new requests
iptables -I INPUT -p tcp --dport 80 --syn -j DROP
iptables -I INPUT -p tcp --dport 443 --syn -j DROP
sleep 1

# gracefully restart haproxy
/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

# allow new requests to come in again
iptables -D INPUT -p tcp --dport 80 --syn -j DROP
iptables -D INPUT -p tcp --dport 443 --syn -j DROP

편집 : 어떻게 든 테스트하고 싶지만 아직 테스트를 제외한 트래픽이 없습니다.

출처 :

http://www.forouzani.com/reload-haproxy-cfg-without-restarting.html

https://github.com/Mirantis/openstack-lbaas/issues/3

패킷 손실이없는 HAProxy 정상 재로드

답변:


4

그 기사를 바탕으로 잘 작동합니다.

항상 에뮬레이션 할 수있는 트래픽이 없다는 것을 기억하십시오.

아파치 벤치 마크 도구를 사용 하여 가짜 트래픽을 만드십시오.

최악의 시나리오를 테스트하기 위해로드중인 페이지를로드하는 데 몇 초가 걸리는지 확인하십시오.

제공하는 구성이 올바르게 작동 함을 증명 하는 요리 책 을 만들었습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.