Author Archives: vmknowledge

Microsoft SQL Server 2017 on Linux AG Cluster Type None and External

Merhaba,

Bu makale Pacemaker ve Microsoft SQL Server on Linux yazılarının devamı niteliğinde olup, öncesinde bir göz atmanızda fayda olacağı düşüncesindeyim çünkü ilgili yazılardaki cluster kurulumu veMicrosoft SQL Server kurulumları bu makalede yok. Biraz uzun ama keyifli bir yazı olduğunu düşünüyorum.

Windows üzerindeki Availability Group (AG) yaratabilmek için Windows Server Failover Cluster (WSFC), Linux üzerinde ise WSFC’e karşılık Pacemaker kullanılıyor.

Windows üzerinde WSFC rolü çok büyük;  failover, health monitoring ve resource management dışında metadata bilgisinin ki içersinde hem WSFC konfigürasyonu, host edilen uygulama konfigürasyonu, node’lardaki değişikliklerin güncellenmesi ve bunların cluster’a yayılması gibi işlevleri var.

Linux üzerinde Microsoft SQL Server 2017 AG konfigürasyonu için iki tip cluster tipi mevcut, bunlardan biri EXTERNAL diğeri ise NONE. Aralarındaki fark ise kısaca ;

  • NONE, pacemaker ihtiyacı olmadan, sadece read scale ve manuel failover için kullanılıyor.
  • EXTERNAL, pacemaker kullanarak, otomatik failover sağlamak ve devamlığı artırmak için kullanılıyor.

Linux üzerinde WSFC servisi olmadığından bu konfigürasyon bilgileri (metadata) SQL Server instance tarafından master database’inde tutulmaya başlıyor buda bize herhangi bir witness olmadığında (file-share witness gibi) konfigürasyonun tutulacağı problem anında cluster’ın ayakta kalmasını sağlayacak üçüncü bir üyenin olması gerekliliğini yaratıyor, böylece bu üç node’a dağıtık bir metadata bilgisinin olmasını sağlıyor.

Yani kısacası, EXTERNAL tipinde yani Linux üzerinde otomatik failover olacak şekilde bir AG kuracaksanız, üç adet node’a ihtiyacınız var. Buda size üç adet lisans anlamına geleceğinden gözleriniz parlayabilir fakat şöyle bir hinlik yapılmış 🙂

Read the rest of this entry

Advertisements

Microsoft SQL Server 2017 on Linux

Merhaba,

Sonunda Active Directory olmadan, WSFC olmadan, Windows işletim sistemi olmadan Linux üzerinde MS SQL Server 2017 kurmak ve Availability Group oluşturmak mümkün sadece bazı desteklenmeyen özellikler ve servisler dışında ki MS SQL Server 2019 Preview’de gözüken bu engellerin çoğunun kalkıyor olması.

AD olmaması ve WSFC olmaması güzel fakat bir sonraki Availability Group kurulumlarında göreceksiniz ki bize ekstra birkaç kuruluma sebebiyet verecek.

Dikkat edilmesi gereken konulardan biri yedekleme, burada DPM gibi Veeam gibi Microsoft’un VSS’ini kullanan teknolojiler buraya uymuyor. Yedekleme metodlarınızı gözden geçirmelisiniz.

Screen Shot 2018-10-10 at 11.32.46

Read the rest of this entry

Pacemaker

Merhaba,

Pacemaker uzun süredir bakmak istediğim fakat bir türlü bakamadığım sonra biraz keepalived derken yollarımız iki yerde yine kesişti.

Bunlardan biri Microsoft SQL Server on Linux çünkü Linux üzerinde Microsoft Clustering Service diye birşey yok ve Microsoft SQL Server on Linux çıktığında Always ON desteği ile geldi, haliyle clustering servisi için birşey kullanılaması gerekiyordu, o da pacemaker oldu, diğeri ise Openstack Queen sürümü ile beraber gelen instance ha özelliği, SUSE gibi Openstack sürümlerinde controller node’lar üzerinde çalışan servisler için kullanılıyordu fakat artık instance’lar içinde kullanılabilir durumda.

Linux tarafında hatırlarım eskiden iki node, her biri iscsi ile storage’a bağlı, Redhat’in luci-ricci araçları vardı, nfs servisini ve iscsi üzerinden atanan lun’u bir node’a bağlar ve servis çalıştırılır sonra problem anında APC switch’ler vardı yönetilebilir bunlar fence işlemini gerçekleştirir aradan çıkan node’u kapatır sonra ilgili LUN diğerine bağlanır ve servis tekrardan çalışır hale getirilirdi.

Aslında çokta değişen birşey yok, mantık aynı, sadece belki daha iyisi yazılıyor veya farklı düşünceler ortaya atılıyor, belki pacemaker bile hikaye eğer container yapısında çalışıyorsanız K8s, Docker Swarm veya Mesos bunları container bazında kendine özgü bir şekilde ele alıyor, neyse konuya girelim …

Read the rest of this entry

vCloud Director Boş Tenant Sayfası ve No Datacenters are available hatası

Merhaba,

Büyük bir merakla beklediğim vCloud Director 9.1 ve yeni tenant GUI’yi sonunuda test edip kurma şansım oldu.

Sadece vCloud Director değil, vCenter 6.7 , vSphere 6.7 , NSX 6.4 , vSAN 6.7 hatırlama ve kurma şansıda verdi bana.

Kurulumu tamamlanıp ile organizasyonu açıp login olduğunuzda eksi ara yüzü görünce bir dumur oluyorsunuz.

Akabinde yeni tenant link’ini keşfediyorsunuz. https://v91.dorukcloud.com/tenant/vahrictest/

Sonra artçı depremler gibi , önünüze bomboş bir sayfa ve “No Datacenters are available” gibi bir ekranla karşılaşıyorsunuz.

Aklınız Public Address kısmı geliyor ayarlarda eskiden iki üç ayarın yapıldığı 🙂 şimdi ise http için ayrı https için ayrı hatta sertifika zincirini bile girmeniz gerekiyor.

Sertifikayı browser’ınızdan alıp x.509 formatında root, intermediate ve domain sertifikası ile beraber ilgili kısma eklemeniz gerekiyor….

Ama değdi , güzel olmuş …

Sağol Mert Erdil kardeşim uyardığın için , ilk post problemin kendisi gibi boş olmuş ….

VM

vCloud Director 9.1 SSL Değişikliği

Merhaba,

Aslında SSL sertifikasını değiştirmek gibi bir niyetim yoktu fakat yanlış sertifikayı yükleyince birazda keytool openssl komutlarını unutunca bir referans olsun istedim.

Her farklı version’da farklı komut ve şekiller var gibi  duruyor onun için dikkat ilgili komutlar çalıştırılan herşey vCloud Director 9.1’de test edilmiştir.

Yine eski sürüm dökümanlarında “/opt/vmware/vcloud-director/bin/configure” kullanılmış, burada gerek yok, asil işi yapan “cell-management-tool” uygulaması ve bu konu için alt komut “cell-management-tool certificates”

vCloud Director 9.1 halen JCEKS keystore tipini kullanıyor, dikkat ben atladım PKCS12’de destekliyordur diye 🙂 desteklemiyormuş.

Bu dökümanda sertifika isteği yaratmayı değil elimizde imzalı bir sertifika olduğunu düşünerekten hareket ediyorum.

Bu arada sslshopper’da ne güzel yazmış tüm gerekli komutları 🙂 https://www.sslshopper.com/article-most-common-java-keytool-keystore-commands.html

Yapıcağımız işlem üç adımdan oluşuyor

  1. Yeni bir keystore yaratıp sertifikaları buraya import edeceğiz
  2. Yeni keystore’u cell-management-tool eskinin yerine devreye alacağız
  3. Değişiklik devreye girsin diye vCloud Director cell’e ait servisi tekrardan çalıştıracağız

Elimizde bir pfx olduğunu düşünelim, önce ilgili private key’i elde edelim ki http ve consoleproxy için iki ayrı sertifika yaratalım kendisinden.

openssl pkcs12 -in elimizdeki.pfx -out certificate.cer -nodes

certificate.cer’i edit’lediğinizde “—–BEGIN PRIVATE KEY—–” ve “—–END PRIVATE KEY—-”  aralığını private.key dosyasına yazın.

Şimdi http ve consoleproxy için birer pfx yaratalım yeni alias’larıyla

openssl pkcs12 -export -in certificate.cer -inkey private.key -name http -out http.pfx -passout pass:pfx_i_koruyalim_şifresi

openssl pkcs12 -export -in certificate.cer -inkey private.key -name consoleproxy -out consoleproxy.pfx -passout pass:pfx_i_koruyalim_şifresi

Şimdi yeni bir keystore yaratalım bu sertifikalardan , elimizde ilgili sertifika sağlayıcının root ve intermediate sertifikalarınında hazır olduğunu düşünelim.

Dikkat sertifika yolu sizde farklı olabilir 😀
Burada yeni yarattığımız keystore “certificate3”

keytool -importkeystore -srckeystore /root/http.pfx -srcstoretype PKCS12 -destkeystore certificate3.ks -deststoretype JCEKS -deststorepass pfx_i_koruyalim_şifresi -srcalias http -destalias http -srcstorepass pfx_i_koruyalim_şifresi

keytool -importkeystore -srckeystore /root/consoleproxy.pfx -srcstoretype PKCS12 -destkeystore certificate3.ks -deststoretype JCEKS -deststorepass pfx_i_koruyalim_şifresi -srcalias consoleproxy -destalias consoleproxy -srcstorepass pfx_i_koruyalim_şifresi

Root sertifikasını store’a eklerken size buna güveneyim mi diye sorabilir yes deyip geçin şaşırmayın

keytool -importcert -alias root -file /root/addtrustexternalcaroot.crt -storetype JCEKS -keystore certificate3.ks -storepass pfx_i_koruyalim_şifresi

keytool -importcert -alias intermediate -file /root/comodorsaorganizationvalidationsecureserverca.crt -storetype JCEKS -keystore certificate3.ks -storepass pfx_i_koruyalim_şifresi

Eğer durum ne oldu diye görmek isterseniz

keytool -list -keystore certificate3.ks -storetype JCEKS -storepass pfx_i_koruyalim_şifresi

Intermediate olan sertifikayı silmek isterseniz

keytool -delete -alias intermediate -keystore certificate3.ks -storepass pfx_i_koruyalim_şifresi

Bu işlemden sonra ilgili keystore’un owner bilgilerini güncelleyelim

chown vcloud:vcloud certificate3.ks

Burada her bir alias için http ve consoleproxy ayrı ayrı sertifikayı değiştiriyoruz

/opt/vmware/vcloud-director/bin/cell-management-tool certificates -j -s /opt/vmware/vcloud-director/jre/bin/certificate3.ks -w pfx_i_koruyalim_şifresi

/opt/vmware/vcloud-director/bin/cell-management-tool certificates -p -s /opt/vmware/vcloud-director/jre/bin/certificate3.ks -w pfx_i_koruyalim_şifresi

Eğer hangisi consoleproxy hangisi http diye merak ettiyseniz 🙂

/opt/vmware/vcloud-director/bin/cell-management-tool certificates -h

Şimdi servisi kapayıp açalım ..

service vmware-vcd stop

service vmware-vcd start

Herşey yolunda olmalı ….

VM

Tum Standalone Docker ve Swarm Cluster’i Portainer ile Yonetmek

Portainer sitesinde aciklandigi gibi cidden cok basit ve guzel bir GUI ile tum Docker Host ve Swarm Cluster’inizi bir noktadan yonetmenize yariyor .

Portainer’i Docker Datacenter’in bir parcasi olan Universal Control Plane (UCP) ile karistirmamak lazim , benzer bilgiler saglamalarina ragmen DDC Docker Swarm’in uzerine ek getirdigi DTR (Docker Trusted Registry) ve HTTP Rounting Mesh ile gelen HTTP ve HTTPS isteklerini icerideki docker service’lere iletmekle gorevli ek bir bilesenle geliyor.

Portainer’i dilerseniz elinizdeki windows,linux,macosx uzerine calisan standalone bir docker daemon uzerinde veya docker swarm mode calisan bir cluster uzerinde calistirabilirsiniz . Swarm mode durumunda Portainer mutlaka manager role’u kosan node uzerinde calisiyor olmali.

Ilk kurulumda uzerinde kosturdugumuz standalone docker daemon veya Swarm mode manager inital endpoint olacak , daha sonra Protainer’i ayaga kaldirdigimizda daha fazla endpoint yani diger docker node’lari , swarm mode calisan clusterlari tek bir noktadan yonetebilirsiniz.

Standalone node icin asagidaki komutu calistirmak yeterli olacak

docker run -d -p 9000:9000 portainer/portainer

Benim elimde docker swarm mode calisan bir clusterim oldugundan asagidaki sekilde kurulumu yapiyor olacagim.

noroot@swarmmaster:~$ sudo docker service create –name portainer –publish 9000:9000 –constraint ‘node.role == manager’ –mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock portainer/portainer -H unix:///var/run/docker.sock

Bundan sonra http://<swarm_manager&gt;:9000 diyerek GUI’ye erisecegiz , ilk kurulum sonrasi size admin kullanicisina bir kullanici adi ve sifre atamanizi isteyecek ve daha sonradan login sayfasi gelecek buraya admin kullanici adi ve atadiginiz sifre ile login olun.

Not : Illa portainerin bir docker imaj olarak kurulmasina gerek yok ilgili linkde binary dosyalarini indiripde calistirabilirsiniz.

Iste karsinizda GUI ve sahip oldugumuz tanittigimiz endpoint uzerinden gordugumuz tum imaj , volume ve Container’lar mevcut

Simdi sanki cli’da docker node ls yapiyormus gibi sol menudeki Swarm tabina tiklayin

Ilgili nodeun uzerine tikladiginizda ;

  • Node Availability degelerini degistirebilir , ilgili nodeu clusterdan alabilir veya tekrardan devreye alabilir
  • Node label atayabilir
  • Swarm deyimiyle tasklari yani calisan containerlari gorebilirsiniz

Docker Swarm servislerini gorebilir , scale edebilir yeni servisler yaratabilirsiniz.

Portainer’in degisik ozelliklerinden biri size uygulama sablonlari sunmasi , su anda docker swarm uzerinde service olarak kurulum yapilamiyor ama standalone docker nodelar uzerinde listedeki Mongo, mysql , Elasticsearch , WordPress , Magento gibi uygulamalar kurulabiliyor. Linuxserver.io ilede bir isbirligi soz konusu.

Diger guzel bir ozellikte docker uzerine bir guvenlik katmani ekleyerek dogrulanmis kullanicilarin kendilerine ait olan kaynaklari yonetebiliyor olmalari. Burada su anlik cok genis bir opsiyon yok mesela RBAC gibi fakat farkli kullanicilar yaratip , bunlarla login olundugunda Private servis veya container’lar yaratabilyorsunuz , buda digerlerinin sizin yarattiginiz kaynaklara erisememsini sagliyor.

Guzel olmus , incelemeye kullanmaya deger GUI sevenler icin

Twitter uzerinden takip etmek icin ise @portainerio adresini takip edebilirsiniz.

VM

Labels Constraints Systemd Docker Secret

X firmasindayiz , firmanin bir IT ekibi var birde developer ekibi . X firmasi cok onemli bir yazilim gelistiriyor , tum ortam docker uzerinde kosuyor , microservice mimarisi mevcut, test staging ve production ortamlari var ve containerlari yonetmek icinde docker swarm mode kullaniliyor. (label,constraint anlatmak icin illa swarm mode gerekli degil, standalone docker daemon icinde ayni sey gecerli)

Soru :  Bu cluster’daki tum containerlarin uzerinde kostugu sanal ve/veya fiziksel makineler homojen mi olmali ? Cesitli gereksinimlerde dolayi farklilik gostermesi gereken container nodelari var midir veya olmalimidir ?

Cevap tabiki olmalidir , cluster icersinde birbirinde farkli isler kosan uygulamalar olabilir mesela biri cpu tabanli isler yaparken digeri daha cok memory ihtiyaci duyabilir , bazilari ssd gibi cok hizli disklerde kosmasi gerekirken , ayni uygulamanin gelistirmeleri ssd uzerinde olmayabilir veya verinin external bir storage sistemi uzerinde tutulmasi gereken bir container olabilir.

Diger guzel bir ornek ise arastiriken Couchbase blogunda buldum, Interstellar filmini seyredeniz var ise Cocuhbase tam size gore 🙂 Multidimensional Scaling sagliyormus kendileri , ilgili blokta Query gibi yusek CPU isteyen . index gibi ssd’e ihtiyac duyan bilesenlerini docker swarm uzerinde nasil farkli node’lar uzerinde kosturursunuz onu yazmis, gayet guzel. Fakat ilgili makale benim icin farkli seyleri aramama sebep oldu.

Read the rest of this entry

Yeni Baslayanlar Icin Windows Server 2016 Uzerinde Docker

Windows 10 ve Windows 2016 Server ile beraber Docker artik dogal olarak destekleniyor farkli bir sanallastirma yazilimina (virtualbox gibi) ihtiyac duyulmadan. Hatta Microsoft Docker On Windows degil, Docker artik Windows’un dogal bir parcasi olarak adlandiriyor.

Windows 10 development , Windows Server 2016’da production icin oneriliyor. Windows 10 kullanicilarinin Professional veya Enterprise (Anniversary Edition) kullanmalari gerekiyor.

Microsoft 2016 Server ile beraber iki tip Container desteklemeye basladi bunlardan biri Windows Server Container diger ise Hyper-V Container.

Hyper-V Container dedigimiz sey aslinda bir Hyper-V uzerinde yaratilmis sanal bir sunucu ve icersinde calisan Container. Soyle bir gecmise donersek Containerlar ciktiginda hep daha guvenli olsun diye bir sanal makiner icersinde calisirsa iyi olur, tam izolasyon olur durumlari vardi , halen bu yaklasim guncelligini koruyor.  Hyper-V Container kullanabilmek icinde haliyle Hyper-V role’unun kurulu olmasi gerekiyor. Keza Microsoft’da musterilerinin development icin Windows Container , production icin Hyper-V kullandigini soyluyor.

Windows Server Container‘da bizim host uzerinde kosacak, yine izole processler olacak, resimlersek Windows Server Container gordugunuz gibi Container Host uzerindeki Windows Kernal’i kullanirken , Hyper-V Containerlarin her biri tekil Windows Kernel uzerinde kosacaklar.

Read the rest of this entry

Yeni Baslayanlar Icin Docker Swarm Multi-Host Networking

Docker Swarm , Docker 1.12/1.13 ve simdi 17.03 ile bambaska , aslinda daha onceden bakasim vardi ama iyiki bakmamisim : ) Bu makale direkt docker swarm ile ilgili degil , docker swarm ile gelen networking kismina goz atiyor olacagiz.

Oncelikle herseyin basi SwarmKit . Bu dokumani donup donup okumak lazim.

Dedigim gibi konumuz “multi-host networking“.

Baslamadan once eger burada yazili olanlari test etmek icin elinizde bir donanim, sanal makine, dorukcloud, azure, digitalocean gibi bir cloud ortaminiz yok ise direkt http://www.play-with-docker.com adresinden sorunsuz , hizli bir sekilde docker ortamina sahip olabilir ve test yapabilirsiniz.

Elimizde bir master ve iki slave’den (Node’lar sanal ve Ubuntu 16.04 Xenial kurulu) olusmus Swarm Cluster mevcut.

Ufak bir snapshot alalim neler var neler yok. Asagida gordugunuz gibi 3 adet toplamda node mevcut , biri swam master diger ikisi swarm worker nodelari. Burada dikkat etmeniz gereken bir durum var , bazi komutlar sadece ve sadece docker swarm manager uzerinden calistirilabilir, eger hata alirsaniz yanlis node uzerinde olmalisiniz veya ilgili node’u manager rolune yukseltebilirsiniz 😀 Alicaginiz hata asagidaki gibi olacaktir.

Error response from daemon: This node is not a swarm manager. Worker nodes can’t be used to view or modify cluster state. Please run this command on a manager node or promote the current node to a manager.

Read the rest of this entry