brunch
매거진 NCP AI

1LAB 1. AI를 위한 서버 생성

by Master Seo

# AI 서버를 사용해 보자.

# 여기서는 GPU대신 CPU서버를 1대 만들어 사용해 보자.

# 실무에서는 표준 네트워크를 만들고, 프라이빗에 서버를 생성해 사용한다.



<1> 퍼블릭에 서버 1대 만들기

<2> 표준 네트워크 만들기

<3> 표준 네트워크 확인 - 프라이빗 서버에서 외부로 ping test 하기

<4> SSL VPN으로 Private 서버에 연결하기



<1> 퍼블릭에 서버 1대 만들기



1. 기본 환경 구축


lServices > VPC > VPC Management 선택 > +VPC 생성 선택

“VPC 이름” 에 ai-vpc 라고 입력

“IP 주소 범위” 에 172.16.0.0/16



2


Subnet 생성

Public Subnet을 생성합니다.

Services > VPC > Subnet Management 선택 > +Subnet 생성 선택

다음과 같이 내용 설정 후 생성 클릭

*Subnet 이름 : ai-public-subnet

IP 주소 범위 : 172.16.3.0/24

가용 Zone : KR-2

Network ACL : ai-vpc-default-network-acl

Internet Gateway 전용 여부 : Y

용도 : 일반



3

ACG 만들기

Services > Server > ACG 선택 > +ACG 생성 선택

ACG 이름에 public-acg 라고 입력

“VPC”에 ai-vpc 선택 후 생성 클릭



Inbound 규칙 설정

icmp 0.0.0.0/0

tcp myip 1-65535


Outbound 규칙 설정

icmp 0.0.0.0/0

tcp 0.0.0.0/0

udp 0.0.0.0/0



4

Services > Server > init script > +Script 생성 선택

Script 이름 : ai-script

OS 타입 : Linux



5

AI를 위한 VM 생성

Services > Compute > Server 선택 > +서버생성 선택

Ubuntu-22.04 선택 후 다음



6

VPC는 ai-vpc

subnet은 ai-public-subnet 선택

SSD 선택

G2 선택

High CPU, vCPU 2개, 메모리 4GB 선택

월 요금제 선택

서버 개수 1

서버 이름 : ai-001

IP는 172.16.3.101 입력 후 추가 선택








<2> 표준 네트워크 만들기



1

목표


pirvate subnet1에 AI GPU 서버 1대 생성

ai-server-003


ping 1.1.1.1

캡춰, 슬랙에 올려주세요



2

ssl vpn 연동

내 pc에서 ai-server-003 직접 로그인




3

외부에서 서버 접속법?


네트워크


슬라이드2.JPG


# 퍼블릭으로 접속후 프라이빗 서버로 접속 하세요


ssh -l root 10.0.0.6

root

yes



접속이 안되면

ACG 에서 10.0.0.0/16 22 허용


슬라이드3.JPG






4

# 우분트에 테라폼 설치해서 표준 네트워크를 만들어 보자.


슬라이드1.JPG



# 우분트에 테라폼 설치


wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg


echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list

sudo apt update && sudo apt install terraform




https://developer.hashicorp.com/terraform/install



5

표준 네트워크




[root@ngame-web01-dev 6]# more *.tf

::::::::::::::

main.tf

::::::::::::::

provider "ncloud" {

support_vpc = true

region = "KR"

access_key = var.access_key

secret_key = var.secret_key

}

resource "ncloud_login_key" "key_vpc" {

key_name = var.name_vpc

}

resource "ncloud_vpc" "vpc_vpc" {

name = var.name_vpc

ipv4_cidr_block = "10.0.0.0/20"

}

resource "ncloud_subnet" "subnet_pri1" {

name = var.name_pri1

vpc_no = ncloud_vpc.vpc_vpc.id

subnet = cidrsubnet(ncloud_vpc.vpc_vpc.ipv4_cidr_block,3 ,0 )

zone = "KR-1"

network_acl_no = ncloud_vpc.vpc_vpc.default_network_acl_no

subnet_type = "PRIVATE"

// PUBLIC(Public) | PRIVATE(Private)

}

resource "ncloud_subnet" "subnet_pub1" {

name = var.name_pub1

vpc_no = ncloud_vpc.vpc_vpc.id

subnet = cidrsubnet(ncloud_vpc.vpc_vpc.ipv4_cidr_block,4 , 2)

zone = "KR-1"

network_acl_no = ncloud_vpc.vpc_vpc.default_network_acl_no

subnet_type = "PUBLIC"

// PUBLIC(Public) | PRIVATE(Private)

}

resource "ncloud_subnet" "subnet_pri-db1" {

name = var.name_pri-db1

vpc_no = ncloud_vpc.vpc_vpc.id

subnet = cidrsubnet(ncloud_vpc.vpc_vpc.ipv4_cidr_block,4 , 3)

zone = "KR-1"

network_acl_no = ncloud_vpc.vpc_vpc.default_network_acl_no

subnet_type = "PRIVATE"

// PUBLIC(Public) | PRIVATE(Private)

}

