2015-11-15 5 views
14

Ich verwende Wolkenbildung, um ein Setup zu erstellen, das eine RDS-Instanz enthält.RDS mit Wolkenbildung und AZ-Problemen

ich einige Schwierigkeiten habe das RDS-Instanz auf dem Konto des folgenden Fehlers zu erstellen:

DB Subnet Group doesn't meet availability zone coverage requirement. Please add subnets to cover at least 2 availability zones. Current coverage: 1

Das Problem ist, dass die gesamte Einrichtung auf einem einzigen AZ ist ..., was ich tun soll ich? Erstellen Sie einfach ein zusätzliches Subnetz in einer anderen AZ, die nur für das RDS nichts enthält?

Vielleicht gibt es eine Möglichkeit, wie AWS das Subnetz automatisch erstellen kann und mich aus diesem Durcheinander herauslässt. Ich möchte dieses zusätzliche Subnetz nicht, und ich möchte meine Benutzer nicht dadurch belasten, dass sie einfach nur ein anderes AZ auswählen.

+3

die Antwort ja ist, gibt es keine andere Wahl – Gleeb

+0

Dies gilt auch für DMS gilt (Database Migration Service). Wie Sie feststellen, löst das Erstellen eines anderen Subnetzes das Problem. – Brian

Antwort

5

Ja, selbst für eine Bereitstellung, die vollständig in einer einzigen Availability Zone [AZ] enthalten ist, müssen Sie ein zusätzliches Subnetz in einer anderen AZ erstellen und in Ihre DB-Subnetzgruppe aufnehmen. Der Grund für diese Forderung ist hochverfügbare Multi-AZ-Installationen zu unterstützen, wie in dem Working with a DB Instance in a VPC Abschnitt des RDS-Benutzerhandbuch bemerkt:

For Multi-AZ deployments, defining a subnet for two or more Availability Zones in a region allows Amazon RDS to create a new standby in another Availability Zone should the need arise. You need to do this even for Single-AZ deployments, just in case you want to convert them to Multi-AZ deployments at some point.

Was nicht Ihre Benutzer mit belastenden weiterem AZ nur für diese Auswahl gab sind Wege, dies zu erreichen. Beispielsweise könnten Sie mit den intrinsischen Funktionen Fn::GetAZs und Fn::Select automatisch eine sekundäre AZ auswählen. Wenn Sie dem Benutzer erlauben, die primäre AZ auszuwählen, benötigen Sie außerdem eine Condition, um sicherzustellen, dass die sekundäre AZ nicht der primären ausgewählten AZ entspricht.

Hier ist ein Beispiel Template-Schnipsel:

Properties: 
    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: ""}] 
     # ... 
+0

Sollte nicht "Fn :: If" auf "IsFirstPrimaryAZ" statt "FirstAZ" stehen? – VillasV

+0

Ja, das sieht aus wie ein Tippfehler, danke für die Korrektur! – wjordan