[GCP] hands-on

cch_chan·2022년 8월 29일
0

GCP

목록 보기
4/14
post-custom-banner

Hands-on

No.1

Costom vpc와 unmanaged instance group을 생성하여 외부 로드밸런서와 연결

순서
1) costom vpc 생성
2) unmanaged instance group을 생성
3) 외부 로드밸런서와 연결

  • 옵션 선택 인터넷 연결 또는 내부 전용
  • 프론트 백엔드 구성
    프론트,백엔드 구성할 때 포트번호?
  • 라우팅 규칙

4) LB 연결확인

  • vm 2개를 인스턴스 그룹에 추가 하고 apache2로 index.html을 올린 후 하나가 중단 되어도 잘 작동하는지 확인
  • 외부 ip가 없어야 한다?
    외부 ip가 없으면 apt-get update 불가능 -> NAT를 이용하거나 필요 작업을 끝낸 후 외부 ip 제거

결과


하나의 로드밸런서 외부ip로 다른 index.html 제공 (한곳이 문제가 생기면 다른 웹페이지로 대체 가능한 고가용성)

주의사항
Subnet이 다르면 인스턴스 추가 할 수 없음.
vm 설정시 외부 ip 없음으로 설정 시 원래는 ssh 접속 불가능 lb설정 시 접속이 가능하지만 apt-get update가 안됐음.


No.2

인스턴스 그룹을 managed 그룹으로 생성하여 cpu 사용량에 따른 오토스케일링이 가능하게 끔 하는거 외엔 동일


No.3

2개의 subnet의 firewall 연결태그를 통해 연결하여 통신이 되는지 확인

순서
1) vpc에 2개의 서브넷 생성
2) vpc 방화벽에서 icmp태그 추가 (소스필터는 전체 통신망0.0.0.0/0으로 하였음)
3) 서브넷 별로 인스턴스 생성 네트워크 icmp태그 추가
4) vm에 ssh로 접속 후 통신이 되는지 확인(통신 확인은 ping -c 3 외부 ip로 패킷송신을 받는지 안받는지로 확인하였음)
5) 방화벽 규칙 삭제 후 재 확인 (연결이 안되는것을 확인)

대상태그 = 네트워크태그 동일해야함
소스필터 = 어느 네트워크까지 통과 시킬지 추가적으로 확인


No.4

3Tier 아키텍처 구성

wab서버와 was서버를 이중화로 연결하고 외부lb 내부lb이용하여 연결
was와는 mysql을 연결하여 다른 존에 있는 mysql과 연결을 보내는 구조로 만들기.

조건
연결된 선 이외에 통신은 연결이 되면 안됨.(ex mysql 서버에는 was서버에서만 접근이 가능해야함)

순서
1) VPC 서브넷 추가 (10.0.0.0/24, 10.0.1.0/24)
2) Unmanaged instance group 4개 추가 (a-zone, b-zone각자 2개씩) 이유 : 서브넷과 존이 다 달라서
3) Subnet 마다 Web VM, WAS VM 생성 (web으로는 apache2, was로는 tomcat사용)
4) VM Tag설정 (http=80, was(tomcat)=8080, mysql=3306)
5) External LB(HTTP), Internal LB 생성(TCP)
6) WEB 인스턴스에서 tcp lb로 프록시 설정이 필요
7) WAS 인스턴스에서 MySQL로 연결
8) MySQL 복제본 생성 (Replication)

webserver, wasserver 차이점
Web Server에서는 정적 컨텐츠만 다루기 때문에 정적컨텐츠를 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있다.
WAS Server는 동적 컨텐츠와 정적컨텐츠를 모두 다루고 DB조회나 다양한 로직도 처리 가능하기 때문에 서버 부하 방지를 위해 기능을 분리하여 주로 사용함.
정적 컨텐츠는 web server 동적컨텐츠와 db연결은 was server

