상세 컨텐츠

본문 제목

[GCP] SQL | Image & Template | 인스턴스 그룹 | 부하 분산 | Load Balancing 테스트

IT/GCP

by o_zeew 2022. 6. 28. 22:21

본문

(1) SQL

(2) Image & Template

(3) 인스턴스 그룹

(4) 부하 분산

(5) Load Balancing 테스트


1. SQL 

1. Cloud SQL 인스턴스 생성

 

SQL

 

인스턴스 만들기
데이터베이스 엔진 MySQL 선택
인스턴스 ID, root 사용자 비밀번호, 버전 설정

 

  - 여러영역에 저장하면 가용성은 좋지만 비쌈

단일 영역 선택
실습용 커스텀으로 설정
저장용량 설정
test 네트워크 설정, 비공개 서비스 액세스 연결 설정
Service Networking API 사용 설정
새 IP 범위 할당
IP 할당 범위 설정
연결 만들기
인스턴스 만들기
인스턴스 생성 후 엔드 포인트 확인

 

2. 데이터베이스 생성

데이터베이스 만들기
wordpress 실습을 위해 wordpress 데이터베이스 생성
wordpress 데이터베이스 생성 완료
DB의 공인 IP 확인

 

3. 사용자 확인

root 사용자

 

4. web 인스턴스 생성

 

  - 생성시 스크립트로 설정 진행

#! /bin/bash
sudo su -
setenforce 0

yum install -y httpd
systemctl start httpd
sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php/g' /etc/httpd/conf/httpd.conf
systemctl restart httpd

