티스토리 뷰

Cloud

Azure 네트워크 구성

문타리 2022. 11. 2.

Prerequisite

  • 계정 및 구독 생성
  • Azure CLI 설치 (윈도우 사용시 WSL 권장)
  • Azure CLI 로그인
    $> SUBSCRIPTION=<구독 ID>
    $> az login
    $> az account set --subscription $SUBSCRIPTION
    

Azure Cloud 사용하기 참고

1. 리소스 그룹 생성

$> az group create --location koreacentral --name woodong-rg

2. 네트워크 구성

보안그룹

  • 보안그룹 생성 시 기본적으로 모든 접근을 차단하게됨

  • Public 네트워크 보안 그룹에 내 IP 만 SSH 접속이 가능하도록 Rule 추가

  • 내 IP는 https://www.myipaddress.com/ 에서 확인 가능

    $> MY_IP_ADDRESS=$(curl -s http://ipinfo.io/ip)
    
    # Public 네트워크 보안 그룹 생성
    $> az network nsg create --resource-group woodong-rg --name woodong-public-nsg
    $> az network nsg rule create --resource-group woodong-rg --nsg-name woodong-public-nsg --name AllowSSHConnect --priority 100 --source-address-prefixes $MY_IP_ADDRESS --destination-port-ranges 22 --access Allow --protocol Tcp --direction Inbound
    
    # Private 네트워크 보안 그룹 생성
    $> az network nsg create --resource-group woodong-rg --name woodong-private-nsg
    

가상네트워크

  • 네트워크 주소공간 할당 규칙

    • Address space : 172.16.0.0/16
    • Public Subnet : 172.16.1.0/24
    • Private Subnet : 172.16.2.0/24
    # 가상 네트워크 생성
    $> az network vnet create --resource-group woodong-rg --name woodong-vnet --address-prefix 172.16.0.0/16
    
    # Public Subnet 생성
    $> az network vnet subnet create --resource-group woodong-rg --vnet-name woodong-vnet --name woodong-public-subnet --address-prefixes 172.16.1.0/24 --network-security-group woodong-public-nsg
    
    # Private Subnet 생성
    $> az network vnet subnet create --resource-group woodong-rg --vnet-name woodong-vnet --name woodong-private-subnet --address-prefixes 172.16.2.0/24 --network-security-group woodong-private-nsg
    

네트워크 인터페이스

  • Public Subnet 에 배포되는 VM이 인터넷과 통신하기 위한 목적

    # 공인 아이피 할당
    $> az network public-ip create --resource-group woodong-rg --name woodong-pupip --sku Standard --zone 2
    #  생성
    $> az network nic create -g woodong-rg --vnet-name woodong-vnet --subnet woodong-public-subnet --public-ip-address woodong-pupip -n woodong-nic
    

3. Virtual Machine 생성

Virtual Machine

  • VM Image 검색 (Ubuntu 20.04)

  • Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202210180

    $> az vm image list -p canonical -o table --all | grep 20_04-lts | grep -v gen2
    
  • 서버 접속 시 사용할 SSH Key 생성

    $> ssh-keygen -m PEM -t rsa -b 4096 -C "email@email.com" -f ~/.ssh/woodong_id_rsa
    $> cat ~/.ssh/woodong_id_rsa.pub
    
  • VM Size : Standard_DS2_v2(vCPUs 2, Memory 7GiB)

    $> az vm create \
    --resource-group woodong-rg \
    --name woodong-vm \
    --image Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202210180 \
    --size Standard_DS2_v2 \
    --admin-username woodonguser \
    --public-ip-sku Standard \
    --ssh-key-values ~/.ssh/woodong_id_rsa.pub \
    --nics woodong-nic
    
  • 서버 접속

    $> VM_IP_ADDR=$(az vm show --show-details --resource-group woodong-rg --name woodong-vm --query publicIps -o tsv | tr -d "\n\r")
    
    $> ssh -i ~/.ssh/woodong_id_rsa woodonguser@$VM_IP_ADDR
    
    woodonguser@woodong-vm> sudo apt-get -y update
    woodonguser@woodong-vm> sudo apt-get -y upgrade
    
  • 사용자 추가

    woodonguser@woodong-vm> sudo adduser svruser
    # sudo 권한 추가
    woodonguser@woodong-vm> sudo usermod -aG sudo svruser
    
  • SSH 접속 시 Password 인증 허용

    woodonguser@woodong-vm> sudo cat /etc/ssh/sshd_config.d/50-cloud-init.conf
    woodonguser@woodong-vm> sudo sed -i 's/no/yes/g' /etc/ssh/sshd_config.d/50-cloud-init.conf
    
    woodonguser@woodong-vm> sudo systemctl restart sshd
    
  • MariaDB Client 설치

    woodonguser@woodong-vm> sudo apt-get install -y mariadb-client
    

4. 데이테베이스 생성

  • MariaDB 10.3

  • SKU : GP_Gen5_2 (General Purpose, Gen 5 hardware, 2 vCores)

    $> az mariadb server list-skus --location koreacentral -o table
    
  • Public 접근 차단

  • 백업보관기간 30일

    $> DB_PASSWORD=P@ssword1!
    
    $> az mariadb server create \
    --location koreacentral \
    --resource-group woodong-rg \
    --name woodong-db \
    --admin-user dbadmin \
    --admin-password $DB_PASSWORD \
    --sku-name GP_Gen5_2 \
    --ssl-enforcement Disabled \
    --public-network-access Disabled \
    --backup-retention 30 \
    --version 10.3
    

5. Private End Point 생성

  • Private End Point를 통해 VM에서 접근 가능하도록 설정
  • CLI 보다 Portal 에서 설정하는게 더 편함

Private End Point

$> DB_RESOURCE_ID=$(az resource show -g woodong-rg -n woodong-db --resource-type "Microsoft.DBforMariaDB/servers" --query "id" -o tsv | tr -d "\n\r")

$> az network private-endpoint create \
    --name woodong-db-pep \
    --resource-group woodong-rg \
    --vnet-name woodong-vnet  \
    --subnet woodong-private-subnet \
    --private-connection-resource-id $DB_RESOURCE_ID \
    --group-id mariadbServer \
    --connection-name woodong-db-conn

Private DNS

$> az network private-dns zone create --resource-group woodong-rg --name "privatelink.mariadb.database.azure.com"
$> az network private-dns link vnet create --resource-group woodong-rg --zone-name "privatelink.mariadb.database.azure.com" --name woodong-db --virtual-network woodong-vnet --registration-enabled false

$> NETWORK_INTERFACE_ID=$(az network private-endpoint show --name woodong-db-pep --resource-group woodong-rg --query 'networkInterfaces[0].id' -o tsv | tr -d "\n\r")
$> PRIVATE_IP_ADDRESS=$(az resource show --ids $NETWORK_INTERFACE_ID  --query properties.ipConfigurations[0].properties.privateIPAddress -o tsv | tr -d "\n\r")

$> az network private-dns record-set a create --name woodong-db --zone-name privatelink.mariadb.database.azure.com --resource-group woodong-rg
$> az network private-dns record-set a add-record --record-set-name woodong-db --zone-name privatelink.mariadb.database.azure.com --resource-group woodong-rg -a $PRIVATE_IP_ADDRESS

6. DB 접속

VM에서 접속

  • 접속정보

    $> ssh -i ~/.ssh/woodong_id_rsa woodonguser@$VM_IP_ADDR
    woodonguser@woodong-vm> mariadb -h woodong-db.mariadb.database.azure.com -u dbadmin@woodong-db -p
    MySQL> create database test;
    MySQL> show databases;
    

내 PC 에서 접속

  • DBeaver의 SSH Tunnel 기능을 활용하여 접속

    Password 로그인 방식으로 SSH Tunnel 설정도 가능

7. 리소스 그룹 삭제

$> az group delete --name woodong-rg

참고자료

Azure Command-Line Interface (CLI) documentation
CLI를 사용하여 Azure Database for MariaDB의 프라이빗 링크 만들기 및 관리

'Cloud' 카테고리의 다른 글

Azure Kubernetes Service + Azure Firewall  (0) 2022.11.16
Azure Kubernetes Service 기본 구성  (0) 2022.11.16
Azure Cloud 사용하기  (0) 2022.06.24
Google Cloud Platform VM 접속하기  (0) 2020.01.17
Google Cloud Platform 사용하기  (0) 2019.05.31
댓글