24 Eylül 2017 Pazar

ipa-client-install sssd

centos 7.3 veya 7.4 tabanlı linux sunucusunu merkezi hesaplama yöneticisine bağlarken(freeipa - ipa )  aşağıdaki durum mevcut ise;

SSSD enabled
SSSD service restart was unsuccessful.
Configured /etc/openldap/ldap.conf
Unable to find 'admin' user with 'getent passwd admin@localdomain.net'!
Unable to reliably detect configuration. Check NSS setup manually.
NTP enabled
Configured /etc/


Hata ile karşılasacaksınız. Bu bir bug scientific linux ve redhat de giderilmiş, fakat bu düzeltme centos'a yansımamış gibi görünüyor.
Aksaklığın çözümü;

chmod 600 /etc/sssd/sssd.conf
systemctl restart sssd





[root@cnode002 ~]# ipa-client-install
Discovery was successful!
Client hostname: cnode002.localdomain.net
Realm: localdomain.net
DNS Domain: localdomain.net
IPA Server: headnode.localdomain.net
BaseDN: dc=hpc,dc=localdomain,dc=lan,dc=tr

Continue to configure the system with these values? [no]: yes
Synchronizing time with KDC...
Attempting to sync time using ntpd.  Will timeout after 15 seconds
Attempting to sync time using ntpd.  Will timeout after 15 seconds
Unable to sync time with NTP server, assuming the time is in sync. Please check                                                                                                                                 that 123 UDP port is opened.
User authorized to enroll computers: admin
Password for admin@localdomain.net:
Successfully retrieved CA cert
    Subject:     CN=Certificate Authority,O=localdomain.net
    Issuer:      CN=Certificate Authority,O=localdomain.net
    Valid From:  2017-09-23 14:03:23
    Valid Until: 2037-09-23 14:03:23

Enrolled in IPA realm localdomain.net
Created /etc/ipa/default.conf
New SSSD config will be created
Configured sudoers in /etc/nsswitch.conf
Configured /etc/sssd/sssd.conf
Configured /etc/krb5.conf for IPA realm localdomain.net
trying https://headnode.localdomain.net/ipa/json
[try 1]: Forwarding 'schema' to json server 'https://headnode.localdomain.net                                                                                                                                /ipa/json'
trying https://headnode.localdomain.net/ipa/session/json
[try 1]: Forwarding 'ping' to json server 'https://headnode.localdomain.net/i                                                                                                                                pa/session/json'
[try 1]: Forwarding 'ca_is_enabled' to json server 'https://headnode.hpc.localdomain                                                                                                                                .lan.tr/ipa/session/json'
Systemwide CA database updated.
Hostname (cnode002.localdomain.net) does not have A/AAAA record.
Missing reverse record(s) for address(es): 10.111.1.2.
Adding SSH public key from /etc/ssh/ssh_host_rsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_ecdsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_ed25519_key.pub
Adding SSH public key from /etc/ssh/ssh_host_dsa_key.pub
[try 1]: Forwarding 'host_mod' to json server 'https://headnode.hpc.localdomain.lan.                                                                                                                                tr/ipa/session/json'
SSSD enabled
SSSD service restart was unsuccessful.
Configured /etc/openldap/ldap.conf
Unable to find 'admin' user with 'getent passwd admin@localdomain.net'!
Unable to reliably detect configuration. Check NSS setup manually.
NTP enabled
Configured /etc/ssh/ssh_config
Configured /etc/ssh/sshd_config
Configuring localdomain.net as NIS domain.
Client configuration complete.
The ipa-client-install command was successful
[root@cnode002 ~]# ls -la /etc/sssd/
total 16
drwx--x--x+   3 sssd sssd   35 Sep 24 11:26 .
drwxr-xr-x+ 111 root root 8192 Sep 24 11:26 ..
drwx--x--x+   2 sssd sssd    6 Sep  7 05:18 conf.d
-rw-r--r--    1 root root  489 Sep 24 11:26 sssd.conf

[root@cnode002 ~]# chmod 600 /etc/sssd/sssd.conf

[root@cnode002 ~]# systemctl restart sssd

[root@cnode002 ~]# id admin
uid=1234000000(admin) gid=1234000000(admins) groups=1234000000(admins)
[root@cnode002 ~]#





