brunch

매거진 kakao cloud

You can make anything
by writing

C.S.Lewis

by Master Seo Feb 20. 2024

카카오클라우드 4탄-24. VM 웹서비스

<0> 사전 준비

<1> 베스천 호스트 설정

<2> 관리형 mysql 데이터 베이스 생성

<3> 애플리케이션 서버 생성

<4> 애플리케이션 LB 생성

<5> web 서버 생성

<6> 웹서버에 로드 밸런서 생성

<7> 웹서버 로드밸런서에 공인 IP 연결

<8> 서비스 접속 확인

<9> 참고 자료




<0> 사전 준



kr-central-2

NAT인스턴스를 통한 네트워크 생성



NAT인스턴스를 우분트로 생성

https://docs.kakaocloud.com/tutorial/fundamentals/private-subnet


10.0.0.0/20        pub , web-lb

10.0.16.0/20      pri , web

10.0.32.0/20      pri , app-lb

10.0.48.0/20      pri , app

10.0.64.0/20      pri , db




NAT인스턴스를 centos로 생성

https://brunch.co.kr/@topasvga/2979



<1> 베스천 호스트 설정


1

우분트로 베스천 생성



2

Nginx Proxy Manager를 실행하기 위해, 먼저 Bastion 호스트를 구성

Nginx Proxy Manager(NPM)는 Nginx를 기반으로 한 웹 서버를 쉽게 설정하고 관리할 수 있도록 도와주는 오픈 소스 프로젝트입니다.


sudo curl -o /tmp/install-bastion.sh https://raw.githubusercontent.com/kakaoenterprise/kakaocloud-tutorials/bastion-host/install-bastion.sh


bash /tmp/install-bastion.sh



3

보안 그룹 설정


bastion-sg 

my ip 에서 10000-10010 허용

my ip 에서 81 허용

my ip 에서 22 허용



web-sg

10.0.0.0 /20 만 허용 = web-lb ip 블럭만 허용.  80



app-sg

10.0.32.0 /20 만 허용 = app -lb ip 블럭만 허용.  8080



4

http://${BASTION_PUBLIC_IP}:81/login

admin@example.com

changeme



web, app 서버 우분트로 2대씩 생성

web  16

app  32



5

Dashboard > Streams


web

10000    

포트포워딩 22


10001

포트포워딩 22



app

10002

포트포워딩 22

10003

포트포워딩 22



6

보안 그룹 허용

web 서버 - 베스천 사설 ip 의 22

app 서버 - 베스천 사설 ip 의 22



7

접속


푸티로  베스천 접속 - 포트 10000 , 10001 , 10002 , 10003


또는 


*tutorial-web-1  

ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10000


*tutorial-web-2  

ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10001


*tutorial-app-1 

ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10002


*tutorial-app-2  

ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10003




<2> 관리형 mysql 데이터 베이스 생성



1

콘솔 > data store  >  mysql



2

인스턴스 그룹 이름

tutorial-mysql

admin

root1234

m2a.large

100

100

10.0.64.0/20 서브넷 사용




<3> 애플리케이션 서버 생성



1

vm접속

*tutorial-app-1

ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10002

*tutorial-app-2

ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10003



2

예제 프로젝트 설치

git clone -b kakaocloud-library https://github.com/kakaoenterprise/kakaocloud-tutorials



3

cd kakaocloud-tutorials



4

패키지 설치

bash install-requirements.sh



5

환경변수 입력한 뒤, 예제 application을 실행합니다.


sudo docker run -it \

-e MYSQL_HOST=${MYSQL_HOST} \

-e DB_USERNAME=${DB_USERNAME} \

-e DB_PASSWORD=${DB_PASSWORD} \

-p 8080:8080 \

--name kakaocloud-library-server -d \

$(sudo docker build -q -f ./server/deploy/Dockerfile ./server)



MySQL > Instance Group 탭에서 생성해둔 tutorial-mysql 인스턴스 그룹을 클릭 후, 상단 엔드포인트에서 확인 가능


admin

root1234




<4> 애플리케이션 LB 생성



1

NLB

tutorial-app-lb

192.168.32.0/20

포트 8080

0 , 16 은 web

32 는 app-lb

tutorial-app-lb

리스너 만들기

TCP:8080



2

Target Group

tutorial-app-target-group

8080 



3

app-sg

8080 허용 




<5> web 서버 생성



1

# tutorial-web-1

ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10000

# tutorial-web-2

ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10001



2

예제 프로젝트 설치

git clone -b kakaocloud-library https://github.com/kakaoenterprise/kakaocloud-tutorials



3

cd kakaocloud-tutorials 



4

예제 빌드 및 실행하는데 필요한 패키지 설치 

bash install-requirements.sh



5

sudo docker run -it \

-e SERVER_ENDPOINT=${SERVER_ENDPOINT} \

-p 80:80 -p 443:443 \

--name kakaocloud-library-client -d \

$(sudo docker build -q -f ./client/deploy/Dockerfile ./client)




<6> 웹서버에 로드 밸런서 생성



1

alb

tutorial-web-lb

80



2

타킷 그룹 

tutorial-web-target-group



3

weg-sg 

80 허용




<7> 웹서버 로드밸런서에 공인 IP 연결




<8> 서비스 접속 확인


퍼블릭 ip로 접속 확인.




<9> 참고 자료


https://docs.kakaocloud.com/tutorial/fundamentals/vm-based-web



몰아보기

https://brunch.co.kr/@topasvga/3651


감사합니다. 

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari