BOT; en temel anlamıyla verilen görevi yerine getiren programlara verilen isimdir. Web sitesi içeriklerine ulaşmaktan, gündelik e-posta gönderen uygulamalara kadar geniş bir yelpazedeki bu sanal asistanlar; bilgiye ve istenilene ulaşmaktaki hızı daha da artırmış durumda.

Akıllı cihazlarımızdaki mesajlaşma uygulamaları da bu yeniliğe adapte olmuş durumdalar. Telegram’la başlayan süreç, Slack ile hızlanmış; Microsoft ve Facebook Messenger’ın da konuya dâhil olmasıyla BOT’ların günlük hayatımızdaki yeri giderek artmıştır.

BOT’lar bize ne kazandıracak?

Öncelikle, bir web sitesine neden girdiğinizi düşünün. Haber okumak, mesleki bir konuyu araştırmak, hava durumuna bakmak, güncel döviz kurlarını takip etmek, alış veriş yapmak, yakın dostunuzun paylaştığı fotoğrafı beğenmek, video izlemek gibi yüzlerce sebep sunulabilir. Peki, hiçbir tarayıcı kullanmadan, Google’a ihtiyaç duymadan tek bir komutunuzla size bunları getiren uygulamalar olsa güzel olmaz mıydı? Tam olarak bu kısımda BOT ve ChatBOT’lar bizlere yeteneklerini sergileyecekler.

Nasıl Çalışıyor?

Örnek olarak Skype kullanıyorsunuz ve arkadaş listenizde asistan botunuz mevcut. “Bugün hava nasıl?” diye sordunuz. (Bunu sesli ya da yazılı olarak yapabilirsiniz.) Asistan, derhal sorunuzu anlamlandırabilmek için kullandığınız sözcükleri bir yapay zekâ aracına iletir. Bu zekâ aracı; sizin ve diğer kullanıcıların daha önceki istek ve sorularıyla eğitilmiş, her yeni istekte eğitimini devam ettirerek yaşam döngüsüne devam eden BOT’un beynini oluşturan kısımdır.

Yapay zekâ; havanın nasıl olduğu sorulduğunda hava durumu servis sağlayıcılarından veri tedarik etmesi gerektiğini biliyor, bunu öğrenmiş durumda. Ayrıca hangi şehrin hava durumunu öğrenmek istediğinizi bilmesi gerekiyor. Bu durumda üç seçenek bulunmakta:

  1. Hava durumunu öğrenmek istediğiniz şehri size soracak (“Hangi şehrin hava durumunu öğrenmek istersiniz?” gibi)
  2. Kullandığınız mesajlaşma uygulamasından (bu örnek için Skype) bulunduğunuz konumun bilgisini almak
  3. Daha önceden sıklıkla Levent semti için sorduğunuzu biliyor, bu kez de onu soruyor olabilirsiniz diye düşünerek tahminde bulunacak.

Bu seçeneklerden her birinin birbirine göre çeşitli avantajları ve dezavantajları mevcut. 2. Opsiyonu kullandığımızı varsayalım.

Yapay zeka, sizden gelen istek ile Skype’tan gelen konum bilgisini kullanarak hava durumu veri tedarik servisine isteği iletiyor ve cevabı bekliyor. Servisten cevap geldiği anda sonuçları asistana iletiyor. O da vakit kaybetmeden; “Bugün Levent’te güneşli bir hava mevcut, 18 derece dolaylarında seyreden sıcaklık; akşam saatlerinde düşüş göstermekle birlikte az da olsa sağanak yağış ihtimalini barındırıyor.” Şeklinde bir ileti yazıyor.

Muhtemelen asistanı kullanmasanız; arama motoruna Levent hava durumu yazacak, çıkan linklerden birine tıklayarak siteye yönlendirilecektiniz. Ardından gelen sayfada rakamları ve °Celcius sembollerinden hangisinin bugüne ait olduğunu yorumlayacak, şanslıysanız İstanbul semtlerinden Levent’i tekrar seçmek zorunda kalmadan sonuca ulaşabilecektiniz.

Böylesine basit bir ihtiyaçta dahi BOT’ların bizim yerimize yaptıklarını gözlemleyebiliriz. İhtiyaçlarımız karmaşıklaştıkça onların yetenekleri daha da belirginleşecektir. Online alışveriş sitelerinden yapacağınız en küçük alışverişte bile adres seçimi, kredi kartı bilgilerini girmek, gerekli sözleşmelere tik atmak derken zamanınızı alabilecek tüm konuları asistanlara devredebiliriz.

Kısaca; BOT asistanları yapay zekâ ve veri tedarik servislerinden oluşur. Zekâ; niyetinizi anlar, servis de bu niyete uygun veriyi sağlar.

BOT Teknolojisi Bizi Nereye Götürecek?

Çok değil henüz 90’ların başında hayatımıza giren internet, artık olmazsa olmazlarımızdan biri haline gelmiş durumda. Geçen yıllar boyunca, yerini sağlamlaştırmanın yanı sıra teknolojisinde değişikliklere gitti. Yaygınlaşmanın hem kullanıcı tarafında, hem de site tarafında artmasıyla birlikte toplam karmaşıklık seviyesi de bir hayli arttı. Denetim mekanizmalarının hızına yetişememesi, manipülasyon amacıyla kurulmuş sitelerin yaygınlığı gibi bir çok sebep yüzünden bilgi kirliliği bir hayli artmış durumda. Buna ek olarak, online ticaret hacminin çok yüksek rakamlara ulaşması; bu alandaki sitelerin sayısını artırmış ve son kullanıcılar satın alma işlemlerinde problem yaşamışlardır.

Türkiye İstatistik Kurumu’nun 2017 yılında yaptığı Cinsiyete göre son 12 ay içinde kişisel kullanım amacıyla internet üzerinden satın alış ya da sipariş vermede sorun yaşayan bireylerin oranı ve sorun türleri araştırmasını inceleyecek olursak;

  • Sipariş veya ödeme aşamasında web sitesinde karşılaşılan teknik arıza,
  • Garanti koşulları ve diğer kanuni haklara ilişkin bilgi bulmanın zor olması,
  • Dolandırıcılık vb.

Teknoloji tabanlı problemler sebebiyle kullanıcıların sorun yaşadıkları ve bu sorunun yıllar ilerledikçe arttığı görülmektedir.

BOT teknolojisinin hayatımıza gireceği nokta da tam olarak bu kısım. Tarayıcıda gördüğünüz ekranı size göstermeden sizin yerinize yorumlamak ve sorumluluğu üzerinizden almak. Belki de yıllar sonra bu yazıyı okumak için siteye girmenize gerek kalmayacak, BOT asistanınızın okuyuşunu dinleyeceksiniz. Teknolojinin muazzam hızına yetişebilmek için BOT’larla arayı iyi tutmak güzel bir fırsat.

 Yazan: Erdem UZUN (Eczacıbaşı Bilişim)

Microsoft Azure templateleri Azure tarafındaki özelliklerden bir tanesi olarak karşımızda durmaktadır. Bu makalemizde hem azure tarafında hem de Azure Stack tarafında bu templatelerin nasıl oluşturulduğunu ve oluşturmuş olduğumuz bu templatelerin nasıl dağıtacağımızı inceleyeceğiz.

Neden Azure ya da Azure Stack tarafında bu şablonları kullanacağım ?

Bu soruya bir kerede birden fazla kaynak dağıtımı yapabilmemize olanak sağlaması olarak cevaplayabiliriz. Çünkü uygulamalarımızın altyapısı sanal makinalar ,depolama alanları ,sanal network gibi bir çok bileşenden oluşmaktadır. Biraz daha ilerisini düşünecek olursak bütün bu kaynakların yanında bu sanal sunucumuz üzerinde bir web uygulaması olduğunu düşündüğümüzde ise ihtiyaçlarımızı biraz daha genişletebiliriz. Yani Uygulamanın bağlı olduğu bir veritabanaı ve bu veritabanının koştuğu yine bir veritabanı sunucusuna ihtiyaç olacağını görebiliriz. Azure ya Azure Stack tarafında bu bileşenlerin her birini ayrı bir öğe olarak değilde tek bir öğe olarak düşünmek ve bu bileşenlerin birbirine bağlı parçalar olarak görmeliyiz. İşte bu noktada bu bileşenleri tek tek dağıtmak ve yönetmek yerine tek bir noktadan oluşturulmuş bileşenler olarak dağıtımını yapabilir ve/veya bu bileşenleri tek bir noktadan siliebilir ,güncelleyebiliriz. Dağıtım için bu bahsettiğimiz şablonları kullanırsak uygulama ya da geliştirdiğimiz her ne ise öncesinde hazırlama ,test etme ve production ortamlara almak için ciddi kolaylıklar sağlayabilmektedir. Bütün bunların yanında bu kaynaklar üzerinde yönetim ,güvenlik özelliklerinide bizlere sağlamaktadır.

Bütün bu bahsettiklerimizden sonra kendi şablonlarımızı oluşturabilir ve oluşturmuş olduğumuz bu şablonları özelliştirebiliriz. Özelleştirilmiş ya da kendimizin oluşturacağı bu şablonları JSON ,Javascript object kullanarak elde edeceğiz.

Azure ya da Azure Stack tarafında şablonları oluşturmak ve bu şablonları dağıtmak için birden fazla yol bulunmaktadır. Bu bahsedeceğimiz bütün yöntemlerin hepsi hem Azure hemde Azure Stack tarafından desteklenmektedir. Şayet kendimiz bu şablonları oluşturmak yerine hazır olanları kullanmak istiyorsak bu kez de Github üzerinde oluşturulmuş şablonları kullanabiliriz.

Bu şablonları oluşturmak istediğimiz ilk başlarda biraz karışık gelebilir fakat günün sonunda bu şablonlarla çalışmaya başladığımız ve şablonları anladığımızda operasyonel olacak bütün işlerden kurtulacağımızı hatta yazılım geliştiren ekiplere bunları sağladığınızda altyapı ekiplerine ulaşmadan ihtiyaç duydukları kaynakları şablonlar yardımı ile kolaylıkla ve hızlıca hazır edebileceklerdir.

Şimdi öncelikle şablonları incelemek için daha önce dağıtımını gerçekleştirdiğimiz herhangi bir kaynağın şablonunu inceleyelim. Ben burada Azure Stack üzerinden bu şablonları inceleyeceğiz ve dağıtımını yine Azure Stack üzerinde gerçekleştireceğiz.

Daha önce dağıtımları gerçekleştirdiğim YenalWebSrvRG isimli Resource Group seçimini yapıyorum ve buna bağlı bileşenleri incelediğimde sadece sanal bir makina olarak değil,bileşenlerin tamamını görüyorum. Sanal bir sunucu için depolama alanları,network bileşenleri ve network bu bileşenlerin kullanabilmek için bir ya da daha fazla interface ve yine bu interfacelere atadığım IP adreslerinden oluştuğunu gözlemliyoruz. İşte bu noktada bütün bu tanımları sadece basit bir sunucu için oluşan bileşenlerin tamamını tek tek yapılandırmak yerinde şablonlardan faydalanmak hatta daha kompleks yapılardan bahsettiğimizde bu iş için nasıl zaman ve operasyonel faydaları olacağını daha fazla anlatmaya çalışmak yanlış olur.

Şimdi mevcut dağıtımlardan elde edeceğimiz bir şablonun kullanımını inceleyerek devam edeceğiz. Bunun için ben yine Azure Stack tarafından faydalanacağım. Aynı şekilde daha önceki makalelerimizde de bahsettiğimiz gibi Microsoft Azure tarafında işlemler birebir aynı. Çünkü Azure Stack Microsoft Azure tarafının bir uzantısı ve aynı bileşenlere sahip olduğunu söylemiştik.

Azure Stack portalimizde Resource Group içerisinden daha önce dağıtımını gerçekleştirdiğimiz bir kaynaktan şablonu daha sonra kullanmak üzere çıkartacağız. Çünkü bu kaynak grubunu dağıtmak biraz zaman aldı ve zamanı kısaltmak ve dağıtımını yapmak için var dağıtımdan bir şablon çıkartacağız ve kullanmak üzere hazır edeceğiz.

Şablonunu çıkartacağım WebServerRG isimli daha önce dağıtımını yaptığım kaynağın seçimini yapıyorum ve ardında Deployment tabına geçiyoruz.

Bu ekranımızda dağıtımı daha önce yapılmış olan YenalWebSrvRG isimli paketin ekran görüntüsünde göreceğimiz gibi View Template seçimini yapıyoruz.

Daha önce dağıtımını gerçekleştirdiğimiz şablonumuzu download seçimini zip halinde şablonumuzu elde edeceğiz. Elde ettiğimiz bu şablon üzerinde de dataları da kullanmak istediğimizde muhtemelen manipiülede edeceğiz.

Bunun için indirmiş olduğumuz zip dosyasını açarak içerisinde bulunan dosyaları göreceğiz.

Gördüğümüz gibi bütün kaynak şablonların hepsi mevcut. Hangi dilde kendinizi rahat hissediyorsanız şablon için onu kullanabilirsiniz. Ben burada Parameters.json dosyasını açarak parametreleri inceleyeceğiz.

Gördüğünüz gibi bütün parametreleri daha önce oluşturduğumuz ve dağıtımını yaptığımız kaynakları görüyoruz. Bu şablonu kullanarak aynı kaynaklara sahip yeni bir sanal sunucu oluşturduğumuzda bir takım bilgileri manipüle etmemiz gerekecek.Şayet bu dataları düzenlemeden devam edecek olursak script’in dağıtımında hata alacağız. Bunun nedeni aynı isimde sunucu olması ,storage hesaplarının aynı olması sonrasında bizlere dağıtım sırasında var olan hesaplar ile dağıtım yapmaya çalıştığımızı ve bu hesapları düzenlememiz gerektiğini söyleyecek.

Şimdi indirmiş olduğumu şablonları dağıtmak için hem şablon dosyalarının düzenlenmesi ve bu düzenlemeler sonrasında dağıtım işlemine başlayacağız.

Şablonumuzun dağıtımını Microsoft Azure üzerinden yapacak isek portal üzerinden Temlate tabından bu işlemi gerçekleştireceğiz. Fakat ben burada dağıtım işlemini Azure Stack üzerinden gerçekleştireceğim.

Şablonları kullanarak dağıtım yapabilmek için iki yol mevcut. Bunlardan birincisi direk dağıtılmış şablon üzerinden Redeploy seçimini yaparak mevcut template üzerinden ilgili parametleri düzenleyerek gerçekleştirebiliriz.

Ekran görüntüsünde de göreceğiniz üzere mevcut dağıtılmış YenalWebSrvRG seçimi sonrasında ortadaki görev listesinde bulunan Deployment seçimini yapacağız. Sonrasında sağ tarafta bulunan Redeploy seçimini gerçekleştireceğiz.

Redeploy seçimi sonrasında Edit Parameters ile ilgili bilgiler üzerinde değişiklikleri yaparak dağıtım işlemini gerçekleştirebiliriz.

Bir başka seçeneğimiz ise yine aynı ekranda bulunan Edit Template seçeneğimizdir.

Bu ekranımızda Quickstart Template seçimi yaparak Github üzerinde bulunan ve daha öncesinde hazırlanmış olan şablonları kullanabiliriz. Burada birden fazla şablon bulunmakta ve ihtiyacımız olan şablonu kullanarak dağıtımları gerçekleştirebiliriz.

Şablon içerisinden mysql server seçimini yaparak dağıtım işlemini gerçekleştireceğiz.

Açılan şablon ekranımızda save seçimini yapıyoruz.

Kayıt işlemini gerçekleştirdikten sonra Edit parametre seçimini yapıyoruz ve kurulum işlemleri için gereken ilgili alanları kendimize göre düzenliyoruz işlemleri onaylıyoruz.

Bütün işlemler sonrasında şablonumuz artık dağıtım için hazır durumda. Bunun için Create seçimini yapıyoruz ve dağıtım işlemine başlıyoruz.

Ekran görüntüsünde görüldüğü üzere Windows Server 2016 üzerine MySQL Database uygulaması kurulmuş ve hazır olarak gelecektir.

Bütün bu işlemleri baştan sonra kadar kendimiz uygulamış olsa idik hem sunucu kurulumları ve uygulama kurulumları oldukça zamanımızı alacaktı. Böylelikle mevcut şablonlar ile kurulum işlemlerini kolaylıkla yapabiliriz. Bir sonraki makalemizde bu şablonları kendimiz nasıl oluşturacağı ve oluşturmuş olduğumuz bu şablonları kullanımını inceleyeceğiz.

Yazan: Yenal TIRPANCI (Eczacıbaşı Bilişim)

Elektronik İmzalama ve Blockchain Altyapısı ile benzerliği

Öncelikle iki kavramın açıklayarak başlamak faydalı olacaktır.

Elektronik imza ya da sayısal imza, başka bir elektronik veriye eklenen veya elektronik veriyle mantıksal bağlantısı bulunan ve kimlik doğrulama amacıyla kullanılan elektronik veridir. Islak imzanızın yerine kullanabileceğiniz, kimliğini doğrulayabilmek için kullanabileceğiniz teknolojidir. Islak imza zorunluluğu olan süreçlerin dijital dönüşüm kapsamına girmesini sağlamaktadır. Elektronik imza bir dosyanın bütünlüğünün bozulmadığını ve bu dokümanın kimler tarafından imzalandığını garanti eder.

Blockchain ise (blokzincirini) kısaca şifrelenmiş işlem takibi sağlayan bir dağıtık veri tabanı olarak tanımlayabiliriz. Bu teknoloji birbiri ardına sıralı bir modelle inşa edilmiştir. Kolaylıkla takip edilebilir, fakat kırılması mümkün değildir. İşlemlerin bir merkeze bağlı olmaksızın yapılabilmesi, güçlü bir sağlayıcı, kanun koyucuya ihtiyacı ortadan kaldırır. İşlemlerin takip edilebilmesi şeffaf bir yapı sunar. Böylece dijital para transferi (bitcoin vb.) işlemler direkt olarak alıcı ile satıcı arasında ve güvenli bir şekilde gerçekleştirebilmektedir.

E-İmza Nasıl Çalışır?

Bir elektronik imza yaratmak için, imzalayan, mesajın kısaltılmış bir sürümü olan bir özet değeri ve bu özet değerini şifrelemek için kendi özel/gizli anahtarını kullanır. Şifrelenmiş özet değeri elektronik imzadır. Eğer mesaj herhangi bir nedenden dolayı değişikliğe uğrarsa, değişmiş olan mesajın özet değeri de orijinal özet değerinden farklı olacaktır. Elektronik imza, mesaj için de onu yaratan özel anahtar için de tek olduğundan değiştirilmesi mümkün değildir. Daha sonra elektronik imza, mesaja eklenir ve ikisi birden alıcıya gönderilir. Alıcı, gelen mesajdan özet değerini tekrar yaratır ve gönderenin açık anahtarını gelen mesajdaki özet değerinin şifresini çözmede kullanılır. Eğer alıcının hesaplamış olduğu özet değeri ile mesajın içerisinde yer alan özet değerleri aynı ise şu iki şey doğrulanmış olur:

  • Elektronik imza gönderenin özel/gizli anahtarı kullanılarak yaratılmıştır. Bu gönderenin yetkinliğini tanılar ve gönderen mesajı imzalamadığını iddia edemez. Kimse gönderenin adını kullanmaya çalışmamıştır.
  • Mesaj değiştirilmemiştir. Bu mesajın doğruluğu onaylanmıştır.

Elektronik İmza Nerelerde kullanılabilir?

  • E-Devlet Uygulamaları
  • Banka Talimatları
  • KEP
  • Yönetim Kurulu Kararları
  • Hukuk Sözleşmeleri
  • Leasing Sözleşmeleri
  • Ekspertiz Raporları
  • E-Haciz Uygulamaları
  • Bankacılık Uygulamaları

Blockchain Nasıl Çalışır?

Blok zinciri iki temel kavramın birlikte çalışması ile kullanılır.

Kayıtlar

Blok zincirindeki her bir kayıt (aktarım işlemi, para aktarım işlemi veya transaction), temelde tutulması amaçlanan temel veri türüdür. Bitcoin gibi dijital para işlemleri bu kapsamda değerlendirilir. Bir kişi parasını transfer etmek istediğinde, talebi sistem üzerindeki diğer ortaklara yayınlanır. Bu kayıtlar imza geçerliliği gibi birkaç testten sonra ortaklardan tarafından birleştirilerek bir blok oluşturulur.

Bloklar

Bloklar kayıtların daha önceden belirlenmiş sayıda bir araya gelmesi ve geçerli bir hash değerine sahip olacak şekilde madencilik yapılması sonucunda oluşturulur. Özetle, yeterli kayıtlar ortaklar tarafından toplandıktan sonra, bu kayıtlar üçüncü partiler tarafından ticari ödül karşılığında Bitcoin madencisi olarak adlandırılan kişilere, belli bir koşulu sağlayacak hash değerini bulmaları için yayınlanır. Bu uygun hash değerini döndürecek hesaplamayı yapabilen parti, hem bu problem çözümünden yaratılan Bitcoin’leri hem de para aktarım işlemleri için ödenen cüzi miktardaki ücreti ödül olarak alır. Bu blok için doğru hash değerini bulan madenci, diğer öbeklere bu bulduğu son bloğu gönderir ve öbekler artık son bloktaki kayıt işlemlerinden farklı kayıtlar bulup onlar için madencilik yapmaya ve madencilerine bu yeni güncellemeyi dağıtmaya başlar.

Elektronik İmza ve BlockChain

  • İki yapıda da verinin bütünlüğünün bozulmadığı kanıtlanabilir.
  • Elektronik imza, ülke içindeki ilgili yasal düzenlemelere tabi olduğu için birçok süreçte kolaylıkla kullanılabilir.
  • BlockChain uluslararası bir standart olduğu için, daha geniş çaplı çözümler gerçekleştirilebilir.
  • Elektronik imza bağımsız ve çevrimdışı ortamlarda kolaylıkla doğrulabilir.
  • BlockChain halka açık bir yapıda çalışırken, e-imzada bilgilere sadece dosyalara sahip kişiler tarafından erişilebilir.
  • Elektronik imza altyapısı güvenilir kurumlar tarafından yönetilirken, halka açık BlockChain altyapılarında güven problemi yaşanabilir.
  • Kimlik bilgilerinin elektronik imzada doğrulanabilmesi standarttır, bazı BlockChain altyapıları bunu sağlayabilmektedir.

Yazan: İbrahim DEMİRAL (Eczacıbaşı Bilişim)

Microsoft Azure Stack kurulumunu başarılı bir şekilde gerçekleştirdikten sonra sıra şimdi diğer adımlarda. Normal şartlar altında varsayılan şifre politikasını değiştirmekle başlayacağız. ilk adım olarak kurulum sonrasında mevcut Active Directory şifre politikasını değiştireceğiz. Bunun için Host üzerinde powershell konsolu açacağız ve aşağıda bulunan powershell komutunu girerek varsayılan şifre politikasını güncelleyeceğiz.

Set-ADDefaultDomainPasswordPolicy -MaxPasswordAge 180.0:00:00 -Identity azurestack.local

Şifre politikasını güncelleme işleminden sonra Admin ve Tenant portal güncellemelerini ve izinlerini etkinleştireğiz. Bunun için öncelikle admin portali açıyoruz ve kullanıcı bilgilerini girerek oturum açıyoruz.

https://adminportal.local.azurestack.external/

Oturum sonrasında ekran görüntüsünde de göreceğiniz gibi ihtiyaç duyduğu ilgili izinleri kabul ediyoruz. İzin tanımlarını yaptıktan sonra artık yönetim portalına ulaşıyoruz. Şimdi ise sıra portalimiz üzerinde Microsoft Azure Stack uygulamamızı Microsoft Azure hesabımız ile register edeceğiz. Register sonrası Microsoft Azure Marketplace öğelerini kullanmamıza olanak sağladığı gibi kullandıkça öde tarafındaki raporlamaları da kullanmamıza olanak sağlayacak. Bunun için ;

Yine Powershel modülünü kullanacağız. Powershell modülümüzü açtıktan sonra Azure Powershell modülünü yüklememiz gerekmekte. Azure Powershell modulü yüklemek için yine aşağıda belirtilen powershell komutlarını sırası ile çalıştıracağız.

Install-Module -Name azurerm.bootstrapper

Use-AzureRmProfile -Profile Latest

Install-Module -Name azurestack -RequiredVersion 1.2.9

Komut setlerini çalıştırdıktan sonra aşağıdaki link üzerinden Azure Register işlemi için ihtiyaç duyacağımız powershell scriptimizi github üzerinden indireceğiz.

https://github.com/Azure/AzureStack-Tools/blob/master/Registration/RegisterWithAzure.psm1

indirmiş olduğumuz powershell scriptini Powershell ISE modulünü Run as Administrator diyerek açıyoruz.

Powershell scriptimizi Import ettikten sonra aşağıda belirtilen powershell scriptlerini çalıştırarak register işlemini gerçekleştireceğiz.

$YourCloudAdminCredential=”Azurestack\azurestackadmin”

$YourAzureDirectoryTenantName=”yenaltirpancieczacibasicom.onmicrosoft.com”

$YourazureSubscriptionId=”xxxxxxxxxxxxxxxxxxxxxxxxx”

$YourPrivilegedEndpoint=”AzS-ERCS01″

Add-AzsRegistration -CloudAdminCredential $YourCloudAdminCredential -AzureDirectoryTenantName $YourAzureDirectoryTenantName -AzureSubscriptionId $YourAzureSubscriptionId -PrivilegedEndpoint $YourPrivilegedEndpoint –BillingModel Development

Bu komut setinde Billing Model tarafında PayAsYouUse modelini kullanacaksanız şayet Enterprise ve Cloud Service Provider olmanız gerekmekte. Belirtilen modellere sahip değilseniz buna izin verilmeyecektir.

PayAsYouUse değilde Capacity için ise Enterprise subscription sahibi olmanız gerekmektedir.

Poc kurulumu için develepmont parametresini kullanacağız.

Komut setimizi yukarıda da görüldüğü gibi çalıştırıyoruz.

Komut setimizi çalıştırdıktan sonra yukarıdaki ekran görüntüsünde de göreceğiniz üzere 10 dakikalık bir zaman alacak ve sonrasında herhangi bir hata oluşmaz ise register işlemi tamamlanacak.

Kayıt işlemi tamamlandıktan sonra doğrulamak adına Microsoft Azure portal üzerinden de register işleminin gerçekleştiğini Dashboard üzerinden görüntüleyebiliriz. Yukarıdaki ekran görüntüsünde de görüldüğü gibi register işlemimiz gerçekleştirilmiş durumda.

Register işlemi sonrasında artık Microsoft Azure tarafında bulunan marketplace ürünlerini bizim Azure Stack ortamına nasıl alacağız ve nasıl kullanacağız adımına geçeceğiz.

Microsoft Azure tarafındaki marketplace ürünlerinin kullanımı ve kaynaklarını kullanmak için Admin portal üzerinden More Service seçimini ,ardından Marketplace Management tabına geçiyoruz.

Gelen ekran üzerinden Add From Azure seçimini yaparak sağ taraftaki panelde bulunan ve Microsoft Azure tarafından kullanımımıza açılan servis ve hizmetler ile ilgili paketlerin kendi on-premise ortamımızda bulunan Azure Stack üzerinden kullanmaya ve hizmet olarak sunmaya hazırız. Bir sonraki makalemizde Microsoft Azure tarafından edinmiş olduğumuz paketlerin ve hizmetlerin kullanımını anlatan makalemizde görüşmek üzere.

Yazan: Yenal TIRPANCI (Eczacıbaşı Bilişim)

Merhaba,

Yine raporların yoğun olarak kullanıldığı MicroStrategy sunucularında karşılaşılan bir hatayı ve nasıl çözüleceğini anlatacağım.

MicroStrategy raporlarınızı eğer IIS ile publish ediyorsanız, IIS Intelligence Server ile etkileşimde bulunurken Java Virtual Machine kullanır.

Zamanla yoğun kullanılan sistemlerde Java Virtual Machine’nin kullandığı heap size’i dolar ve IIS’ten aşağıdaki gibi hata mesajları döner.

  • NewObject failed for java.io.StringWriter
  • java.lang.OutOfMemoryError: Java heap space

Bu hataları geçici olarak anlık bertaraf etmek için IIS’i restart etmek gerekir.

IIS aşağıdaki komutla basitçe restart edilebilir.

Peki bu hatalarının önüne geçmek için kalıcı olarak nasıl bir çözüm uygulayabiliriz?

Bunun için MicroStrategy sunucunuzun kurulu olduğu Windows Server işletim sisteminde regedit çalışma defterinde küçük bir revize yapmanız gerekir.

Normalde standart olarak HeapMaxSize 512 MB olarak gelir. Siz sistem kaynaklarınıza göre istediğiniz değerde güncelleyebilirsiniz. Ben örnek olması açısından değeri 2048 MB olarak veriyorum.

32-Bit İşletim Sistemleri için Regedit Yolu:

  • HKEY_LOCAL_MACHINE\Software\MicroStrategy\JNI Bridge\Configuration\JVM Options\HeapMaxSize yoluna gidilir ve HeapMaxSize 2048 MB olarak değiştirilir.

64-Bit İşletim Sistemleri için Regedit Yolu:

  • HKEY_LOCAL_MACHINE\Software\Wow6432Node\MicroStrategy\JNI Bridge 64\Configuration\JVM Options\HeapMaxSize yoluna gidilir ve HeapMaxSize 2048 MB olarak değiştirilir.

Ardından IIS restart edilerek sistem erişime açılır.

Yazan: Onur YURTSEVER (Eczacıbaşı Bilişim)

Makale serimizin birinci bölümü olan ve Microsoft Azure Stack’in ne olduğunu, kullanım senaryoları ve kurulumunu içeren bu makalemizde Microsoft Azure Stack’in ne olduğundan bahsedeceğiz.

Azure Stack Nedir ?

Microsoft Azure Stack konusundan önce Microsoft Azure tarafını bilmekte ciddi fayda bulunmaktadır. Çünkü Microsoft Azure bilmek bizlere Microsoft Azure Stack’in ne olduğunu, bizlere ne gibi hizmetler ve kolaylıklar sunacağını anlamamıza yardımcı olacaktır. Microsoft Azure Stack , Azure tarafının uzantısı olarak düşünmeliyiz.

Microsoft Azure ciddi hizmet ve servisler sunan bununla birlikte dünyanın önde gelen üç büyük Cloud platform sağlayıcılarından biridir. Vermiş olduğu hizmetler ise PaaS, SaaS ve IaaS olmak üzere üç başlık altında toplanmaktadır.

Microsoft Azure Stack regülasyonların ve/veya internet bağlantılarınızın olmadığı ya da internet dünyasından yalıtılmış ortamlar ve senaryolar, veri merkezi hizmetleri ya da kendi veri merkezimizde self servis portallerimiz üzerinden yararlanmak istediğimizde Microsoft Azure Stack ismi ön plana çıkıyor. Microsoft Azure Stack makalemize başladığımızda da belirttiğim gibi tam olarak Microsoft Azure teknolojisinin uzantısıdır.

Microsoft Azure Stack önceden yapılandırılmış ve paketlenmiş Microsoft ürünü olarak ortaya çıktı. Şayet Microsoft Azure Stack kullanmaya başlayacak isek sunucu, depolama ve networklerden oluşan ve öncesinde konumlandırılmış bir appliance olarak veri merkezimizde yerini alacaktır. Ayrıca en önemli tarafı ise Microsoft Azure tarafında kullanılan servis ve hizmetlerin bir çoğuna da sahip olacağımız anlamına gelmektedir.

Microsoft Azure Stack dağıtımını yaptığımızda yukarıda saydığımız avantaj ya da avantajlar elbette ki bunlarla sınırlı değildir. Hybrid bulut dağıtımları, çevrimdışı dağıtımlar, tutarlı kodlamalar elde etmek içinde kullanım avantajı olarak da ortaya çıkmaktadır. Bunların detaylarını ilerleyen makalelerde göreceksiniz.

Microsoft Azure Stack PoC Gereksinimleri :

Microsoft Azure Stack kurulumunu yapabilmek için önerilen minumum donanımlara sahip olmamız gerekmektedir. Çünkü Azure Stack tarafı öncesinde kurulumları ve konfigürasyonları tamamlanmış olan birden fazla Sanal Sunuculardan oluşmaktadır.

Aşağıdaki tabloda ihtiyaç duyulan donanım gereksinimlerini görebilirsiniz:

Yukarıda belirtilen donanım gereksinimleri elde etmemiz kurulum için henüz yeterli değildir. Bir başka gereklilikte Azure Stack yöneticisi veya yöneticileri ve tenantların kimlik doğrulamasında kullanılacak ortamında hazır olması gerekmektedir.

Burada iki yöntem bulunmaktadır. Bunlardan birincisi ve tercih edileni Azure Active Directory servisinin kullanımı bir diğeri ise Active Directory Federation servisinin kullanılmasıdır. Ortamımızda internet yok ise ya da Azure ile herhangi bir bağlantı kurmayı planlanmıyorsa Active Directory Federation Service (AD FS) kullanılabilir. Fakat buradaki en büyük dezavantaj Azure tarafında bulunan servislerin, hizmetler için kullanılan Marketplace kullanamayacak olmamızdır.

Bu noktada bilinmesi gereken en önemli nokta ise, kurulum öncesinde planlanmış ve plana göre karar verilerek dağıtımı yapılmış olan Microsoft Azure Stack sonrasında tercih edilmiş olan kimlik yönetimi metodunun değiştirilemez olmasıdır.

Şayet daha sonra kimlik yönetim metodunu değiştirmek isterseniz yeni bir kurulum yapılması gerektiğini bilmenizde de fayda var.

Bu bilgi sonrası bir diğer önemli bilgi ise Microsoft Azure Stack PoC kurulumu tek bir interface kullanarak çalışmakta ve bu interface kullanarak network katmanına çıkmaktadır.

Network tarafında Microsoft Azure Stack yalnızca IPV4 desteği bulunmaktadır. Yani IPV6 tarafında herhangi desteği bulunmamaktadır. Bahsettiğimiz bütün network gereksinimlerinin dışında herhangi bir özel konfigürasyona da ihtiyaç duymamaktayız.

Kurulum için bir diğer gereksinimimiz ise DHCP ihtiyacımızın olmasıdır. Fakat DHCP kurulumu ya da ortamda var olması zorunlu değil opsiyonel bir seçimdir. Kurulum esnasında DHCP servisini kullanmayacak isek, kurulum scripti içerisine bir kaç tane parametre ekleme ihtiyacımız bulunmaktadır.

Microsoft Azure Stack kurulumunda bilinmesi gereken son ve en önemli nokta ise yalnızca transparent proxy ile bu kurulumu yapabileceğimizdir.

Yani kimlik doğrulaması gerektiren web proxyler ile kurulum işlemlerini yapamayız.

Çünkü Microsoft Azure Stack kimlik doğrulaması gerektiren web proxy desteğinin olmaması en önemli detay olarak karşımızda durmaktadır. Azure Stack 80 ve 443 numaralı portlardan login.microsoftonline.com ve graph.windows.net adreslerine bağlanmaktadır. Veri akışı içinde 443 numaralı port üzerinden wordtext.windows.data.microsoft.com adresine gitmektedir.

Dağıtım için ihtiyaç duyulan kurulum dosyaları ve scriptler:

  • Windows Server 2012 R2 veya Windows Server 2016 işletim sistemi
  • Microsoft Azure Stack Kurulum dosyaları

https://azure.microsoft.com/en-us/overview/azure-stack/development-kit/

  • Microsoft Azure Stack Deployment Checker Powershell scripti

https://gallery.technet.microsoft.com/Deployment-Checker-for-50e0f51b

Şimdi Microsoft Azure Stack kurulum dosyalarını indireceğiz. Bunun için aşağıdaki link üzerinden kurulum dosyalarını indirelim.

https://azure.microsoft.com/en-us/overview/azure-stack/development-kit/

Yukarıdaki ekran görüntüsünde de görüldüğü üzere deployment kit üzerinden Download seçimini yaparak Microsoft Azure Stack kurulum dosyalarını indireceğiz.

İndirmiş olduğumuz kurulum dosyası içerisinde yer alan AzureStackDevelopmentKit dosyasını çalıştıracağız ve aynı dizin içerisine CloudBuilder.vhdx diskini çıkartacağız. Çıkartmış olduğumu bu sanal diski C:\ Microsoft Azure Stack POC dizini oluşturarak kopyalama işlemini gerçekleştireceğiz.

Belirttiğimiz donanım gereksinimlerini sağladıktan sonra ve Microsoft Azure Stack kurulum dosyalarını edindikten sonra yine aşağıdaki linkten indirebileceğimiz Deployment Checker powershell scriptini kullanacağız. İndirdiğimiz powershell script dosyasını çalıştırdığımızda ise sağlamış olduğumuz kaynakları ve bu kaynakların konfigürasyonlarının uygun olup olmadığını kontrol edeceğiz.

Bunun için yine aşağıda bulunan link üzerinden Deployment Checker Powershell scriptini indireceğiz ve çalıştıracağız.

https://gallery.technet.microsoft.com/Deployment-Checker-for-50e0f51b

Ben powershell scriptini C:\Script1 isimli klasör altına aldım ve çalıştırdım. Script sonucuna göre kurulum için herhangi bir sorun olmadığını gördük. Böylelikle son adıma geçiyoruz.

Microsoft Azure Stack için yine aşağıda bulunan script’i, kurulumu gerçekleştireceğimiz hostumuz üzerinde çalıştıracağız.

Çalıştıracağımız bu powershell scriptini aşağıda belirtilen link üzerinden edineceğiz.

https://docs.microsoft.com/en-us/azure/azure-stack/azure-stack-run-powershell-script#prepare-the-development-kit-host

# Variables

$Uri = ‘https://raw.githubusercontent.com/Azure/AzureStack-Tools/master/Deployment/asdk-installer.ps1’

$LocalPath = ‘c:\AzureStack_Installer’

# Create folder

New-Item $LocalPath -Type directory

# Download file

Invoke-WebRequest $uri -OutFile ($LocalPath + ‘\’ + ‘asdk-installer.ps1’)

Scriptimizi çalıştırdığımızda “C” dizini altında AzureStack_Installer adında bir dosya oluşturacak ve kurulum için kullanacağımız asdk-installer.ps1 isimli powershell dosyasını da bu dizin altına indirecektir.

Bütün donanımsal ve yazılımsal ön gereksinimleri tamamladık. Artık kurulum adımlarına geçebiliriz.

Microsoft Azure Stack PoC Kurulum :

Kurulum işlemleri için az önce indirmiş olduğumuz ve C:\AzureStack_Installer\asdk-installer.ps1 dizininde bulunan powershell scriptini kullanacağız.

Kurulum için ilgili scripti çalıştırdığımızda bizleri bir GUI karşılayacak.

Açılan bu GUI üzerinden Prepare Environment seçimini yaparak sanal diskimizin yerini göstereceğiz.

Yukarıdaki ekran görüntüsünde de görüldüğü gibi ilgili CloudBuilder.VHDX dosyamızın yolunu gösteriyoruz ve next ile ilerliyoruz.

Bizleri karşılayan bu ekranımızda ise konfigürasyonları gerçekleştireceğiz. Ben sadece sunucumuz için password bilgisini veriyorum. Dilerseniz diğer konfigürasyonlarıda gerçekleştirebilirsiniz. Burada herhangi bir konfigürayon değişlikliği yapmadan ilerliyoruz.

Bu adımdan sonra kısa bir doğrulama yaptıktan sonra sunucumuzu yeniden başlatacağız.

Sunucumuzu yeniden başlattıktan sonra bir önceki adımda mount ettiğimiz sanal diskimiz ile açılan sunucumuza bağlanıyoruz. Sunucumuzun sistem diskini (“C:”) kontrol ettiğimizde C:\CloudDeployment isimli bir dosya olduğunu göreceksiniz.

Şimdi powershell ile C:\CloudDeployment\Setup klasörünün içerisinde bulunan InstallAzureStackPoC.ps1 isimli power shell scriptini çalıştıracağız.

Daha öncede belirttiğim gibi öncesinde karar vermemiz gereken ve daha sonra değiştiremeyeceğimiz kimlik doğrulama için Azure Active Directory servisini mi kullanacağız yoksa Active Directory Federation Servisi mi kullanacağız ? Bu adım son derece önemli söylediğim gibi daha sonra değiştiremeyeceğimiz bir adım olarak önümüzde durmakta. Ben kurulum için Azure Active Directory Servisini kullanacağım. Bunun iin Azure tarafında bir hesaba ihtiyacımız var. Bütün bunları hazırladıktan sonra kurulum işlemlerine başlayabiliriz.

Bunun için aşağıdaki komut setlerini kullanacağız.

cd C:\CloudDeployment\Setup

$adminpass = ConvertTo-SecureString “Local Server Pass” -AsPlainText -Force

$aadpass = ConvertTo-SecureString “AzureADPass” -AsPlainText -Force

$aadcred = New-Object System.Management.Automation.PSCredential (“Yenal@yenaltirpancieczacibasicom.onmicrosoft.com”, $aadpass)

.\InstallAzureStackPOC.ps1 -AdminPassword $adminpass -InfraAzureDirectoryTenantAdminCredential $aadcred -NatIPv4Subnet 172.16.254.0/24 -NatIPv4Address 172.16.254.134 -NatIPv4DefaultGateway 172.16.254.1

Yukarıda görmüş olduğunuz en son satırda IP adreslerinin bulunduğunu görüyorsunuz. Makalemizin başında gereksinimlerden bahsederken DHCP servisinin kurulum için önerilen bir servis olduğunu fakat zorunlu olmadığından bahsetmiştim. Eğer DHCP servisini kullanmayacak isek bir takım parametrelere ihtiyacımız olduğundan da bahsetmiştim. İşte kullanacağımız parametreler son satırda görülmektedir.

Peki burada bu IP adresini neye göre veriyoruz ve hangi sunucu kullanacak? Burada belirttiğimiz 172.16.254.131 IP adresi internete çıkan bir IP adresidir. Microsoft Azure Stack dağıtımı sonrasında bizlere hazır olarak kurulum ve konfigürasyonları yapılmış olan NAT sunucumuzun kullanacağı IP adresidir.

Powershell kurulum scriptini çalıştırdıktan sonra donanımıza da bağlı olarak 4 ya da 5 saatlik kurulum süreci sonrasında ortamımız hazır olacaktır.

Kurulum sonrasında admin ve tenant portallerine aşağıda belirtilen linkler üzerinden erişimleri sağlayarak kullanıma başlayacağız.

Kullanıcı portali için https://portal.local.azurestack.external/ admin portali için

https://adminportal.local.azurestack.external/ adresini kullanacağız. Kurulum sonrasında Microsoft Azure Stack mimarisi aşağıdaki şekilde oluşacaktır.

Microsoft Azure Stack Mimarisi

Kurulum sonrasında yine aşağıdaki tabloda kurulumları ve konfigürasyonları tamamlanmış sanal sunucular ve bu sunucu rollerinin neler olduğunu görebilirsiniz.

Daha detaylı bilgi için aşağıdaki linkten faydalanabilirsiniz.

https://docs.microsoft.com/sl-si/azure/azure-stack/azure-stack-architecture

NameDescription
AzS-ACS01Azure Stack storage services.
AzS-ADFS01Active Directory Federation Services (ADFS).
AzS-BGPNAT01Edge router and provides NAT and VPN capabilities for Azure Stack.
AzS-CA01Certificate authority services for Azure Stack role services.
AzS-DC01Active Directory, DNS, and DHCP services for Microsoft Azure Stack.
AzS-ERCS01Emergency Recovery Console VM.
AzS-GWY01Edge gateway services such as VPN site-to-site connections for tenant networks.
AzS-NC01Network Controller, which manages Azure Stack network services.
AzS-SLB01Load balancing multiplexer services in Azure Stack for both tenants and Azure Stack infrastructure services.
AzS-SQL01Internal data store for Azure Stack infrastructure roles.
AzS-WAS01Azure Stack administrative portal and Azure Resource Manager services.
AzS-WASP01Azure Stack user (tenant) portal and Azure Resource Manager services.
AzS-XRP01Infrastructure management controller for Microsoft Azure Stack, including the Compute, Network, and Storage resource providers.

Yazan: Yenal TIRPANCI (Eczacıbaşı Bilişim)

Yazının tüm hakları Eczacıbaşı Bilişim’e attir, Creative Commons tarafından telif hakları lisanslanmıştır, Eczacıbaşı Bilişim’in izni ve onayı olmadan yayınlanamaz. Bilgi için ebi.iletisim@eczacibasi.com.tr ile iletişime geçebilirsiniz.

IT Çalışanları olarak insanların işlerini kolaylaştırıp, raporlanabilir verimli sistemler oluşturarak sürekli sistemleri ve geleceği iyileştiriyoruz. Bu felsefede birbirimize çok ihtiyacımız var. IstanbulFlow topluluk bilinci çerçevesinde sürekli iyileştirme felsefesi olan KAIZEN e inanan insanların bir araya geldiği herkese açık bir ortam.

Dijital Transformasyon
İş akış otomasyon ve doküman yönetim sistemleri, her şirketin olmazsa olmaz parçalarından bir tanesi. Bir çok müşterimizde başladığımız noktalarda karşı çıkılan bu dönüşüm sonraki aylarda vazgeçilmez faydaları sayesinde en küçük iş parçalarını bile iş süreçlerine dönüşmesini sağlamıştır. Değişimin mevcut sistemlere yakınlığı ve kullanıcı etkileşimi ile birlikte nasıl daha iyi bu geçişi sağlayabiliriz, bunu konuşuyoruz.

Bilişim Yönetimi Üzerine
İş Akış Otomasyon araçları, wiki yardımı ile düşük seviye kod bilgisi gerekmeden geliştirme yapabilir, yaşayan dokümantasyon oluşturabilir ve versiyonlama ile eski sistemlere etki yaratmadan süreçlerinizi sürekli iyileştirebilirsiniz. Otomasyon araçları ile alınan ürün üzerinde sınırsız süreç dönüşüm, değer üretebilirsiniz. Biz 15 yıldır buna inanıyoruz ve bu düşünceyi ve sistemi daha da geliştirmek istiyoruz. Bilişim çalışanları olarak maksimum değeri en az giderle nasıl çıkarabiliriz? bunun üzerine odaklanacağız.

Kaos Savaşçıları
Kendimize verdiğimiz isim bu, satış kaygımız yok. Sadece daha iyi yönetim sistemine değil, daha yüksek değere ve yaklaşıma nasıl ulaşabileceğimizin peşindeyiz. Sistemleri analiz ediyoruz, kaosa belirsizliğe tekrarlayan işlere, raporlanamayan sistemlere ve israfa savaş açıyoruz. Yöneticiler, Yazılım Geliştiriciler, Analistler, Çözüm Mimarları ve Proje yöneticileri ile toplanarak daha iyi yaklaşımları 2 haftalık periyotlarla gözden geçiriyoruz.

Başarı Hikayeleri
Teoriler üzerine fazla konuşmak ve ütopya içerisinde yaşamak yerine pratik başarı hikayeleri ile gerçekleşen en iyi pratikler üzerine konuşacağız. Bu örnekler içimizde yaşadığımız, çözüme ulaştırdığımız, çıkardığımız kazançlar ve değer üzerine olacak.

Entegrasyon
Zamanla birbirine entegre olmuş sistemler bizi şaşırtıyor. E-posta ile başlatan süreçler, IOT ile entegre akışlar, Skype, Messenger BOT ları ile anlık cevap veren akış üreten sistemler, sosyal ağlarla entegre öğrenme sistemleri ve tüm diğer servisler. İşleri tek bir noktadan yürütmek, tekrarlayan işi önleyerek akıllı sistemler geliştirmek yaşanabilir iş ortamları ve değer yaratacak sistemler için önemli. Entegrasyon üzerine farklı gruplarla çalışan kişilerin görüşleri önemli ve bu konu üzerine sıklıkla duracağız.

Veri Cenneti
Kaç tane e-posta attın? Yöneticiye veya iş arkadaşına kaç kez hatırlatmak zorunda olduğun işlerin oldu? İnsan beyni aldatılmaya ve farklı zamanlarda farklı şekilde davranmaya müsait, kişilerin inisiyatifi yerine işlerin bir sisteme bırakılması gerekmekte. Süreçleri sisteme oturmuş ortamlarda müthiş bir gözlem verisi bulunuyor. Bu veriler bize verimsizliği açıkça gösteriyor. Veriler üzerine uzun uzun konuşacağız çünkü kullanıcı davranışlarını ve sistemi en iyi soğuk rasyonel değerler anlayabiliriz.

Her iki haftada bir Perşembe günleri toplanıyoruz. 4.toplantımız yaptık bile!

Sayfamız burada;

Istanbulflow

Istanbul, TR
225 Automator

İş süreçleri otomasyon süreçleri, dijital transformasyon adımları, İş süreçleri yönetimi ve değişen iyileştirme adımları, var olan BPM uygulamarını inceleme ve süreçler gelişt…

Next Meetup

Elektronik İmza ve Blockchain Altyapısı ile benzerliği

Thursday, Nov 2, 2017, 7:00 PM
20 Attending

Check out this Meetup Group →

Yazan: Sinan TECER (Eczacıbaşı Bilişim)

Bilindiği üzere 1995 yılından sonra internet kullanımının artmasıyla ortaya çıkan, ticaretin elektronik ortamda yapılması kavramı kısaca e-ticaret olarak adlandırılır ve teknolojinin hızlı gelişimiyle birlikte e-ticaret başlı başına bir sektör haline geldi. E-ticareti bu kadar önemli kılan nedenler arasında; şirket ile hedef kitlesi arasındaki doğrudan ilişki sağlaması, pazarlamacılara istedikleri bilgileri sunması, hızlı ve düşük maliyetli olması ve tüm bunların elektronik ortamda yapılıyor olması sayılabilir. Bununla birlikte normal koşullarda 10 yıl alan markalaşma süreci e-ticaret ile birlikte 2 yıl gibi kısa bir süreye inmiş durumdadır. Bu durum “Dünyanın en büyük 500” şirketi arasında birkaç yıl önce kurulmuş birçok şirket bulunmasını sağlamaktadır. Ayrıca e-ticaretin dünya üzerinde 2 trilyon dolar ciroyu aşması birçok firma gibi SAP’nin de dikkatini çekti ve Hybris’i satın alarak bünyesine kattı. Gartner ve Forrester‘a  göre bu satın alma ile SAP dünyada lider konuma yerleşti.

SAP’nin tanımı ile “Hybris dünya çapında işletmelerin, teknolojinin temas ettiği her noktada, kanal ve cihazlar üzerinden daha fazla mal ve hizmet satmasına yardımcı olur”. Hybris ile bayileriniz(B2B) ve müşterilerinizle(B2C) olan e-ticareti ayrıca dijital pazarlama faaliyetlerinizi ve geleneksel pazarlama faaliyetlerinizi web, mobil, mağaza, çağrı merkezi ve sosyal medya gibi tüm kanallar üzerinden yönetebilirsiniz.

SAP Hybris, e-ticaret altyapısı sunmasının yanı sıra; ürünlerin, katalogların, promosyonların tanımlandığı, stokların takip edildiği, web ara yüzlerinin tasarlandığı, çoklu kanalların kullanıldığı, uçtan uca hizmet veren bir platformdur.

Peki nedir bu kullanınlan Omni-Channel(çoklu kanal) ? Omni-Channel(çoklu kanal) pazarlama, edinilen alışveriş deneyiminin kusursuz, entegre ve tutarlı olması için müşterinin gözünden gözlem yapmak ve bu deneyimin tüm kanallarda yönetilmesi anlamına geliyor. Omni-Channel, tüketicilerin alışveriş için önce bir kanaldan başladığını, ardından diğer kanalları kullanarak işlemi tamamladığı varsayıyor.

Ayrıca SAP ERP sistemleriyle tam uyumlu çalışma özelliğiyle SAP kullanıcılarının e-ticaret sistemine geçmesinde çok büyük bir kolaylık sağlıyor. Bunun yanında SAP Hybris i kullanmak için SAP ERP programlarınızın olması zorunlu değil ayrı bir modül olarak satın alınıp sadece e-ticaret için kullanılabilir.

Hybris’i diğer e-ticaret platformlarından ayıran özellikleri :

  • Eşsiz sergileme kabiliyeti ile iş kullanıcıları güçlendirir, satışı maksimize eder
  • En iyi uygulama hızlandırıcı ile maliyetleri düşürür, harcanan zamanı azaltır
  • Yerli web içerik yönetimi ile uygulama ve bakım maliyetlerini azaltır
  • REST & Java API’leri ile tüm sistemlere sorunsuz bağlanır
  • Kapsamlı B2B(business to business) işlevselliği
  • Uzantılar ve entegrasyonlar ile çevik bir yapı sağlaması
  • Birden fazla mağaza için tek yönetici paneli kullanımı
  • Birden fazla web sitesi desteği
  • Mimari ve teknoloji olarak her an büyümeye ve geliştirilmeye uygun

Sonuç olarak Hybris’in kullandığı omni-kanal yapısı ile hedef kitleniz nerede olursa olsun onlara ulaşmanızı ve hızla değişen e-ticaret dünyasında her kanalda müşterilerinize en doğru ve anlamlı deneyimler yaşatmanızı sağlıyor.

word image

Yazan: Murat ALEV (Eczacıbaşı Bilişim)

Merhaba,

Bugün iş hayatımızda sıklıkla başımıza gelebilecek bazı istenmeyen olayları engellemek adına MicroStrategy Command Manager Script’lerini kullanarak nasıl önlem alabileceğimizi anlatmaya çalışacağım. Aslında konuyu bir senaryo üzerinden incelemek daha net anlamamızı sağlayacak.

Gece kaynak sistemden ETL ile SQL tarafına akan günlük satış sipariş verilerimiz var ve ETL tamamlandıktan sonra veri MicroStrategy tarafında Intelligent Cube’lere alınıyor ve gece tüm bu süreç tamamlandıktan sonra sabah 08.30’da üst yönetime MicroStrategy’den günlük satış sipariş verilerini içeren kritik mailler gönderiliyor.

Kritik olan konu burada ne dediğinizi duyar gibiyim. O zaman sorunuza kısaca yanıt verelim. Eğer kaynak sistemden gelen veriler yanlışsa ya da gece sistemlerde bir kesinti yaşanmışsa ve akabinde yönetime eksik veri içeren mailler giderse bununla ilgili sıkıntılar yaşamanız kaçınılmaz olacaktır.

Burada işte yapmamız gereken şey verinin kaynak sistemden yanlış gelip gelmediğini anlamak ve eğer etl job adımlarınızı log tablonuzda tutuyorsanız joblarınızın düzgün çalışıp çalışmadığını loglardan kontrol etmektir.

Teori kısmını geçip hemen işi pratiğe dökelim. Bunun için bir tane C# Console uygulaması yazacağız. Bu uygulama ile hem kaynak sistemden gelen verileri ve hem de bizim ETL joblarımızın doğru çalışıp çalışmadığını log tablosuna bakarak kontrol edeceğiz. Eğer kaynak sistemden gelen verilerde veya joblarımızda bir problem varsa üst yönetime mail gitmeden önce sql tablolarındaki verileri silip MicroStrategy Intelligent küplerini boş olarak güncelleyeceğiz. Böylece küplerin içinde boş veri olduğunda MicroStrategy mail göndermeyecektir. MicroStrategy ayarlarında veri yoksa mail gönderme şeklinde bir seçenek bulunmaktadır. Biz de tam olarak bunu kullanacacağız.

Deliveries – Error Handling

Peki tüm bunları nasıl yapacağız?

