네이버 클라우드에서 서버 생성하기

이 글은 Edwith의 Essential Hands-On 강의 4강을 듣고 이를 정리한 글입니다.

VPC 생성하기

VPC 생성하기

NCP를 이용하기 위해서는 우선 VPC를 생성하여야 합니다. VPC는 Networking 탭의 VPC 탭에 있습니다.

위 페이지에서 VPC 생성 버튼을 누릅니다.

IP 주소 범위는 가장 기본값으로 설정하였습니다.

생성 중인 상태가 생성 완료로 바뀌면 VPC가 생성된 것입니다.

이렇게 뜨면 성공입니다.


ACL 설정

한편 다음으로 해야 할 설정은 ACL입니다. Network ACL → ACL Rule 탭에 들어가보면, 기본 생성된 ACL이 들어가 있는 것을 확인할 수 있습니다.

다만 기본적으로 생성되는 디폴트 ACL은 잘 사용하지 않고, 요구 사항에 맞추어서 개별 ACL을 만들어서 사용하게 됩니다.

이름을 정하고, VPC를 선택합니다.

여기서는 lab1-vpc-web-nacl이라는 이름을 선택했습니다.

이렇게 해서 새 ACL의 껍데기를 생성하였습니다. 이제 내용물인 룰을 생성할 차례입니다.

ACL을 선택한 뒤에, 상단의 Rule 설정 버튼을 클릭합니다.

먼저 Inbound 규칙을 설정합니다.

  1. 먼저 ICMP로 모든 대역에서 핑을 날릴 수 있도록 허용한다.
  2. 그리고 TCP로, 80 포트에 대해서 모든 대역에서 접근 가능하도록 허용한다. 이는 이후에 Init Script를 만들 때 APM을 설치하는 Init Script를 동작시키기에 미리 80 포트를 열어두는 것
  3. 기본적으로 모든 대역에서 22포트로의 접근은 불가능하게 차단한다(Rule 197). 그러나 상위 우선 순위로, 나의 IP에서는 22 포트로 접근이 가능하도록 허가한다(Rule 2)

이제 Outbound 규칙을 설정합니다.

이렇게 하면, TCP/UDP/ICMP에 대해서 모든 대역폭에 대해서 Outbound 접근을 허용한다는 의미입니다.

포트가 1부터 65535번까지 있으므로, ‘-’(하이픈, dash)를 사용해서 모든 포트에 대해서 허용을 적용합니다.

NACL 설정을 완료했습니다.


이제 다음 차례는, VPC의 대역을 좀 더 세분화해서 사용할 수 있게 도와주는 Subnet을 사용할 차례입니다.

VPC 카테고리 밑에 Subnet Management 탭으로 들어가서, Subnet 생성 버튼을 누르면 아래와 같은 창이 뜹니다.

이름은 lab1-vpc-web-sub1 으로 지정했습니다. VPC를 선택을 하고, 해당 VPC가 가지고 있는 IP 주소 범위 내에서 IP 주소 범위를 설정을 합니다. 강의에서는 10.0.1.0/24로 선택을 하였습니다.

가용 Zone 같은 경우에는 데이터센터의 개념이라고 합니다. 현재(23년 7월 기준) KR-1과 KR-2가 있는데, 기본 선택인 KR-2 그대로 선택하겠습니다.

이름에서 알 수 있듯이 웹서버를 위한 서브넷입니다. 그래서 Internet Gateway 전용 여부를 Public(Y)로, 그리고 용도 역시 일반으로 설정합니다.

여기까지 하면 VPC에서 서버를 만들 준비가 끝났습니다. 마찬가지로 생성 중인 서브넷이 생성 완료로 바뀌면 됩니다.


ACG 설정

이제 서버의 보안을 책임져줄 ACG를 만들러 가보겠습니다.
ACG는 Services 탭에서 Server 카테고리에서 설정할 수 있습니다. Server 카테고리의 ACG 탭으로 진입합니다.

여기에도 마찬가지로 VPC 생성 시 디폴트로 생성되는 ACG가 있지만, 이번에도 수동으로 ACG를 생성하도록 할 것입니다. 상단의 ACG 생성 버튼을 눌러서 생성을 해봅시다.

이름을 설정하고 생성 버튼을 누르면

아까와 마찬가지로 껍데기가 하나 생성되는데, 이제 내용물인 ACG 룰을 만들면 됩니다. 상단의 ACG 설정을 누르면 됩니다.

Inbound 설정으로, ACL 설정 때와 비슷하게 규칙을 설정합니다. 즉 전체 대역에 대해서 ICMP와 22포트에 대한 TCP를 열고, 내 아이피에 대해서만 22 포트를 여는 Inbound 규칙입니다.

Outbound도 똑같이 설정하고 적용을 누르면, ACG 설정이 완료가 됩니다.


Server 생성하기

Init Script 설정

이제 서버가 새로 생성이 될 때 APM(Application Performance Management, 서버 모니터링 도구, 어플리케이션 성능 관리 도구) 설치가 자동으로 될 수 있도록 Init Script를 설정할 것입니다. Server 카테고리 내 Init Script 탭으로 들어갑니다.

Script 생성 버튼을 누릅니다.

#!/bin/bash

yum -y remove mariadb-libs
yum -y install httpd php mysql php-mysql
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 start httpd

생성했습니다. 이제 Init Script도 만들었으니, 진짜 서버를 생성해봅시다.


Server 생성하기

서버 생성 콘솔을 선택하라길래, 신규 콘솔 화면으로 선택해주었습니다.

이렇게 선택 가능한 서버 이미지들이 뜹니다. 강의 그대로 centos-7.8-base 64bit 이미지를 선택해줍니다. 다음 버튼을 누르면 서버 설정 화면이 뜹니다.

NCP 서버 페이지 에서 각 서버 타입에 대한 설명과, os 이미지 설정을 확인할 수 있습니다. 강의에서는 High CPU-g2를 선택했으나, Web Server 용도이기에 저는 일반적인 Standard로 선택을 해줍니다.

서버 타입(vCPU와 Memory의 비) 상품 코드 특징 추천 용도
Standard-g2(4배수) S-g2 범용성 높은 성능을 제공하기 위해 vCPU 대비 Memory 비율을 균형 있게 할당하여다양한 워크 로드에 적합한 서비스를 제공합니다. 데이터베이스서버 개인 홈페이지 운영
High CPU-g2(2배수) C-g2 Memory 대비 vCPU 비율을 높여 컴퓨팅 집약적 워크 로드에 적합한 서비스를 제공합니다. 과학적 모델링게임 서버
High Memory-g2(8배수) M-g2 대용량 데이터 처리 등과 같은 메모리 집약적 워크 로드에 적합한 서비스를 제공합니다. 고성능 데이터베이스 서버대규모 게임 서비스
CPU Intensive-g2 (2배수) CI-g2 - 고성능 CPU를 장착하여 많은 연산이 필요한 업무에 최적화된 서버입니다.
- 최대 3.0GHz의 일관된 CPU 클록 속도와 최대 3.7GHz의 단일 코어 터보를 지원하는 인텔 제온 CPU를 사용하였습니다.
- 딥러닝 워크로드의 연산을 가속화 할 수 있는 인텔® Advanced Vector Extensions 512(인텔® AVX-512) 기능을 제공합니다.
- 대규모 연산 시 빠른 처리가 필요한 업무에 적합합니다.
- 높은 스토리지 성능을 갖춘 SSD Server와 사용할 경우 더욱 우수한 성능을 체험할 수 있습니다.
※ 현재 CPU Intensive 타입은 KR-2에서만 이용할 수 있습니다.
- 머신/딥 러닝용 처리서버
- 고성능 웹서버
- HPC / 배치 처리
- 비디오 인코딩

스토리지 암호화 적용은 켜주었습니다.

Network Interface를 설정해야 하는데, NI의 경우 해당 서버를 생성할 서브넷 대역에서 포함되는 IP를 자동으로 설정할 수도 있고, static하게 설정할 수도 있습니다. 여기서는 static 하게, 이전에 설정해둔 10.0.1.0/24에 포함되는 10.0.1.102 로 지정해서 추가를 해줍니다. 그러면 eth0 디바이스가 추가됩니다.

스크립트 설정을 해주어야 하는데, 이전에 설정해둔 스크립트를 골라주었습니다. 다음 버튼으로 넘어가죠.

스토리지 설정 창이 나타났습니다. 기본 스토리지에, 50GB, SSD 타입이네요. 암호화가 적용이 되었구요.

다음 버튼을 눌러서 넘어가줍니다.

처음 서버에 관리자 로그인을 할 때 패스워드를 모르는 상태이므로 인증키를 통해서 로그인하게 됩니다. 새로운 인증키를 생성해서 저장을 해줍니다. 이름은 간단하게 ncp+오늘 날짜로 지정해두었습니다.

이렇게 파일 형태로 저장됩니다. 컴퓨터 어딘가에 잘 보관을 해줍시다.

인증키같은 경우 패스워드 접근에 중요한 역할을 하기에 잊어버리지 않도록, 컴퓨터 여러 군데에 복사해서 보관하는 것도 좋은 방법이라고 합니다.

ACG 디바이스를 서버에 매핑하여 사용할 수 있습니다. 아까 생성해둔 ACG를 이용합니다.

최종 내용을 확인한 다음에 서버 생성을 눌러서 서버를 생성합니다.

시간이 지나면 서버 ‘생성 중’에서 ‘운영 중’으로 상태가 바뀌게 됩니다. 생성이 완료되기까지는 수 분에서 수 십 분이 걸린다고 하니, 느긋하게 커피 한 잔 하고 옵시다.

저도 30분 가까이 걸렸네요.

이제 공인 IP를 연결해서, 해당 서버에 접근하도록 해보겠습니다.


공인 IP 연결

공인 IP의 경우 Server 카테고리 내 Public IP 탭에서 공인 IP를 신청합니다.

공인 IP 신청 버튼을 클릭합니다.

서버를 설정해주고 확인 버튼을 누르면,

위와 같이 공인 IP를 할당받습니다. 자동으로 서버에 매핑됩니다.


공인 IP로 서버 접속

이제 공인 IP로 서버에 접속을 해볼건데, 우리는 현재 어떤 관리자 패스워드로 접속 가능한 지 정보가 없습니다. 그래서 아까 생성했던 인증키를 가지고 서버의 패스워드를 알아볼 예정입니다.

서버 탭으로 돌아와서, 서버 관리 및 설정 변경 → 관리자 비밀번호 확인을 누릅니다.

여기에 아까 저장해둔 pem 인증키를 업로드합니다.

최초 비밀번호가 나옵니다. 어차피 바꿀 것이니 어딘가에 잘 적어둡시다.

F3dmABPRM9Nb

이제 서버의 공인 IP를 통해서 접속을 해봅시다.

SSH 연결을 위해서 윈도우의 경우 PuTTY를 이용하면 되며, MacOS의 경우는 기본 터미널이나 iTerm2로도 충분합니다.

$ ssh root@<public ip address>

이렇게 입력해주시고, 아까 적어두었던 패스워드를 입력해주시면 접속에 성공합니다.

iTerm2의 경우에는 기본 세팅을 통해서 매번 ssh 명령어를 통해서 접속할 필요 없이, 자동 로그인이 되게끔 설정할 수도 있습니다. 이에 관해서는 구글링해보시면 많은 정보가 나올 겁니다.


서버 이미지 생성하기

서버 페이지에서, 서버 관리 및 설정 변경→내 서버 이미지 생성 버튼을 누릅니다.

밑에 생성 버튼 및 확인 버튼을 누르면, 아래와 같이 서버 이미지가 생성된 것을 볼 수 있습니다.

생성해둔 서버 이미지는 Server 카테고리 내 Server Image 탭에서 확인할 수 있습니다. 상태가 생성됨으로 바뀌면 서버 이미지를 통해서 동일한 서버를 만들 수 있습니다.

서버 생성을 누릅니다.

설정은 아까와 비슷합니다. 서버 이미지를 통해 생성을 할 때에도, 서버의 스펙(Standard, High-CPU 등)은 자유롭게 바꿀 수 있다는 점을 기억합시다.

Network Interface의 경우 아까 10.0.1.101을 만들었기에 이번에는 10.0.1.102로 설정을 해두겠습니다(슬래쉬(’/’) 뒤에는 설정해줄 필요 없이 자동으로 배정됩니다.)

질문입니다. Script 선택을 해줄 필요가 있을까요? 답은 ‘아니오’입니다. 왜냐하면 이미 Script를 통해서 APM이 설치가 완료된 서버의 이미지를 떠서, 새로운 서버를 생성하는 것이기에 다시 한 번 스크립트를 설정해줄 필요가 없습니다.

인증키 역시 아까 전에 만들어둔 인증키를 그대로 사용하겠습니다. (5번의 ACG 설정 등 나머지 설정은 동일합니다.)

서버 탭으로 돌아오면, 새로운 서버가 생성되고 있는 것을 확인할 수 있습니다.

또한 서버 이미지 이름을 보시면, lab1-org2의 경우 lab1-org-image를 통해서 생성되었다는 것 역시 알 수 있습니다.

마지막으로 내 서버에 APM이 제대로 설치되었는지 확인하기 위해서, 브라우저를 통해서 접근을 해봅시다. 공인 IP 주소를 그대로 입력해서 접근을 하면, APM 화면이 실행되고 있는 것을 확인할 수 있습니다.