BG11: Edge Server Hazırlama (httpd ve pssh)
Şimdiye kadar cluster planımızı yaptık, birbiriyle haberleşen 6 sunucu hazırladık. Cluster planımızda node3’ü edge server olarak belirlemiştik. Bu yazımızda edge serverı clusterı kurmaya yönelik olarakApache httpd servisini ve paralel ssh (pssh) kurulumu yapacağız.
1. Paralel ssh Kurulumu ve Kullanımı
Cluster kurulumunda veya yönetiminde sunucularımıza birçok işlem yapıyoruz. Her sunucuya tek tek bağlanıp bu işlemleri yapmak çok yorucu olabilir. Düşünsenize canlı ortamda yüzlerce sunucyu yönetiyorsunuz. Paralel ssh bu konuda biz cluster yöneticilerine büyük kolaylık sağlıyor. node3 sonucusundayız, epel-release yüklüyoruz.
[root@node3 ~]# yum -y install epel-release
Ardından pssh yükleyeceğiz.
[root@node3 ~]# yum install pssh
pssh kullanım formatı özetle şu şekilde pssh -h "komutun çalışacağı uzak sunucular" -i "komutun kendisi"
komutun çalışacağı uzak sunucuları bir liste yapalım ve /root dizinine kaydedelim. Ben ismini cluster-hosts olarak veriyorum. nano editörle dosya ismini verip boş dosyanın içine sunucu isimlerini uzun isimeriyle yazıyorum.
[root@node3 ~]# nano cluster-hosts [root@node3 ~]# cat cluster-hosts node1.datalonga.com node2.datalonga.com node3.datalonga.com node4.datalonga.com node5.datalonga.com node6.datalonga.com
Şimdi basit bir deneme yapalım. Tüm sunuculara bağlanıp isimlerini söylemelerini isteyelim:
[root@node3 ~]# pssh -h cluster-hosts -i "hostname -f"
Ancak aşağıdaki hatayı aldık.
[1] 07:33:41 [FAILURE] node4.datalonga.com Exited with error code 255 Stderr: The authenticity of host 'node4.datalonga.com (192.168.150.54)' can't be established. ECDSA key fingerprint is SHA256:ambuhZ0abQkqoGzYIfRs/h99fAgLau3DW4NDyDUWeBo. ECDSA key fingerprint is MD5:7a:0b:85:a8:80:c4:4a:38:63:4d:4f:8d:be:5d:8a:f3. Are you sure you want to continue connecting (yes/no)?
Bu hatayı gidermek için tüm sunucuları StrictHostKeyChecking=no yapıyorum. Her seferinde bağlanıp node3’e geri döndüm.
[root@node3 ~]# ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" root@node1 Warning: Permanently added 'node1,192.168.150.51' (ECDSA) to the list of known hosts. Last login: Sat Sep 30 07:28:59 2017 from 192.168.150.130 [root@node1 ~]# ssh root@node3 root@node3's password: Last login: Sat Sep 30 07:30:59 2017 from 192.168.150.133 [root@node3 ~]# ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" root@node2 Warning: Permanently added 'node2,192.168.150.52' (ECDSA) to the list of known hosts. Last login: Sat Sep 30 07:30:02 2017 from 192.168.150.130 [root@node2 ~]# ssh root@node3 root@node3's password: Last login: Sat Sep 30 07:32:26 2017 from 192.168.150.128 [root@node3 ~]# ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" root@node4 Warning: Permanently added 'node4,192.168.150.54' (ECDSA) to the list of known hosts. Last login: Sat Sep 30 07:30:28 2017 from 192.168.150.130 [root@node4 ~]# ssh root@node3 root@node3's password: Last login: Sat Sep 30 07:32:43 2017 from 192.168.150.129 [root@node3 ~]# ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" root@node5 Warning: Permanently added 'node5,192.168.150.55' (ECDSA) to the list of known hosts. Last login: Sat Sep 30 07:30:42 2017 from 192.168.150.130 [root@node5 ~]# ssh root@node3 root@node3's password: Last login: Sat Sep 30 07:32:58 2017 from 192.168.150.131 [root@node3 ~]# ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" root@node6 Warning: Permanently added 'node6,192.168.150.56' (ECDSA) to the list of known hosts. Last login: Sat Sep 30 07:30:53 2017 from 192.168.150.130
Şimdi pssh komutumuzu tekrar deneyelim.
[root@node3 ~]# pssh -h cluster-hosts -i "hostname" [1] 07:47:51 [SUCCESS] node1.datalonga.com node1.datalonga.com [2] 07:47:51 [SUCCESS] node2.datalonga.com node2.datalonga.com [3] 07:47:51 [SUCCESS] node4.datalonga.com node4.datalonga.com [4] 07:47:51 [SUCCESS] node3.datalonga.com node3.datalonga.com [5] 07:47:51 [SUCCESS] node5.datalonga.com node5.datalonga.com [6] 07:47:51 [SUCCESS] node6.datalonga.com node6.datalonga.com
Herşeye rağmen aynı hata devam ederse node3
sunucusundan /etc/hosts
dosyasında yazan sunucuların ip uzun adı ve kısa adlarıyla teker teker ssh bağlantısı kurun.
Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'node<1-6>' (ECDSA) to the list of known hosts.
soracaktır, yes
deyin.
Daha sonrasında pssh
‘ın sorunsuz çalıştığını göreceksiniz.
2. pscp.pssh ile Paralel Kopyalama
Tüm sunuculara aynı anda komut yollamanın yanında tüm sunuculara aynı anda dosya kopyalama imkanına da sahibiz. Bunu pscp.pssh komutu ile yapıyoruz. İlk başta biraz zor gelebilir, çünkü neyi nereden kopyalıyoruz biraz karışık gibi. Aşağıdaki şeklin bu karışıklığı gidereceğini umuyorum.
Hemen basit bir örnek yapalım. Bu örnekte node3 /root dizininde basit bir deneme.txt dosyası oluşturuyoruz. Ben içine bu “dosya pscp komutunu denemek için oluşturuldu” yazdım.
[root@node3 ~]# pscp.pssh -h cluster-hosts deneme.txt /root [1] 09:46:40 [SUCCESS] node1.datalonga.com [2] 09:46:40 [SUCCESS] node2.datalonga.com [3] 09:46:40 [SUCCESS] node3.datalonga.com [4] 09:46:40 [SUCCESS] node4.datalonga.com [5] 09:46:40 [SUCCESS] node5.datalonga.com [6] 09:46:40 [SUCCESS] node6.datalonga.com
pssh kullanarak içini okuyalım.
[root@node3 ~]# pssh -h cluster-hosts -i "cat /root/deneme.txt" [1] 09:48:38 [SUCCESS] node1.datalonga.com bu dosya pscp komutunu denemek için oluşturuldu. [2] 09:48:38 [SUCCESS] node2.datalonga.com bu dosya pscp komutunu denemek için oluşturuldu. [3] 09:48:38 [SUCCESS] node3.datalonga.com bu dosya pscp komutunu denemek için oluşturuldu. [4] 09:48:38 [SUCCESS] node4.datalonga.com bu dosya pscp komutunu denemek için oluşturuldu. [5] 09:48:38 [SUCCESS] node5.datalonga.com bu dosya pscp komutunu denemek için oluşturuldu. [6] 09:48:38 [SUCCESS] node6.datalonga.com bu dosya pscp komutunu denemek için oluşturuldu.
Evet. pssh
ve pscp.ssh
‘ın çalıştığını kontrol ettik. Son olarak deneme.txt dosyasını kaldıralım.
[root@node3 ~]# pssh -h cluster-hosts -i "rm /root/deneme.txt" [1] 09:50:00 [SUCCESS] node1.datalonga.com [2] 09:50:00 [SUCCESS] node2.datalonga.com [3] 09:50:00 [SUCCESS] node3.datalonga.com [4] 09:50:00 [SUCCESS] node4.datalonga.com [5] 09:50:00 [SUCCESS] node5.datalonga.com [6] 09:50:00 [SUCCESS] node6.datalonga.com
3. HTTP Hizmeti için httpd Kurulumu
HTTP servisini bu sunucumuzu clusterın yerel repository’si olarak kullanacağımız için kuruyoruz. Önce telneti kuralım.
[root@node3 ~]# yum -y install telnet
HTTP için httpd’yi kuruyoruz ve sunucu açıldığında başlaması için bir komut daha veriyoruz.
[root@node3 ~]# yum -y install httpd [root@node3 ~]# systemctl enable httpd [root@node3 ~]# systemctl start httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2017-10-08 09:21:17 +03; 3s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 1530 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service ├─1530 /usr/sbin/httpd -DFOREGROUND ├─1531 /usr/sbin/httpd -DFOREGROUND ├─1532 /usr/sbin/httpd -DFOREGROUND ├─1533 /usr/sbin/httpd -DFOREGROUND ├─1534 /usr/sbin/httpd -DFOREGROUND └─1535 /usr/sbin/httpd -DFOREGROUND Oct 08 09:21:17 node3.datalonga.com systemd[1]: Starting The Apache HTTP Server... Oct 08 09:21:17 node3.datalonga.com systemd[1]: Started The Apache HTTP Server.
/var/www/
web sunucunun kök dizini. Biz arkasına hemen sunucumuzun uzun adını dizin olarak ekleyeceğiz.
[root@node3 ~]# mkdir /var/www/node3.datalonga.com
node3 sunucusunun (mevcut sunucu) 80 portuna bağlanmayı deneyeceğiz.
[root@node3 ~]# telnet node3 80 Trying 192.168.150.53... Connected to localhost. Escape character is '^]'.
Bağlandık.
/var/www/
kök dizinine herkesin okumasına izin verecek şekilde yetkilendirme yapalım:
[root@node3 ~]# chmod -R 755 /var/www
/etc/httpd/conf/httpd.conf
dosyasının içine nano editörü ile giriyorum. Önce ServerName’i değiştiriyor ve önündeki # işaretini kaldırıyorum. Daha sonra sayfanın en altına gidiyorum ve VirtualHost ile başlayan satırları ekliyorum.
ServerName node3.datalonga.com:80 <VirtualHost *:80> ServerName www.node3.datalonga.com ServerAlias node3.datalonga.com DocumentRoot /var/www/node3.datalonga.com ErrorLog /var/www/node3.datalonga.com/error.log CustomLog /var/www/node3.datalonga.com/requests.log combined </VirtualHost>
httpd servisimizi yeniden başlatalım:
[root@node3 ~]# systemctl restart httpd
Tarayıcımızı (örn.: Chrome) açıp http://node3.datalonga.com/ adresini girelim.Karşımıza aşağıdaki gibi bir sayfa çıkacaktır.
Tebrikler! Dünyanın yarısı tarafından kullanılan Apache web sunucusunu kurmuş bulunuyorsunuz.