728x90

hub and spoke 구조는 Virtual WAN을 사용하지 않고 virtual network 로만 구성하고자 할때 Azure에서 권장하는 구조입니다. 일반적으로 온프레미스와 virtual network gateway간 연결해서 사용할 때 자주 볼 수 있는 아키텍쳐이며, 본 포스트는 아래와 같은 구조에서 virtual machine끼리 통신하도록 하는 예제입니다.

단순 vnet peering 만으로는 spoke1-vm과 spoke2-vm간 통신이 불가능하고, route tables라는 리소스를 생성해서 적용해 줘야 합니다. Azure 공식 문서에는 잠깐의 언급만 하고 자세히 다루지는 않아서 본 포스트에서 spoke1-vm과 spoke2-vm간 통신하는 예제를 다루어 보았습니다.

*링크 : Create, change, or delete an Azure virtual network peering | Microsoft Docs

 

리소스 그룹 생성

포털에 resource group 검색 후 create 버튼 클릭

 

virtual network 생성

총 3개의 vnet을 생성합니다.

hub-vnet : 10.50.0.0/16, default 10.50.1.0/24, GatewaySubnet 10.50.2.0/24

(게이트웨이 서브넷 이름은 무조건 'GatewaySubnet'이어야 함)

spoke1-vnet : 10.60.0.0/16, default 10.60.1.0/24

spoke2-vnet : 10.61.0.0/16, default 10.61.1.0/24

spoke1-vnet과 spoke2-vnet도 위와 같이 생성합니다.

 

Virtual network gateway 생성

포털에서 virtual network gateway 검색 후 create 클릭

 

피어링 설정

hub-vnet과 spoke1-vnet간 vnet peering을, hub-vnet과 spoke2-vnet간 vnet peering을 맺습니다

add 버튼 클릭

 

 

hub-vnet과 spoke2-vnet에 대해서도 위와 같이 설정해 줍니다.

 

Virtual Machine 생성

spoke1-vm과 spoke2-vm을 생성합니다.

아래 화면처럼 spoke1-vnet을 선택해 줍니다.

 

spoke2-vm에 대해서도 위와 같이 생성해 줍니다.

 

spoke1-vm에 ssh 연결해서 spoke2-vm으로 ping을 보내면 전부 packet loss 됨을 확인할 수 있습니다.

 

Route tables 생성 및 적용

spoke1-udr, spoke2-udr을 각각 만들어 줍니다

*udr : user defined route

 

Routes 탭에서 add 버튼을 클릭한 후, destination ip addresses에 spoke2-vnet의 대역을 입력합니다

(마찬가지로 spoke2-udr에는 spoke1-vnet의 대역을 입력합니다)

 

route 생성 후, 아래와 같이 spoke1-vnet의 default 서브넷, spoke2-vnet의 default 서브넷에 각각 적용시켜 줍니다

route table 을 각 서브넷에 적용 후, spoke1-vm에서 spoke2-vm으로 ping을 날리면 정상적으로 패킷 송수신이 되는 것을 확인하실 수 있습니다.

 

테스트가 완료되었을 경우 resource group을 삭제합니다.

728x90

+ Recent posts