The notify_fault
script is invoked when keepalived
enters the fault state.
You want to configure your script using
notify_master /etc/keepalived/vrrp.sh
Пожалуйста, вставьте ваши файлы backup.conf и slave.conf?
Также, вы должны проверить эти две статьи:
http://www.trk7.com/blog/keepalived-instance-not-entering-failed-state/ или http://comments.gmane.org/gmane.linux.keepalived.devel/4102 ?
... Сначала, чтобы определить, выполняется или не выполняется сценарий, я бы добавил следующую строку непосредственно под #! / Bin / bash
.
echo "----------vrrp.sh running ------" >> /var/log/messages
или что-то еще хотите ... Просто для того, чтобы зарегистрировать тот факт, что приложение зафиксировало переход "состояния" от резервного к главному или что-то еще, и фактически выполнило сценарий, как задумано.
Вы можете поместить его в конец сценария как ну, дело в том, чтобы просто убедиться, что скрипт был вызван.
Протестируйте его снова, а затем cat / var / log / messages
и найдите свое эхо ... вы должны его увидеть , если вы этого не сделаете, тогда это может быть любое количество вещей, разрешений, запущенная учетная запись пользователя, обеспечение исполняемого файла сценария и так далее ... вероятно, на основе вашего первоначального комментария, я подозреваю, что он выполняет свои просто не делает то, что вы ожидаете.
Итак, если вы видите свое эхо, как я ожидаю, тогда я бы посмотрел на конфигурацию вашей среды, что вы могли бы сделать, просто для тестирования, это экспортировать свой JAVA_HOME вместе с с вашими переменными EC2 в скрипте ... добавьте их после только что добавленной строки эха. Очевидно, это просто для целей тестирования, и как только вы подтвердите, что все работает должным образом, вам следует удалить это из сценария и соответствующим образом настроить среду. Мое последнее предложение - изменить вашу команду ...Вы можете разъединить и связать EIP с помощью одной команды.
Итак, теперь ваш сценарий будет выглядеть примерно так:
#!/bin/bash
#vrrp.sh
echo "----------vrrp.sh running ------" >> /var/log/messages
cd /usr/local/ec2/ec2-api-tools-1.7.5.1/bin/
export JAVA_HOME="/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/"
export EC2_BASE="/usr/local/ec2/ec2-api-tools-1.7.5.1/"
export EC2_URL=https://ec2.us-east-1.amazonaws.com
export AWS_ACCESS_KEY=AKIA3ROU5M3FQIQH4BNL
export AWS_SECRET_KEY=InBiqtOCfaJhCb3u3jE6gpmkW5shgjP8N++/7Huv
#Those are obviously not my access/secret keys, just providing an example
./ec2-associate-address -a eipalloc-s234523 -i i-023ksdfj --allow-reassociation
Заключительное примечание:
Убедитесь, что учетная запись пользователя IAM, с которой вы выполняете аутентификацию, имеет необходимого пользователя IAM политика учетной записи прилагается ... ниже приведен пример политики, вам нужно будет перейти к политикам, чтобы создать ее, а затем после создания просто добрался до пользователей и конкретной учетной записи пользователя IAM, с которой вы выполняете аутентификацию, и прикрепите политику, которую вы только что создали если вы не используете учетную запись ПОЛНЫЙ ДОСТУП, в этом случае я бы не рекомендовал этого. и настроить учетную запись пользователя IAM с политикой, описанной ниже:
arn: aws: iam :: 107890181863: policy / MOVE-EIP или что-то еще.
{
"Version": "2015-1-1",
"Statement": [
{
"Action": [
"ec2:AssociateAddress",
"ec2:DescribeAddresses",
"ec2:AllocateAddress",
"ec2:DisassociateAddress"
],
"Effect": "Allow",
"Resource": "*"
}
]
}