본문 바로가기

클라우드(Cloud)/Ncloud(네이버클라우드)

NCloud. 3Tier 구성 - 001. Web/Was 서버 생성

반응형

 

[서버 생성 순서]

1 Init script 설정(선택) 리눅스 os / 아파치 웹서버, PHP 설치
2 VPC 생성 Virtual Private Cloud  / 논리적으로 격리된 가상의 사설 네트워크 공간
3 Subnet 생성 VPC 네트워크 공간을 나눈 조각(Public/Private, 서비스 사용목적에 따라 분리가능)
4 서버 생성(web/was) 위에 생성한 VPC, Subnet 적용 / 서버스펙 설정 / Network Interface , 공인 IP설정
4.2 Public IP 공인 IP 설정
5 ACG 정책 허용
인바운드, 아웃바운드 정책 설정(myip와 클라우드 서버의 공인 ip를 연결)
5.2 ACG 정책 따로 생성 web과 was의 acg정책을 따로 생성

 

 


 

 

1. Init script 설정(선택)

 

Init script는 추후에 ssh에서 적용해도 되니 굳이 하지 않아도 됩니다. 하지만 상황에 따라 미리 설정을 해두면 좋을 때가 있으니, Init script 작성 방법을 알아두시면 좋을 것 같습니다.

 

Init script 작성법은 간단합니다. 아래 내용을 그대로 스크립트 내용에 붙여넣으면 끝입니다.

#!/bin/bash
yum -y install httpd php
systemctl enable httpd
cd /var/www/html
wget http://211.249.50.207/lab/lab.tgz
tar xvfz lab.tgz
cat phpadd >> /etc/httpd/conf/httpd.conf
systemctl restart httpd

* web server에는 init script, was server에는 tomcat을 깔아야 합니다.

 

스크립트 내용은 서버 부팅 후 아파치 웹서버와 PHP를 설치하고 테스트페이지를 다운 받은 후, 설정 내 용을 수정 후 아파치 웹서버를 기동하는 스크립트입니다. 

 

 

 

 

 

2. VPC (Virtual Private Cloud) 생성

 

논리적으로 분리, 격리된 가상의 사설 네트워크 공간 . VPC가 있어야 서버를 생성할 수 있습니다. 아래는 VPC 에 대한 네이버 클라우드의 설명으로 참고하세요.

 

"업무의 목적에 따라 네트워크를 나누어 사용하실 수 있도록 논리적으로 격리된 네트워크를 제공합니다.
또한 사설 IP 주소와 Subnet 생성, 네트워크 게이트웨이, 접근 제어 등을 지원함으로서, 손쉽게 전용 네트워크를 확보하실 수 있습니다."

 

 

아래 단계를 따라하면 VPC 를 생성할 수 있습니다.

 

 VPC의 IP 주소 범위는, private 대역(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) 내에서 /16~/28 범위여야 합니다.

A클래스 :  10.0.0.0/8 

B클래스 : 172.16.0.0/12

C클래스 : 192.168.0.0/16

 

세 개의 영역대 중에 아무거나 골라서 IP주소 범위를 설정해주면 됩니다. 단, 주의할 점은 10.0.0.0로 설정할 시에, 실질적으로 /16부터 사용 가능하기 때문에, /8이 아닌 10.0.0.0/16으로 적어주면 됩니다.

 

 

 

 

 

3. Subnet  생성(Public/Private)

VPC 네트워크 공간을 Subnet 단위로 쪼개서 팀원들이 나눠 사용 가능합니다.

Subnet은 지정된 VPC의 IPv4 CIDR에 속해야합니다. 

VPC(피자 한판): 192.168.0.0/16
Subnet(팀원1 피자 조각): 192.168.10.0/24
Subnet(팀원2 피자 조각): 192.168.20.0/24
Subnet(팀원3 피자 조각): 192.168.30.0/24

 

Subnet은 서비스 사용 목적에 따라 분리하기도 합니다. 특정 Subnet에 서비스 침해가 발생하면, 접근통제로 2차 피해를 막을 수 있기에 분리합니다. 

192.168.10.0/24 - DB Zone,
192.168.20.0/24 - WAS Zone,
192.168.30.0/24 - Web Zone

 

아래를 참고해서 subnet을 생성해봅시다. 서브넷은 Public 과 Private 두개를 구분해서 만들어주면 됩니다.

 

IP주소 영역대는 기존 VPC IP 주소 범위를 참고하여 설정해주면 됩니다. VPC IP 주소 범위인 /16(2번째)보다 한단계 낮춰서 /24(3번째)로 설정해주면 됩니다. /24는 세번째 위치 IP 주소까지는 고정한다는 뜻입니다.

즉, 저는 Public subnet의 세번째 위치를 10이란 숫자를 부여해주고 고정했으니, 추후 생성될 IP 주소는 10.0.10.1 혹은 10.0.10.100 등으로 마지막 네번째 위치만 변경될 것이란 뜻입니다. 

 

 

다음으로는 Private subnet을 설정해줍니다. Private subnet 의 영역대는 Public subnet과 겹치지 않게 다른 범위의 숫자를 부여해주시면 됩니다. 저는 세번째 위치에 20이란 숫자를 넣어줬습니다. Public subnet 의 10과 겹치지만 않으면 20, 50, 100 등 숫자는 무엇을 부여해주던지 상관 없습니다. 

 

 Subnet  IP 주소 범위 : 기존 VPC IP 주소 범위를 참고하여 설정

⊙ 가용 Zone : KR-1과 KR-2 두개 중 원하는 가용영역으로 설정

 Internet Gateway 전용여부 : Public / Private 선택 가능

⊙ 용도 : 일반으로 설정(추후 LB 전용 서브넷을 만들때는 LB 등으로 클릭)

 

Network ACL(nacl)은 방화벽인데 자동으로 생성되는걸 그대로 적용해주시면 됩니다.

참고) 

*비슷한 개념인데 범위가 다름.

nacl - 서브넷 통신을 위한 방화벽 

acg - 서버들 통신을 위한 방화벽

 

 

 

 

 

4. 서버 생성

 

자, 그럼 이제 위에 VPC 를 생성할 때 서버 생성 창으로 돌아와 나머지를 설정해줍니다. Public subnet 에는 web server를 만들어줄 것이고, Private subnet에는 was server를 만들어 줄 겁니다. 서버스펙은 가장 저렴한 standard로 설정해줍니다. 그리고 서버이름에 web server/ was server 임을 알아볼 수 있게 이름을 지어주시고, Network Interface 카드는 그냥 추가를 바로 눌러서 기본설정으로 넣어줍니다. 

Network Interface 카드 : acg가 적용되는 곳(NIC)

* ACG : 서버 통신을 위한 방화벽

 

★중요 : 서버 생성시, 공인 IP는 web server인 경우엔 반드시 '새로운 공인 IP할당'으로 해주셔야합니다. '미설정'으로 했을 경우 추후 Public IP 를 따로 설정해줘야하는 과정을 거쳐야해서 번거로우니, 체크 한 번으로 간단하게 진행하면 좋습니다.

if) 만약

미설정으로 진행하셨다면 아래 4-2. Public IP 설정 부분을 참고하셔서 IP를 따로 할당해주시면 됩니다. 

 

★ Script 부분은 앞서 init script를 설정해줬다면 해당 script를 설정해주시면 되고, 만약에 init script를 설정하지 않았다면 '선택없음'으로 클릭하시고 추후에 ssh에서 코딩으로 설정해주셔도 됩니다.

(web server에는 apache 설치, was server에는 tomcat 설치) 

 

저는 위에 apache 설치 관련 부분은 init script를 설정해놨기 때문에, 가져와서 사용하도록 하겠습니다.

 

 

스토리지 생성은 그대로 다음을 클릭해주세요. 그 다음 인증키 설정이 중요합니다. '새로운 인증키 생성'으로 클릭해주시고, 인증키 이름을 설정해주신 후 [인증키 생성 및 저장]을 해주시면 됩니다. 그럼 인증키 이름으로 된 .pem 파일이 하나 다운로드 됩니다.

지금 이 .pem 파일이 추후 ssh 접속할 때  key 파일로 꼭 필요합니다. 한 번 다운로드하면 다시 다운로드가 불가능하니 삭제하지마시고 매우 잘 보관하셔야합니다. .pem 파일이 다운로드 되면, 다음 버튼이 활성화됩니다. 

 

 

다음 단계는 따로 설정할 것 없이 진행하셔서 서버를 생성해주시면 됩니다.

 

이제 Public subnet 의 web server를 만들었으니,

같은 방식으로 Private subnet에는 was server를 만들어 주시면 됩니다.

 

was server 생성할 때 Private subnet에서는 공인IP 부분에서 '새로운 공인 IP할당' 이 불가능합니다. 따라서 '미설정'으로 진행해주시면 됩니다.

 

★ Script 부분은 init script를 설정해줬다면 해당 script를 설정해주시면 되고, 만약에 init script를 설정하지 않았다면 '선택없음'으로 클릭하시고 추후에 ssh에서 코딩으로 설정해주셔도 됩니다. (web server에는 apache 설치, was server에는 tomcat 설치) 

저는 위에 init script를 apache  설치 관련 부분만 설정해놨고 tomcat은 따로 설정하지 않았기 때문에, 선택없음으로 진행후 추후 ssh에서 설치하도록 하겠습니다. 

 

 

추후 인증키 설정시, 가벼운 실습시에는 Public subnet의 web server와 같은 .pem키를 사용하셔도 됩니다. 하지만 회사에서 실제 서비스를 사용하거나 분리해야할 필요성을 느낄 때에는 새로 인증키를 설정해주셔도 됩니다.

 

 

 

 

4-2. Public IP 설정 

Public subnet 에는 web server를 생성 할 때,  '공인 IP'를 '미설정'으로 했을 경우 Public IP 를 따로 설정해줘야합니다. 

 

이 과정이 번거로운 분들은, Public subnet 에는 web server를 생성 할 때 '새로운 공인 IP할당'을 클릭해서 자동 설정으로 진행하시면 됩니다.

 

 

 

 

5. ACG 정책 허용

★중요 : 공인 IP(클라우드 서버에 할당된 공인IP) 접속 현재 안됨 → 허용해줘야함(acg에서 정책을 허용해줘야함)

 

inbound : 들어오는 정책(설정해줘야함)

outbound : 나가는 정책(굳이 설정할 필요 없음)

 

 

인바운드 정책은 그대로 진행하셔도 되고, 22번 관리자 포트를 제한해주셔도 됩니다. 제한할 경우, 밑에 0.0.0.0/0(전체)로 열린 22번 포트를 삭제한 후에, myip 버튼을 클릭해서 나의 ip로만 (내 컴퓨터 건물 공인ip) 접속 가능하게 22번 포트를 제한하시면 됩니다. 아웃바운드 정책은 변경없이 그대로 두시면 됩니다. 

 

★접근소스 : myip(내 컴퓨터 건물 공인ip) 

★허용포트 : 프로토콜 방식에 따라 정해진 포트가 있음.

(ssh접속을 위한 기본 포트:22-관리자포트), 범위지정(모든포트) > 보안문제 생김(3389-원격포트)

(http 포트번호 : 80 / https 포트번호  : 443) 

 

 

서버와 서버가 통신하기 위해서는 ACG 규칙 설정이 필요합니다. myip와 클라우드 서버의 공인 ip를 연결하는 과정이 ACG 규칙 설정하는 것입니다.

 

 

 

 

 

5-2. ACG 정책 따로 생성

 

[ default acg 규칙 현황 ] 

default acg - inbound 규칙 현황

 

default acg - outbound 규칙 현황

 

위 이미지와 같이 default acg를 통해서 web server 와 was server의 acg를 같이 설정할 수도 있지만, 사실 보안을 위해서는 web server 와 was server의 acg를 따로 설정해주는 것이 더 좋습니다. 따라서 단순 실습이 아니라면, 앞으로는 실전처럼 연습하기 위해 web server 와 was server의 acg를 따로 설정해주는 연습을 해두는 것이 좋습니다.

 

아래와 같이 새로운 acg를 생성하면서 직접 web server 와 was server의 acg를 만들어봅시다.

web acg / was acg 생성 화면

 

 

[ web acg 규칙 현황 ] 

web acg - inbound 규칙 현황

 

위 처럼 web server의 acg inbound 규칙은 TCP/UDP/ICMP등의 여러 프로토콜의 모든 IP 접속 80번 포트를 열어주는 것, 그리고 TCP 프로토콜의 myip로 22번 관리자 포트를 추가하는 정도면 충분합니다.

(*TCP = 모든 IP, UDP=동영상, ICMP=ping찍기용)

 

web acg - outbound 규칙 현황

web server의 acg  outbound 규칙은 모두가 나갈 수 있게 1-65535로 전부 열어주시면 됩니다. 

 

 

 

[ was acg 규칙 현황 ] 

was acg - inbound 규칙 현황

 

다음은 was server의 acg inbound 규칙입니다. 접근 소스를 IP로 해도 되지만, was server는 전부 web server를 통해 들어오기 때문에 접근 소스를 앞에 구축해둔 web acg로 해두면 굳이 다양한 IP를 적지 않고 여러모로 편리하고 좋습니다. 그래서 저는 web acg로 접근소스를 설정하고 다양한 포트들을 열어주었습니다. 

 

was acg - outbound 규칙 현황

was server의 acg outbound 규칙은 1-65535로 전부 열어주셔도 되고, 추후 DB 연동시 필요한 mysql 포트인 3306만 열어주셔도 됩니다. 

 

 

참고로 acg 정책을 새로 생성한 후에는 반드시 서버와 acg 정책을 연결 시켜줘야합니다.  

 

서버의 NIC에서 ACG설정을 누르신 후에 창이 뜨면 Default 대신 제가 생성한 Web acg를 등록하시면 됩니다. Web server와 마찬가지로 Was server의 ACG도 제가 생성한 것으로 바꿔주시면 됩니다.

 

 

 

 

번외)

[ cloud-mysql acg 규칙 현황 ] 

cloud-mysql acg - inbound 규칙 현황
cloud-mysql acg - outbound 규칙 현황

 


 

 

 

 

오늘은 여기까지 진행해보겠습니다. 이 다음 과정은 mobaXterm 프로그램을 통해 ssh에 접속해서 작업들을 진행해보겠습니다. 다음시간까지 아래 mobaXterm 홈페이지에서 미리 프로그램 다운로드해주셔도 좋을 것 같습니다. 

 

 

* ssh접속 툴 (putty / mobaXterm) 다운로드

mobaXterm : https://mobaxterm.mobatek.net/download-home-edition.html

 

MobaXterm free Xserver and tabbed SSH client for Windows

The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more!

mobaxterm.mobatek.net

 

 

반응형