2015-11-15 13 views
14

Sto usando la formazione di nuvole per creare una configurazione contenente un'istanza RDS.RDS con Cloud Formation e problemi AZ

Sto avendo qualche difficoltà creando l'istanza RDS sul conto del seguente errore:

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

Il problema è che l'intera installazione è su un unico AZ ... cosa dovrei fare? basta creare una sottorete extra in una AZ diversa che non contiene nulla solo per RDS?

Forse c'è un modo in cui AWS può creare automaticamente quella sottorete e lasciarmi fuori da quel pasticcio. Non voglio quella sottorete extra e non voglio sovraccaricare i miei utenti con la selezione di un'altra AZ solo per questo.

+3

la risposta è sì, non c'è altra scelta – Gleeb

+0

Questo vale anche per DMS (servizio di migrazione di database). Come dichiari, la creazione di un'altra subnet risolve il problema. – Brian

risposta

5

Sì, anche per una distribuzione interamente contenuta in una singola zona di disponibilità [AZ], è necessario creare una sottorete aggiuntiva in un'altra AZ e includerla nel gruppo di sottorete DB. La logica di questo requisito è quello di sostenere ad alta disponibilità multi-AZ implementazioni, come indicato nella sezione Working with a DB Instance in a VPC della Guida per l'utente RDS:

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.

Come per non gravare gli utenti con la selezione di un'altra AZ proprio per questo, non ci sono modi per realizzare questo. Ad esempio, è possibile selezionare automaticamente un AZ secondario utilizzando le funzioni intrinseche Fn::GetAZs e Fn::Select. Se si consente all'utente di selezionare l'AZ principale, sarà inoltre necessario un Condition per garantire che l'AZ secondaria non sia uguale all'AZ principale selezionata.

Ecco un frammento di esempio modello:

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

Non dovrebbe il tuo 'Fn :: If' essere su' IsFirstPrimaryAZ' invece di 'FirstAZ'? – VillasV

+0

Sì, sembra un errore di battitura, grazie per la correzione! – wjordan

Problemi correlati