проблемы с созданием межрегионального кластера реплик чтения для RDS aurora с использованием terraform - PullRequest
1 голос
/ 18 октября 2019

ОБНОВЛЕНИЕ: проблема № 2 на самом деле не является проблемой терраформ .. проблема была с AWS .. я исправил, что .. код работает нормально .. теперь осталось только проблема # 1 с проблемой AZ

у меня есть кластер сияний RDS с 1 экземпляром в нем us-east-1 и я хочу создать реплику чтения перекрестной области RDS кластер сияний с 1 экземпляром в us-west-2

есть 2 проблемы, возникающие при попытке создать реплику чтения между регионами из кластера сияний RDS с помощью terrform

, вот мой main.tfфайл

provider "aws" {
  region = "${var.aws_region}"

}

resource "aws_db_subnet_group" "rds-aurora" {
  name       = "${var.name}-${var.aws_region}"
  subnet_ids = ["${split(",",lookup(var.subnet_ids, "${var.aws_region}"))}"]
  tags {
    Name            = "${var.name}-${var.env}-${var.aws_region}"
  }
}

resource "aws_rds_cluster_parameter_group" "rds-aurora-cluster-pg" {
  name        = "${var.name}-cluster-pg-${var.aws_region}"
  family      = "aurora5.6"
  description = "${var.name} cluster parameter group"
  parameter {
    name  = "secure_auth"
    value = "1"
  }
  parameter {
    name  = "binlog_format"
    value = "MIXED"
    apply_method = "pending-reboot"
  }
  tags {
    Name            = "${var.name}-${var.env}-${var.aws_region}"
  }
  lifecycle {
      create_before_destroy = true
  }  
}

resource "aws_db_parameter_group" "rds-aurora-pg" {
  name   = "${var.name}-pg-${var.aws_region}"
  family = "aurora5.6"
  description = "${var.name} parameter group"
  parameter {
    name  = "secure_auth"
    value = "1"
  }
  tags {
    Name            = "${var.name}-${var.env}-${var.aws_region}"
  }
  lifecycle {
      create_before_destroy = true
  }
}

resource "aws_rds_cluster" "rds-aurora" {
  cluster_identifier      = "${var.name}"
  availability_zones      = ["${lookup(var.availability_zones, var.aws_region)}"]  
  skip_final_snapshot = "true"
  backup_retention_period = "${var.rds_backup}"
  preferred_backup_window = "09:00-09:30"
  preferred_maintenance_window = "mon:06:00-mon:06:30"
  apply_immediately = "true"
  engine_mode       = "provisioned"
  deletion_protection = "false"
  vpc_security_group_ids = ["${split(",",lookup(var.security_groups, var.aws_region))}"]
  storage_encrypted = "true"
  db_subnet_group_name = "${aws_db_subnet_group.rds-aurora.name}"
  db_cluster_parameter_group_name = "${aws_rds_cluster_parameter_group.rds-aurora-cluster-pg.name}"
  kms_key_id = "${var.kms_key_id}"
  replication_source_identifier = "${var.replication_source_identifier}${var.name}"
  source_region = "${var.source_region}"
  tags {
    Name            = "${var.name}-${var.env}-${var.aws_region}"
  }
}

resource "aws_rds_cluster_instance" "rds-aurora" {
  count              = "${var.rds_count}"
  identifier         = "${var.name}-${count.index}"
  engine = "aurora"
  db_subnet_group_name = "${aws_db_subnet_group.rds-aurora.name}"
  db_parameter_group_name = "${aws_db_parameter_group.rds-aurora-pg.name}"
  instance_class     = "${var.instance_class}"
  cluster_identifier = "${aws_rds_cluster.rds-aurora.cluster_identifier}"
  tags {
    Name            = "${var.name}-${var.env}-${var.aws_region}"
  }
}

и вот проблемы, с которыми я сталкиваюсь

1. во-первых, я получаю эту ошибку

aws_rds_cluster.rds-aurora: error creating RDS cluster: InvalidVPCNetworkStateFault: Availability zone '[us-west-2a,us-west-2b,us-west-2c]' is unavailable in this region, please choose another zone set.

, и эти зоны доступности существуют, и я считаю, что я правильно ввел значения, вот как terraform получил значения для зон доступности

...
availability_zones.2635104823:     "" => "us-west-2a,us-west-2b,us-west-2c"
...

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

Теперь я смог перейти к следующему выпуску, добавив всего 1 AZ, чтобы пройти этот этап ... но проблема все еще существует, и я также хотел бы исправить это

n теперь далееВопрос № 2 ниже ... основной вопрос

2. теперь основной ошибкой является ошибка, которую я считаю существующей при создании межрегиональной реплики чтения для RDS aurora с terraform

при применении кластера terrform происходит зависание при создании кластера rds, и он никогда не завершается ... чем за 2 часа до истечения времени ожидания ... и я заметил одну вещь: когда я проверяю панель управления AWS, я вижу, что кластер RDS создан, но под ним нет экземпляра RDS, но terrform продолжает выполнять создание кластера RDS вечно

aws_rds_cluster.rds-aurora: Still creating... (10s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (20s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (30s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (40s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (50s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (1m0s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (1m10s elapsed)
...
...
...
aws_rds_cluster.rds-aurora: Still creating... (1h59m40s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (1h59m50s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (2h0m0s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (2h0m10s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (2h0m20s elapsed)
aws_rds_cluster.rds-aurora: Still creating... (2h0m30s elapsed)

, поэтому я думаю, что есть ошибка, при которой terrafrom не знает, когда создается кластер RDS, поэтому он может создать экземпляр RDS под ним, как указано в файле main.tf выше

кто-нибудь готов помочь с этими 2 вопросами?

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Я говорю о том, что трудно понять, что вы делаете, на основе предоставленного вами кода TF. Где находится исходный код кластера TF и ​​определения ваших переменных?

0 голосов
/ 18 октября 2019

Хорошо, значит, вы создаете кластер реплики чтения вместо экземпляра реплики чтения, вы указываете экземпляр db или кластер в качестве источника? Вы должны установить источник как db_instance в кластере, а не как исходный кластер. В идеале - реплика для чтения, если вы используете источник с несколькими AZ HA.

Одна вещь, о которой следует помнить, так как я не знаю вашу среду и мне приходится стрелять из бедра, если вы используете один кластер хоста. Не беспокойтесь об использовании кластера. Просто используйте один экземпляр БД. Это проще и относительно то же самое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...