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.


Yazar Hakkında
Toplam 180 yazı
Erkan ŞİRİN
Erkan ŞİRİN
10 yılı aşkın süredir yurtiçi ve yurtdışında sektörde büyük veri mühendisliği, platform yönetimi ve makine öğrenmesi ile ilgili çalışmalar yürütmekte ve aynı zamanda birçok kurum ve şirkete danışmanlık ve eğitimler vermektedir. Çalışma alanları: Data ve MLOps platformları, gerçek zamanlı veri işleme, değişen veriyi yakalama (CDC) ve Lakehouse.
Yorumlar (Yorum yapılmamış)

Bir yanıt yazın

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

×

Bir Şeyler Ara