WASserver (tomcat사용)
1) Java설치 sudo apt-get install openjdk-8-jre openjdk-8-jdk
-> 이후 cd /usr/lib/jvm/ 이동하여 java-8-openjdk를 local로 이동
2) tomcat 설치 (참고 : https://chucoding.tistory.com/65)
3) 환경변수 설정

export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin
export CATALINA_HOME=/usr/local/tomcat8
export CLASSPATH=$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar

설정적용 source /etc/profile

4) 심볼릭링크 설정
sudo ln -s apache-tomcat-8.5.82 tomcat8
sudo ln -s java-8-openjdk-amd64 java

  • 심볼릭 링크란? 바로가기 아이콘과 동일 ln [원본파일명][대상파일명]
    ex) apache-tomcat-8.5.82 대신 동일한 구성에 tomcat8로 이동 가능

5) usr/local/tomcat8/bin에 들어가 ./startup.sh로 실행

참고 : https://rimkongs.tistory.com/241

tomcat은 기본적으로 포트가 8080이기 때문에 port를 바꿀려면 cd /usr/local/tomcat/conf에서 server.xml에 port를 원하는 포트로 변경하면 됨.

proxy서버란?
프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시', 그 중계 기능을 하는 것을 프록시 서버라고함.
구조상 어디에 위치 하느냐에 따라 포워드 프록시(forward proxy), 리버스 프록시(reverse proxy)로 나눠짐

포워드 프록시(forward proxy)
클라이언트(사용자)가 인터넷에 직접 접근하는게 아니라 포워드 프록시 서버가 요청을 받고 인터넷에 연결하여 결과를 클라이언트에 전달해주는 역할

리버스 프록시(reverce proxy)
클라이언트가 서버를 호출할 때 리버스 프록시를 호출하게 되고 프록시 서버가 서버를 요청하여 받은 응답을 클라이언트에게 전달하는 방식

ubuntu apache2에서 mode proxy 사용하기
/etc/apache2/sites-available/000-default.conf 수정필요

<VirtualHost *:80>
	...
	# Forward Proxy 경우 On / Reverse Proxy Off
	ProxyRequests Off
 
	# 호스트가 받은 HTTP 요청을 Proxy 요청시 사용
    # Reverse 경우 On으로 해야함
	ProxyPreserveHost On
 
	# Proxy에 연결할 URL 
    # ServerHost:localhost -> Apache -> ProxyPass URL
	ProxyPass / http://192.168.10.146:8080/service/ # 뒤에 슬래쉬는 붙여줘야함
 
	# WAS 가 redirect HTTP 응답을 보냈을 경우 Location, Content-Location HTTP 헤더를 수정 클라이언트에 전달한다.
	# reverse proxy가 이 헤더를 수정하지 않으면 클라이언트는 redirect 시 제대로 연결할 수 없으므로 꼭 설정해야 한다.
	ProxyPassReverse / http://192.168.10.146:8080/service/
	...

내용 추가 후 입력 apache2에 적용 후 재시작

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo service apache2 restart


리버스 프록시를 mode_proxy로 연결하여 외부 로드벨런서로 was서버 연결

gcp vm(was)->cloudSQL 연동
인증 프록시를 활용하여 sql 내부ip로 연결하기
구글 공식 문서 : https://cloud.google.com/sql/docs/mysql/connect-instance-auth-proxy?hl=ko

참고
https://cloudest.tistory.com/48

Cloud SQL 이중화 (Replication)
2대 이상의 DBMS를 나눠서 데이터를 저장하는 방식으로 사용목적은 크게 실시간 Data 백업과 여러대의 DB서버의 부하를 분산 시킬수 있습니다.


No.5

VPC peering 구성
vpc 2개 각자 subnet 하나씩 생성 vm 생성 후 처음 ping -c 3 내부ip로 패킷 전송 했을때 100% 실패
이후 vpc peering 공개 서브넷 경로를 통해 내보내기로 1->2, 2->1로 peering 전송


활성화 이후 패킷전송 확인됨.

No.6

shared VPC 구성

profile
꾸준히 새로운 기술을 배워나가는중입니다.
post-custom-banner

0개의 댓글