Azure Hub-Spoke Network Topology
Dalam membangun network infrastructure dibutuhkan perencanaan topology yang jelas dan sesuai kebutuhan sehingga manajemen biaya dan resource yang dibutuhkan dapat dialokasi semaksimal mungkin. Pada artikel kali ini, kita akan membahas mengenai implementasi Hub-Spoke topology menggunakan Azure.
Perlu diketahui sebelumnya, artikel ini lebih ditujukan untuk orang-orang yang memiliki pengetahuan dasar mengenai networking dan Azure.
Apa Itu Topology Hub-Spoke?
Network model Hub-Spoke terdiri dari dua bagian, yaitu Hub dan Spoke. Hub (sesuai dengan namanya) adalah bagian central dari network model ini. Hub mengatur konektivitas yang terdapat di dalam network dan juga dapat memuat service atau application lain yang mungkin digunakan oleh Spoke yang terhubung dengan Hub tersebut, seperti Azure Firewall atau Virtual Network Gateway.
Spoke adalah virtual network yang terhubung dengan Hub tersebut. Spoke sendiri berguna untuk mengisolasi workload yang ada sehingga dapat dikelola dengan lebih baik, misalkan terdapat Spoke A yang diisi dengan Database dan Spoke B yang diisi dengan resource Machine Learning.
Hub dan Spoke dihubungkan dengan menggunakan fitur Virtual Network Peering untuk dapat berkomunikasi satu sama lain. Pada dasarnya, Spoke tidak dapat berkomunikasi dengan Spoke lain, tetapi dapat dilakukan konfigurasi yang mengizinkan hal tersebut jika dibutuhkan.
Implementasi dengan Menggunakan Azure
Hub Virtual Network
Pertama kita akan membuat Hub terlebih dahulu. Kita akan membuat virtual network bernama hub-vnet sebagai Hub. hub-vnet memiliki subnet bernama hub-vm yang akan memuat Virtual Machine (VM) yang nanti akan dibuat. Berikut merupakan konfigurasi yang digunakan.
Spoke Virtual Network
Kemudian kita akan membuat dua Spoke bernama spoke-dev-vnet dan spoke-test-vnet. spoke-dev-vnet dan spoke-test-vnet akan memiliki subnet bernama spoke-dev-vm dan spoke-test-vm.
Berikut merupakan konfigurasi yang digunakan.
Hub Virtual Machine
Kita akan membuat VM bernama hub-vm1 di hub-vnet. hub-vm1 akan menggunakan subnet hub-vm yang telah dibuat sebelumnya. hub-vm1 memiliki public ip address yang nantinya akan digunakan untuk melakukan remote connection.
Berikut merupakan konfigurasi yang digunakan.
Spoke Virtual Machine
Kemudian kita akan membuat VM bernama dev-vm1 di spoke-dev-vnet dan test-vm1 di spoke-test-vnet. dev-vm1 akan menggunakan subnet spoke-dev-vm dan test-vm1 akan menggunakan subnet spoke-test-vm. Kedua VM juga memiliki public ip address yang akan digunakan untuk melakukan remote connection.
Berikut merupakan konfigurasi yang digunakan.
Network Peering
Untuk menghubungkan hub-vnet dengan spoke-dev-vnet dan spoke-test-vnet dibutuhkan virtual network peering yang terjadi antara Hub dan setiap Spoke. Hal ini akan mengizinkan terjadinya komunikasi antara Hub dan Spoke tanpa mengganggu isolasi yang ada antara setiap Spoke.
Virtual Network Peering dapat dilakukan dengan menggunakan fitur Peerings di blade Settings virtual network.
Pertama kita akan membuat peering antara hub-vnet dan spoke-dev-vnet. Terdapat beberapa opsi konfigurasi disini:
This virtual network
- Peering link name : nama dari peering yang terjadi antara virtual network ke remote virtual network. Karena saya membuat peering dari hub-vnet ke spoke-dev-vnet maka spoke-dev-vnet dianggap sebagai remote virtual network. Biasanya penamaannya menggunakan format <nama_this_virtual_network>-<nama_remote_virtual_network>.
- Traffic to remote virtual network : opsi ini akan mengizinkan komunikasi antara kedua virtual network yang dipeer, block jika komunikasi dari remote virtual network tidak diinginkan.
- Traffic forwarded from remote virtual network : opsi ini akan mengizinkan traffic yang di forward (traffic tidak berasal dari remote virtual network, tetapi hanya diteruskan oleh remote virtual network, bisa saja melalui virtual appliance) masuk ke this virtual network melalui peering.
- Virtual network gateway or Route Server : opsi ini akan mengizinkan virtual network untuk menggunakan Virtual Network Gateway sebagai jalur komunikasi, biasanya Virtual Network Gateway ini digunakan sebagai Gateway untuk koneksi Point-to-Site (P2S).
Untuk bagian Remote virtual network sama seperti bagian This virtual network, tapi kali ini hub-vnet dianggap sebagai remote virtual network.
Berikut konfigurasi yang digunakan.
Dapat dilihat dibagian Virtual network gateway or Route Server terdapat opsi yang greyed out atau tidak bisa dipilih. Hal ini terjadi karena kedua virtual network tidak memiliki virtual network gateway atau Route Server yang dapat digunakan.
Jika peering berhasil dibuat maka akan muncul peering dari bagian spoke-dev-vnet ke hub-vnet secara otomatis
Hal yang sama dapat dilakukan untuk peering dari hub-vnet ke spoke-test-vnet. Peering yang telah dibuat hanya mengizinkan komunikasi antara Hub dan Spoke, jika menginginkan komunikasi antara Spoke terdapat beberapa cara. Cara yang paling mudah adalah dengan membuat network peering antara Spoke dengan Spoke lain, tetapi terdapat limitasi dimana jumlah network peering yang terjadi dalam suatu virtual network terbatas. Cara yang lain adalah dengan membuat User Defined Route (UDR) untuk menentukan alur traffic yang ada untuk melewati suatu Gateway atau Firewall
Testing
Kita akan melakukan testing dengan melakukan remote connection ke VM yang telah dibuat sebelumnya. Testing ini bertujuan untuk memastikan Hub bisa berkomunikasi dengan Spoke dan sebaliknya, tetapi Spoke tidak dapat berkomunikasi dengan Spoke yang lain. Kita menggunakan RDP sebagai metode remote connection kali ini.
Pertama kita akan melakukan RDP ke public ip address hub-vm1 dan mengirimkan ping ke private ip address dev-vm1 dan test-vm1. Berikut private ip address untuk setiap VM:
- hub-vm1 : 10.0.0.4
- dev-vm1 : 10.1.0.4
- test-vm1 : 10.2.0.4
hub-vm1 dapat berkomunikasi dengan dev-vm1 dan test-vm1. Selanjutnya kita akan melakukan RDP ke public ip address dev-vm1 dan mengirimkan ping ke hub-vm1 dan test-vm1.
dev-vm1 dapat berkomunikasi dengan hub-vm1 tetapi tidak dapat berkomunikasi dengan test-vm1, hal ini ditandai dengan munculnya pesan Request timed out. Selanjutnya kita akan melakukan RDP ke public ip address test-vm1 dan mengirimkan ping ke hub-vm1 dan dev-vm1.
Sama seperti dev-vm1, test-vm1 dapat berkomunikasi dengan hub-vm1 yang merupakan bagian dari Hub tetapi tidak dapat berkomunikasi dengan dev-vm1 yang merupakan bagian dari Spoke.
Next
Berdasarkan penjelasan dan langkah-langkah yang telah dilakukan, kita dapat mengimplementasikan Hub-Spoke Network Topology dengan menggunakan Azure. Tentunya network model ini dapat dimodifikasi lebih lanjut sesuai dengan kebutuhan, misalkan menggunakan UDR untuk menggantikan network peering, mengganti ip address dan subnet yang dibutuhkan sehingga tidak terdapat host yang berlebih, dll. Pada artikel selanjutnya kita akan mengimplementasikan Point-to-Site (P2S) Connection menggunakan VPN Gateway pada network yang telah dibuat.