1

У меня есть несколько экземпляров ec2, работающих в AWS, которые масштабируются политикой автомасштабирования, все в порядке, машины достаточно хорошо масштабируются. Однако у нас есть один недостаток: когда он уменьшает масштаб, запросы, обрабатываемые в (подлежащих завершению) экземплярах, теряются в середине, пока происходит прекращение.

То, что я хотел бы сделать, это поймать сигнал выключения и попросить apache произвести корректное завершение работы, а затем позволить выключению продолжиться.

1 ответ1

0

Я нашел это, своего рода взломать, но, кажется, работает на меня.

Когда система получает сигнал выключения, выполняются сценарии в папке /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 обеспечивает изящное удаление экземпляров в качестве функции.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .