systemd-analyze blame Komutunu Keşfedelim – Redhat7, CentOS7, Ubuntu16

Bu makalemde çok hoş bir şekilde deneyimsellediğim bir durum ve komuttan bahsedeceğim. Bir komut nedir.? Diyebilirsiniz. Fakat sistem yöneticileri için özellikle de Linux Admin’leri için bir komut bile yeri geldi mi can kurtarıcı bir duruma dönüşebilir. Uzun süredir bakmadığınız yada başkası tarafından kurulup çalışan, sonradan yönetimi devraldığınız bir sunucuda yaşayabileceğiniz bir durum olabilir. Bende böyle bir durum oluştu ve RedHat Enterprise Linux 7 de açılışta bir problem yaşadım. Neydi bu problem.?

Sunucu RHEL 7 ama GUI de kurulu ve sunucu açılışta çok yavaş açılıyordu. User’lar, login ekranı dakikalar sonra geldi. Bir sorun olduğu belliydi ama onun dışında herhangi bir sorun yok sunucu canavar gibi çalışıyordu. Neyse tam bu noktada nedir problem.? Nasıl çözerim.? derken, bir komut keşfettim. Bu komut “system-analyze blame”. Bu komut kısaca analyze system boot-up performance, sistemin boot olmasında açılan servis ve uygulamaların başlangıç performansı olarak time bazında size yansıtacaktır ve sizde oradan alacağınız ip ucuyla sorunu giderebilirsiniz ki ben bu şekilde, belki de uzun süre uğraştıracak bir sorunu saniyeler içinde hallettim.

Bu komutun üzerinde durmamım bir diğer sebebi ise RedHat 7 de çalışmasıdır. Yani altı sürümlerde bu komut mevcut değil. Bu da tabi RHEL 7’nin kullanış seviyesini yansıtmaktadır. Tabi aynı şekilde CentOS 7 ve Ubuntu 16 ve üzerinde de bu komut mevcut.

Şimdi aşağıdaki screenshot’larla durumu daha detaylı inceleyelim.

Sistemi bir kere açmayı başarınca system-analyze blame komutunu çalıştırdım ve en geç açılan nfs.mount servisinin olduğunu gördüm.

> system-analyze blame

Ardından “/etc/fstab” dosyasını incelemeye aldım. Zaten açılışta bu problemin olması ve sistem boot olduğundan fstab dosyasını okuması şüpheyi kendi üzerine çekmeye yetiyordu. Ve en son satırda bir makinadan mount işleminin olduğunu gördüm. Tabi ki sistem boot olduğunda fstab dosyasını okuyup mount ediyor ve o hedefteki ip’li makinayı bulamadığı için açılış problemi olduğunu netti.

İnsert modda bu satırın başına # işareti koyup, kaydedip çıktım. Böylelikle o satırı yorum satırı olarak algılamasını sağladık. Ve sistemi reboot ettiğimde problemin çözüldüğünü gözlemledim. İyi çalışmalar.

NFS(Network File System) nedir.? NFS Server ve Kullanıcı Yapılandırması

Sun Microsystems tarafından geliştirilen Unix/Linux dosya paylaşım servisi olup, Linux sistemler arasında dosya paylaşamını sağlayan ve stabil çalışan bir teknolojidir. Tabi ki açık kaynak kodludur deyip bu kadar teorik bilgide noktalasak yeter herhalde.

Hemen yapılandırma ve kullanımına girmeliyiz. Ortamda Sunucu ve İstemci modeli ile çalışacağız. Yani Hem Server tarafında yapmamız gerekenler var hemde bunu Client ların kullanabilmesi için yapmamamız gerekenler var. Bunun için sanal ortamımı oluşturdum aşağıdaki gibi.

NFS Server’ımın ip bilgisi aşağıdaki gibidir.

NFS Client için de ip bilgisi aşağıdaki gibidir.

Herşeyden evvel genelde sunucular minimal kurulum yapıldığından NFS paketlerini kurmak gerek.

NOT : Bu paketleri hem sunucuda hem istemcide kurmalısınız. Aşağıdaki komut ile bu işlemi yapabilirsiniz.

> yum install nfs-utils nfs-utils-lib

Daha sonra servisin durumuna aşağıdaki komut ile bakın ve servisin hem çalışmadığını hemde disabled olduğunu görün.

> systemctl status nfs-server.service

Şimdi servisi alttaki komutla çalıştırın.

> systemctl start nfs-server.service

Daha sonra enabled durumuna çekin.

> systemctl enable nfs-server.service

Şimdi son duruma bakalım ve bu kısımın sağlıklı bir şekilde tamamlandığını görelim.

 

* Server – Sunucu tarafı

Şimdi sunucuda yapılandırmaya başlayalım. Tabi burada sizin ortamınıza göre planlama yapmanız gerekiyor. Yani NFS için ayıracağınız alanı belirleyip bunun için hususi ayrı bir disk, storage de kullanabilirsiniz ki bu yöntem her zaman daha sağlıklıdır. Ben sunucu tarafında belirlediğim disk alanına MePaylasNFS diye bir dizin oluşturuyorum.

Mkdir komut ile MePaylasNFS klasörünü oluşturuyorum. Ardından cd komutu ile içine girip test için dosya ve klasörler oluşturuyorum.

> mkdir MePaylasNFS

Paylaşım yapılandırmayı “/etc/exports” config dosyası yardımıyla gerçekleştireceğiz. Herhangi bir editör yardımıyla buraya girip oluşturduğumuz MePaylasNFS klasörünü herkes için(“*” işareti herkes bağlanıp kullanabilir manasına gelir, eğer belirli makinalar için yapacaksanız “*” yerine makinanın ip’ni girmelisiniz). Ardından nfs servisini yeniden başlatın.

> systemctl restart nfs-server.service

exportfs” komutu yardımıyla sunucudaki tüm paylaşımlarımızı listeleyebiliriz.

> exportfs

Birde “showmount -e localhost” komutunu çalıştırıp, burdan da paylaşımları gözlemleyelim.

 

* Client – Kullanıcı tarafı

Şimdi client tarafında yapılandırmaya girişelim. Paylaşımı kullanacak tarafta paylaşılan alanı mount edeceğiz. Mount için bir hedef yani klasör oluşturalım. Ben NFSKullan adında bir klasör oluşturuyorum.

> mkdir NFSKullan

Şimdi aşağıdaki gibi sunucunun ip(192.168.2.250) bigisiyle mount edelim.

> mount 192.168.2.250:/ MePaylasNFS /NFSKullan

Direk mount komutu ile durumu gözlemleyebilirsiniz. Ayrıca NFS servisinin de versiyon 4 olduğunu görün.

> mount

df -h komutu ile gözlemleyelim.

> df -h

Paylaşım noktasını ls -l ile listeleyelim, verileri kullanabildiğimizi gözlemleyelim. Bu bilgiler aslında sunucuda.

> ls -l /NFSKullan

Son kontrol amacı ile “showmount -e 192.168.2.250(Server ip bilgisi)” komutunu çalıştırıp değişimi gözlemleyelim.

> showmount –e 192.168.2.250

Herşey bittimi.? Tabi ki HAYIR.! Çünkü bu kullanıcı makinası reboot olduğunda mount bilgisi kaybolacak ve NFS paylaşımını kullanamayacak. Bunu sabit kılmak ve sürekli kullanıcı makinası reboot olsa da kullanabilir yapmak için/etc/fstab” dosyasına mount noktasını yazacağız. Herhangi bir editör yardımıyla bu yapılandırma dosyasına girelim ve aşağıdaki şekilde yapılandıralım(boşluklar tab tuşuyla oluşturuldu), kaydedip çıkalım.

# 192.168.2.250:/MePaylasNFS       /NFSKullan       nfs4       rw,sync       0 0

Hayırlı olsun.

Linux Trap Command Usage (Signals Catch) – Linux tuzak komutu kullanımı (Sinyalleri Yakalama)

Linux tarafında kullanışlı bir komuttan bahsetmek istiyorum. Bu komut daha çok sistem yöneticilerinin işine yarayacak türden olabilir. Kullanıcı tarafında bir işlem çalıştırıp, bitene kadar sürmesini isteyebilirsiniz (bu bash script leriniz olabilir) ve bunun kullanıcı tarafından sonlandırılmasını da engellemeniz gerekiyor gibi bir örnek vererek açıklamak doğru olacaktır. Tam da burada devreye trap komutu giriyor. Kafanızda nedir bu trap dediğinizi duyar gibiyim sanki. Trap komutu Linux sistemlerinde var olan sinyalleri yakalamaya yarayan bir komuttur. Ctrl + C (SIGINT) gibi, kill -15 (SIGTERM) gibi, kill -9 (SIGKILL) gibi gibi. Aslında Kill komutundan daha öncesinde bahsetmem gerekiyordu. Bir başka makalede ona değineceğiz, aklıma gelmişken trap komutunu aradan çıkarayım. Hem pekişmiş olur.

Aşağıdaki komut ile trap in yakalayabileceği sinyalleri listeleyelim.

> trap -l

Şimdi Ctrl + C sinyalini engelleyelim, yani kullanıcı istediği kadar ctrl+c ye bassın çalışan herhangi bir işlemi bu yöntemle sonlandıramayacaktır. Bunu aşağıdaki komut ile hayata geçire biliriz.

> trap — ” SIGINT yada trap ” 2 yada çift tırnak fark etmez ama tırnak koymalısınız.

Şimdi sleep 10 komutu(10 saniye bekle) ile işlemimizi test edelim. Ve aşağıda göreceğiniz gibi kaç kere olursa olsun ctrl+c tuşuna basıp kesme sinyali gönderirsem göndereyim, sinyal işe yaramıyor.

> sleep 10

Oluşturduğunuz trap lerin listesine aşağıdaki komutla ulaşabilirsiniz.

> trap -p

Trap leri kaldırmak için yani eskisi gibi sinyallerin çalışması için yaptığını sinyallere karşın komutu aşağıdaki gibi çalıştırın.

> trap SIGINT yada trap 2

ZEN LOAD BALANCER SSL SERTİFİKA ve HTTPS(443) REQUEST FARM OLUŞTURMA – BÖLÜM 6

Loadbalancer arkasında birden fazla web sunucusu çalıştığını var sayalım ve bunların https(443) protokolü ile çalışmasını sağlayalım. Bunun için yük dengeleyici sunucumuza web server domainimiz için satın aldığımız sertifikayı yükleyeceğiz ardından https farm’ı oluşturacağız. Zaten önceki yazılarımızda farm oluşturmayı görmüştük, şimdi bir kaç yapılandırma ile https(443) olarak farm’ı yapılandıracağız.

İlk olarak Manage-Certificates sekmesine geliyoruz.

Ardından aşağıdaki gibi upload .pem(pem sertifikanın bundle edilmiş hali, yani o dosya içeriğinde domain sertifika cer’i, orta kök cer’i, kök sertifika cer’i nin belli hiyerarşide bulundurduğu hali) certificate kısmını tıklayıp, sektifikayı load balancer sunucusuna ekliyoruz.

Sertifikayı ekledikten sonra https farm oluşturma kısmına geçiyoruz. Manage-Farm sekmesine geçtikten sonra Add new Farm butonuna tıklıyoruz. Farm’a isim verip Save ve continue’yi tıklayıp devam ediyoruz.

Akabinde burada önemli kısımlar aşağıdaki gibi Farm-Listener HTTPS seçilecek, HTTPS Certificate kısmında yüklediğiniz sertifikayı seçin, Virtual IP kısmında İsteği alacak ip ve dinleyeceği port bilgisini https(443) girin.

Alt kısımda bir önemli bölüm daha olan HTTPS Backends seçeneğini aktif edip, farm oluşturmayı tamamlıyoruz.

ZEN LOAD BALANCER CLUSTER OLUŞTURMA – BÖLÜM 5

Bu bölümde servis kesintisi yaşamamak için kullanılan yöntem olarak istekleri karşılayıp yönlendiren Zen Load Balancer için de High Available yapacağız. Bu işlemi çok basit olarak Cluster yöntemi ile gerçekleştireceğiz.

Bunun için interface yapılandırması önemli. Şöyle ki, iki loadbalancer için yapılandırma yapacağız. Yani iki yük dengeleyici arasında kümeleme yapacağımız için,

Loadbalancer01;

