Windows Server

Windows Server 2016 Software Define Networking – Bölüm 4 SLB Dağıtımı

Daha önceki makalelerimizde bildiğiniz üzere Network Controller servisinin kurulumunu gerçekleştirmiş ve network sanallaştırmanın çalıştığını gözlemlemiştik. Bu serimiz de ise, Software Define Network kavramının bir parçası olan Software Load Balancing servisinin dağıtımını gerçekleştireceğiz.

Genelde vermiş olduğumuz hizmetler, birden fazla kaynağa ihtiyaç duyar ve bu birden fazla kaynakla hizmet vermemiz gereken durumlar fazlaca karşılaştığımız senaryolar olarak karşımıza çokça çıkmaktadır. Böyle iş sürekliliğini ve gelen yük dağılımını yapabilmek için yazılımsal ya da donanımsal bir cihaza ihtiyaç duyarız. İşte bu noktada bahsettiğimiz yazılımsal bir yük dengeleyicisinin dağıtımını gerçekleştireceğiz.

Burada bilinmesi gereken en önemli husus, Windows Server 2016 ile gelen yük dengeleyicinin değil, Microsoft Azure tarafında kullandığı yük dengeleyici servisinin bire bir aynı hizmeti SCVMM 2016’ya SDNV2 ile kullanılmasına olanak sağlamaktadır. Yani Microsoft Azure tarafında kullanılan yük dengeleyicinin bire bir aynısı SDNV2’nin parçasıdır.

Bu servisin nasıl çalıştığı, nasıl paketlerin taşındığı ile ilgili olan mimari kısımlarını farklı bir makalede ele alacağız.

İlk olarak, SDNV2’nin parçası olan yük dengeleyici servisinin dağıtımını gerçekleştirmeden önce planlamış olduğum birtakım networkler bulunmaktaydı. Şimdi, bu Network kartlarını oluşturacağız.

Öncelikle kullanacağımız ve yazılımsal yük dengeleyici servisimiz için son derece önem arz eden Transit networkünü oluşturacağız.

clip_image002

Networking-Logical Network üzerinde sağ klik diyerek Create Logical Network seçimini yapıyoruz.

clip_image004

Gelen ekranımızda Transit ismini vererek ilerliyoruz.

clip_image006

Ayarlar ekranımızda yukarıdaki ekran görüntüsünde de göreceğiniz üzere One Connected Network, Create a VM network with the same name ve Managed by the network controller kutularını işaretleyerek ilerliyoruz.

clip_image008

Network Site ekranımızda ilk planımızda da belirttiğimiz şekilde 10.10.10.0/24 subnet tanımını yaparak ilerliyoruz.

 

clip_image010

Özet ekranımızda bulunan Finish ile Networkümüzü oluşturmuş oluyoruz.

Oluşturmuş olduğumuz Transit networkümüz için IP havuzumuzu oluşturarak devam edeceğiz.

clip_image012

Transit_IPPool isimlendirmemizi yapıyor ve next ile ilerliyoruz.

clip_image014

Gelen Network Site ekranımızda herhangi bir değişikliğe ihtiyaç duymuyor ve ilerliyoruz.

clip_image016

IP dağıtım aralığını tanımladığımız bu ekranımızda 10.10.10.10-10.10.10.250 aralığını veriyoruz. Bu tanımımızı da gerçekleştirdikten sonra bir sonraki adımımıza geçiyoruz.

clip_image018

Gateway tanımımızı 10.10.10.1 olarak tanımladık. Next ile ilerliyoruz.

clip_image020

DNS olarak mevcut iç ortamda kullandığım DNS adresinin tanımını yaparak ilerliyoruz.

clip_image022

WINS ekranımızda daha önceki tanımlamalarımızda yaptığımız gibi herhangi bir değer girmeden ilerliyor ve özet ekranımızda bulunan Finish butonu ile Transit network tanımlamalarımızı bitirmiş oluyoruz.

Oluşturmuş olduğumuz Transit isimli networkümüzü de daha önce oluşturmuş olduğumuz SDNPortProfile altında tanımlamalarımızı gerçekleştireceğiz. Bunun için:

clip_image024

Oluşturmuş olduğumuz SDNPortProfile özelliklerine girdiğimizde göreceğimiz Network Configuration altında Transit Networkümüzün seçimini yaparak bu adımımızı da tamamlamış olacağız.

Şimdi diğer network kartlarımızı tanımlayarak devam edeceğiz.

Private VIP Network tanımı için 20.20.20.0/24 Subnetini kullanacağımızı zaten belirlemiştik.

clip_image026

 

PrivateVIP isimlendirmemizi yaparak ilerliyoruz.

clip_image028

 

Ayarlar ekranımızda yukarıdaki ekran görüntüsünde de göreceğiniz üzere One Connected Network, Create a VM network with the same name ve Managed by the network controller kutularını işaretleyerek ilerliyoruz.

clip_image030

Network site ekranımızda 20.20.20.0/24 Subnetini tanımlıyor ve ilerliyoruz.

clip_image032

Gelen ekranımızı Finish diyerek sonlandırıyoruz.

PrivateVIP networkümüz için şimdi IP havuzunu oluşturacağız.

clip_image034

PrivateVIP_IPPool isimlendirmemizi yapıyor ve bu ekranımızı geçiyoruz.

clip_image036

Network Site ekranımızda herhangi bir değişiklik yapmadan next ile ilerliyoruz.

clip_image038

IP dağıtım aralığını tanımlıyoruz. Burada 20.20.20.5-20.20.20.250 arasını kullanacağımı belirttik ve tanımımızı ona göre gerçekleştirdik. Burada en önemli ayrıntı yük dengeleyici servisi için kullanacağımız IP havuzunun rezerve yapmamız gerektiğidir. Şayet, burada rezerve yapmaz isek ilerleyen bölümlerde dağıtımını gerçekleştireceğimiz yük dengeleyici servislerinde bu IP bloğunu göremeyiz. Bu nedenle rezerve kısmı önem arz etmektedir.

clip_image040

Gateway tanımı olarak 20.20.20.1 tanımını gerçekleştirdikten sonra next ile ilerliyoruz.

clip_image042

DNS ekranımızda da daha önceki network kartlarında da kullanmış olduğumum 192.168.50.2 IP adresini tanımlıyor ve ilerliyoruz.

clip_image044

PrivateVIP networkü için IP havuzu ve IP dağıtım konfigürasyonlarını tamamladık. Finish diyerek bu networke ait tanımlamaları sonlandırmış oluyoruz.

Şimdi sıra bir diğer networkümüze geldi. PublicVIP networkümüzü oluşturacağız.

clip_image046

Gelen ilk ekranımızda isimlendirmemizi PublicVIP diyerek ilerliyoruz.

clip_image048

Ayarlar ekranımızda yukarıdaki ekran görüntüsünde de göreceğiniz üzere One Connected Network, Create a VM network with the same name, Managed by the network controller ve Public IP Address Network alanlarını seçerek ilerliyoruz.

clip_image050

Network site tanımlamalarımızı da gerçekleştirdikten sonra ilerliyoruz.

clip_image052

Gelen özet ekranımızda bulunan Finish butonu ile PublicVIP logical network kartımızı oluşturuyoruz.

Oluşturmuş olduğumu bu network için sıra geldi IP havuzunu tanımlamaya. Bunun için:

clip_image054

İsimlendirmemizi PublicVIP_IPPool vererek ilerliyoruz.

clip_image056

Network Site ekranımızda herhangi bir değişiklik yapmadan next ile ilerliyoruz.

clip_image058

IP dağıtım aralığını tanımlıyoruz. Burada 41.40.40.5-41.40.40.250 arasını kullanacağımı belirttik ve tanımımızı ona göre gerçekleştirdik. Burada en önemli ayrıntı yine bu networkümüzü de yük dengeleyici için kullanacağımız IP havuzunu rezerve yapmamız gerektiğidir. Şayet, burada rezerve yapmaz isek ilerleyen bölümlerde dağıtımını gerçekleştireceğimiz yük dengeleyici servislerinde bu IP bloğunu da göremeyiz. Bu nedenle rezerve kısmı burada da önem arz etmektedir.

clip_image060

Gateway tanımımızı da gerçekleştiriyor ve next ile ilerliyoruz.

clip_image062

DNS tanımlamamızı yaptıktan sonra son adıma geçiyoruz.

clip_image064

Network tanımlamalarımızı bu servis içinde tamamlamak için Finish diyoruz ve servis dağıtımı için gerekli adımlara geçiyoruz.

Şimdiye kadar yazılımsal yük dengeleyici servisinin dağıtımı için ihtiyacımız olan network kartlarını oluşturduk. Artık ilgili servis templatemizi import ederek dağıtıma başlayabiliriz.

SDNV2 SLB Dağıtımı:

clip_image066

Library/Templates/Service Templates sekmesine geçtikten sonra Import Template seçimini yapıyoruz.

clip_image068

SDNV2 kurulum ve dağıtım işlemlerine başlamadan önce Github üzerinden indirmiş olduğumuz dosya içerisinde ve belirtilen dizinde olan servis template imizi import ediyoruz.

clip_image070

Gelen ekranımızda ilgili referanslarımızı library altından göstererek ilerliyoruz.

clip_image072

Gelen ekranımızda Import diyerek templatemizi import işlemini gerçekleştiriyoruz.

clip_image074

SLBMuxServiceTemplate dosyamız bizlerin import ettiği service template’imizdir. Bu servisimizi seçtikten sonra yukarıda ki barda görülen Configure Deployment diyerek ilgili düzenlemeleri gerçekleştireceğiz.

clip_image075

İsimlendirmemizi yaptıktan ve ilgili network kartlarımızı tanımladıktan sonra onaylıyoruz.

clip_image077

Yukarıdaki ekran görüntüsünde de göreceğimiz üzere ilgili alanları tanımladıktan sonra Refresh Preview diyerek doğrulamaları gerçekleştiriyoruz.

clip_image079

Görüldüğü üzere herhangi bir problem olmadığını teyidini uygulamamızda bizlere gösterdi. Artık Deploy Service diyerek dağıtım işlemine başlıyoruz.

clip_image081

Dağıtım işlemi başarılı olduğunda, yukarıdaki ekran görüntüsünde de göreceğimiz üzere SDN Host grubu altında Software Load Balancer servisini göreceğiz.

Servislerin başarılı bir şekilde dağıtımının tamamlandığını gördükten sonra network servisi olarak daha önce dağıtımını yaptığımız NC isimli servis üzerinde gerekli Load Balancer yapılandırmasını gerçekleştireceğiz.

clip_image083

Fabric tabı ile network services altında göreceğimiz ve daha önce servis olarak oluşturduğumuz NCS isimli servisimize sağ klik yapıyoruz. Ardında Services sekmesine geliyoruz. Burada Load Balancer rolünü için hangi servisi kullanacağımızın seçimini yapıyoruz. Bu seçim sonrasında SLB Manager VIP IP adresini ve bu servis için kullanılacak IP havuzlarımı belirliyoruz.

clip_image085

clip_image087

clip_image089

 

Daha sonra dağıtımını gerçekleştirdiğimiz yazılımsal yük dengeleyici servisimiz için hizmet verecek olan üç node’lu servis sunucularımızın konfigürasyon işlemlerini tamamlayacağız. Burada ASN ve BGP gibi kavramlara değinmeyeceğiz. Burada 64628 ve 64623 kavramlarını öncelikle Autonoum Systemler için belirlenmiş olan Private ASN’lerden dolayı ve daha öncesinde incelemiş olduğum Microsoft tarafındaki laboratuvar sunucularında tanımlanmış olan bu ASN değerlerinden dolayı bu şekilde tanımladım. Production bir ortam olsa idi o zaman BGP ve ASN değerlerini hem bölgelerime hem de servis sağlayıcılarıma göre tanımlıyor olacaktım.