resource "ncloud_subnet" "subnet_pub-nat1" {

name = var.name_pub-nat1

vpc_no = ncloud_vpc.vpc_vpc.id

subnet = cidrsubnet(ncloud_vpc.vpc_vpc.ipv4_cidr_block,4 , 4)

zone = "KR-1"

network_acl_no = ncloud_vpc.vpc_vpc.default_network_acl_no

subnet_type = "PUBLIC"

usage_type = "NATGW"

// PUBLIC(Public) | PRIVATE(Private)

}

resource "ncloud_subnet" "subnet_pub-lb1" {

name = var.name_pub-lb1

vpc_no = ncloud_vpc.vpc_vpc.id

subnet = cidrsubnet(ncloud_vpc.vpc_vpc.ipv4_cidr_block,4 , 5)

zone = "KR-1"

network_acl_no = ncloud_vpc.vpc_vpc.default_network_acl_no

subnet_type = "PUBLIC"

usage_type = "LOADB"

// PUBLIC(Public) | PRIVATE(Private)

}

resource "ncloud_subnet" "subnet_pri-lb1" {

name = var.name_pri-lb1

vpc_no = ncloud_vpc.vpc_vpc.id

subnet = cidrsubnet(ncloud_vpc.vpc_vpc.ipv4_cidr_block,4 , 6)

zone = "KR-1"

network_acl_no = ncloud_vpc.vpc_vpc.default_network_acl_no

subnet_type = "PRIVATE"

// PUBLIC(Public) | PRIVATE(Private)

usage_type = "LOADB"

}

::::::::::::::

nat.tf

::::::::::::::

resource "ncloud_route_table" "route_table_pri1" {

name = var.name_pri1

vpc_no = ncloud_vpc.vpc_vpc.id

supported_subnet_type = "PRIVATE"

}

resource "ncloud_route_table_association" "subnet_pri-db1" {

route_table_no = ncloud_route_table.route_table_pri1.id

subnet_no = ncloud_subnet.subnet_pri-db1.id

}

# NAT Gateway

resource "ncloud_nat_gateway" "nat_gateway_scn_02" {

vpc_no = ncloud_vpc.vpc_vpc.id

subnet_no = ncloud_subnet.subnet_pub-nat1.id

zone = "KR-1"

name = var.name_pub-nat1

}

# Route Table

resource "ncloud_route" "route_scn_02_nat" {

route_table_no = ncloud_vpc.vpc_vpc.default_private_route_table_no

#route_table_no = ncloud_route_table.route_table_pri1.id

destination_cidr_block = "0.0.0.0/0"

target_type = "NATGW"

target_name = ncloud_nat_gateway.nat_gateway_scn_02.name

target_no = ncloud_nat_gateway.nat_gateway_scn_02.id

}

::::::::::::::

variables.tf

::::::::::::::

variable name_vpc {

default = "agame-dev-vpc8"

}

variable name_pri1 {

default = "agame-dev-pri1"

}

variable name_pub1 {

default = "agame-dev-pub1"

}

variable name_pri-db1 {

default = "agame-dev-pri-db1"

}

variable name_pub-nat1 {

default = "agame-dev-pub-nat1"

}

variable name_pub-lb1 {

default = "agame-dev-pub-lb1"

}

variable name_pri-lb1 {

default = "agame-dev-pri-lb1"

}

variable client_ip {

default = "3.3.3.3"

}

variable access_key {

default = "ncp_iam_BPAqKT6sp5"

}

variable secret_key {

default = "ncp_iam_BPKLNrW50nQ"

}

variable nks_version {

default = "1.32"

}

variable name_scn_02 {

default = "tf-scn02"

}

variable login_key {

default = "agame-k8s12"

}

::::::::::::::

versions.tf

::::::::::::::

terraform {

required_providers {

ncloud = {

source = "navercloudplatform/ncloud"

}

}

required_version = ">= 0.13"

}

[root@ngame-web01-dev




4

키 중복 에러 발생시



resource "ncloud_server" "example" {

name = "example-server"

server_image_product_code = "SPSW0LINUX000046"

login_key_name = "my-key" # 콘솔에서 만든 키 이름 직접 지정

subnet_no = "123456"

}



<3> 표준 네트워크 확인 - 프라이빗 서버에서 외부로 ping test하기



# pirvate 에서 1대에서 외부로 ping test 해서 올려주세요




<4> SSL VPN으로 Private 서버에 연결 하기




작업 순서


1

ssl vpn 신청 - 10분

ip 확인

접속 url 확인

30 url.png



2

접속 계정 생성

topasvga - 누구인지 확인 가능한 정보 . 메일 계정, 회사이름+사번



3

vpc - private route - 프라이빗에 라우팅 테이블추가

20 vpn.png


4

sever - acg에서 ping 과 ssh 허용



# pc작업


1

pc에서 클라이언트 설치


2

접속 url 입력

30 url.png

계정 , 암호 입력

2차인증


3

프라이빗 server로 ping


ping 10.0.0.6 -t

접속하려는 서버

40 ping.png


ssh로 서버 접속

putty 10.0.0.6



캡춰해서 올려주세요

10 10.0.0.6-vpn.png



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


다음

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


keyword
매거진의 이전글Lab12. 다양한 답변 옵션 구성