eth0 10.10.10.100

eth0:cl 10.10.5

Loadbalancer02;

eth0 10.10.10.200

eth0:cl 10.10.10.5

Yukarıdaki yapılandırmada 100 ve 200 ip’leri sunuculara yönetim için atanmış olan direk erişim ipleridir, 5 nolu ip ise cluster için kullanılacak olan ip’dir. Bu durumda cluster yapılandırmamız 100’lü sunucuda erişim kesildiği zaman 200 lü sunucuya geçecektir. Bu geçiş 5 li ip tarafından sağlanacaktır. Yani 5 ip’li aktif kullanımda olacağı için 5’li ip 100 ip’li sunucu up ise onun üzerine geçecektir, 100 ip’li sunucu down olursa 5 ip si up olan 200 ip’li sunucuya geçecektir. Bu durumda servis 5 ip’si ile hizmet verdiğinden servis kesintisi yaşanmayacaktır.

Şimdi yapılandırmaya geçelim. Interface’leri yukardaki senaryoya göre yapılandırdıktan sonra,

Settings kısmından Cluster sekmesine geçin,

Aşağıdaki gibi Cluster Virtual IP 10.10.10.5 Local ve Remote Hostname root şifresini(RSA iletişimi için) ve IP bilgileri girip, “cluster type” olarak loadbalancer master and loadbalancer02 backup automatic failback seçip Save deyin, ardından Test Connection ile işlemleri kontrol edebilirsiniz.

 

Detaylı : Zen -> Zevenet

Disk’iniz SSD mi yoksa HDD mi Öğrenmenin Yolları

SSD ile HDD nedir yada arasındaki fark a çok girmeden direk sistem üzerinde bunu nasıl teyitli bir şekilde öğrenebiliriz bunun yollarını anlatmaya çalışacağım. İlk öncesinde şunu bilmek gerekiyor ki rotational denilen bir değer vardır ve bu değer sayesinde diskimizin SSD yada HDD mi olduğunu elde edeceğiz. Yani

rotational(ROTA) değeri 1 ise HDD

rotational(ROTA) değeri 0 ise SSD dir.

Bu değeri elde etmenin bir kaç yolu var ve sırasıyla bahsedeceğiz. Ben işlemleri iki makina üzerinde yapacağım biri gerçek makina SSD li, diğeri sanal makina HDD li olan ki hepsini görün ve aklınızda soru işareti kalmasın.

Birinci yöntem :

lsblk komutu, bu komutu aşağıdaki parametreler ile çağırdığınızda size ROTA bilgisini dönecektir.

> lsblk -do name,rota

Sanal makina, ROTA değeri 1 döndüğünden anladık ki bu HDD

> lsblk -do name,rota yada lsblk -d -o name,rota

Gerçek makina, ROTA değeri 0 döndüğünden anladık ki bu SSD

İkinci yöntem :

Gene lsblk komutu ile ama bu sefer “t” parametresi ile

> lsblk -t

Sanal makina, ROTA değeri 1 döndüğünden anladık ki bu HDD

> lsblk -t

Gerçek makina, ROTA değeri 0 döndüğünden anladık ki bu SSD

Üçüncü yöntem :

Smartctl komutu ile ki burada direk “Rotation Rate:Solid State Device” ibaresini görmelisiniz.

> smartctl -a /dev/sd(a dan z ye sizin makinanızda karşılık gelen değer)

Sanal makina, Rotation Rate karşılık ibare bulunmuyor, SSD DEĞİL

> smartctl -a /dev/sd(a dan z ye sizin makinanızda karşılık gelen değer)

Gerçek makina, Rotation Rate karşılık ibare var ve disk SSD

Dördüncü yöntem :

Bu yöntem ise cat komutu yardımıyla direk dosyadan rotational değerini elde ederek

> cat /sys/block/sd(a dan z ye sizin makinanızda karşılık gelen değer)

Sanal makina, rotational değeri 1 döndüğünden anladık ki bu HDD

> cat /sys/block/sd(a dan z ye sizin makinanızda karşılık gelen değer)

Gerçek makina, rotational değeri 0 döndüğünden anladık ki bu SSD

Zen Load Balancer Kurulumu – Bölüm 1

