종료 시 아파치를 정상적으로 중지

종료 시 아파치를 정상적으로 중지

AWS에서 자동 크기 조정 정책에 따라 크기가 조정되는 일부 ec2 인스턴스가 실행되고 있습니다. 머신의 크기 확장 및 축소는 모두 괜찮습니다. 그러나 한 가지 결함은 규모를 축소할 때 (종료될) 인스턴스에서 처리 중인 요청이 종료가 발생하는 동안 중간에 손실된다는 것입니다.

내가 하고 싶은 것은 종료 신호를 포착하고 아파치에게 정상적으로 종료하도록 요청한 다음 종료를 계속하도록 하는 것입니다.

답변1

나는 그것을 발견했습니다. 그것은 일종의 해킹이지만 나를 위해 일하는 것 같습니다.

시스템이 종료 신호를 받으면 /etc/rc0.d 폴더의 스크립트가 실행됩니다. 여기에는 Apache를 포함한 모든 서비스를 종료하는 스크립트가 포함됩니다. 스크립트를 종료하는 데 너무 오랜 시간이 걸리는 경우 AWS의 전원이 꺼질 경우 얼마나 오랜 시간이 걸리는지 알 수 없습니다.

어쨌든 저는 이렇게 해서 /etc/rc0.d/K09apache2 파일을 편집했습니다.

apache_stop 함수에서 apache_stop() {

if $APACHE2CTL configtest > /dev/null 2>&1; then
            # if the config is ok than we just stop normaly
            #$APACHE2CTL stop 2>&1 | grep -v 'not running' >&2 || true
            echo "stopping the apache gracefully"
            $APACHE2CTL -k graceful-stop 2>&1 | grep -v 'not running' >&2 || true
            sleep 15

갑작스러운 중지를 우아한 중지로 변경하고 15초 동안 휴면 상태를 유지하여 정상적으로 종료되는지 확인하세요.

업데이트 - 이제 Amazon ELB는 인스턴스를 단계적으로 제거하는 기능을 제공합니다.

관련 정보