< Lab >
Lab into : Creating SQL Server Databases on Compute Engine
실습: Compute Engine에서 SQL Server 데이터베이스 만들기
- SQL Server 데이터베이스 VM, 관리자 VM, 클라이언트 VM 생성
- 클라이언트에서 데이터베이스로 연결
Creating SQL Server Databases on Compute Engine
Compute Engine에서 SQL Server 데이터베이스 만들기
- 클라이언트 및 서버 VM 만들기
- Project infot에서 프로젝트 ID 복사
+) 프로젝트 ID : qwiklabs-gcp-04-ddc2ac5fbe51 - 클라우드 셸을 열어서 마지막 실습의 완료된 버전이 포함된 GitHub 리포지토리를 복제하려면 다음 명령을 입력 후 폴더 변경
git clone https://github.com/GoogleCloudPlatform/training-data-analyst cd ~/training-data-analyst/courses/db-migration/terraform-sql-server-on-gce/
- 마지막 실습에서 완료된 Terraform 파일 확인
ls
- Open Editor를 클릭한 후 terraform.tfvars 파일에서 project_id 변수를 프로젝트 ID와 일치하도록 변경
# GCP Settings project_id = "qwiklabs-gcp-04-ddc2ac5fbe51" gcp_region_1 = "us-central1" gcp_zone_1 = "us-central1-a" # GCP Network Variables subnet_cidr_public = "10.1.1.0/24" subnet_cidr_private = "10.2.2.0/24"
- vm-sql-server-windows.tf 라는 파일을 추가 하고 다음 Terraform 코드 작성해 사설 네트워크에서 SQL Server 시스템 생성
# Create Windows SQL Server in Private VPC resource "google_compute_instance" "sql-server-windows" { name = "sql-server-windows-${random_id.instance_id.hex}" machine_type = "n1-standard-2" zone = var.gcp_zone_1 tags = ["allow-rdp", "allow-sql"] boot_disk { initialize_params { image = "windows-sql-cloud/sql-2017-express-windows-2016-dc-v20200414" } } network_interface { network = google_compute_network.private-vpc.name subnetwork = google_compute_subnetwork.private-subnet_1.name # access_config { } - Remove access_config for no External IP } } output "sql-server-windows" { value = google_compute_instance.sql-server-windows.name } output "sql-server-windows-external-ip" { value = "NONE" } output "tsql-server-windows-internal-ip" { value = google_compute_instance.sql-server-windows.network_interface.0.network_ip }
- vm-windows-admin.tf 라는 파일을 추가 하고 다음 Terraform 코드를 작성해
SQL Server를 관리하는 데 사용할 수 있는 공용 네트워크에 Windows 시스템 생성
이 서버는 공용 네트워크에 있으므로 RDP 사용 가능
# Create VM Windows Admin resource "google_compute_instance" "windows-admin" { name = "windows-admin-${random_id.instance_id.hex}" machine_type = "n1-standard-2" zone = var.gcp_zone_1 tags = ["allow-rdp"] boot_disk { initialize_params { image = "windows-cloud/windows-server-2016-dc-v20200424" } } network_interface { network = google_compute_network.public-vpc.name subnetwork = google_compute_subnetwork.public-subnet_1.name access_config { } } } output "windows-admin-name" { value = google_compute_instance.windows-admin.name } output "windows-admin-external-ip" { value = google_compute_instance.windows-admin.network_interface.0.access_config.0.nat_ip } output "windows-admin-internal-ip" { value = google_compute_instance.windows-admin.network_interface.0.network_ip }
- vm-sql-client.tf 라는 다른 파일 을 추가하고 다음 Terraform 코드를 작성해
SQL Server에 연결하는 데 사용할 수 있는 Linux 클라이언트인 머신을 하나 더 생성
# Create VM SQL Client resource "google_compute_instance" "sql-client" { name = "sql-client-${random_id.instance_id.hex}" machine_type = "f1-micro" zone = var.gcp_zone_1 tags = ["allow-ssh"] boot_disk { initialize_params { image = "ubuntu-os-cloud/ubuntu-1604-xenial-v20200429" } } metadata_startup_script = "sudo apt-get update;" network_interface { network = google_compute_network.public-vpc.name subnetwork = google_compute_subnetwork.public-subnet_1.name access_config { } } } output "sql-client-name" { value = google_compute_instance.sql-client.name } output "sql-client-external-ip" { value = google_compute_instance.sql-client.network_interface.0.access_config.0.nat_ip } output "sql-client-internal-ip" { value = google_compute_instance.sql-client.network_interface.0.network_ip }
- vpc-firewall-rules-private.tf 파일을 열고 다음 방화벽 규칙을 끝에 추가해
개인 네트워크에서 SQL Server로의 통신을 허용하는 방화벽 규칙 생성
# allow SQL only from public subnet resource "google_compute_firewall" "private-allow-sql" { name = "${google_compute_network.private-vpc.name}-allow-sql" network = google_compute_network.private-vpc.name allow { protocol = "tcp" ports = ["1433"] } source_ranges = [ "${var.subnet_cidr_public}" ] target_tags = ["allow-sql"] }
- Terraform을 초기화하고 계획을 생성한 후 리소스 생성
terraform init terraform plan terraform apply -auto-approve
- 데이터베이스 서버 관리
- 콘솔의 Compute Enigne에서 여러 VM이 나열된 것 확인 후 여러 VM의 사용자 이름과 암호를 추적
Windows Admin RDP Login Username: student_02_ecd493b3c Password: :J>1uY*;#A5gUZ] SQL Server RDP Login Internal IP: 10.2.2.2 Username: student_02_ecd493b3c Password: EV0:#S-mF3jmUt? SQL Server User Username: gagyoneg Password: 0506
- windows-admin- 과 sql-server-windows VM을 찾고 RDP 버튼의 드롭다운 화살표를 클릭해 Windows 암호 설정
암호를 설정한 후 위에 사용자 이름과 암호를 기록하고 SQL Server 시스템의 내부 IP 주소도 기록 - Windows Admin 시스템용 RDP에 로그인 후 시작 메뉴에서 Remote Desktop Connection 입력
- SQL Server의 내부 IP 주소를 입력하고 연결한 후 사용자 이름과 비밀번호로 로그인
- SQL Server User 로그인을 만들기 위해 시작 메뉴에서 ssms를 입력 후 채워져 있는 로컬 서버 이름으로 연결하여 로그인
- 개체 탐색기에서 서버의 속성을 클릭해 SQL Server 및 Windows 인증 모드 선택 후 다시 시작
- 개체 탐색기에서 Security를 두 번 클릭해 확장하여 새 로그인을 선택 후 로그인
- 방금 만든 SQL Server User의 사용자 이름과 암호를 위에 기록
- SQL Server 시스템과 Windows Admin 관리 시스템에 대한 RDP 연결을 닫음
- 클라이언트에서 데이터베이스에 연결
- Compute Enigne에서 sql-client-의 SSH를 클릭
- SQL Server Client 소프트웨어를 설치하고 방금 만든 로그인을 테스트
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list sudo apt-get update sudo apt-get install mssql-tools unixodbc-dev
- SQL 클라이언트가 경로에 있도록 명령 입력
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc
- 컴퓨터의 IP 주소와 생성한 SQL Server 사용자 이름을 사용하여 메시지가 표시되면 다음 명령과 암호를 입력
오류가 발생하지 않으면 클라이언트 로그인이 작동한 것
sqlcmd -S 10.2.2.3,1433 -U gagyoneg
- SQL cmd를 나간 후, SSH 세션을 닫음
quit
- 실습 앞부분에서 만든 모든 항목을 삭제
terraform destroy -auto-approve