Terraform으로 Amazon Aurora 클러스터 자동 구축(PostgreSQL 호환 편)
14244 단어 TerraformAWSAuroraPostgreSQL
이전 기사에서 나는 오로라의 MySQL 호환의 기본 내용을 썼다.
이번에는 PostgreSQL과 호환되는 Aurora 클러스터 인스턴스를 만듭니다.
전제지식은 지난번과 마찬가지로 다음과 같은 내용만 있으면 된다.
Amazon Aurora의 Black Belt 자료 대략적으로 눈을 통해 개요를 이해한다
실제 구축상 주의점도 지난번과 마찬가지로 아우라는 프라이빗 서브넷에 배치돼 발판을 거쳐 방문한다.
또 구축은 포스트 커스QL12다.7 겸용으로 진행됩니다.
Terraform
주로 이전 Aurora MySQL 호환성 문서와의 차분 부분을 묘사한다.
네트워크 설정
이 부분은 이전의 보도와 차이가 없다.
data "aws_subnet_ids" "my_vpc" {
vpc_id = data.aws_vpc.my.id
}
resource "aws_db_subnet_group" "example" {
name = local.db_subnet_group_name
subnet_ids = data.aws_subnet_ids.my_vpc.ids
}
DB 클러스터 및 매개 변수DB 클러스터 설정은 다음과 같습니다.
MySQL을 교환할 때
engine_version
의 기록은 매우 번거롭지만 PostgreSQL을 교환하는 상황은 매우 간단하다.포트는 PostgreSQL 표준 포트
5432
입니다.resource "aws_rds_cluster" "example" {
cluster_identifier = local.aurora_cluster_identifier
engine = "aurora-postgresql"
engine_version = "12.7"
master_username = local.aurora_master_username
master_password = local.aurora_master_password
port = 5432
database_name = local.aurora_database_name
vpc_security_group_ids = [aws_security_group.aurora.id]
db_subnet_group_name = aws_db_subnet_group.example.name
db_cluster_parameter_group_name = aws_rds_cluster_parameter_group.example.name
iam_database_authentication_enabled = true
skip_final_snapshot = true
apply_immediately = true
}
resource "aws_rds_cluster_parameter_group" "example" {
name = local.rdscluster_parameter_group_name
family = "aurora-postgresql12"
}
Aurora 인스턴스 및 매개변수여기서 인스턴스의 설정은 MySQL 호환성과 크게 달라지지 않습니다.
단, PostgreSQL 스와프의 한쪽 자원 소모가 많기 때문에
instance_class
설정 가능한 유형을 제한했다.자세한 내용은 공식 사용 설명서에 적고 필요에 따라 참고하세요.인스턴스 매개변수의 경우
shared_preload_libraries
를 pg_stat_statements,pg_hint_plan
로 설정합니다.없어도 작동하지만 안정적인 동작과 성능을 확보하는 데 문제가 있을 때 조사가 필요하다.
엄밀히 말하면 DB 클러스터의 매개 변수 그룹
rds.extensions
에서도 같은 설정을 미리 설정해야 하지만, 기본으로 설정된 것이기 때문에 자신이 변경한 경우를 제외하고는 신경 쓸 필요가 없다.resource "aws_rds_cluster_instance" "example" {
count = local.aurora_instance_count
cluster_identifier = aws_rds_cluster.example.id
identifier = "${local.aurora_cluster_identifier}-instance-${count.index}"
engine = aws_rds_cluster.example.engine
engine_version = aws_rds_cluster.example.engine_version
instance_class = "db.t4g.medium"
db_subnet_group_name = aws_db_subnet_group.example.name
db_parameter_group_name = aws_db_parameter_group.example.name
monitoring_role_arn = aws_iam_role.aurora_monitoring.arn
monitoring_interval = 60
publicly_accessible = true
}
resource "aws_db_parameter_group" "example" {
name = local.db_parameter_group_name
family = "aurora-postgresql12"
parameter {
apply_method = "pending-reboot"
name = "shared_preload_libraries"
value = "pg_stat_statements,pg_hint_plan"
}
}
작성된 테이블 자동 생성MySQL 호환과 마찬가지로 테이블은 자동으로 생성되어 사용됩니다
null_resource
.미리 설정하지 않으면
export PGPASSWORD
비밀번호 알림이 표시되어 전진할 수 없기 때문에 여기만 설정합니다.CREATE EXTENSION
에서 shared_preload_libraries
에서 유효화된 통계 정보를 참고하는 표를 만듭니다.이 표는 라이터 실례에서만 제작할 수 있지만 리더 실례에서 SQL이 발매되면 잘 업데이트된다.
resource "null_resource" "db_setup" {
depends_on = [
aws_rds_cluster.example,
aws_rds_cluster_instance.example,
]
provisioner "local-exec" {
command = "export PGPASSWORD=${local.aurora_master_password}; psql -h ${aws_rds_cluster.example.endpoint} -U administrator -d COMPANY -f ./aurora_init_db.sql"
}
}
aurora_init_db.sqlCREATE EXTENSION pg_stat_statements;
CREATE TABLE IF NOT EXISTS employee (
id char(5) PRIMARY KEY,
name CHAR(20) NOT NULL,
age integer,
update_dt timestamp
);
INSERT INTO employee VALUES ( '00001', 'Taro', 35, CURRENT_TIMESTAMP );
INSERT INTO employee VALUES ( '00002', 'Jiro', 30, CURRENT_TIMESTAMP );
INSERT INTO employee VALUES ( '00003', 'Saburo', 28, CURRENT_TIMESTAMP );
INSERT INTO employee VALUES ( '00004', 'Shiro', 24, CURRENT_TIMESTAMP );
INSERT INTO employee VALUES ( '00005', 'Goro', 40,CURRENT_TIMESTAMP );
확장 모니터링확장 감시에 관해서는 기본적으로 제작 방법이 변경되지 않았기 때문에 이번에는 기재를 생략합니다.
응용 프로그램 연결의 실천
MySQL 호환
innodb_read_only
에서 확인할 수 있는 상태는 다음과 같습니다.COMPANY=> SHOW transaction_read_only;
transaction_read_only
-----------------------
off
(1 row)
COMPANY=> SHOW transaction_read_only;
transaction_read_only
-----------------------
on
(1 row)
고장이 라이터를 옮긴 실례가 나오자 호응이 크게 달라졌다.그러나 psql에서 전환된 최초의 SQL에서 다음과 같은 오류가 발생했습니다.
실제 업무 응용 프로그램에서 연결이 끊긴 후에 리더십을 연결하면 특별한 검사 등이 없어도 자동으로 전환될 수 있다.
COMPANY=> SHOW transaction_read_only;
SSL SYSCALL error: EOF detected
The connection to the server was lost. Attempting reset: Succeeded.
psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1), server 12.7)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
이렇게 되면 PostgreSQL이 호환되는 아우라 클러스터도 쉽게 만들 수 있습니다!
Reference
이 문제에 관하여(Terraform으로 Amazon Aurora 클러스터 자동 구축(PostgreSQL 호환 편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/neruneruo/items/15d6c5c50cf225bcd1fc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)