Load Balancer nedir = Kısaca işi, iki ya da daha fazla bilgisayar, işlemci, sabit disk ya da diğer kaynaklar arasında paylaştırma teknolojisidir. Daha fazla bilgi için linki ziyaret edebilirsiniz.

Zen Load Balancer Debian tabanlı bir uygulamadır. Ayrıntılar için resmi sitesini ziyaret edebilirsiniz. http://www.zenloadbalancer.com/

Ben aşağıdaki screenshot’tan da anlaşılacağı üzere sanal platformda çalıştıracağım için aşağıdaki gibi bir konfigürasyonda makine oluşturdum, iç ve dış interface(E1000 daha sonra VMXNET’e çekeceğim) olmak üzere ve iso’yu mount ettikten sonra kuruluma başlayabiliriz.

znk1

Kuruluma Install ile başlıyorum.

znk2

Dil seçiyorum.

znk3

Lokasyon bilgisini seçiyorum, dil EN lokasyon TR seçerseniz aşağıdaki gibi ikinci bir menü daha karşınıza getirecektir. Dile göre lokasyon bilgisi yok gibisinden, default değerlerden tekrar seçtirecektir.

znk4

znk5

Klavye seçim menüsü ile devam ediyoruz,

znk6

Network değerlerinin girildiği bölüm ile IP bilgisini yazdıktan sonra Continue ile devam ediyoruz.

znk7

Netmask,

znk8

Gateway,

znk9

DNS kısmı,

znk10

Hostname makineye verilecek isim kısmı ile Continue ile devam ediyoruz.

znk11

Varsa Domain name kısmı,

znk12

Root için password bilgisinin girildiği önemli bir menü, belirlediğiniz şifreyi girdikten sonra Continue ile devam ediyoruz.

znk13

Şifreyi tekrar girerek teyit işlemini yapıyoruz,

znk14

Disk yapılandırma menüleri gelecek, ben olduğu gibi default değerlerle ile LVM olarak yapılandırıyorum. Siz istediğiniz gibi partition‘lara bölerek EXT olarakta kurabilirsiniz.

znk15

znk16

znk17

LVM işlemleri diske yazdırmak için Yes ile devam ediyoruz.

znk18

Finish ile disk işlemleri sonlandırıp,

znk19

Yapılan tüm değişiklikleri diske Yes ile yazdırıyoruz.

znk20

Ve kurulum başladı.

znk21

Ardından Continue ile kurulumu tamamlayıp sunucuyu restart ediyoruz.

znk22

Ve konsol login ekranı…

znk23

Daha sonra Zen load Balancer panale bağlanmak için;

https://YönetimIPAdresi:444/

Defaultta gelen KullanıcıAdı=admin Şifre=admin

znk24

Daha sonra Yönetim IP’sinin dışında, Farm için request’leri alacak dış ip ve iç interface’yi yapılandırıp, farm ve cluster mevzularına bakacağız. Vmtool ve İnterface Adapter(VMXNET) olaylarına inceleyeceğiz.

http://www.zenloadbalancer.com/community/documentation/

http://www.zenloadbalancer.com/zlb-administration-guide-v304/#prettyPhoto

E: Unable to locate package

Reading package lists…

Done building dependency tree

Reading state information…Done

E: Unable to locate package (paketismi)

Linux sistemlerde yüklemeye çalıştığımız paket sonrası bu hatayı alıyorsak eğer, repository’den kaynaklanmaktadır. Güncel source kaynaklarına ulaşmak için google.com‘dan ‘source list generator’ diye aratabiliriz veya sistem debian ise direk debgen.simplylinux.ch adresine girip aşağıdaki gibi size uygun seçenekleri aktif edip

debgen Generate sources.list butonuna tıkladıktan sonra

sourceslist

deb’le başlayan kısmı kopyaladıktan sonra /etc/apt/sources.list içine diğer repo adreslerinin disable olması için satır başlarına # işaretini koyduktan sonra yapıştırın. Ardından #apt-get update işlemini gerçekleştirin ve daha sonrasında tekrar paket kurulumunu gerçekleştirin. Paket ısrarla kurulmak istemiyorsa sistemdeki paket kurulum ismi farklıdır.