Joo's
article thumbnail
반응형

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 만들기

https://joosblog.tistory.com/326#article-3--%EB%A1%9C%EB%93%9C-%EB%B0%B8%EB%9F%B0%EC%84%9C-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0

 

네이버 클라우드 실습13 - Auto Scaling + Load Balancer

준비물 - 네이터 클라우드 계정, MobaXterm 지난 실습에서 Auto Scaling을 설정해 서버에 과부하를 주고 서버가 늘어나는 것까지 확인했다. 마지막에 써놨지만 Load balancer 없이는 Auto Scaling을 하는 것이

joosblog.tistory.com

오토스케일링으로 만들어진 서버에 접속해서 df -h 해보니 nas가 잘 붙어 있따.

반응형
profile

Joo's

@JooJY

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!