[root@cnode002 ~]# systemctl status sssd
● sssd.service - System Security Services Daemon
   Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/sssd.service.d
           └─journal.conf
   Active: active (running) since Sun 2017-09-24 11:27:37 +03; 8min ago
 Main PID: 2612 (sssd)
   CGroup: /system.slice/sssd.service
           ├─2612 /usr/sbin/sssd -i -f
           ├─2614 /usr/libexec/sssd/sssd_be --domain hpc.localdomain.lan --uid 0 --gid 0 --debug-to-files
           ├─2615 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --debug-to-files
           ├─2616 /usr/libexec/sssd/sssd_sudo --uid 0 --gid 0 --debug-to-files
           ├─2617 /usr/libexec/sssd/sssd_pam --uid 0 --gid 0 --debug-to-files
           ├─2618 /usr/libexec/sssd/sssd_ssh --uid 0 --gid 0 --debug-to-files
           └─2619 /usr/libexec/sssd/sssd_pac --uid 0 --gid 0 --debug-to-files

Sep 24 11:27:37 cnode002 sssd[nss][2615]: Starting up
Sep 24 11:27:37 cnode002 sssd[pac][2619]: Starting up
Sep 24 11:27:37 cnode002 sssd[pam][2617]: Starting up
Sep 24 11:27:37 cnode002 sssd[sudo][2616]: Starting up
Sep 24 11:27:37 cnode002 sssd[ssh][2618]: Starting up
Sep 24 11:27:37 cnode002 sssd_be[2614]: GSSAPI client step 1
Sep 24 11:27:37 cnode002 sssd_be[2614]: GSSAPI client step 1
Sep 24 11:27:37 cnode002 sssd_be[2614]: GSSAPI client step 1
Sep 24 11:27:37 cnode002 sssd_be[2614]: GSSAPI client step 2
Sep 24 11:27:37 cnode002 systemd[1]: Started System Security Services Daemon.
[root@cnode002 ~]#

[root@cnode002 ~]# id admin
uid=1234000000(admin) gid=1234000000(admins) groups=1234000000(admins)
[root@cnode002 ~]#

21 Eylül 2017 Perşembe

nginx godaddy g2 sertifika yüklenmesi

sertifika için istek ve anahtar dosyası üretilir.

openssl req -newkey rsa:2048 -nodes -keyout alanadi.com.key -out alanadi.com.csr

Gerekli onaylama işlemleri tamamlandıktan sonra ssl - Apache indirilir.
gelen dosyalar içinden çıkan crt dosyasını, isim anlaşılabilir olması için;

 cp 9b46c7a1a2fef2dc.crt  alan-adi.com.crt -iv

alan adıyla birlikte kayıt ederiz.


Kayıt yaptıktan sonra
cat alanadı.com.crt gd_bundle-g2-g1.crt >alanadi.com.chained.crt





ve bir dosyanin içerisine aşağıdakilireni ekleyerek;
###################alanadi-ssl-conf################
ssl_certificate     /etc/nginx/ssl/alanadi.chained.com.crt;
ssl_certificate_key /etc/nginx/ssl/alanadi.com.key;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

ssl_dhparam /etc/ssl/certs/dhparam.pem;

###################alanadi-ssl-conf################

server {..}  tanimlamasi içerisine
include /etc/nginx/ssl/alanadi-ssl.conf;
ilave ederek, nginx yeniden başlatıyoruz.
dhparams.pem daha önceden üretilmediyse
# openssl dhparam -out dhparms.pem 2048
komutuyla üretebiliriz.


18 Eylül 2017 Pazartesi

haproxy mysql loadbalancer olarak kullanmak



########lb01-/etc//haproxy/haproxy.cfg--####################
global
    pidfile /var/run/haproxy.pid
    daemon
    user haproxy
    group haproxy
    stats socket /var/run/haproxy.socket    user haproxy    group haproxy    mode 600 level admin
    node haproxy_172.16.33.06
    description haproxy    server

        #* Performance Tuning
    maxconn 8192
    spread-checks 3
    quiet
defaults
        #log    global
    mode tcp
    option  dontlognull
    option tcp-smart-accept
    option tcp-smart-connect
        #option dontlog-normal
    retries 3
    option redispatch
    maxconn 8192
    timeout check 3500ms
    timeout queue 3500ms
    timeout connect 3500ms
    timeout client 10800s
    timeout server 10800s

    userlist STATSUSERS
    group admin users admin
    user admin insecure-password admin-parolasi-degistir
    user    stats insecure-password genel-parola-degistir

listen admin_page
    bind *:9600
    mode http
    stats enable
    stats refresh 60s
    stats uri /
    acl AuthOkay_ReadOnly http_auth(STATSUSERS)
    acl AuthOkay_Admin http_auth_group(STATSUSERS) admin
    stats http-request auth realm admin_page unless AuthOkay_ReadOnly
        #stats admin if AuthOkay_Admin

listen haproxy_172_16_33_06._3306
    bind *:3306
    mode tcp
    timeout client 10800s
    timeout server 10800s
    balance leastconn
    option httpchk
    option allbackups
    default-server port 9200 inter 2s downinter 5s rise 3 fall 2 slowstart 60s    maxconn 500 maxqueue 256 weight 100
    server 172.16.33.11 172.16.33.11:3306 check
    server 172.16.33.12 172.16.33.12:3306 check
    server 172.16.33.13 172.16.33.13:3306 check port 9200  inter 2s downinter 5s rise 3 fall 2 slowstart 60s    maxconn 100 maxqueue 256 weight 100 backup

########lb01-/etc//haproxy/haproxy.cfg--####################





#########mysql server---adding-/etc/services----##############
mysqlchk        9200/tcp
mysqlchk        9200/tcp





#########mysql server---adding-/etc/services----##############

#########mysql server---adding- xinetd services----############

/etc/xinetd.d/mysqlchk
# default: on
# description: mysqlchk
service mysqlchk
{
        flags           = REUSE
        socket_type     = stream
        port            = 9200
        wait            = no
        user            = root
        server          = /usr/local/sbin/mysqlchk
        log_on_failure  += USERID
        log_on_success  =
        disable         = no
        #only_from       = 0.0.0.0/0
        only_from       = 0.0.0.0/0
        per_source      = UNLIMITED
}
#########mysql server---adding- xinetd services----##############



######################mysqlchk######################
#####!/bin/bash
#
# This script checks if a mysql server is healthy running on localhost. It will
# return:
# "HTTP/1.x 200 OK\r" (if mysql is running smoothly)
# - OR -
# "HTTP/1.x 500 Internal Server Error\r" (else)
#
# The purpose of this script is make haproxy capable of monitoring mysql properly
#

MYSQL_HOST="localhost"
MYSQL_PORT="3306"
MYSQL_USERNAME='smysqlchk'
MYSQL_PASSWORD='smy$qlchk*!'
MYSQL_OPTS="-N -q -A --connect-timeout=10"
TMP_FILE="/dev/shm/mysqlchk.$$.out"
ERR_FILE="/dev/shm/mysqlchk.$$.err"
FORCE_FAIL="/dev/shm/proxyoff"
MYSQL_BIN='/usr/bin/mysql'
CHECK_QUERY="show global status where variable_name='wsrep_local_state'"
CHECK_QUERY2="show global variables where variable_name='wsrep_sst_method'"
CHECK_QUERY3="show global variables where variable_name='read_only'"
preflight_check()
{
    for I in "$TMP_FILE" "$ERR_FILE"; do
        if [ -f "$I" ]; then
            if [ ! -w $I ]; then
                echo -e "HTTP/1.1 503 Service Unavailable\r\n"
                echo -e "Content-Type: Content-Type: text/plain\r\n"
                echo -e "\r\n"
                echo -e "Cannot write to $I\r\n"
                echo -e "\r\n"
                exit 1
            fi
        fi
    done
}
return_ok()
{
    echo -e "HTTP/1.1 200 OK\r\n"
    echo -e "Content-Type: text/html\r\n"
    echo -e "Content-Length: 43\r\n"
    echo -e "\r\n"
    echo -e "<html><body>MySQL is running.</body></html>\r\n"
    echo -e "\r\n"
  #  rm $ERR_FILE $TMP_FILE
    exit 0
}
return_fail()
{
    echo -e "HTTP/1.1 503 Service Unavailable\r\n"
    echo -e "Content-Type: text/html\r\n"
    echo -e "Content-Length: 42\r\n"
    echo -e "\r\n"
    echo -e "<html><body>MySQL is *down*.</body></html>\r\n"
#    sed -e 's/\n$/\r\n/' $ERR_FILE
    echo -e "\r\n"
 #   rm $ERR_FILE $TMP_FILE
    exit 1
}
preflight_check
if [ -f "$FORCE_FAIL" ]; then
        echo "$FORCE_FAIL found" > $ERR_FILE
        return_fail;
