# AI 서버를 사용해 보자.
# 여기서는 GPU대신 CPU서버를 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 입력 후 추가 선택
1
목표
pirvate subnet1에 AI GPU 서버 1대 생성
ai-server-003
ping 1.1.1.1
캡춰, 슬랙에 올려주세요
2
ssl vpn 연동
내 pc에서 ai-server-003 직접 로그인
3
외부에서 서버 접속법?
네트워크
# 퍼블릭으로 접속후 프라이빗 서버로 접속 하세요
yes
접속이 안되면
ACG 에서 10.0.0.0/16 22 허용
4
# 우분트에 테라폼 설치해서 표준 네트워크를 만들어 보자.
# 우분트에 테라폼 설치
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"
}
# pirvate 에서 1대에서 외부로 ping test 해서 올려주세요
작업 순서
1
ssl vpn 신청 - 10분
ip 확인
접속 url 확인
2
접속 계정 생성
topasvga - 누구인지 확인 가능한 정보 . 메일 계정, 회사이름+사번
3
vpc - private route - 프라이빗에 라우팅 테이블추가
4
sever - acg에서 ping 과 ssh 허용
# pc작업
1
pc에서 클라이언트 설치
2
접속 url 입력
계정 , 암호 입력
2차인증
3
프라이빗 server로 ping
ping 10.0.0.6 -t
접속하려는 서버
ssh로 서버 접속
putty 10.0.0.6
캡춰해서 올려주세요
https://brunch.co.kr/@topasvga/4669
다음
https://brunch.co.kr/@topasvga/4977