Yukarıda da görüldüğü şekilde ilgili ASN ve BGP tanımlamaları mı gerçekleştiriyoruz ve bu tanımlamalarımızı her bir node için aynı şekilde yapıyor ve onaylıyoruz.

Şimdi ilgili servis tanımlamalarımı gerçekleştirdikten sonra yazılımsal yük dengeleyici servisimizi hem test edeceğiz hem de bunun için bir template oluşturacağız.

Template oluşturmaya başlamak için yine Fabric altında bulunan Networking sekmesine geçiyoruz ve VIP Template oluşturmaya başlıyoruz.

clip_image091

VIP Template üzerinde sağ klik diyoruz ve yeni bir template oluşturmaya başlıyoruz. WEB-80 ismini, karşılanacak olan Virtual IP Port adresimizi ve arka tarafta bu porta hizmet verecek ilgili Backend port tanımını yaparak ilerliyoruz.

clip_image093

Gelen ekranımızda template type olarak Microsoft ve Microsoft Network Controller seçimlerini yapıyor ve ilerliyoruz.

clip_image095

Protokol ekranımızda protocol olarak custom ve sim olarak TCP protokolünü tanımlıyor ve next ile ilerliyoruz.

clip_image097

Gelen ekranımızda herhangi bir değişiklik yapmadan ilerliyoruz.

clip_image099Burada load balancing metodumuzu belirleyeceğiz. Yapımıza en uygun ya da ne şekilde hizmet vermemizi istiyor isek ona göre seçimlerimizi yapıyoruz. Ben burada Round Robin seçimin yaptım. Gerçek bir ortam olsa idi sanırım round robin metodunu kullanmazdık. Çünkü bu metot, sunucumuz hizmet vermiyor bile olsa isteği gönderiyor olacaktık. Bu sebepten dolayı tercih edilen bir yöntem olmayabilirdi. Yine de uygulamalara ve uygulamaların desteklediği metotları tercih etmekte fayda vardır.

clip_image101

Health monitoring üzerinde de herhangi bir değişiklik ya da konfigürasyon yapmıyoruz ve ilerliyoruz.

clip_image103

Özet ekranımıza ulaştık ve artık template tanımını bitiriyoruz.

Şimdi ise Remote Access Server rolümüzün kurulu olduğu sunucumuz üzerinde gerekli konfigürasyonları gerçekleştireceğiz. Bunun için aşağıda belirlediğimiz konfigürasyonlarını düzgün bir şekilde yapmış ve connected olduğunu görmemiz gerekmektedir.

Add-BgpRouter -BgpIdentifier 10.10.10.1 -LocalASN 64623

 

add-bgppeer -Name MUXVM001 -LocalIPAddress 10.10.10.1 -PeerIPAddress 10.10.10.42 -LocalASN 64623 -PeerASN 64628 -OperationMode Mixed -PeeringMode Automatic

add-bgppeer -Name MUXVM002 -LocalIPAddress 10.10.10.1 -PeerIPAddress 10.10.10.41 -LocalASN 64623 -PeerASN 64628 -OperationMode Mixed -PeeringMode Automatic

add-bgppeer -Name MUXVM003 -LocalIPAddress 10.10.10.1 -PeerIPAddress 10.10.10.40 -LocalASN 64623 -PeerASN 64628 -OperationMode Mixed -PeeringMode Automatic

 

Yukarıda gördüğümüz komut setleri sonrasında RRAS sunucumuz üzerinde ilgili kontrolleri gerçekleştiriyorum. Bu kontrollerde bağlantılarım connected olduğunu gözlemleyeceğiz.

clip_image105

Görüldüğü üzere bağlantılarımın başarılı olduğunu ve şu anda herhangi bir problem olmadığını gözlemledik.

Şimdi ise artık oluşturmuş olduğumuz SLB VIP templatemizi kullanarak mevcut ve network sanallaştırması için kullanmış olduğumuz iki adet sunucumuza bu SLB templatemizi atayacağız ve kontrollerimizi gerçekleştireceğiz.

