1. 서버 만들기
2. 블록 스토리지 붙이기
3. nas 만들기
4. 로드밸런서 만들기
5. 오토스케일링 만들기
6. 새로 만들어진 서버에 블록 스토리지, nas 연결 확인
https://guide.ncloud-docs.com/docs/nas-start-vpc
NAS 시작
guide.ncloud-docs.com
https://www.ncloud.com/support/faq/all/610
NAVER CLOUD PLATFORM
cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification
www.ncloud.com
nas를 그냥 서버에 붙이는건 전혀 문제 없는데 이제 auto scaling으로 생성된 서버를 nas에 연결하는 것이 문제다.
이거는 문의 사항에 나와있듯 init script를 통해서 하는 수 밖에 없다.
저 밑에 긴 것을 붙여야 한다. 근데
ACCESSKEY=""
SECRETKEY=""
NASINSTANCENO=""
NASMOUNTURL=""
MOUNTPOINT=""
요거는 개인마다 다르니 찾아서 넣어야 한다.
ACCESSKEY, SECRETKEY 요거는 계정 관리에서 확인 가능하다.
- ACCESSKEY, SECRETKEY 포털 [마이페이지 > 계정관리> 인증키 관리]에서 확인합니다.
- APIKEY는 [콘솔 > Services > API GATEWAY > API Keys] 항목에서 API Key ID를 생성합니다.
- 접근제어를 추가하기 위한 NAS 인스턴스 번호를 확인해야 합니다.
NASINSTANCENO, NASMOUNTURL 요거는 NAS 화면에서 확인 가능하다.
MOUNTPOINT 요거는 NAS를 mount 하려는 폴더 위치이다. 미리 폴더를 만들어야 함.
#!/bin/bash
if [ -z "$BASH_VERSION" ]; then exec bash "$0" "$@"; fi
##############################
ACCESSKEY=""
SECRETKEY=""
NASINSTANCENO=""
NASMOUNTURL=""
MOUNTPOINT=""
##############################
# signature_finction
function signature_function(){
local nl=$'\\n'
SIG="$4"' '"$5"${nl}"$3"${nl}"$1"
SIGNITURE=$(echo -n -e "$SIG"|iconv -t utf8 |openssl dgst -sha256 -hmac $2 -binary|openssl enc -base64)
}
signature_function
## Check VPC
if [[ ! -d /home1/nbpmon/noms/nsight/bin || `timeout 1s nslookup vmconf.ncloud.com | grep -c '169.254'` -ge 1 ]]; then
VPC_ENV=2
else
VPC_ENV=0
fi
if [ $VPC_ENV == "2" ]; then
# instance_no
IPADDR=$(/sbin/ifconfig eth0 |grep inet | awk '{print$2}' | sed 's/[^0-9, .]//g'|head -n 1)
TIMESTAMP=$(echo $(($(date +%s%N)/1000000)))
METHOD="GET"
URI="/vserver/v2/getServerInstanceList?ip="$IPADDR"&responseFormatType=json"
signature_function $ACCESSKEY $SECRETKEY $TIMESTAMP $METHOD $URI
INSTANCENO=$(curl -i -X $METHOD -H x-ncp-apigw-timestamp:$TIMESTAMP -H x-ncp-iam-access-key:$ACCESSKEY -H x-ncp-apigw-signature-v2:$SIGNITURE https://ncloud.apigw.ntruss.com$URI|grep "serverInstanceNo"|awk '{print $2}'|sed 's/.//'|sed 's/..$//' )
# nas_acl_add
TIMESTAMP=$(echo $(($(date +%s%N)/1000000)))
METHOD="GET"
URI="/vnas/v2/addNasVolumeAccessControl?nasVolumeInstanceNo="$NASINSTANCENO"&serverInstanceNoList.1="$INSTANCENO
signature_function $ACCESSKEY $SECRETKEY $TIMESTAMP $METHOD $URI
returnCode=$(curl -i -X $METHOD -H x-ncp-apigw-timestamp:$TIMESTAMP -H x-ncp-iam-access-key:$ACCESSKEY -H x-ncp-apigw-signature-v2:$SIGNITURE https://ncloud.apigw.ntruss.com$URI | grep returnCode |sed 's/>/</' |awk -F "<" '{print $3}'| sed '/^$/d')
while true
do
if [ $returnCode == "24304" ] || [ $returnCode == "300009" ]
then
returnCode=$(curl -i -X $METHOD -H x-ncp-apigw-timestamp:$TIMESTAMP -H x-ncp-iam-access-key:$ACCESSKEY -H x-ncp-apigw-signature-v2:$SIGNITURE https://ncloud.apigw.ntruss.com$URI | grep returnCode |sed 's/>/</' |awk -F "<" '{print $3}'| sed '/^$/d')
else
break
fi
done
else
# instance_no
IPADDR=$(/sbin/ifconfig eth0 |grep inet | awk '{print$2}' | sed 's/[^0-9, .]//g'|head -n 1)
TIMESTAMP=$(echo $(($(date +%s%N)/1000000)))
METHOD="GET"
URI="/server/v2/getServerInstanceList?searchFilterName=ip&searchFilterValue="$IPADDR"&responseFormatType=json"
signature_function $ACCESSKEY $SECRETKEY $TIMESTAMP $METHOD $URI
INSTANCENO=$(curl -i -X $METHOD -H x-ncp-apigw-timestamp:$TIMESTAMP -H x-ncp-iam-access-key:$ACCESSKEY -H x-ncp-apigw-signature-v2:$SIGNITURE https://ncloud.apigw.ntruss.com$URI|grep "serverInstanceNo"|awk '{print $2}'|sed 's/.//'|sed 's/..$//' )
# nas_acl_add
TIMESTAMP=$(echo $(($(date +%s%N)/1000000)))
METHOD="GET"
URI="/server/v2/addNasVolumeAccessControl?nasVolumeInstanceNo="$NASINSTANCENO"&serverInstanceNoList.1="$INSTANCENO
signature_function $ACCESSKEY $SECRETKEY $TIMESTAMP $METHOD $URI
returnCode=$(curl -i -X $METHOD -H x-ncp-apigw-timestamp:$TIMESTAMP -H x-ncp-iam-access-key:$ACCESSKEY -H x-ncp-apigw-signature-v2:$SIGNITURE https://ncloud.apigw.ntruss.com$URI | grep returnCode |sed 's/>/</' |awk -F "<" '{print $3}'| sed '/^$/d')
while true
do
if [ $returnCode == "24304" ] || [ $returnCode == "300009" ]
then
returnCode=$(curl -i -X $METHOD -H x-ncp-apigw-timestamp:$TIMESTAMP -H x-ncp-iam-access-key:$ACCESSKEY -H x-ncp-apigw-signature-v2:$SIGNITURE https://ncloud.apigw.ntruss.com$URI | grep returnCode |sed 's/>/</' |awk -F "<" '{print $3}'| sed '/^$/d')
else
break
fi
done
fi
########################################################################
# Set nfs package
# Centos 7.x
# https://guide.ncloud-docs.com/docs/nas-use-linux-vpc
yum install -y nfs-utils
systemctl start rpcbind.service
systemctl enable rpcbind.service
# Mount
mkdir $MOUNTPOINT
mount -t nfs $NASMOUNTURL $MOUNTPOINT
서버 만들기
init script 없음, 스토리지 없음
mobaxterm으로 접속 후 웹 서버 만들기
아파치 설치
yum -y install httpd php
웹 서버 시작
systemctl start httpd
폴더 이동
cd /var/www/html
hello world 작성
vi index.html
웹 서버 접속 확인
NAS 만들기
nas 만들고 위의 웹 서버 추가하기
패키지 설치
yum install nfs-utils
데몬 기동
service rpcbind start
자동 기동 설정
systemctl enable rpcbind.service
마운트할 폴더 생성
mkdir /nas
마운트 하기
예) mount -t nfs -o vers=3 [마운트 정보] /nas
mount -t nfs -o vers=3 169.254.82.17:/n3013184_1122prac /nas
nas 마운트 확인
마운트 정보 유지 fstab 수정
fstab 열기
vi /etc/fstab
예) [마운트 정보] /nas nfs vers=3,defaults 0 0
169.254.82.17:/n3013184_1122prac /nas nfs vers=3,defaults 0 0
nas 마운트한 서버를 서버 이미지로 만들기
init script 만들기
#!/bin/bash
if [ -z "$BASH_VERSION" ]; then exec bash "$0" "$@"; fi
##############################
ACCESSKEY=""
SECRETKEY=""
NASINSTANCENO=""
NASMOUNTURL=""
MOUNTPOINT=""
##############################
# signature_finction
function signature_function(){
local nl=$'\\n'
SIG="$4"' '"$5"${nl}"$3"${nl}"$1"
SIGNITURE=$(echo -n -e "$SIG"|iconv -t utf8 |openssl dgst -sha256 -hmac $2 -binary|openssl enc -base64)
}
signature_function
## Check VPC
if [[ ! -d /home1/nbpmon/noms/nsight/bin || `timeout 1s nslookup vmconf.ncloud.com | grep -c '169.254'` -ge 1 ]]; then
VPC_ENV=2
else
VPC_ENV=0
fi
if [ $VPC_ENV == "2" ]; then
# instance_no
IPADDR=$(/sbin/ifconfig eth0 |grep inet | awk '{print$2}' | sed 's/[^0-9, .]//g'|head -n 1)
TIMESTAMP=$(echo $(($(date +%s%N)/1000000)))
METHOD="GET"
URI="/vserver/v2/getServerInstanceList?ip="$IPADDR"&responseFormatType=json"
signature_function $ACCESSKEY $SECRETKEY $TIMESTAMP $METHOD $URI
INSTANCENO=$(curl -i -X $METHOD -H x-ncp-apigw-timestamp:$TIMESTAMP -H x-ncp-iam-access-key:$ACCESSKEY -H x-ncp-apigw-signature-v2:$SIGNITURE https://ncloud.apigw.ntruss.com$URI|grep "serverInstanceNo"|awk '{print $2}'|sed 's/.//'|sed 's/..$//' )
# nas_acl_add
TIMESTAMP=$(echo $(($(date +%s%N)/1000000)))
METHOD="GET"
URI="/vnas/v2/addNasVolumeAccessControl?nasVolumeInstanceNo="$NASINSTANCENO"&serverInstanceNoList.1="$INSTANCENO
signature_function $ACCESSKEY $SECRETKEY $TIMESTAMP $METHOD $URI
returnCode=$(curl -i -X $METHOD -H x-ncp-apigw-timestamp:$TIMESTAMP -H x-ncp-iam-access-key:$ACCESSKEY -H x-ncp-apigw-signature-v2:$SIGNITURE https://ncloud.apigw.ntruss.com$URI | grep returnCode |sed 's/>/</' |awk -F "<" '{print $3}'| sed '/^$/d')
while true
do
if [ $returnCode == "24304" ] || [ $returnCode == "300009" ]
then
returnCode=$(curl -i -X $METHOD -H x-ncp-apigw-timestamp:$TIMESTAMP -H x-ncp-iam-access-key:$ACCESSKEY -H x-ncp-apigw-signature-v2:$SIGNITURE https://ncloud.apigw.ntruss.com$URI | grep returnCode |sed 's/>/</' |awk -F "<" '{print $3}'| sed '/^$/d')
else
break
fi
done
else
# instance_no
IPADDR=$(/sbin/ifconfig eth0 |grep inet | awk '{print$2}' | sed 's/[^0-9, .]//g'|head -n 1)
TIMESTAMP=$(echo $(($(date +%s%N)/1000000)))
METHOD="GET"
URI="/server/v2/getServerInstanceList?searchFilterName=ip&searchFilterValue="$IPADDR"&responseFormatType=json"
signature_function $ACCESSKEY $SECRETKEY $TIMESTAMP $METHOD $URI
INSTANCENO=$(curl -i -X $METHOD -H x-ncp-apigw-timestamp:$TIMESTAMP -H x-ncp-iam-access-key:$ACCESSKEY -H x-ncp-apigw-signature-v2:$SIGNITURE https://ncloud.apigw.ntruss.com$URI|grep "serverInstanceNo"|awk '{print $2}'|sed 's/.//'|sed 's/..$//' )
# nas_acl_add
TIMESTAMP=$(echo $(($(date +%s%N)/1000000)))
METHOD="GET"
URI="/server/v2/addNasVolumeAccessControl?nasVolumeInstanceNo="$NASINSTANCENO"&serverInstanceNoList.1="$INSTANCENO
signature_function $ACCESSKEY $SECRETKEY $TIMESTAMP $METHOD $URI
returnCode=$(curl -i -X $METHOD -H x-ncp-apigw-timestamp:$TIMESTAMP -H x-ncp-iam-access-key:$ACCESSKEY -H x-ncp-apigw-signature-v2:$SIGNITURE https://ncloud.apigw.ntruss.com$URI | grep returnCode |sed 's/>/</' |awk -F "<" '{print $3}'| sed '/^$/d')
while true
do
if [ $returnCode == "24304" ] || [ $returnCode == "300009" ]
then
returnCode=$(curl -i -X $METHOD -H x-ncp-apigw-timestamp:$TIMESTAMP -H x-ncp-iam-access-key:$ACCESSKEY -H x-ncp-apigw-signature-v2:$SIGNITURE https://ncloud.apigw.ntruss.com$URI | grep returnCode |sed 's/>/</' |awk -F "<" '{print $3}'| sed '/^$/d')
else
break
fi
done
fi
########################################################################
# Set nfs package
# Centos 7.x
# https://guide.ncloud-docs.com/docs/nas-use-linux-vpc
yum install -y nfs-utils
systemctl start rpcbind.service
systemctl enable rpcbind.service
# Mount
mkdir $MOUNTPOINT
mount -t nfs $NASMOUNTURL $MOUNTPOINT
새 서버 만들어서 확인 : 내 서버 이미지 + nas-init script로 nas 연결되는지 확인하기
-> 인증키 재발급하고 다시 하니 잘 됨.
로드밸런서, Auto scaling 만들기
네이버 클라우드 실습13 - Auto Scaling + Load Balancer
준비물 - 네이터 클라우드 계정, MobaXterm 지난 실습에서 Auto Scaling을 설정해 서버에 과부하를 주고 서버가 늘어나는 것까지 확인했다. 마지막에 써놨지만 Load balancer 없이는 Auto Scaling을 하는 것이
joosblog.tistory.com
오토스케일링으로 만들어진 서버에 접속해서 df -h 해보니 nas가 잘 붙어 있따.
'배운 내용 > 클라우드 교육' 카테고리의 다른 글
11월28일 - (발표) GPU Server (0) | 2023.11.28 |
---|---|
11월23일 - 로드밸런서 실습, Cloud Log Analytics (2) | 2023.11.23 |
11월21일 - storage 붙이기 실습 (0) | 2023.11.22 |
11월21일 - DB 실습 (0) | 2023.11.21 |
11월20일 - NCP Database 생성 실습 (0) | 2023.11.20 |