Terraform을 사용하여 Babelfish로 AWS PostgreSQL Aurora RDS 클러스터 프로비저닝
바벨피쉬 소개
SQL Server 데이터베이스를 Amazon Web Services로 마이그레이션하는 것은 가능하지만 비용이 많이 들 수 있습니다. Microsoft의 SQL Server 라이선스 모델은 PostgreSQL과 같은 오픈 소스 대안과 비교할 때 비용이 많이 듭니다. Babelfish for PostgreSQL이라는 오픈 소스 프로젝트 덕분에 SQL Server 워크로드를 클라우드로 이동하고 PostgreSQL이 제공하는 비용 효율성의 이점을 누릴 수 있습니다.
PostgreSQL용 Babelfish는 PostgreSQL에 Microsoft SQL Server 호환 엔드포인트를 추가합니다. Babelfish는 PostgreSQL이 SQL Server 전용 SQL 방언인 T-SQL을 이해하고 TDS 통신 프로토콜을 지원하므로 원래 SQL Server용으로 작성된 응용 프로그램은 코드 변경이 적고 데이터베이스 드라이버를 변경하지 않고도 PostgreSQL과 함께 작동할 수 있습니다.
소프트웨어 공급업체는 Babelfish 엔드포인트를 사용하여 소프트웨어를 테스트해야 하지만 대부분의 애플리케이션은 약간만 변경해도 작동합니다.
Terraform을 사용하여 Babelfish가 활성화된 Aurora PostgreSQL 클러스터 프로비저닝
다음은 Babelfish 엔드포인트가 활성화된 RDS Aurora 클러스터를 프로비저닝하는 샘플 Terraform 스크립트입니다.
이 정보가 도움이 되었기를 바랍니다.
코드는 주석 처리되며 요구 사항에 맞게 요소를 변경할 수 있습니다.
resource "aws_rds_cluster" "rds_cluster_maywoods_audit_tool" {
cluster_identifier = "maywoods-audit-tool"
availability_zones = ["eu-west-2a", "eu-west-2b", "eu-west-2c"]
// database engine type, mode and version
engine = "aurora-postgresql"
engine_mode = "provisioned"
engine_version = "13.7"
// database_nam must begin with a letter and
// contain only alphanumeric characters.
// ensure a strong long password is used.
database_name = "MaywoodsAuditToolsQA"
master_password = "**********************************"
master_username = "MaywoodsAuditAdmin"
backup_retention_period = "60"
copy_tags_to_snapshot = true
db_cluster_parameter_group_name = aws_rds_cluster_parameter_group.rds_cluster_maywoods_audit_tool_pg.name
db_subnet_group_name = aws_db_subnet_group.rds_cluster_maywoods_audit_tool_sng.name
deletion_protection = true
enabled_cloudwatch_logs_exports = ["postgresql"]
skip_final_snapshot = flase
final_snapshot_identifier = "maywoods-audit-tool-cluster-final-snapshot"
iam_database_authentication_enabled = false
iam_roles = []
preferred_backup_window = "23:00-00:00"
preferred_maintenance_window = "sun:01:00-sun:02:00"
storage_encrypted = true
kms_key_id = "aws/rds"
vpc_security_group_ids = var.sg_id_list
tags = {
// override any tags already set within the
// default_tags block with the providers.tf
Application = "CORE SERVICE - AUDIT TOOL DATABASE",
Provider = "MAYWOODS"
}
}
resource "aws_rds_cluster_instance" "rds_cluster_maywoods_audit_tool_instance" {
cluster_identifier = aws_rds_cluster.rds_cluster_maywoods_audit_tool.id
// change instance type/size and count
// based on the workloads requirements
instance_class = "db.r5.large"
count = 1
identifier = "maywoods-audit-tool-inst-0"
// use the same engine/version as define in the cluster
engine = aws_rds_cluster.rds_cluster_maywoods_audit_tool.engine
engine_version = aws_rds_cluster.rds_cluster_maywoods_audit_tool.engine_version
auto_minor_version_upgrade = true
copy_tags_to_snapshot = true
db_parameter_group_name = "maywoods-audit-tool-pg"
db_subnet_group_name = aws_db_subnet_group.rds_cluster_maywoods_audit_tool_sng.name
monitoring_interval = "0"
monitoring_role_arn = ""
performance_insights_enabled = true
preferred_maintenance_window = "sun:01:00-sun:02:00"
publicly_accessible = false
tags = {
// override any tags already set within the
// default_tags block with the providers.tf
Application = "CORE SERVICE - AUDIT TOOL DATABASE",
Provider = "MAYWOODS"
}
}
resource "aws_rds_cluster_parameter_group" "rds_cluster_maywoods_audit_tool_pg" {
name = "maywoods-audit-tool-pg"
family = "aurora-postgresql13"
# enable babelfish to be active
parameter {
name = "rds.babelfish_status"
value = "on"
apply_method = "pending-reboot"
}
tags = {
// override any tags already set within the
// default_tags block with the providers.tf
Application = "CORE SERVICE - AUDIT TOOL DATABASE",
Provider = "MAYWOODS"
}
}
resource "aws_db_subnet_group" "rds_cluster_maywoods_audit_tool_sng" {
name = "${var.name_prefix}maywoods-db-subnet"
subnet_ids = [var.private_subnet_zero, var.private_subnet_one]
tags = {
Application = "ScR CORE SERVICE - AUDIT TOOL DB",
Provider = "MAYWOODS"
}
}
resource "aws_cloudwatch_log_group" "rds_cluster_maywoods_audit_tool_lg" {
name = "/aws/rds/cluster/${aws_rds_cluster.rds_cluster_maywoods_audit_tool.cluster_identifier}/postgresql"
retention_in_days = 60
}
보안 그룹
서버가 RDS Aurora PostgreSQL 클러스터에 연결할 수 있도록 하려면 보안 그룹도 정의해야 합니다.
보안 그룹은 기본 PostgreSQL 트래픽용으로 포트 5432를, Babelfish 트래픽용으로 포트 1433을 열어야 합니다.
resource "aws_security_group" "rds_maywoods_audit_tool_sg" {
name = "${var.name_prefix}rds_maywoods_audit_tool_sg"
description = "Maywoods Audit Tool Database Access"
vpc_id = var.vpc_id
tags = {
Name = "${var.name_prefix}rds_maywoods_audit_tool_sg",
}
}
resource "aws_security_group_rule" "rds_maywoods_audit_tool_psql_inbound" {
security_group_id = aws_security_group.rds_maywoods_audit_tool_sg.id
description = "Ingress PostgreSQL traffic from hospital servers"
type = "ingress"
from_port = 5432
to_port = 5432
protocol = "tcp"
cidr_blocks = ["10.164.33.38/32", "10.164.33.37/32"]
}
resource "aws_security_group_rule" "rds_maywoods_audit_tool_psql_outbound" {
security_group_id = aws_security_group.rds_maywoods_audit_tool_sg.id
description = "Egress PostgreSQL traffic from hospital servers"
type = "egress"
from_port = 5432
to_port = 5432
protocol = "tcp"
cidr_blocks = ["10.164.33.38/32", "10.164.33.37/32"]
}
resource "aws_security_group_rule" "rds_maywoods_audit_tool_babelfish_inbound" {
security_group_id = aws_security_group.rds_maywoods_audit_tool_sg.id
description = "Ingress Babelfish traffic from hospital servers"
type = "ingress"
from_port = 1433
to_port = 1433
protocol = "tcp"
cidr_blocks = ["10.164.33.38/32", "10.164.33.37/32"]
}
resource "aws_security_group_rule" "rds_maywoods_audit_tool_babelfish_outbound" {
security_group_id = aws_security_group.rds_maywoods_audit_tool_sg.id
description = "Egress Babelfish traffic from hospital servers"
type = "egress"
from_port = 1433
to_port = 1433
protocol = "tcp"
cidr_blocks = ["10.164.33.38/32", "10.164.33.37/32"]
}
Reference
이 문제에 관하여(Terraform을 사용하여 Babelfish로 AWS PostgreSQL Aurora RDS 클러스터 프로비저닝), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nhsdeveloper/provisioning-an-aws-postgresql-aurora-rds-cluster-with-babelfish-using-terraform-5730텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)