param(

 

[Parameter(Mandatory=$false)]

# Name of the Network Controller Network Service

# This value should be the name you gave the Network Controller service

# when you on-boarded the Network Controller to VMM

$LBServiceName = “NCS”, — Network Controller için oluşturmuş olduğumuz servis adı

 

[Parameter(Mandatory=$false)]

# Name of the VM instances to which you want to assign the VIP

$VipMemberVMNames =  @(“Red Machine01”, “Blue Machine”),– Test için kullandığımız sunucularımız.

 

[Parameter(Mandatory=$false)]

# VIP address you want to assign from the VIP pool.

# Pick any VIP that falls within your VIP IP Pool range.

$VipAddress = “41.40.40.10”,–Public IP Adresi tanımı. Bu IP adres aralığında ve tanımlamalarımızda belirlediğimiz havuz içerisinden herhangi bir IP adresi verebiliriz.

 

[Parameter(Mandatory=$false)]

# Name of the VIP VM Network

$VipNetworkName = “PublicVIP”, — Public networkü için oluşturduğumuz Logical Network ismi

 

[Parameter(Mandatory=$false)]

# The name of the VIP template you created via the VMM Console.

$VipTemplateName = “WEB-80”,–VIP Template için vermiş olduğumuz isim

 

[Parameter(Mandatory=$false)]

# Arbitrary but good to match the VIP you’re using.

$VipName = “TenantVIPWebTest”– İsimlendirme

 

)

 

Import-Module virtualmachinemanager

 

$lb = Get-scLoadBalancer | where { $_.Service.Name -eq $LBServiceName};

$vipNetwork = get-scvmnetwork -Name $VipNetworkName;

 

$vipMemberNics = @();

foreach ($vmName in $VipMemberVMNames)

{

$vm = get-scvirtualmachine -Name $vmName;

#    if ($vm.VirtualNetworkAdapters[0].VMNetwork.ID -ne $vipNetwork.ID)

#    {

#        $vm.VirtualNetworkAdapters[0] | set-scvirtualnetworkadapter -VMNetwork $vipNetwork;

#    }

 

$vipMemberNics += $vm.VirtualNetworkAdapters[0];

}

 

$existingVip = get-scloadbalancervip -Name $VipName

if ($existingVip -ne $null)

{

#    foreach ($mem in $existingVip.VipMembers)

#    {

#        $mem | remove-scloadbalancervipmember;

#    }

 

$existingVip | remove-scloadbalancervip;

}

 

$vipt = get-scloadbalancerviptemplate -Name $VipTemplateName;

 

$vip = New-SCLoadBalancerVIP -Name $VipName -LoadBalancer $lb -IPAddress $VipAddress -LoadBalancerVIPTemplate $vipt -FrontEndVMNetwork $vipNetwork -BackEndVirtualNetworkAdapters $vipMemberNics;

Write-Output “Created VIP ” $vip;

 

$vip = get-scloadbalancervip -Name $VipName;

Write-Output “VIP with members ” $vip;

 

Yukarıda bulunan script aynı zamanda Github içerisinde indirmiş olduğumuz dosya içerisinde mevcuttur. Sadece ilgili alanların düzenlenmesi yeterlidir.

 

Yukarıdaki komut setini çalıştırdıktan sonra ilgili test işlemlerimizi gerçekleştireceğiz. Script içerisinde kullanmış olduğumuz 41.40.40.10 numaralı Public IP adresini kullanarak yine, daha önce oluşturmuş olduğumuz ve network sanallaştırmada kullandığımız iki adet sunucumuzu kullanacağız.

clip_image107

Evet gördüğümüz üzere http://41.40.40.10 isteği gönderdiğimizde, iki sunucumuzda cevap vermektedir. Böylelikle Software Load Balancer servisimizinde sorunsuz bir şekilde hizmet verdiğini gözlemledik ve bu kurulum ve konfigürasyonumuzu da tamamlamış olduk.

 

 

 

 

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu