22 Ocak 2019 Salı

Birazda GPFS ile oynayalım.

gpfs ile oynayayım dedim ve bir gpfs kurduktan sonra, mevcut dosya sisteminden disk çıkartıp ekledim.

Açıkcası dosya sisteminden bir diski silerken, bu disk üzerindeki datayı, diğer disklere taşıması, dosya sistemini küçülttükden sonrada diski kullanım dışı bırakması hoşuma gitti. Bu kadar basit olacağını düşünmemiştim.

Özetle gpfs te endişe duymadan  istediğiniz gibi disklerle oynayabilirsiniz.


[root@gpfs01 ~]# mmlsnsd

 File system   Disk name    NSD servers
---------------------------------------------------------------------------
 shared        nsd1         gpfs01.localdomain.org,gpfs02.localdomain.org,gpfs03.localdomain.org
 shared        nsd2         gpfs01.localdomain.org,gpfs02.localdomain.org,gpfs03.localdomain.org

[root@gpfs01 ~]# mmdeldisk shared nsd2
Deleting disks ...
Scanning file system metadata, phase 1 ...
 100 % complete on Tue Jan 22 12:55:13 2019
Scan completed successfully.
Scanning file system metadata, phase 2 ...
 100 % complete on Tue Jan 22 12:55:13 2019
Scan completed successfully.
Scanning file system metadata, phase 3 ...
 100 % complete on Tue Jan 22 12:55:13 2019
Scan completed successfully.
Scanning file system metadata, phase 4 ...
 100 % complete on Tue Jan 22 12:55:13 2019
Scan completed successfully.
Scanning user file metadata ...
   0.02 % complete on Tue Jan 22 12:55:49 2019  (    491520 inodes with total       4189 MB data processed)
 100.00 % complete on Tue Jan 22 12:55:49 2019  (    491520 inodes with total       4189 MB data processed)
Scan completed successfully.
Checking Allocation Map for storage pool system
tsdeldisk completed.
mmdeldisk: Propagating the cluster configuration data to all
  affected nodes.  This is an asynchronous process.
[root@gpfs01 ~]# mmlsnsd

 File system   Disk name    NSD servers
---------------------------------------------------------------------------
 shared        nsd1         gpfs01.localdomain.org,gpfs02.localdomain.org,gpfs03.localdomain.org
 (free disk)   nsd2         gpfs01.localdomain.org,gpfs02.localdomain.org,gpfs03.localdomain.org

[root@gpfs01 ~]#



[root@gpfs01 ~]# mmlsnsd -X -d nsd2

 Disk name    NSD volume ID      Device         Devtype  Node name                Remarks
---------------------------------------------------------------------------------------------------
 nsd2         0A220B165C3F085C   /dev/vdc       generic  gpfs01.localdomain.org   server node
 nsd2         0A220B165C3F085C   /dev/vdc       generic  gpfs02.localdomain.org   server node
 nsd2         0A220B165C3F085C   /dev/vdc       generic  gpfs03.localdomain.org   server node


[root@gpfs01 ~]# mmdelnsd nsd2
mmdelnsd: Processing disk nsd2
mmdelnsd: Propagating the cluster configuration data to all
  affected nodes.  This is an asynchronous process.

[root@gpfs01 ~]#


[root@gpfs01 ~]# mmlsnsd

 File system   Disk name    NSD servers
---------------------------------------------------------------------------
 shared        nsd1         gpfs01.localdomain.org,gpfs02.localdomain.org,gpfs03.localdomain.org

[root@gpfs01 ~]#


[root@gpfs01 ~]# mmlsdisk shared
disk         driver   sector     failure holds    holds                            storage
name         type       size       group metadata data  status        availability pool
------------ -------- ------ ----------- -------- ----- ------------- ------------ ------------
nsd1         nsd         512           1 Yes      Yes   ready         up           system
[root@gpfs01 ~]#



[root@gpfs01 ~]# mmcrnsd -F disk2.lst
mmcrnsd: Processing disk vdc
mmcrnsd: Processing disk vdd
mmcrnsd: Propagating the cluster configuration data to all
  affected nodes.  This is an asynchronous process.
[root@gpfs01 ~]# cat disk2.lst
%nsd: device=vdc
nsd=nsd2
servers=gpfs01.localdomain.org,gpfs02.localdomain.org,gpfs03.localdomain.org
usage=dataOnly

%nsd: device=vdd
nsd=nsd3
servers=gpfs01.localdomain.org,gpfs02.localdomain.org,gpfs03.localdomain.org
usage=metadataOnly



[root@gpfs01 ~]# mmlsnsd

 File system   Disk name    NSD servers
---------------------------------------------------------------------------
 shared        nsd1         gpfs01.localdomain.org,gpfs02.localdomain.org,gpfs03.localdomain.org
 (free disk)   nsd2         gpfs01.localdomain.org,gpfs02.localdomain.org,gpfs03.localdomain.org
 (free disk)   nsd3         gpfs01.localdomain.org,gpfs02.localdomain.org,gpfs03.localdomain.org

[root@gpfs01 ~]#


[root@gpfs01 ~]# mmadddisk shared nsd2

The following disks of shared will be formatted on node gpfs03.localdomain.org:
    nsd2: size 20480 MB
Extending Allocation Map
Checking Allocation Map for storage pool system
Completed adding disks to file system shared.
mmadddisk: Propagating the cluster configuration data to all
  affected nodes.  This is an asynchronous process.
[root@gpfs01 ~]#


[root@gpfs01 ~]# mmrestripefs shared -b
Scanning file system metadata, phase 1 ...
  53 % complete on Tue Jan 22 13:23:47 2019
 100 % complete on Tue Jan 22 13:23:51 2019
Scan completed successfully.
Scanning file system metadata, phase 2 ...
 100 % complete on Tue Jan 22 13:23:51 2019
Scan completed successfully.
Scanning file system metadata, phase 3 ...
 100 % complete on Tue Jan 22 13:23:51 2019
Scan completed successfully.
Scanning file system metadata, phase 4 ...
 100 % complete on Tue Jan 22 13:23:52 2019
Scan completed successfully.
Scanning user file metadata ...
  21.84 % complete on Tue Jan 22 13:24:55 2019  (    491520 inodes with total       4193 MB data processed)
  42.71 % complete on Tue Jan 22 13:25:27 2019  (    491520 inodes with total       8201 MB data processed)
 100.00 % complete on Tue Jan 22 13:25:38 2019  (    491520 inodes with total      19189 MB data processed)
Scan completed successfully.
[root@gpfs01 ~]#


[root@gpfs02 shared]#  mmlsnsd -a -L

 File system   Disk name    NSD volume ID      NSD servers
---------------------------------------------------------------------------------------------
 shared        nsd1         0A220B165C3F0856   gpfs01.localdomain.org,gpfs02.localdomain.org,gpfs03.localdomain.org
 shared        nsd2         0A220B165C46EC7D   gpfs01.localdomain.org,gpfs02.localdomain.org,gpfs03.localdomain.org
 shared        nsd3         0A220B165C46EC83   gpfs01.localdomain.org,gpfs02.localdomain.org,gpfs03.localdomain.org

[root@gpfs02 shared]#  mmlsnsd -X -d nsd1

 Disk name    NSD volume ID      Device         Devtype  Node name                Remarks
---------------------------------------------------------------------------------------------------
 nsd1         0A220B165C3F0856   /dev/vdb       generic  gpfs01.localdomain.org   server node
 nsd1         0A220B165C3F0856   /dev/vdb       generic  gpfs02.localdomain.org   server node
 nsd1         0A220B165C3F0856   /dev/vdb       generic  gpfs03.localdomain.org   server node

[root@gpfs02 shared]#  mmlsnsd -X -d nsd2

 Disk name    NSD volume ID      Device         Devtype  Node name                Remarks
---------------------------------------------------------------------------------------------------
 nsd2         0A220B165C46EC7D   /dev/vdc       generic  gpfs01.localdomain.org   server node
 nsd2         0A220B165C46EC7D   /dev/vdc       generic  gpfs02.localdomain.org   server node
 nsd2         0A220B165C46EC7D   /dev/vdc       generic  gpfs03.localdomain.org   server node

[root@gpfs02 shared]#  mmlsnsd -X -d nsd3

 Disk name    NSD volume ID      Device         Devtype  Node name                Remarks
---------------------------------------------------------------------------------------------------
 nsd3         0A220B165C46EC83   /dev/vdd       generic  gpfs01.localdomain.org   server node
 nsd3         0A220B165C46EC83   /dev/vdd       generic  gpfs02.localdomain.org   server node
 nsd3         0A220B165C46EC83   /dev/vdd       generic  gpfs03.localdomain.org   server node

[root@gpfs02 shared]#
[root@gpfs02 shared]# mmlsdisk shared
disk         driver   sector     failure holds    holds                            storage
name         type       size       group metadata data  status        availability pool
------------ -------- ------ ----------- -------- ----- ------------- ------------ ------------
nsd1         nsd         512           1 Yes      Yes   ready         up           system
nsd2         nsd         512          -1 Yes      Yes   ready         up           system
nsd3         nsd         512          -1 Yes      Yes   ready         up           system
[root@gpfs02 shared]#


[root@gpfs02 shared]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   48G  7.4G   41G  16% /
devtmpfs               8.0G     0  8.0G   0% /dev
tmpfs                  8.0G     0  8.0G   0% /dev/shm
tmpfs                  8.0G   26M  8.0G   1% /run
tmpfs                  8.0G     0  8.0G   0% /sys/fs/cgroup
/dev/vda2             1014M  209M  806M  21% /boot
/dev/loop0             3.2G  3.2G     0 100% /var/repo
tmpfs                  1.6G     0  1.6G   0% /run/user/0
shared                  60G   19G   42G  32% /shared
[root@gpfs02 shared]#



16 Ocak 2019 Çarşamba

Red Hat (CentOS) kurulum dvd sini local repo olarak kullanmak

Öncelikle dvd yansısını sunucu üzerine kopyalıyoruz.
Kopyalama işlemi bittikten sonra fstab içerisine aşağıdaki satır ekleniyor.

/sw/rhel-server-7.6-ppc64le-dvd.iso /var/repo   auto loop,ro

mkdir /var/repo
komutuyla repo dizini oluşturulur ve 'mount -a' komutuyla sisteme bağlanır.

sonrasında yuma  /var/repo dizinin yerel depo olarak tanıtırız.
Bu işlem için /etc/yum.repos.d/ dizini altında local.repo dosyası oluşturmamız yeterli.
Dosyanın içeriği aşağıda.

[root@gpfs01 ~]# cat  /etc/yum.repos.d/local.repo
[rhel-local]
name=RedHat 7.6 local repo
baseurl=file:///var/repo
enabled=1
gpgcheck=0
 

[root@gpfs01 ~]#

işlemlerin düzgün yapıldığından emin olmak için 'yum repolist' komutuyla kontrol ettiğimizde;

rhel-local                                               RedHat 7.6 local repo                                                  3739

görüyorsak işlem sorunsuz tamamlanmış demektir.




15 Ocak 2019 Salı

Merkezi loglama rsyslog.

En basit şekliyle merkezi loglama için rsyslog kullanabiliriz.
Bu çalışmada merkezi log sunucusu olarak "Oracle Linux Server release 7.6" kullandım.
oel kurulduktan sonra sistem güncelledi ve rsyslog ayarlarında  tcp ve udp  modulleri aktifleştirildi.
Diğer sunuculardan log alması için tcp/udp modülünün aktifleştirilmesi yeterlidir.


# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514


İlave olarak her sunucumuzdan gelen logları ayrı ayrı dosyalara yazabilmek için aşağıdaki gibi bir template oluşturarak kullanıyoruz.

$template LogFile,"/var/log/%HOSTNAME%/%programname%.log"
*.* ?LogFile


Sizler kendi isteğinize göre gelen logları istediğiniz yere yazdırabilirsiniz.

Son adım olarak, güvenlik duvarına, hangi sunuculardan log alınmasına izin veriyoruz.

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="172.16.0.123/32" port protocol="tcp" port="514" accept'
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="172.16.0.123/32" port protocol="udp" port="514" accept'


Kural yazıldıktan sonra  uygulanması için;

 firewall-cmd --reload
veya
systemctl restart firewalld
ile güvenlik kuralımızı etkinleşitiriz. Artık sunucumuz 172.16.0.123 ip nosundan gelen syslog mesajlarını alarak, kayıt eder.


172.16.0.123 ip adresli sunucuya giderek rsyslog.conf dosyamıza

*.* @@172.16.0.253:514ekleyerek rsyslog servisini yeniden başlattığımızda tüm loglar log sunucumuza gönderilir.
Sizler tüm loglar yerine belli loglarıda gönderebilirsiniz. Bu size kalmış.


rsyslog'de varsayılan olarak yetkilendirme olmadığından güvenlik duvarının aktif olması ve sınırlama yapılmasını tavsiye ederim.


10 Ocak 2019 Perşembe

ntp sunucusunu güvenli hale getirme

linux sunucumuzu ntp olarak yapılandırdığımızda, ntp servisinden kaynaklı güvenlik açığı çıkmaktadır.
Bunun önlemenin şu anki tek yolu, ntp sorgularını sınırlamaktır. Aşağıda test edilmiş bir ntp.conf dosyası bulunuyor.

[root@dns01 ~]# cat /etc/ntp.conf
driftfile /var/lib/ntp/drift

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery


restrict 10.254.254.0      mask 255.255.0.0    notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

server  0.rhel.pool.ntp.org  iburst

includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
trustedkey 14570
requestkey 14570
controlkey 14570

# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats

# Disable the monitoring facility to prevent amplification attacks using ntpdc
# monlist command when default restrict does not include the noquery flag. See
# CVE-2013-5211 for more details.
# Note: Monitoring will not be disabled with the limited restriction flag.
disable monitor
[root@dns01 ~]#

İşin püf noktası, varsayılan olarak sorgulamaları sınırlandırmak, izin verilen networkten gelen sorgulamalarıda sınırlandırarak gerekli izin vermek. Şayet belli bir sunucuya daha fazla yetki vermek gerekiyorsa, o sunucuya güvenli anahtar ile yetkilendirme(key authentication) yaparak ona özel restrict kuralı ayarlanması gerekir.

Linuxle eğlenceye devam :)


8 Ocak 2019 Salı

RedHat 7.x, Oracle Enterprise Linux 7.x, CentOS 7.x de varsayılan kerneli değiştirmek

Öncelikle sisteme yüklenmiş mevcut kernelleri listeleriz;


[root@oradb01 ~]# awk -F\' '/menuentry / {print $2}' /etc/grub2.cfg
Oracle Linux Server
Oracle Linux Server (4.1.12-124.22.2.el7uek.x86_64 with Unbreakable Enterprise Kernel) 7.6
Oracle Linux Server (4.1.12-124.22.2.el7uek.x86_64 with Unbreakable Enterprise Kernel) 7.6 (recovery mode)
Oracle Linux Server (4.1.12-61.1.18.el7uek.x86_64 with Unbreakable Enterprise Kernel) 7.6
Oracle Linux Server (4.1.12-61.1.18.el7uek.x86_64 with Unbreakable Enterprise Kernel) 7.6 (recovery mode)
Oracle Linux Server (3.10.0-957.0.el7.x86_64 with Linux) 7.6
Oracle Linux Server (3.10.0-957.0.el7.x86_64 with Linux) 7.6 (recovery mode)
Oracle Linux Server (3.10.0-957.el7.x86_64 with Linux) 7.6
Oracle Linux Server (3.10.0-957.el7.x86_64 with Linux) 7.6 (recovery mode)
Oracle Linux Server (3.10.0-514.el7.x86_64 with Linux) 7.6
Oracle Linux Server (3.10.0-514.el7.x86_64 with Linux) 7.6 (recovery mode)
Oracle Linux Server (0-rescue-e541e1b9900e4202ae5091ee11df9604 with Linux) 7.6
Oracle Linux Server (0-rescue-e541e1b9900e4202ae5091ee11df9604 with Linux) 7.6 (recovery mode)
[root@oradb01 ~]#



Sonrasında istediğimiz kerneli ayarlarız;

 grub2-set-default "Oracle Linux Server (3.10.0-514.el7.x86_64 with Linux) 7.6"


ve grub2 conf dosyasını tekrardan oluştururuz.


# grub2-mkconfig -o /etc/grub2.cfg

redhat cloud-init

Sonunda bende redhat cloud image dedikleri disk yansısı  (rhel-server-7.6-ppc64le-kvm.qcow2 )  ile sanal sistem kurmaya başladım. İlk sorun ip adresinin  ayarlanmasında oldu. Benim gibi yeni başlayacak arkadaşlara, ip adresi konusunda yaşayacağı sıkıntıyı daha kolay çözmeleri için tecrübemi paylaşayım dedim.

Ağ kartına ip atanmasına karşılık,  açılış esnasında ağ kartı devreye girmiyordu.
Nedeni ise ağ kartı ayar dosyasında  (ifcfg-eth0)  ONBOOT=no olması.
Bu sorunu ONBOOT=no değerini yes yaparak çözdüm.

temel meta-data dosyası;

p8-800002-22c:~/cloud-kvm # cat meta-data
instance-id: rhel76kvm
local-hostname: rhel76kvm.local
network-interfaces: |
  iface eth0 inet static
  address 10.34.11.129
  network 10.34.0.0
  netmask 255.255.0.0
  broadcast 10.34.255.255
  gateway 10.34.254.236
p8-800002-22c:~/cloud-kvm #



user-data dosyasının içeriği;

p8-800002-22c:~/cloud-kvm # cat user-data

#cloud-config
user: remzi
password: atomic
chpasswd:
  list: |
    root:root
    remzi:remzi
  expire: False
ssh_pwauth: True
ssh_authorized_keys:
  - ssh-rsa ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8KqFyN4B4dqznUtqctdCY+0tdSnehLqeOM49DcyinW0egZbuizARF72Dpl1TmRVN4PUAcy8S7JxPow4aOrpDSAOUPQKcMabt66WNiBUOkr5hpVujtwR4XlzzIm8ySysTcWNnsv8oZEQuLhX9jCdj6n/v3V6ZBBJX7yTHhNflUXYBpFIM/Gh08tSH31761ZqLlPqX43+KWYI7v37dVqrAwE/a9FSQgCJ0pUiYRodbrvLqnIDng682UoeTzrxea0QY8rYRxYGAQLPemLexFlA5vKal7tyiaGHIQmtgJGchAe7iss6k22vq1WYT4bE8+M/l3mb5lXxMfzx19NhftMzxv remzi@p8-800002-22c

bootcmd:
  - set -x;sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth0
  - ifdown eth0
  - ifup eth0

p8-800002-22c:~/cloud-kvm #

mkisofs -output cloud-init.iso -volid cidata -joliet -rock user-data meta-data

cloud-init.iso cdrom yansısını, vm ilk başlattığımızda görünüyor olması gerekiyor.
Sistem disk yansısından(rhel-server-7.6-ppc64le-kvm.qcow2) başlıyor ve gerekli ayar dosyalarını cdrom yansısından okuyarak, kendini ayarlıyor.

Bu sorunun belki daha basit bir yöntemi vardı, fazla araştırmadım. Daha basit çözümünü bilen arkadaşlar bilgilerini paylaşabilir. :)

Detaylı bilgi için RedHat sayfasına;
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_atomic_host/7/html-single/installation_and_configuration_guide/
bakılabilir.

Linux ile eyu eğlenceler.

6 Ocak 2019 Pazar

Dosya paylaşım ortamları

Bir dosyayı birden fazla kişi arasında hızlı bir şekilde paylaşmak ihtiyacı duyduğumuzda, resilio hızlı ve güzel bir çözüm olabilir.

https://www.resilio.com

Beğendiğim temel özelliği, hemen hemen tüm platformlarda zahmetsiz çalışması ve kullanım kolaylığı oldu.




ansible ile yerel quay sunucusu üzerinden execution environment kullanımı

 Yerel quay veya registry sunucularımızdaki ee leri ansible ile kullanabiliyoruz. Bunun için kendi yaptığımız ee leri veya hazır ee leri yük...