Подтвердить что ты не робот

RDS с Cloud Formation и AZ

Я использую создание облаков для создания установки, содержащей экземпляр RDS.

У меня возникают трудности с созданием экземпляра RDS при учёте следующей ошибки:

Группа подсети DB не отвечает требованиям зоны покрытия зоны доступности. Пожалуйста, добавьте подсети для покрытия как минимум 2 зон доступности. Текущий охват: 1

Проблема в том, что вся установка находится на одном AZ... что я должен делать? просто создайте дополнительную подсеть в другом AZ, который ничего не имеет в нем только для RDS?

Возможно, есть какой-то способ, которым AWS может автоматически создать эту подсеть и оставить меня вне этого беспорядка. Я не хочу эту дополнительную подсеть, и я не хочу обременять своих пользователей выбором другого AZ только для этого.

4b9b3361

Ответ 1

Да, даже для развертывания, полностью содержащегося в одной зоне доступности [AZ], вы должны создать дополнительную подсеть в другом AZ и включить ее в свою группу подсетей БД. Обоснование этого требования заключается в поддержке развертываний Multi-AZ с высокой доступностью, как отмечено в разделе " Работа с экземпляром БД в разделе VPC " Руководства пользователя RDS:

Для развертываний Multi-AZ определение подсети для двух или более зон доступности в регионе позволяет Amazon RDS создавать новый резервный ресурс в другой зоне доступности в случае необходимости. Это необходимо сделать даже для развертываний Single-AZ, на случай, если вы захотите в какой-то момент преобразовать их в развертывания Multi-AZ.

Что касается того, чтобы не обременять своих пользователей выбором другого AZ только для этого, есть способы сделать это. Например, вы можете автоматически выбрать вторичный AZ, используя встроенные функции Fn::GetAZs и Fn :: Select. Если вы позволите пользователю выбрать основной AZ, вам также потребуется условие, чтобы дополнительный AZ не совпадал с выбранным основным AZ.

Вот пример фрагмента шаблона:

Parameters:
  PrimaryAZ:
    Type: AWS::EC2::AvailabilityZone::Name
    Description: Primary AZ
Conditions:
  IsFirstPrimaryAZ:
    Fn::Equals:
    - !Ref PrimaryAZ
    - Fn::Select [0, {Fn::GetAZs: ""}]
Resources:
  Subnet1:
    Type: "AWS::EC2::Subnet"
    Properties:
      AvailabilityZone: !Ref PrimaryAZ
      # ...
  Subnet2:
    Type: "AWS::EC2::Subnet"
    Properties:
      AvailabilityZone:
        Fn::If:
        - IsFirstPrimaryAZ
        - Fn::Select [1, {Fn::GetAZs: ""}]
        - Fn::Select [0, {Fn::GetAZs: ""}]
      # ...

Ответ 2

Да. Просто удалите одну из подсетей и создайте заново то же самое с другой зоной доступности.