Czy można wymusić ponowne utworzenie instancji EC2 lub RDS przy użyciu stosów chmur obliczeniowych?
Mój stos utknął w punkcie, w którym zwykłe zniszczenie i utworzenie zasobu go naprawi, zamiast tego musiałem usunąć cały stos, aby kontynuować pracę.
edytować:
Ten problem uderzył mnie dwa razy. Najpierw utworzyłem instancję AWS :: RDS :: z pewnymi ustawieniami domyślnymi, a następnie próbowałem obniżyć ją do wersji „EngineVersion”: „5.5”. Zmiana powinna mieć miejsce z pewną przerwą, ale instancji mysql nie można obniżyć z 5.6 do 5.5, więc stos pozostawiono w stanie UPDATE_FAILED i nie mogę odtworzyć RDS bez nieprzyjemnej sztuczki.
Innym zjawiskiem było to, że mam kilka „AWS :: EC2 :: Instancja”, która pobiera i wykonuje skrypt z jego „UserData”, oczywiście jeśli Y zmieni pobrany skrypt, muszę odtworzyć instancję i nie ma na to sposobu. Ponownie używam tej samej paskudnej sztuczki, aby odtworzyć maszynę.
Paskudna sztuczka:
Zamiast korzystać z grupy automatycznego skalowania jednej maszyny, rozwiązałem oba problemy zmieniając strefę dostępności we właściwościach ... ale zostawiłem mi zły smak
cfn-hup
: docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/...Odpowiedzi:
Na przykład w przypadku instancji EC2 wspieranych przez sklep jedną sztuczką jest dodanie komentarza do skryptu danych użytkownika zawierającego numer wersji, datę lub podobny, a następnie zmienić go, gdy chcesz ponownie utworzyć instancję:
Każda zmiana
UserData
spowoduje, że instancja zostanie zastąpiona (tj. Zregenerowana). Zachowanie skryptu danych użytkownika powinno być takie samo, ponieważ jedyną modyfikacją jest komentarz. Pamiętaj, że nie działa to w przypadku instancji wspieranych przez EBS.W przypadku RDS możesz zrobić migawkę DB bieżącej instancji RDS, a następnie zmodyfikować szablon, aby użyć tej migawki z
DBSnapshotIdentifier
:Po każdej
DBSnapshotIdentifier
zmianie instancja bazy danych zostanie zastąpiona. Korzystanie z migawek pozwoli również zachować dane od momentu utworzenia migawki. (Jeśli chcesz wyczyścić dane, możesz utworzyć pustą migawkę i przekazać ją jako dane wejściowe. Lub usunąć i ponownie utworzyć cały stos CloudFormation.)Bardziej ogólne podejście polega na zmianie logicznej nazwy zasobu. Z Modyfikacji szablonu stosu w dokumentach CloudFormation:
źródło
Jeśli umieścisz go w AutoScalingGroup, możesz edytować AutoScalingGroup min / max / default na 0, a gdy tylko zacznie on niszczyć starą instancję, możesz ustawić min / max / default na 1/1/1 i presto: nowa instancja.
źródło
Jeśli twoje EC2 są w grupie AutoScalingGroup, możesz ustawić
AutoScalingGroupName
właściwość z numerem wersji.Za każdym razem, gdy zmienisz ten numer wersji, CFN: 1. utworzy nową grupę automatycznego skalowania i rozpali pożądane wystąpienia 2. zabija wystąpienia w starej grupie automatycznego skalowania i usuwa ją
Oto fragment kodu z mojego stosu, w którym używam tej techniki, aby zmusić dużą liczbę komputerów EC2 do odtworzenia i automatycznego pobrania nowego oprogramowania z S3.
źródło