Bunun için yemekte (C# Console Application) kullanacağımız malzemeler:

  • 1 Adet MicroStrategy Command Manager Script
  • 1 Adet ETL Log Tablosu
  • 1 Adet Kaynaktan Akan Ham Verinin Tutulduğu Tablo
  • 1 Adet Sunucuda Tanımlı Mail Hesabı

C# uygulamamızda her bir bölümün ne iş yaptığını kod içinde yorumlarda belirttim. Beyninizin yanmasını istemiyorsanız kod içideki yorumları okumanızı şiddetle salık veririm xD

1using System;
2using System.Collections.Generic;
3using System.Data;
4using System.Data.SqlClient;
5using System.Globalization;
6using System.Linq;
7using System.Net.Mail;
8using System.Text;
9 
10namespace SE_DATA_CHECK
11{
12class Program
13{
14static void Main(string[] args)
15{
16try
17{
18//Dünün tarihini DD.MM.YYYY formatında verir.
19string bir_gun_onceki_tarih = DateTime.Now.AddDays(-1).ToShortDateString();
20 
21//Bugünün tarihini DD.MM.YYYY formatında verir.
22string bugunku_log_tarih = DateTime.Now.AddDays(0).ToShortDateString();
23 
24//Bugünkü tarihin gün ismini İngilizce olarak verir.
25string gun = System.DateTime.Now.DayOfWeek.ToString();
26 
27//scp uzantılı dosyamızda bulundan MicroStrategy Command Manager scriptlerimizi çalıştırmak için aşağıdaki yapıyı kullanıyoruz.
28//Bu yapıyı daha sonra cmdmgr.exe üzerinden çalıştırarak scriptlerimiz içinde bulunan trigger'ları tetikleyeceğiz.
29//Trigger'lar da kendilerine bağlı olan MicroStrategy Intelligent Cube'leri çalıştıracak.
30string cmd = "-n \"YOUR_MSTR_SERVER_NAME\" -u YOUR_MSTR_USERNAME -p YOUR_MSTR_PASSWORD -f \"E:\\JOBS\\SE_DATA_CHECK.scp\" -o \"E:\\JOBS\\SE_DATA_CHECK.out\"";
31 
32//Kaynak sistemden bize akan verilerden günlük satış sipariş verilerini alıyoruz.
33DataTable DEGER = GetDataTable("SELECT ISNULL(SUM(ISNULL(Net_Sales, 0)) / 1000,0) AS SALES_DEGER,ISNULL(SUM(ISNULL(Order_Amount, 0)) / 1000,0) AS ORDER_DEGER FROM SATSIP_DAILY WHERE Calendar_Day_DESC='" + bir_gun_onceki_tarih + "'");
34 
35//Bugün içinde oluşan log kayıtlarının sayısını öğreniyoruz. Eğer 8 kayıt oluşmuşsa başarılı demektir.
36//8'in altında bir kayıt varsa job patlamıştır.
37DataTable LOG = GetDataTable("SELECT COUNT(*) AS LOG_DEGER FROM DW_LOG WHERE CONVERT(VARCHAR,LOG_DATE,104)='" + bugunku_log_tarih + "'");
38 
39//Bu kısım cmdmgr.exe (MicroStrategy Commang Manager) uygulamasını Command Prompt üzerinde çalıştırmak için gereklidir.
40System.Diagnostics.Process process = new System.Diagnostics.Process();
41System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
42startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
43startInfo.FileName = "cmdmgr.exe";
44startInfo.Arguments = cmd;
45process.StartInfo = startInfo;
46 
47//Ham verilerin olduğu tablolardan sorguladığımız satış ve sipariş değerlerini double veri tipine,
48//log sayısını ise int veri tipine çeviriyoruz.
49double SALES_DEGER = Convert.ToDouble(DEGER.Rows[0]["SALES_DEGER"]);
50double ORDER_DEGER = Convert.ToDouble(DEGER.Rows[0]["ORDER_DEGER"]);
51int LOG_DEGER = Convert.ToInt32(LOG.Rows[0]["LOG_DEGER"]);
52 
53//Pazartesi dışındaki günlerde BW verileri ve MSTR log kayıtları beraber kontrol ediliyor.
54if (gun != "Monday")
55{
56//Eğer gün içinde oluşan log sayısı 8'den küçükse veya satış değeri 0 ile 1 arasındaysa
57//veya sipariş değeri 0 ile 1 arasındaysa veya satış değeri 0'dan küçükse veya sipariş değeri 0'dan küçükse;
58//MSTR küplerinin baktığı FACT_SATSIP_DAILY tablosundaki verileri sil ve MSTR scriptini process.Start() ile çalıştır.
59//Script MSTR'da tanımlı trigger'ları tetikleyecek ve bu trigger'a bağlı MSTR küpleri de FACT_SATSIP_DAILY tablosu ile boş güncellenecek.
60//Ardından ilgili sistem yöneticilerine bilgilendirme maili gönderilecek.
61//Uygulamayı sonlandır.
62if ((LOG_DEGER < 8) || (SALES_DEGER >= 0 && SALES_DEGER <= 1) || (ORDER_DEGER >= 0 && ORDER_DEGER <= 1) || (SALES_DEGER < 0) || (ORDER_DEGER < 0))
63{
64SqlCommand TruncateCommand = new SqlCommand("TRUNCATE TABLE FACT_SATSIP_DAILY", Connection());
65TruncateCommand.ExecuteNonQuery();
66process.Start();
67SendMail("YOUR_MAIL_ADDRESS""YOUR_MAIL_ADDRESS""YOUR_SUBJECT""YOUR_MESSAGE");
68Environment.Exit(0);
69}
70}
71 
72//Pazartesi günlerinde sadece MSTR log kayıtları kontrol ediliyor.
73else
74{
75//Eğer gün içinde oluşan log sayısı 8'den küçükse;
76//MSTR küplerinin baktığı FACT_SATSIP_DAILY tablosundaki verileri sil ve MSTR scriptini process.Start() ile çalıştır.
77//Script MSTR'da tanımlı trigger'ları tetikleyecek ve bu trigger'a bağlı MSTR küpleri de FACT_SATSIP_DAILY tablosu ile boş güncellenecek.
78//Ardından ilgili sistem yöneticilerine bilgilendirme maili gönderilecek.
79//Uygulamayı sonlandır.
80if (LOG_DEGER < 8)
81{
82SqlCommand TruncateCommand = new SqlCommand("TRUNCATE TABLE FACT_SATSIP_DAILY", Connection());
83TruncateCommand.ExecuteNonQuery();
84process.Start();
85SendMail("YOUR_MAIL_ADDRESS""YOUR_MAIL_ADDRESS""YOUR_SUBJECT""YOUR_MESSAGE");
86Environment.Exit(0);
87}
88}
89}
90 
91//Uygulamamızda herhangi bir hata oluştuğunda yetkili kişiler mail ile bilgilendirilecektir.
92catch (Exception ex)
93{
94SendMail("YOUR_MAIL_ADDRESS""YOUR_MAIL_ADDRESS""YOUR_SUBJECT", ex.Message);
95Environment.Exit(0);
96}
97 
98//Uygulama başarıyla çalışsa bile yetkili kişiler mail ile bilgilendirilecektir.
99finally
100{
101SendMail("YOUR_MAIL_ADDRESS""YOUR_MAIL_ADDRESS""YOUR_SUBJECT""YOUR_MESSAGE");
102Environment.Exit(0);
103}
104}
105 
106//SQL Server tanımlarımızı burada yapıyoruz.
107//Bu fonksiyon bizi ilgili SQL Server sunucusuna bağlayacak ve erişim izni sağlayacaktır.
108public static SqlConnection Connection()
109{
110SqlConnection con = new SqlConnection(@"Server=SQL_ADDRESS; Database=DB_NAME; User ID=SQL_USERNAME; Password=SQL_PASSWORD; Connection Timeout=0; Max Pool Size=500");
111con.Open();
112return con;
113}
114 
115//GetDataTable fonksiyonumuza bir sql query yolladığımızda sonucu bize datatable olarak dönüyor.
116//Sonrasında datatable'dan aldığımız sonuçla istediğimiz gibi oynayabiliriz.
117public static DataTable GetDataTable(string sql)
118{
119DataTable dt = new DataTable();
120 
121SqlDataAdapter da = new SqlDataAdapter(sql, Connection());
122da.Fill(dt);
123Connection().Close();
124da.Dispose();
125 
126return dt;
127}
128 
129//Mail göndermek için aşağıdaki SendMail fonksiyonunu kullanıyoruz.
130//Bu fonksiyonun aldığı değerler kimden,kime,konu,mesaj.
131//Eğer kendi ağınızda kullanacaksınız SMTP adresini girmeniz yeterli olacaktır.
132//Mail göndermeye yetkiniz yoksa IT ekibinizden yetki almanız gerekebilir.
133public static void SendMail(string from, string to, string subject, string message)
134{
135MailMessage mail = new MailMessage();
136mail.From = new MailAddress(from);
137mail.To.Add(to);
138mail.Subject = subject;
139string link = @"<img />";
140mail.Body = @";Sayın Yetkili,
141 
142" + message + "
143 
144Bilginize,
145 
146" + link + "
147 
148----------------------------------------------------
149Bu e-posta mesaji ve ekleri sadece gonderildigi kisi veya kuruma ozeldir.
150Dogru aliciya ulasmamis olmasi halinde, bu mesajin baska bir aliciya yonlendirilmesi, kopyalanmasi veya kullanilmasi yasaktir.
151----------------------------------------------------
152This e-mail and any attachments transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed.
153If you are not the intended recipient you are hereby notified that any forwarding, copying or use of the information is prohibited.</font>";
154mail.IsBodyHtml = true;
155SmtpClient client = new SmtpClient("YOUR_SMTP_ADDRESS");
156client.Send(mail);
157}
158}
159}

Bu kodla hem sql’e sorgu atabilecek hem de gelen sonuçlara göre belli koşullarda MicroStrategy Command Manager scriptlerinizi çalıştırabileceksiniz.

Siz burada if koşullarını istediğiniz gibi kendinize göre özelleştirebilirsiniz.

Bu kodu T-SQL ile de yazabilirdik ancak SQL Server ile MicroStrategy Command Manager aynı sunucu üzerinde bulunmak zorunda olduklarından böyle yapmadık.

Bu senaryoda SQL Server ve MicroStrategy farklı sunucularda olduğundan C# Console uygulaması yazmayı tercih ettik.

Kodunuzu Visual Studio’da hatasız bir şekilde derledikten sonra Görev Zamanlayıcı’sında günlük görevler oluşturabilirsiniz.

Görev Zamanlayıcısı

Özetle yukarıdaki koşullarınıza göre herhangi bir sorun oluştuğunda MSTR küpleri boş olarak güncelleyecek ve üst yönetime mail göndermeyecektir.

Yazan: Onur YURTSEVER (Eczacıbaşı Bilişim)

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 çokca çı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 bir takı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.

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

Gelen ekranımızda Transit ismini vererek ilerliyoruz.

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.

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

Ö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.

Transit_IPPool isimlendirmizi yapıyor ve next ile ilerliyoruz.

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

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.

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

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

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ımalamalarımızı gerçekleştireceğiz. Bunun için:

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.

PrivateVIP isimlendirmemizi yaparak ilerliyoruz.

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.

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

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

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

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

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

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.

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

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.

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.

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

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.

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

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:

İsimlendirmemizi PublicVIP_IPPool vererek ilerliyoruz.

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

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.

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

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

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 serivs templatemizi import ederek dağıtıma başlayabiliriz.

SDNV2 SLB Dağıtımı :

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

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 mizi import ediyoruz.

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

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

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.

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

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.

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

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.

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.

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 labaratuvar 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ı gerekleş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.

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.

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

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

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

Burada load balancing metodumuzu belirleyeceğiz. Yapımıza en uygun ya da ne şekilde hizmet vermemizi istiyor isek ona görer 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 metod, 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 metodları tercih etmekte fayda vardır.

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

Ö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.

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.

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ürasyonumuzuda tamamlamış olduk.

Yazan: Yenal TIRPANCI (Eczacıbaşı Bilişim)

Software Define Networking makalemizin üçüncü serisinde Network Controller servisinin dağıtımı ve network virtulazation testlerini gerekleştireceğiz. Bunun için birinci makalemizde belirttiğimiz ön gereksinimlerimizden olan Network Contoller template’ni download etmemiz gerekmekte. Bunu aşağıda belirttiğim adres üzerinden indirebiliriz.

Bunun için ;

https://github.com/Microsoft/SDN adresine girerek aşağıdaki ekran görüntüsünde de göreceğiniz Download ZIP butonunu kullanarak alabilirsiniz.

Burada indireceğimiz dosya içerisinde bulunan scriptler vasıtası ile birinci makale serimizde de belirttiğimiz ve gerçekleştirdiğimiz adımları indirmiş olduğunuz dosya içerisinde yer alan powershell scriptleri ile de gerçekleştirebilirsiniz.

Burada ilgili dağıtım işlemini gerçekleştirmeden önce bir adet Windows Server 2016 imaj dosyasına ihtiyacımız bulunmakta. Bu imaj dosyasını (VHD,VHDX) System Center Virtual Machine Manager 2016 altında bulunan Library’e import edeceğiz. Oluşturacağımız Windows Server 2016 imajının güncel updateleri içerdiğinden emin olarak ilerlemekte fayda bulunmakta.

Library tabında bulunan SDNVMM.ebitest.local seçimini yapıyorum ve yukarıdaki barda bulunan Import Physical Resource diyerek import işlemine başlıyoruz.

Add Resource diyerek daha önce oluşturmuş olduğum imajı seçiyorum. Ardından Browse seçimini yaparak VMM Library altında nereye import edeceğimizi beliyor ve Import işlemini başlatıyorum.

Import işlemimiz tamamlandıktan sonra Network Controller dağıtımını sırasında ihtiyaç duyacağımız Self Signed sertifikamızı oluşturacağız. Bunun için aşağıdaki komut setini çalıştırarak sertifikamızı oluşturacağız.

New-SelfSignedCertificate -KeyUsageProperty All -Provider “Microsoft Strong Cryptographic Provider” -FriendlyName “SingleNodeNC” -DnsName @(“SingleNodeNC.ebitest.local”)

Oluşan sertifikamızın hem PFX hem de CER uzantılı halini export etmemiz gerekecek.Bununla birlikte Trusted Root Certification altında bulunan Active Directory sertifikamızıda CER uzantılı olarak export edeceğiz. Bunun için MMC konsol üzerinden gerçekleştireceğim.

Export işlemlerinden sonra elimde üç adet sertifika olacak. Bu sertifkalar Self signen oluşturduğumuz SingleNode isimli pfx ve cer uzantılı sertifika ve Active Directory Root sertifikası olan yine CER uzantılı sertifika dosyamız olacaktır.

Sertifika işlemleri tamamladıktan sonra sıra Github üzerinden indirmiş olduğumuz dosyaların yine VMM Library altına import edilmesi bununla birlikte import edilen dosyaların altına ilgili sertifikaları atacağız.

Bunun için SDN klasörü altında bulunan VMM ve yine VMM altında bulunan ve dağıtımını yapacağımız Network Controller servisinin altında bulunan klasörleri VMM Library altına import edeceğiz.

Yukarıdaki ekran görüntüsünde görüldüğü üzere VMM Library paylaşımı altına ve root dizine ilgili dosyaları kopyaladım.

Aşağıda belirttiğim listede hangi sertifika dosyasını hangi alana bırakacağımızla ilgili bilgileri görebilirsiniz. Çünkü bu bilgileri birazdan template import ettikten sonra bizlerden bu bilgileri isteyecek ve ilgili bilgileri tanımlayacağız.

KaynakKaynak Açıklaması
WinServer.vhdOluşturmuş olduğumuz Windows Server 2016 Imaj dosyası
NCSetup.crGitHub üzerinden indirmiş olduğumuz ve upload ettiğimiz NCSetup.cr dosyasını VMM library altında göstereceğimiz kaynak.
ServerCertificate.crVMM Library altına yine GitHub altından indirmiş olduğumuz dizini göstereceğiz kaynak. Bu dizin altına Self Sign oluşturduğum ve pfx olarak export ettiğimiz seritifka dosyasını import edeceğimiz alanımız.
TrustedRootCertificateVMM Library altına yine GitHub altından indirmiş olduğumuz dizini göstereceğiz. Bu dizin altına Root sertifkamızı CER olarak export ettiğimiz sertifika dosyasımızı import edeceğimiz alanımız.
NCCertificate.crVMM Library altına yine GitHub altından indirmiş olduğumuz dizini göstereceğiz. Bu dizin altına yine Self Signed oluşturduğum ve cer olarak export ettiğimiz sertifika dosyasını import ettiğimiz alanımız.

Belirtilen bu adımları gerçekleştirdikten sonra artık Template dosyamızı Import edeceğiz. Ardından dağıtımını gerekleştireceğiz.

Library tabımızda bulunan Service Template seçimini yapıyoruz ve yukarıda görüldüğü üzere Import Template seçimini yapıyoruz.

İndirmiş olduğumuz SDN klasörü altında bulunan VMM\Template\NC isimli dizininde bulunan Network Controller Standalone Generation 2 VM.xml isimli service template ni seçiyorum. Burada ben PoC için kurulumları gerçekleştirdiğimden dolayı Standalone olan service template ni kullanıyorum. İsminden de anlaşılacağı üzere single node olarak network controller servisini oluşturacaktır. Eğer ki sizler Network Controller Production Generation 2 VM.xml isimli service template ni oluşturmuş olsaydınız üç node lu servis olarak kurulumları gerçekleştirilecekti. Production bir ortam olsaydı elbetteki bu seçimi yapacaktık. Çünkü SDNV2 ile ilgili makalemi okuduysanız bu rolün bizler için en önemli servis olduğunu anlamış olmalısınız. Bundan dolayı production ortamlarda üç node lu kurulum önerilmektedir.

Import işleminden sonra bizleri Referansları tanımlayacağımız ekranımız karşılanmakta. Yukarıda vermiş olduğum tabloya göre map işlemini burada gerçekleştirdim. Bu map tanımlamaları yaptıktan sonra Next ile ilerliyorum.

Yine bir özet ekranımız bizleri karşıladı. Import seçimini yaparak ilerliyoruz.

Service Template Import ettikten sonra üzerinde sağ klik yapıyoruz ve Configure Deployment diyoruz.

Name alanından servisimize bir isim veriyoruz. Bununla birlikte hangi host grubuna deploy edileceğini ve hangi interface kullanacağını tanımlıyor ve OK ile onaylıyorum.

Bizleri karşılayan bu ekran son derece önemlidir. Burada ilgili alanları doğru bir şekilde tanımlamaları yapmalıyız. Yoksa dağıtımına başlayacağımız servis hata verecektir.Burada en öneli alanlardan biri Local admin tanımıdır. Burada tanımlama yaparken .\Administrator şeklinde tanımlamanın yapılması önem arz etmektedir. Servis için oluşacak VM ismide oluşturduğumuz sertifika ile aynı olmalıdır. Yoksa bu kez sertifika ile sunucu isminin aynı olmamasından dolayı hata alacaksınız.Bu nedenle sertifika ile servis için kullanılacak sanal sunucu ismi SingleNodeNC.ebitest.local olmalıdır.

Bütün tanımlamalar bitirdikten sonra yine yukarıda göreceğinz ekran görüntüsünde önce Refresh Preview yapıyorum. Ardındanherhangi bir problem yok ise Deploy Service seçimini yapıyorum ve artık Network Controller Servisinin kurulumu başlamış olacak.

Kurulum tamamlandıktan sonra VM and Services tabında servisimizin başarılı bir şekilde kurulumun gerçekleştiğini gözlemleyebiliriz.

Kurulumun başarılı bir şekilde gerçekleştiğini gördükten sonra Network Servisi olarak SCVMM üzerinden ilgili tanımlamaları gerçekleştireceğiz.

Bunun için ;

Fabric altında Networking tabında bulunan Network Service sağ klik yapıyoruz ve Add Network Service seçimini gerçekleştiriyoruz.

İlk olarak bizleri karşılayan ekranımızı Next seçimin yaparak ilerliyoruz.

Servis isminin tanımı yapıyoruz ve Next ile ilerliyoruz.

Yukarıdaki ekran görüntüsünde de göreceğiniz üzere Manufacture olarak Microsoft Model olarak da Microsoft Network Controller seçimini yaparak Next ile ilerliyoruz.

Run as Account olarak daha nce servisimizi de kurarken tanımlanmış hesap bilgilerimizi seçerek next ile ilerliyoruz.

Bizleri karşılayan bu ekranımız son derece önemli. Burada tanımlayacağımız connection string değerlerini tanımlayacağız. Aşağıda göreceğiniz connection string değerlerini kendi ortamınıza ve yapınıza uygun şekilde düzenleyerek kullanabilirsiniz.

serverurl=https://SingleNodeNC.ebitest.local;SouthBoundIPAddress=192.168.50.30;servicename=NC

Bir önceki adımda tanımladığımız connection string içerisinde yer alan ve hostname SingleNodeNC sertifikamız ile aynı olduğundan emin olduktan sonra These certificates have been reviewed and can be imported.. seçimini yaptığımızdan emin olduktan sonra Next ile ilerliyoruz.

Information ekranımızda Scan Provider dedikten sonra Next ile ilerliyoruz.

Oluşturduğumuz servisin hangi host grupları altına hizmet vereceğini belirleyeceğimiz ekranımızda benim kurulum öncesinde oluşturmuş olduğum SDN Host grubunu seçerek ilerliyoruz.

Standart özet ekranımızı görüyoruz. Burada tanımladığımız değerlerde herhangi bir problem yok ise Finish diyerek servisimizi ekliyoruz.

Şimdi Network servisimizin dağıtımı ve tanımlanması sonrasında artık ihtiyacımız olacak olan ve ilk makalemizde belirttiğimiz HNV Provider network tanımımızı gerçekleştireceğiz.

Öncelikle HNV Provide network müz nedir ne için kullanılmakta bundan bahsedelim;

Hyper-V sanallaştırma networkü aslında. Bu network kartımız farklı ve çeşitli encapsulate edilmiş olan paketlerin Hyper-V hostları arasında taşınmasını gerçekleştirmektedir. Yani müşterilerim için oluşturulmuş networklerin ve bu networklerin atanmış olduğu Virtual Machine’ler arasında iletişimi sağlamaktadır. Bu network kartını yani sağlayıcı adresi olarak ilk makalemizde bahsetmiştim. Kısaca özetlemek gerekirse yine Virtual Machine’ler arasında başlayan paket encapsulate olur. Daha sonra bu encapsulate olmuş olan paketler PA adresinin bulunduğu network katmanına gönderilir ve bu encapsulate edilmiş paket farklı Hyper-V host üzerinde bulunan Virtual Machine’ e iletilir. İşte şimdiye kadarki kısımda bizler sadece Management networkü oluşturduk ve tanımlamalarımızı gerçekleştirmiştik. Bu adımda HNV network’ü oluşturacağız ;

HNV Network kartını oluşturmaya başlamak için yine SCVMM üzerinden ;

Öncelikle Fabric – Networking tabı altında bulunan Logical Network üzerinde sağ klik yaparak Create Logical Network seçimini gerçekleştiriyoruz.

HNV olarak isimlendirmemizi yaptıktan sonra Next ile ilerliyoruz.

Bizleri karşılayan bu ekranımızda Allow new VM networks created on this logical.. ve Managed by Microsoft Network… seçimlerini yaptığımıza dikkat ederek Next ile ilerliyoruz.

Burada ise Network Site tanımımızı gerçekleştireceğiz. Bunun içinde ilk planlamamızda belirlediğimiz HNV networkü için 10.10.56.0/24 subnetini kullanacağız. İlgili tanımlamalarımızı gerçekleştirdikten sonra Next ile ilerliyoruz.

Gelen özet ekranımızda Finish diyerek ilgili networkü oluşturmuş olduk.

Oluşturmuş olduğumuz HNV isimli Logical Network üzerinde sağ klik yaparak Create IP Pool seçimini yapıyoruz.

Yine isimlendirme ekranımızda ilgili tanımlamayı yaparak Next ile ilerliyoruz.

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

IP Address Range pencerimizde ben IP aralığını 10.10.56.30-10.10.56.254 arasında dağıtması istediğimizi belirterek Next ile ilerledik.

Gateway penceremizde ise 10.10.56.1 IP adresi tanımını yapıyor ve next ile ilerliyoruz.

DNS tanımlamamızı ise ortamımızda bulunan ve yine daha önce kurulumlarını yaptığımız 192.168.50.2 DNS IP adresimizin tanımını yaparak Next ile ilerliyoruz.

WINS ekranımızda herhangi bir değişiklik yapmadan ilerliyoruz. Sonraki ekranımız ise yine standart özet ekranımız. Bu ekranımızıda Finish diyerek sonlandırıyoruz.

Şimdi oluşturduğumuz HNV networkümüzü daha önce oluşturduğumuz Port Profile altına tanımlamamıza. Bunun için Port Profile altında oluşturmuş olduğumuz DSNPortProfile üzerinde sağ klik yaparak özelliklerine giriyoruz.

Gelen ekranımızda Network Configuration tabına geçerek oluşturmuş olduğumuz HNV Logical Netwokümüzün seçiyor ve onaylıyoruz.

Şimdi oluşturmuş olduğumuz servisimizin nasıl çalıştığını gözlemleyeceğiz. Bunun çin iki adet Virtual Machine ve Network oluşturacağız.

VMs and Service tabımızda bulunan VM Networks üzerinde sağ klik yaparak Create VM Network seçimini yapıyoruz.

Oluşturacağımız networkümüze Customer Network01 diyerek isimlendirmemizi yapıyoruz ve Next ile ilerliyoruz.

Gelen ekranımızda Isolate using Hyper-V Network virtualization checkbox seçiyor ve next ile ilerliyoruz.

Gelen ekranımızda iki adet subnet oluşturacağız. Bunlardan birincisi Red Network olarak isimlendiriyoruz ve Subnet olarak 10.51.51.0/24 tanımını yapıyoruz.

Bir diğer networkümüzünde ismine de Blue Network ismini veryoruz ,subnet olarak da 10.20.20.0/24 tanımını yapıyoruz ve Next diyerek ilerliyoruz.

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

Özet ekranımızıda finish diyerek sonlandırıyoruz.

Şimdi ise oluşturmuş olduğumuz network için IP havuzu oluşturacağız. Bunun içinde Customer Network01 isimli network üzerinde sağ klik ardından Create IP Pool seçimini yaparak ilerliyoruz.

Gelen isimlendirme ekranımızda RedNetwork_IPPool ve VM Subnet olarak Red Network seçimini yapıyor ve Next ile ilerliyoruz.

IP adres aralığı olarak 10.51.51.4-10.51.51.254 aralığını tanımlıyor ve next ile ilerliyoruz.

Gateway tanımını 10.51.51.1 olarak tanımlıyoruz ve Next ile ilerliyoruz.

DNS tanımını 8.8.8.8 olarak tanımlıyor ve next ile ilerliyoruz.

WINS tanımını yapmadan next ile geçiyoruz ve gelen özet ekranımızı Finish diyerek sonlandırıyoruz.

Red Network için oluşturmuş olduğumuz IP havuzumuzu yine aynı adımları Blue Network içinde uyguluyor ve Blue Network içinde IP havuzunu oluşturmalıyız.

Şimdi Networklerimizi oluşturduktan sonra VM’leri oluşturacağız.

SDN Host grubu üzerinde sağ klik yaparak Create Virtual Machine seçimini yapıyoruz.

Create the new virtual machine… seçimini yapıyor ve Next ile ilerliyoruz.

Sunucu ismi olarak Red Machine olarak tanımlıyoruz ve Next ile ilerliyoruz.

Hardware konfigürasyon ekranımızda Network Adapter tanımında Red Network tanımını yapıyor ve Next ile ilerliyoruz.

Oluşacak olan VM hangi host grup altında olacağının seçimini yapıyor ve next ile ilerliyoruz.

VM hangi host altında olacağını belirledikten sonra next ile ilerliyoruz.

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

Add properties ekranımızda da herhangi bir değişiklik yapmadan ilerliyor ve özet ekranımızda bulunan Create seçimini yaparak sanal sunucumuzu oluşturmaya başlıyoruz.

Aynı adımları Blue Machine ismi ie tekrarlıyacağız. Fakat farklı olarak network kartı olarak Blue Network seçimini oluşturacağımız yeni sanal sunucumuza atayacağız.

Sanal sunucularımızın kurulumları tamamlandıktan sonra şimdi testlerimi gerçekleştirmeye başlayabiliriz. Bunun için oluşturmuş olduğumu iki adet sanal sunucumuz ve bu iki sanal sunucumuza atadığımız iki farklı farklı subnet var.

Red Network : 10.51.51.0/24

Blue Network : 10.20.20.0/24

Red Machine isimli sunucumuzun aldığı IP adresini aşağıdaki ekran görüntüsünde de göreceğimiz üzere 10.51.51.5 adresini aldığını gördük.

Bir diğer sanal sunucumuz olan Blue Machine sunucumuzunda IP adresini teyit ediyoruz. Bunun için Blue Machine isimli sanal sunucumuz üzerinde ip konfigürasyonunu kontrol ettiğimizde 10.20.20.4 IP adresini aldığını yine aşağıdaki ekran görüntüsünde görebiliyoruz.

Şimdi bu iki farklı subnette bulunan sunucularımızın birbirleri ile haberleşmesini kontrol ediyoruz.

Gördüğümüz üzere blue machine isimli ve 10.20.20.0/24 subnetinde bulunan sunucumuz bir diğer 10.51.51.0/24 subnetinde olan sunucumuzla sorunsuzca haberleşebildiğini gözlemleyebiliyoruz. Bu durumda Network Controller servisimizin çalıştığını ve herhangi bir problem olmadığını söyleyebiliyoruz.

Burada oluşturmuş olduğumuz ikinici logical networkümüz olan HNV bu işi gerçekleştirdiğini söylemiştik. Provider adresimiz olan bu networkümüzün arka tarafta hangi IP adresleri ile eşleştirdiğinide gözlemlemek isterseniz. Hostlarınız üzerinde aşağıdaki komut setini çalıştırarak görebiliriz.

Get-PACAMapping komutu ile eşleşen Customer IP adresleri ile Provider Adreslerini gördükten sonra bu makale serisinide sonlanrıyoruz.

Yazan: Yenal TIRPANCI (Eczacıbaşı Bilişim)

Software Define Networking makalesinin ikinci serisinde Network Controller servisinin dağıtımı ve network virtulazation testleri gerekleştirilecektir. Bunun için birinci makalede belirtildiği gibi ön gereksinimlerden Network Contoller template download edilmesi gerekmektedir. Bu, aşağıda belirtilen adres üzerinden indirebilinir.

https://github.com/Microsoft/SDN adresine girdikten sonra, aşağıdaki ekran görüntüsünde de gösterilmiş olan Download ZIP seçilir.

İndirilecek dosya içerisinde bulunan script vasıtası ile birinci makale serisinde belirtilen ve gerçekleştirilen adımlar powershell scriptleri ile gerçekleştirilir.

Burada ilgili dağıtım işlemini gerçekleştirmeden önce bir adet Windows Server 2016 imaj dosyasına ihtiyaç bulunmaktadır. Bu imaj dosyası (VHD,VHDX) System Center Virtual Machine Manager 2016 altında bulunan Library’e import edilmesi gerekmektedir. Oluşturulacak Windows Server 2016 imajının güncel updatelerinin olmasına özen göstermekte fayda vardır.

Önce, Library tabında bulunan SDNVMM.ebitest.local seçimini ve sonra yukarıda barda bulunan Import Physical Resource seçimi yapılır.

Add Resource yapılarak daha önce oluşturmuş olan imaj seçilir. Ardından Browse seçimi yapılarak VMM Library altında nereye import edileceği belirlenip, Import işlemi başlatılır.

Import işlemi tamamlandıktan sonra, Network Controller dağıtımını gerçekleştirirken ihtiyaç duyulacak olan Self Signed sertifikası oluşturulur. Bunun için aşağıdaki komutu çalıştırılarak sertifika oluşturulur:

New-SelfSignedCertificate -KeyUsageProperty All -Provider “Microsoft Strong Cryptographic Provider” -FriendlyName “SingleNodeNC” -DnsName @(“SingleNodeNC.ebitest.local”)

Oluşan sertifikanın hem PFX hem de CER uzantılı hali export edilir. Bununla birlikte Trusted Root Certification altında bulunan Active Directory sertifikasını da CER uzantılı olarak export edilir. Bu işlem MMC konsol üzerinden gerçekleştirilir:

Export işlemlerinden sonra üç adet sertifikaya sahip olunur. Bunlar; Self signen oluşturulan SingleNode isimli pfx ve cer uzantılı sertifikalar ile Active Directory Root sertifikası olan yine cer uzantılı sertifikadır.

Sertifika işlemleri tamamladıktan sonra, Github üzerinden indirilmiş olan dosyaların, yine VMM Library altına import edilir ve bununla birlikte import edilen dosyaların altına ilgili sertifikaları atılır.

Bunun için, SDN klasörü altında bulunan VMM ve yine VMM altında bulunan ve dağıtımını gerçekleştireceğimiz Network Controller dizinine gidilir. Bu dizin altında bulunan klasörleri VMM Library altına import edilir.

Yukarıdaki ekran görüntüsünde görüldüğü üzere VMM Library paylaşımı altına ve root dizine ilgili dosyalar kopyalanır.

Aşağıda belirtilen listede, hangi sertifika dosyasının hangi alana bırakılacağı ile ilgili bilgiler yer alır. Çünkü bu bilgiler birazdan template import edildikten sonra bizlerden bu bilgiler istenir ve ilgili bilgileri böylelikle tanımlanır.

KaynakKaynak Açıklaması
WinServer.vhdOluşturmuş olduğumuz Windows Server 2016 Imaj dosyası
NCSetup.crGitHub üzerinden indirmiş olduğumuz ve upload ettiğimiz NCSetup.cr dosyasını VMM library altında göstereceğimiz kaynak.
ServerCertificate.crVMM Library altına yine GitHub altından indirmiş olduğumuz dizini göstereceğiz kaynak. Bu dizin altına Self Sign oluşturduğum ve pfx olarak export ettiğimiz seritifka dosyasını import edeceğimiz alanımız.
TrustedRootCertificateVMM Library altına yine GitHub altından indirmiş olduğumuz dizini göstereceğiz. Bu dizin altına Root sertifkamızı CER olarak export ettiğimiz sertifika dosyasımızı import edeceğimiz alanımız.
NCCertificate.crVMM Library altına yine GitHub altından indirmiş olduğumuz dizini göstereceğiz. Bu dizin altına yine Self Signed oluşturduğum ve cer olarak export ettiğimiz sertifika dosyasını import ettiğimiz alanımız.

Belirtilen bu adımlar gerçekleştirildikten sonra artık Template dosyası Import edilir. Ardından dağıtımı gerçekleştirilir.

Library tabındada bulunan Service Template seçimi ile yukarıda görüldüğü üzere Import Template seçimi yapılır.

İndirilmiş olan SDN klasörü altında bulunan VMM\Template\NC isimli dizininde bulunan Network Controller Standalone Generation 2 VM.xml isimli service template seçilir. Burada PoC için kurulumları gerçekleştirildiğinden, Standalone olan service template oluşturulur. İsminden de anlaşılacağı üzere single node olarak network controller servisini oluşturacaktır. Şayet, Network Controller Production Generation 2 VM.xml isimli service template oluşturulmuş olsaydı, üç node lu servis olarak kurulumlar gerçekleştirilirdi. Production bir ortam olsaydı elbetteki bu seçimi yapılabilinirdi. Çünkü, SDNV2 ile ilgili makaleyi incelediyseniz bu rolün en önemli servis olduğunu anlayabilirsiniz. Bundan dolayı production ortamlarda üç node lu kurulum önerilmektedir.

Import işleminden sonra, tanımlanacak referanslar ekranda görülür. Yukarıda verilmiş olan tabloya göre map işlemi burada gerçekleştirilir. Bu map tanımlamaları yaptıktan sonra Next ile ilerlenir.

Yine bir özet ekranı ile karşılaşılır. Import seçimini yaparak ilerlenir.

Service Template Import ediltikten sonra üzerinde sağ klik ile Configure Deployment yapılır.

Name alanından servise bir isim verilir. Böylelikle, hangi host grubuna deploy edileceğini ve hangi interface kullanacağını tanımlanır ve OK ile onaylanır.

Sonraki aşamadaki bu ekran son derece önemlidir. Burada ilgili alanları doğru bir şekilde tanımlamalar yapılmalıdır. Yoksa dağıtımına başlayacak servis hata verir. En öneli alanlardan biri Local admin tanımıdır. Burada tanımlama yapılırken .\Administrator şeklinde tanımlamanın yapılması önem arz etmektedir. Servis için oluşacak VM ismide oluşturulan sertifika ile aynı olmalıdır. Aksi takdirde sertifika ile sunucu isminin aynı olmamasından dolayı hataya yol açar. Bu nedenle sertifika ile servis için kullanılacak sanal sunucu ismi SingleNodeNC.ebitest.local olmalıdır.

Bütün tanımlamalar bitirildikten sonra, yine yukarıda görülen ekran görüntüsünde önce Refresh Preview yapılır. Ardından herhangi bir problem yok ise Deploy Service seçimi yapılır ve artık Network Controller Servisinin kurulumu başlamış olacaktır.