데이터 센터 이해하기
Azure -> 리소스 만들기 -> 가상머신 만들기
에저 데이터 센터중 East US에 존재! 원격데스크톱을 통해 접속할건데, 실제로 접속하게되면 서울에서 해저 케이블을 통해 미국까지 데이터가 가야함!
만들어진 리소스로 이동하여 원격 데스크롭에 접속한다.
해당 컴퓨터에서 인터넷을 열어보면 미국으로 되어있는걸 알 수 있다!
웹앱 만들기!
리소스 그룹 -> 웹앱 만들기
완료되면 깃허브에 연결된 것을 알수 있다!
배포가 완료되면 웹페이지 확인도 가능하다
action일으키기
배포 완료후 확인 할 수 있다!
Azure CLI
설치
https://learn.microsoft.com/ko-kr/cli/azure/install-azure-cli-windows?tabs=azure-cli
Windows용 Azure CLI 설치
Windows에 Azure CLI를 설치하려면 PowerShell 또는 MSI 설치 관리자를 사용해야 합니다. 이 설치 관리자를 사용하면 CMD(Windows 명령 프롬프트)를 통해 CLI에 액세스할 수 있습니다.
learn.microsoft.com
vs코드에서 Azure 사용하기
vs코드에서 Azure Tools 설치
azure에 들어가서 로그인 하면 연결할 수 있다!
컨테이너 배포
이미지 만들어서 배포해보기
배포 완료!
powershell에서 shh로 만들어진 ip에 접속
환경을 만들기 위해 업데이트 -> git과 flask를 설치한다
네트워크 설정에서 인바운드 규칙 만들기
ip주소로 들어가면 확인할 수 있다!
가상머신에서 이미지 만들기
가상머신 -> 캡쳐 선택
아래와 같이 설정
이미지로 남겨놨으니까 해당 리소스 삭제 (애저에서 이미지를 만든 가상머신은 사용할 수 없다!)
컴퓨팅 갤러리는 이미지 저장소로 flask라는 정의가 생긴걸 확인할 수 있다
가상머신 만들기 (OS를 컴퓨터에 입혀서.. 실행되게끔!)
그걸 만든 가상머신은?? 쓸수가 없다! (AWS는 쓸수있다)
만들어진 ip로 접속
실행!
가상머신 확장집합 만들기
VMSS(AWS에서는 Auto Scaling그룹)
배포 완료되었으면 인스턴스 수 바꾸기 (쿠버네티스의 deployment 스케일 변경과 같은 작업)
인스턴스가 하나 더 생긴걸 확인할 수 있다.(가상머신 수 하나더)
인바운드 보안 규칙 변경
부하분산 장치에서 공용 ip주소 얻기
현재 상태!
ssh명령어
ssh minji@20.196.125.127 -p 50000
ssh minji@20.196.125.127 -p 50001
으로 각각에 접속할 수 있다!
네트워크 만들기
리소스만들기 -> 네트워킹 -> Vritual network
이미지로 가상머신 만들기!
SSH란 ?
SSH는 리눅스 안에 기본적으로 동작하고 있다.
공개키로 설정하면 서버안에도 키값이 들어가 있는것
키값을 다운받고 키값을 이용해서 들어가는것!
키값이 다운받아진 다운로드 폴더에서 진행!
ssh키를 이용하면 암호를 입력하지 않아도된다!
인바운드 보안 규칙에 5000추가
현재 상태!
플라스크를 실행할 수 있다.
라우터에서 프라이빗 아이파와 퍼블릭 아이피를 변경해준다 (nat)
새로운 가상머신 만들어 내부에서 통신해보기
이미지 -> 가상머신 만들기
각자 curl할 수 있다!
같은 서브넷 내에서는 curl, ping가 자유롭다! (이때는 10.0.0.5 <-> 10.0.0.4)
하지만 공용 IP로는 접속이 안된다! (밖으로 나갔다 와야하기 때문!, 라우터를 통해 나갔다 오기때문에 자신의 공용 IP주소도 알 수 없다)
네트워크 보안 그룹은 리소스 만들때 네트워ㅓ킹에 보면 네트워크 보안그룹을 기본으로 지정하면 가상머신을 만들면서 네트워크 보안그룹을 생성함!
네트워크 보안그룹은 네트워크 인터페이스와 연결되어있음
서브넷에 네트워크 보안그룹을 연결하기
네트워크 보안그룹 만들기
인바운드 보안 규칙 추가
부하분산장치
기본적으로 포트를 인식하여 포트를 뒤로 넘겨줌
리소스만들기-> 부하분산 장치(검색)
공용IP주소 해제
규칙만들기
Bastion배포
Bastion이란?
관리를 위한 컴퓨터!
원래 외부 다른 물리적공간이나 VPN을 사용해서 있음
app.py변경
from flask import Flask
from flask import request
import requests
import re
import socket
app = Flask(__name__)
# 컴퓨터 이름, ip
hostname = socket.gethostname()
hostip = socket.gethostbyname(socket.gethostname())
#외부 IP, 아래 사이트 호출 후 결과에서 추출
req = requests.get("http://ipconfig.kr")
out_ip = re.search(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', req.text)[1]
@app.route("/")
def home():
return '컴퓨터 이름 : {0}<br>내부 IP : {1}<br>외부 IP : {2}<br><br> 당신의 IP :{3}<br><br>Hello'.format(hostname, hostip, out_ip, request.remote_addr)
컴퓨터의 ip는 private ip(라우터에서 받은)
서비스 만들기
sudo mv /home/bit1010/flaskapp /usr/bin
sudo vi /lib/systemd/system/flask.service
reboot 하고 curl 날리면 실행된다!
VMSS만들기
인스턴스수를 2개로 늘리고 부하분산이 잘 되는지 확인한다!
서브넷 말ㄴ들기 네트워크 보안그룹 만들어서 연결 가상머신 만들때 퍼블릭 아이피 만들도록 가상네트워크랑 서브넷 연결
부하분산장치 이미지 퍼블릭 아이피는 비용이 나간다.
가상 머신 확장 집합 만들기
로드밸런서는 리버스 프로싱한다. 웹은 요청, 응답밖에 없는데 요청이 가면 그 통로로 응답이옴!
실행시켜주면 안된다! 나갈 수 가 없기 때문!
퍼블릭 IP가 있으면 이를 통해서 나갈 수 있다. 퍼블릭 iP가 없으면 인바운드 안됨. 아웃바운드는 됨(애저는! AWS에서는 됨 )
nat gateway:
애저의 IP주소중 랜덤으로 ..
gateway는 아웃바운드 용!
NAT 게이트 웨이를 만들어주고 실행하면 된다!
참고
https://azure.microsoft.com/ko-kr/explore/global-infrastructure
글로벌 인프라 | Microsoft Azure
Azure의 글로벌 인프라를 사용하여 현지에서 입지를 유지하는 동시에 글로벌 규모로 도달하고, 데이터를 보호하고, 지속 가능성을 증진하세요.
azure.microsoft.com