Принудительное отключение инстанса от балансировщика

в 14:56, , рубрики: Amazon Web Services, auto-scaling, AWS, elb, Блог компании EPAM Systems Ukraine, метки: , ,

imageДобрый день!

Возник мелкий, но неприятный момент, когда при масштабировании хост, который потушен, чуть более 30-35 секунд ещё принимает запросы. Естественно, эти запросы отработать не могут. Потому возникла идея прежде чем тушить веб сервер, принудительно отключать инстанс от лоад балансера.

Для этого нам нужны утилиты командной строки для ELB: aws.amazon.com/developertools/2536. Распакуем их в папку /opt/aws/elb.

Сертификаты pk-** и cert-** кладём в /opt/aws/keys.

Рабочая папка JAVA — /usr/java/latest.

Ну и собственно скрипт:

/opt/aws/kick_from_lb.sh

#!/bin/sh

export AWS_ELB_HOME="/opt/aws/elb"
export PATH=$PATH:$AWS_ELB_HOME/bin
export JAVA_HOME=/usr/java/latest
export TOOLS_HOME=/opt/aws
export EC2_PRIVATE_KEY=$TOOLS_HOME/keys/pk-********88ZVWC3FPEOFWRSFJ.pem
export EC2_CERT=$TOOLS_HOME/keys/cert-**********88ZVWC3FPEOFWRSFJ.pem


INSTANCE_ID=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`
elb-deregister-instances-from-lb $1 --instances $INSTANCE_ID

Теперь в инит скрипт apache, tomcat, nginx или чего-либо другого в функцию stop в начало вставьте слудующую строку:

sh /opt/aws/kick_from_lb.sh $elb_name

, где $elb_name — имя вашего Elastic Load Balancer.

Ну вот и всё. Теперь перед остановкой веб-сервера инстанс будет автоматически выкинут из-под балансировщика и не будет принимать запросы.

Автор: korjik

* - обязательные к заполнению поля