🔻DevOps/Cloud

[Azure] NAT 게이트웨이 생성 후 외부 데이터 주고 받기

_니지 2024. 7. 12. 14:34

https://radiant515.tistory.com/565

해당 포스팅과 이어지는 포스팅입니다!

앞선 포스팅까지는 로드밸런스를 활용하여 부하 분산 아키텍처를 구현하는 실습을 진행했고

해당 포스팅에선 외부와 데이터를 주고 받기 위해 아웃바운드를 추가하고자 한다.

 

❗서비스 설명

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)

해당 코드는 외부 사이트에서 정보를 받아와서 이를 우리 서비스에 보고자 하는 코드이다!

 

❗VMSS 생성

VMSS를 새로 생성

 

아까와 다르게 이번엔 네트워크 인터페이스에서 공용IP 할당을 취소한다!

 

만들어둔 가상 네트워크와 로드밸런서를 연결한다.

그러고 나서 공용 IP로 접근하면 실행 안 되며 이는 당연하다.

로드밸런스는 리버스 프록시의 일종으로 클라이언트의 요청을 받아 적절한 백엔드 서버로 전달하는 역할을 한다. 

그래서 같은 포트로 정보를 요청, 응답을 하는 웹 통신과는 다른 점을 가지고,

이전 포스팅에서는 VMSS를 생성 후 IP로 접근하면 바로 접속이 됐지만 이번 과정에서 되지 않는 이유는 공용 IP 할당 여부이다.

아까는 공용IP가 할당되어 있었기 때문에 자동으로 해당 IP를 통해 데이터를 전달해 주었는데, 이번엔 그 루트를 막았기 때문에 서비스로 접근할 수 없던 것이다.

 

❗NAT 게이트웨이

위 문제를 해결하기 위해 NAT 게이트웨이를 생성한다.

NAT 게이트웨이 이름 설정

 

외부 정보가 지나다닐 공용IP를 새로 할당해 준다.

 

VNet과 받은 데이터를 전달할 서브넷 체크

 

❗공용 IP 접속

이제 다시 IP를 접속하면 잘 실행되는 것을 볼 수 있다!

 

 

728x90
반응형