fi
status=$($MYSQL_BIN $MYSQL_OPTS --host=$MYSQL_HOST --port=$MYSQL_PORT --user=$MYSQL_USERNAME --password=$MYSQL_PASSWORD -e "$CHECK_QUERY;" 2>/dev/null | awk '{print $2;}')
if [ $? -ne 0 ]; then
        return_fail;
fi

if [ $status -eq 2 ] || [ $status -eq 4 ] ; then

    readonly=$($MYSQL_BIN $MYSQL_OPTS --host=$MYSQL_HOST --port=$MYSQL_PORT --user=$MYSQL_USERNAME --password=$MYSQL_PASSWORD -e "$CHECK_QUERY3;" 2>/dev/null | awk '{print $2;}')
    if [ $? -ne 0 ]; then
        return_fail;
    fi   
    if [ "$readonly" = "YES" -o "$readonly" = "ON" ]; then
        return_fail;
    fi

    if [ $status -eq 2 ]; then
        method=$($MYSQL_BIN $MYSQL_OPTS --host=$MYSQL_HOST --port=$MYSQL_PORT --user=$MYSQL_USERNAME --password=$MYSQL_PASSWORD -e "$CHECK_QUERY2;" 2>/dev/null | awk '{print $2;}')
        if [ $? -ne 0 ]; then
            return_fail;
        fi
        if [ -z "$method" ] || [ "$method" = "rsync" ] || [ "$method" = "mysqldump" ]; then
            return_fail;
        fi
    fi
    return_ok;
fi

return_fail;

######################mysqlchk######################

15 Eylül 2017 Cuma

zbt-we1326-kc



00:00.0 PCI bridge: Device 0e8d:0801 (rev 01)
00:01.0 PCI bridge: Device 0e8d:0801 (rev 01)
01:00.0 Network controller: MEDIATEK Corp. MT7662E 802.11ac PCI Express Wireless Network Adapter
02:00.0 Network controller: MEDIATEK Corp. Device 7603
root@OpenWrt:~#




root@LEDE:~# iperf -c 172.16.0.45
------------------------------------------------------------
Client connecting to 172.16.0.45, TCP port 5001
TCP window size: 43.8 KByte (default)
------------------------------------------------------------
[  3] local 172.16.0.78 port 34614 connected with 172.16.0.45 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   919 MBytes   770 Mbits/sec
root@LEDE:~#

root@LEDE:~# lspci
00:00.0 PCI bridge: Device 0e8d:0801 (rev 01)
00:01.0 PCI bridge: Device 0e8d:0801 (rev 01)
01:00.0 Network controller: MEDIATEK Corp. MT7662E 802.11ac PCI Express Wireless Network Adapter
02:00.0 Network controller: MEDIATEK Corp. Device 7603
root@LEDE:~#







8 Eylül 2017 Cuma

mysql clusterı yerel ağdan gelebilecek olumsuzluklardan korumak

firewall arkasındaki sistemlerde iptables devre dışıbırakırım. Büyük ihtimal çoğunlukta benim gibi yapıyordur. 😆
Fakat son 24saat içinde yaşadığım bir sorundan dolayı mysql için özel bir kural uyguladım ve sadece izin verdiğim sunuculardan erişime izin verdim.
mysql kullanıcılarını, özellikle aktif-aktif mysql kullanıcılarına tavsiyem, yerel ağda olsa sınırmala yapmanız. Aksi durumda ağdan alacağınız bir mesaj tüm clusterın çökmesine sebep olabilir. Tecrübeyle şahit.

MYsql için uyguladığım kurallar aşağıda. İsteye kontrol ederek kullanabilir.

###################Scriptin başlangıcı###################
#! /bin/bash
# 20170908
# remzi@akyuz.tech

# mysql nodes
node1=10.60.10.1
node2=10.60.10.2
node4=10.60.10.4

#web servers
web03=10.60.10.83
web04=10.60.10.84
web05=10.60.10.85

#monitor
nagios=10.60.10.253

localhost=127.0.0.1

ports="3306,4567"