yum install -y wget
wget https://ko.wordpress.org/latest-ko_KR.tar.gz
tar xvfz latest-ko_KR.tar.gz
cp -a wordpress/* /var/www/html
cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php

yum install -y epel-release yum-utils
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php73
yum install -y php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd 
systemctl restart httpd

스크립트 작성

 

5. 설정 적용 확인

/etc/httpd/conf/httpd.conf 파일의 index.php 변경 확인 가능

 

6. wp-config.php 파일 수정

  - DB 이름 : 데이터베이스 이름

  - DB 사용자 : root

  - DB 패스워드 : Cloud SQL 인스턴스 생성 시 설정한 패스워드

  - DB 호스트 : DB의 공인 IP

생성한 데이터베이스 정보에 맞게 입력

 

7. 방화벽 열기

mysql의 3306번 포트 열기

 

8. 인스턴스 IP 승인

  - DB에 공인 IP로 접근하기 위해서는 해당 인스턴스의 공인 IP를 승인해줘야함

네트워크 추가

 

  - 서브넷 32는 해당 IP만 지정

web 인스턴스의 공인 IP 추가

 

9. 접속 확인

web 인스턴스의 공인 IP로 접속 확인

 

  * DB의 공개 IP를 해제할 경우 연결 *

DB의 공개 IP 해제
db 인스턴스의 비공개 IP 주소 확인
wp-config.php 파일의 DB 호스트 비공개 IP 설정

 

 


 

 

<db + wordpress 자동 연동 스크립트>

  - wordpress 연동 실습 시 wp-config.php 파일의 수정 부분의 단어는 고유하기 때문에 sed 명령어로 수정시 자동화 가능

db + wordpress 자동화 스크립트

 

  - 인스턴스 생성 시 위 스크립트 적용

wordpress 인스턴스 생성
wordpress 접속 확인

 

 

 


 

 

 

2. Image & Template 

  - 설정을 완료한 인스턴스를 사용해 이미지 생성

  - 생성한 이미지를 사용해 인스턴스 템플릿 생성

  - 생성한 인스턴스 템플릿을 사용해 똑같은 인스턴스 복제 가능

 

1. 이미지 생성

Compute Engine - 이미지 - 이미지 만들기

 

  - 위에서 wordpress 연동을 진행한 web 인스턴스를 소스 디스크로 사용해 이미지 생성

이름, 소스 디스크, 리전 설정
web-image 생성 확인

 

2. 템플릿 생성

  - wordpress 연동을 진행한 web 인스턴스로 생성한 web-image로 템플릿 생성

인스턴스 템플릿 만들기
이름, 머신 유형 설정

 

  - 부팅 디스크의 이미지를 생성한 web-image 사용해서 생성

커스텀 이미지 - web-image 선택
부팅디스크의 이미지 설정 확인

 

  - 템플릿에 외부IP 설정이 되어있으면 템플릿을 통해 생성하는 모든 인스턴스에 자동으로 외부 IP가 할당 되기 때문에 

    외부 IP 주소 없이 생성

네트워크, 서브네트워크, 외부 IP 설정

 

  - VM 생성 시 템플릿을 활용하여 생성 가능

 

 


 

 

3. 인스턴스 그룹 

  - 로드밸런서에 인스턴스를 넣기 위해서는 인스턴스 그룹 필요

 

1. 인스턴스 그룹 생성

Compute Engine - 인스턴스 그룹

 

  - stateless : 연결한 세션 정보를 저장하지 않음
  - stateful: 고정적으로 연결에 대한 설정 필요 (DB)
    → 위의 두개는 Auto Scaling에 사용
  - 부하분산은 unmanaged instance group 사용

unmanaged instance group 선택 후 네트워크와 포함할 VM 선택(복수 가능)

 

 

 


 

 

 4. 부하 분산 

 - 사용자가 접속하는 앞쪽 프론트엔드 (외부 IP, 포트 필요)
 - 내부의 실제 인스턴스와 연결된 백엔드 (포트)

 

1. 부하분산기 생성

네트워크 서비스 - 부하 분산
http 부하 분산 구성 시작

 

  - 로드밸런서를 외부에 노출시키기 위해 인터넷에서 VM 또는 서버리스 서비스로 설정

  - 로드밸런서가 내부에 있을 때는 VM 또는 서버리스 서비스 사이에서만 (DB와 WEB)

  - 전역 부하분산기는 리전 외부에 배치, 전세계가 사용 가능(과금 위험)

인터넷 연결, 리전 설정

 

  - test 네트워크 내에서 프록시가 전용으로 사용할 서브넷 생성

10.0.31.0/24 서브넷 사용

 

  - 프런트엔드 HTTP 프로토콜, 80번 포트 사용

프록시 전용 서브넷 생성 확인 가능
백엔드 서비스 만들기

 

  - 백엔드 인스턴스 유형, HTTP 프로토콜 사용

인스턴스 그룹 사용
백엔드에 배치 될 인스턴스 그룹 설정
상태 확인 생성

 

  - 웹페이지 설정이 index.php로 되어있어도 index.html 을 서비용 말고 health check용도로 사용
    → 로드밸러서가 index.html 파일을 읽을 수 있으면 정상 처리

/index.html 파일로 상태 확인
상태 확인 생성
부하 분산 생성 완료

 

2. 설정 적용 확인

부하 분산의 공인 IP 확인
부하 분산의 공인 IP로 접속 시 wordpress 확인

 

 

 


 

 

 

5. Load Balancing 테스트 

 

1. 이미지화 할 인스턴스 생성

인스턴스 생성

 

  - 인스턴스 생성 시 스크립트로 http 서비스 실행

http  서비스 스크립트

 

2. 이미지 생성

web-main 인스턴스를 사용해 이미지 생성

 

3. 인스턴스 템플릿 생성

부팅 디스크를 생성한 커스텀 이미지로 설정
인스턴스 템플릿 생성

 

4. 템플릿을 활용해 인스턴스 생성

web-template 템플릿으로 인스턴스 생성
인스턴스 2개 생성

 

  - web-1, web-2 인스턴스 생성 후 테스트를 위해 web-2의 시작페이지 수정

web-2를 브라우저 창에서 열기
시작페이지 수정

 

5. 인스턴스 그룹 생성

생성한 인스턴스 2개로 인스턴스 그룹 생성
인스턴스 그룹 생성 완료

 

6. 부하 분산기 생성

부하 분산 생성 완료

 

7. 설정 적용 확인

  - 로드밸런싱 적용 확인

web-1
web-2

 

관련글 더보기