iptables -N mysql
iptables -F mysql
for host in $localhost $node1 $node2 $node4 $nagios $web03 $web04 $#web05
do
echo iptables -A mysql -p tcp -m multiport --destination-port $ports -s $host    -j ACCEPT
iptables -A mysql -p tcp -m multiport --destination-port $ports -s $host    -j ACCEPT
done

echo iptables -A mysql -p tcp -m multiport --destination-port $ports -j DROP
iptables -A mysql -p tcp -m multiport --destination-port $ports -j DROP

iptables -I INPUT -j mysql
########################Scriptin sonu#################

Kendi sisteminize göre scripti düzenlemeniz(ip adresi, node vs.) gerekir.

6 Eylül 2017 Çarşamba

Disk doldu, ne yaparız?

Disk kullanım alanımız dolup, kullanılabilir alan kalmadığında yapılabilecekler;

1. Diski direk kullanıyorsak (Her hangi bir volume manager kullanılmadan)
Test sistemimizde 10G /testpart bölümümüz mevcut.
Burayı dolduruyoruz.


Yukarıda görüldüğü gibi /testpart bölümünde boş alan kalmadı.
Bu aşamada kullandığımız alan her hangi bir disk sunucusu üzerinden ise şanslıyız. Yapmamız gereken, disk ünitesi üzerinden mevcut diskin(lun) boyutu artırarak, kullanıma almak.



Diskimizin boyutunu 2GB artırarak 12GB yaptık.  Tekrar lsblk ve parted ile kontrol ediyoruz. Her hangi bir işlem yapmadan önce diskimizi kullanım dışı bırakmayı unutmayalım!


Diskimizin boyutu arttığından partition tablosunuda düzenlememiz gerekiyor.
Bu konuda parted, yukarıdaki gibi bize yardımcı oluyor.
Yukarıdaki işlemi yaptiktan sonra  bölümü siliyoruz ve tekrar oluşturuyoruz.


Bölüm yeniden 12GB olarak oluşturuldu ve kullanıma tekrar alındı.
Yalnız  dosya sistemimiz hala 10GB. Dosya sistemimizn 12 GB olarak kullanılması için, xfs_growfs ile mevcut bölüm tablosunu güncelleyerek, kontrol ediyoruz.


Disk bölüm tabloları güncellendi ve 2GB kullanılabilir alan elde etmiş olduk.
Eski dosyalarımızında durup durmadığını kontrol ediyoruz. Aşağıda görüldüğü gibi dosyalarımız mevcut durumda.
Yukarıdaki işlemlerde dikkat etmemiz gereken önemli nokta, disk bölümünün silinip, veriler silinmeden tekrar oluşturulmasıdır.  Şayet tecrubeniz yoksa, kendiniz için test sistemi oluşturup, öncelikle test sisteminde deneme yapmanızı tavsiye ederim.

parted eski sürümlerinde(3.0 öncesi) resize/resizepart özelliği  mevcut. Sisteminizdeki parted eski sürümse resize özelliğini kullanabilirsiniz.


2. Her hangi bir disk sistemi kullanmıyorsak ve sisteme fiziksel olarak disk takıp kullanılacaksa bu durumda lvm kullanımına geçmemiz faydalı olur. Elle lvm yapılandırması oldukça basit. Yeni diski sistemimize taktığımızı ve

a. fiziksel bölüm oluşturulması
b. volum oluşturulması
c. sanal volum oluşturulması
d. formatlama 
e. kullanıma alma
f. eski bölümden dataları yeni bölüme tasışıma,
g. Şayet eski bölüm kök "/" - bölüm değilse, eski bölüme yeni bölüme ilave etme,
   



Yeni diskimizi testpart olarak kullanıma aldık.
Şimdi eski diskimizi, yeni bölüme taşıyarak, yeni bölümü /testpart olarak sisteme bağlayarak kullanıma devam edebiliriz. Bu işlemi kendinize uygun aracı (cp, rsync, tar vs) kullanabilirsiniz. 
Dosyaların taşınma işleminin yapıldığını kabul ederek, eski kullanım alanının yeni alanla birleştirilmesini aşağıdaki gibi yapabilirizi.





Artık yeni bölümü, eski bölüm olurak sisteme bağlayabiliriz(unmount,mount).
Son olarakta fstab'ı güncellenmesi gerekmektedir.




Git kullanımı notları

 Temel ayarlar git kullanıcısı için: $ git config --global user.name "Remzi AKYÜZ" $ git config --global user.email "remzi@ak...