openUP KÜMELEME ( CLUSTER ) ÇÖZÜMÜ BÜTÜNCÜL KÜMELEME ÇALIŞMASI ve BÜTÜNCÜL KÜMELEME ÇALIŞMASI Mustafa YAVUZ Uzman Araştırmacı TÜBİTAK-BİLGEM Kamu Sertifikasyon Merkezi 1 1
Konu Başlıkları PostgreSQL ve Kümeleme Çözümleri openUP - SAN Tabanlı Aktif-Pasif Cluster Çözümü Bütüncül Cluster Çalışması Örnekleri www.veritabanci.net 2 2
PostgreSQL ve Kümeleme Çözümleri www.veritabanci.net 3 3 3
PostgreSQL ve Kümeleme Çözümleri Veritabanı Cluster larına neden ihtiyaç duyarız ? - Temel hususlar. Veritabanı Hizmeti Sürekliliği Veritabanı Yedekliliği Veritabanı Hizmeti Yönetilebilirliği ( Bakım ) Veritabanı Performansı ve Cluster Verimliliği www.veritabanci.net 4 4
Veritabanı Hizmeti Sürekliliği Veritabanında kabul edilebilir süreklilik yüzdesi nedir? Örn. : %99,9 iyi mi ? www.veritabanci.net 5 5
Veritabanı Hizmeti Sürekliliği Oran Bir Yılda Toplam Kesinti %99 : 3 gün 16 saat %99.9 : 8 saat 45 dk. %99.99 : 52 dk. %99.999 : 5 dk. www.veritabanci.net 6 6
Veritabanı Hizmeti Sürekliliği Oran Bir Yılda Toplam Kesinti %99 : 3 gün 16 saat %99.9 : 8 saat 45 dk. %99.99 : 52 dk. %99.999 : 5 dk. Planlı - Plansız kesintinin etkisi Aralıklı - Sürekli kesintinin etkisi Bölen - Çarpan www.veritabanci.net 7 7
Veritabanı Hizmeti Sürekliliği İdeal durum : Veritabanı vardır ve hep çalışır ( Durduğu hiç görülmemiştir ). www.veritabanci.net 8 8
Veritabanı Hizmeti Sürekliliği İdeal durum : Veritabanı yöneticisi vardır ve hep yatar ( Çalıştığı hiç görülmemiştir ) . www.veritabanci.net 9 9
Veritabanı Yedekliliği Commit edilmiş veriyi kaybetme ! www.veritabanci.net 10 10
Veritabanı Yedekliliği Tüm yumurtaları aynı sepete koyma * Cihaz yedekliliği * Lokasyon yedekliliği * Çözüm Yedekliliği www.veritabanci.net 11 11
Veritabanı Hizmeti Yönetilebilirliği ve Bakım Veritabanı Clusterı mümkün olduğunca basit olmalıdır. www.veritabanci.net 12 12
Veritabanı Hizmeti Yönetilebilirliği ve Bakım Clusterı yönetmek gerektiğinden fazla çaba gerektirmemelidir. www.veritabanci.net 13 13
Veritabanı Hizmeti Yönetilebilirliği ve Bakım Cluster veritabanı upgradelerini ve uygulamalarını destekleyebilecek esneklikte olmalıdır. www.veritabanci.net 14 14
Veritabanı Performansı ve Cluster Verimliliği * Kullanılan veritabanı cluster yönetemi performansı düşürmemeli mümkünse artırmalıdır. * Performans ta okuma-yazma isteği farkı ( > %95 okuma ) ( aktif - pasif ve aktif - aktif cluster durumları ) * Clusterda atıl unsur mümkünse bırakılmamalıdır. www.veritabanci.net 15 15
PostgreSQL ve Kümeleme Çözümleri ( avantaj-dezavantaj ) SAN(ortak disk tabanlı) tabanlı -heartbeat vb. ( aktif-pasif / aktif-aktif ( ? ) ) www.veritabanci.net 16 16
PostgreSQL ve Kümeleme Çözümleri ( avantaj-dezavantaj ) SAN(ortak disk tabanlı) tabanlı -heartbeat vb. Avantajları : * Replikasyon olmadığından replikasyon kaynaklı veri kaybı riski yok. * Replikasyon kaynaklı performansa ( yazma) olumsuz etkisi yok. Dezavantaj : * Henüz aktif-aktif güvenilir bir çözüm yok * Verinin tek bir cihaz ( SAN ) üzerinde tutulması.(Cihazdan bağımsızlık yok ) * Pasif sunucunun atıl beklemesi www.veritabanci.net 17 17
PostgreSQL ve Kümeleme Çözümleri ( avantaj-dezavantaj ) Replikasyon tabanlı Trigger base (Slony), Statement Base(pgpool), Archive base ( Hot Standby ) vb. www.veritabanci.net 18 18
PostgreSQL ve Kümeleme Çözümleri ( avantaj-dezavantaj ) Replikasyon tabanlı Avantajları : * Veri otomatikman yedeklenmiş oluyor. * Replikasyon kaynaklı performansa ( okuma) olumlu etki. Dezavantaj : * Replikasyon kaynaklı tutarlılık sorunları. * Replikasyondan kaynaklı performans ( Yazma ) kaybı. www.veritabanci.net 19 19
PostgreSQL ve Kümeleme Çözümleri ( avantaj-dezavantaj ) Replikasyon tabanlı Sync mu Async mu olmalı ? Maliyet Hesabı : Veri Kaybı > Erişilebilirlik -> Sync Erişilebilirlik > Veri Kaybı -> Async www.veritabanci.net 20 20
PostgreSQL ve Kümeleme Çözümleri * Cluster sistemler ( tedbir ve paranoyaklık arasında ) * Maliyet-tedbir grafiği ( Güvensiz-tedbirli-Paranoyak ) * Maliyet ve prestij unsurları www.veritabanci.net 21 21
PostgreSQL ve Kümeleme Çözümleri * Veritabanı cluster çözümünde geniş perspektifli olmak ( Veritabanı, System, Uygulama, Storage ) * Değişik çözümleri bir arada kullanmak ( Standby - aktif/pasif ) www.veritabanci.net 22 22
PostgreSQL ve Kümeleme Çözümleri İhtiyaç ne ? www.veritabanci.net 23 23
openUP - SAN tabanlı aktif-pasif Kümeleme Çözümü www.veritabanci.net 24 24 24
Basitlik-Yönetilebilirlik-Güvenilirlik openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü Basitlik-Yönetilebilirlik-Güvenilirlik www.veritabanci.net 25 25
openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü ortak disk tabanlı aktif-pasif cluster sistemlerdeki üç temel unsur ( kaynak ) * ortak(Service) ip * Veritabanı servisi * disk mount işlemi www.veritabanci.net 26 26
openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü www.veritabanci.net 27 27
openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü Nedir ? 2 sunuculu aktif-pasif SAN tabanlı cluster çözümüdür. Niçin ihtiyaç duyulmuştur? Sürekliliğin üst düzeyde olduğu basit ve güvenilir bir cluster çözümü ihtiyacı Nerede kullanılmaktadır? TC E-kimlik sertifika veritabanları KKTC E-kimlik sertifika veritabanları www.veritabanci.net 28 28
openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü Hangi programlama dili yile yazılmıştır? Python Desteklediği işletim sistemleri nelerdi? Redhat/Centos/OEL 5 ve 6 (32 veya 64 bit) Desteklediği veritabanları nelerdir? PostgreSQL, MySQL İhtiyaç duyulan donanımlar ve yazılımlar nelerdir. Donanım : 2 Sunucu ve hba kartları, SAN storage, ntp server Yazılım : sshd, python www.veritabanci.net 29 29
openUP Kurulum Adımları – Ön İşlemler openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Kurulum Adımları – Ön İşlemler 1 - Master ve slave sunucuda fdisk -l komutu ile data dizini için kullanılacak diskin işletim sistemi tarafından her iki sunucudada aynı isimle görürebildiği kontrol edilir. SAN disk formatlanmamış ise mkfs ile formatlanır. ## fdisk -l ## mkfs.ext4 [Disk_adı] 2 - Master ve slave sunucuların root kullanıcılarının birbirlerine şifresiz ssh bağlantısı yapabilmesi için aralarında ssh-keygen paylaşımı yapılır. Master # ssh-keygen Slave # ssh-keygen Master # scp /root/.ssh/id_rsa.pub [slave_ip]:/root/.ssh/authorized_keys Slave # scp /root/.ssh/id_rsa.pub [master_ip]:/root/.ssh/authorized_keys www.veritabanci.net 30 30
openUP Kurulum Adımları – Ön İşlemler openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Kurulum Adımları – Ön İşlemler 3 - postgresql rpm leri master ve slave sunucuya yüklenir. root # rpm -ivh postgresql93-libs.rhel6.x86_64 root # rpm -ivh postgresql93.rhel6.x86_64 root # rpm -ivh postgresql93-server.rhel6.x86_64 vb. 4 - Master ve slave sunucuda /pgdata dizini oluşturulur. Owner ı postgres yapilir. root # mkdir /pgdata root # chown postgres.postgres /pgdata www.veritabanci.net 31 31
openUP Kurulum Adımları – Ön İşlemler openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Kurulum Adımları – Ön İşlemler 5 - Master ve slave sunucuda /etc/init.d/ dizini altındaki postgresql servis dosyasında aşağıdaki satırlar gerekli şekilde düzenlenir. PGPORT=5432 PGDATA=/pgdata/data PGLOG=/pgdata/pgstartup.log düzenleme yapıldıktan sonra her iki sunucuda aşağıdaki komut çalışıtırılarak postgresql servisini kendiliğinde çalışmayacağından emin olunur. root # chkconfig postgresql off www.veritabanci.net 32 32
openUP Kurulum Adımları – Ön İşlemler openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Kurulum Adımları – Ön İşlemler 6 - Master sunucuda aşağıdaki komut ile san disk /pgdata dizini altına mount edilir. root # mount [san_disk_adı] /pgdata mount işleminden sonra aşağıdaki komut ile postgresql data yapısı oluşturulur. root # service postgresql initdb daha sonra data dizini altındaki pg_hba.conf ve postgresql.conf gerekli şekilde düzenlenerek disk umount edilir. root # umount /pgdata 7 - Her iki sunucuda crontab a ntp senkronizasyonu için aşağıdaki satır eklenir. root # crontab -e 1 * * * * /usr/sbin/ntpdate [ntp_server_ip] > /dev/null www.veritabanci.net 33 33
openUP Kurulum Adımları – Konfigurasyon openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Kurulum Adımları – Konfigurasyon 8 - openUP.tar.gz dosyasi master sunucuya kopyalanir ve aşağıdaki komutla açılır. root # tar -xvf openUP.tar.gz oluşan openUP klasörü içerisindeki configBuild.py dosyasının aşağıdaki değişken parametreleri gerekli şekilde düzenlenir. ##################NODE SPECIAL PARAMETERS################ MASTER_NODE="[master_ip]" # # degisecek SLAVE_NODE="[slave_ip]" # degisecek www.veritabanci.net 34 34
openUP Kurulum Adımları – Konfigurasyon openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Kurulum Adımları – Konfigurasyon ##################SHARED PARAMETERS################# SW_IP="[swicth_ip]" #Networkte baglanılan switch in ipsi # degisecek VIRTUAL_IP="[ortak_ip]" #Ortak ip ( Service IP ) # degisecek NETWORK_INT="bond0" # degisecek DB_SERVICE_NAME="postgresql" # degisebilir DB_DATA="/pgdata/data/" # degisebilir DB_FILE="PG_VERSION" # degisebilir SAN_DISK_NAME="/dev/mapper/mpathg" # degisecek SAN_DISK_MOUNT_NAME="/pgdata/" # degisebilir MOUNT_CONTROL_FILE=SAN_DISK_MOUNT_NAME+"MOUNT_CONTROL" #degismese iyi olur HA_SERVICE="openUP" #degismese iyi olur SSH_USER="root" #degismese iyi olur www.veritabanci.net 35 35
openUP Kurulum Adımları – Kurulum openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Kurulum Adımları – Kurulum 9 - Master sunucuda aşağıdaki komut kullanılarak cluster yazılımının kurulumu yapılır. root # python configBuild.py Alınması gereken çıktı aşağıdaki gibidir. root # Network konfigurasyonu gecerli. OK root # SSH konfigurasyonu gecerli. OK root # db service konfigurasyonu gecerli. OK root # SAN disk konfigurasyonu gecerli. OK root # uygulama dizinleri olusturuldu.(/etc/openUP) root # uygulama programi kopyalandi.(/etc/openUP/openUP.py) root # servis dosyasi kopyalandi.(/etc/init.d/openUP) root # config dosyalari olusturuldu. root # config dosyalari kopyalandi. root # openUP servis baslatma scripti rc.local e yazildi. root # Cluster configurasyonu basariyla sonuclandi. OK (service openUP start) root # - service openUP start - komutunu calistirabilirsiniz. www.veritabanci.net 36 36
openUP Kurulum Adımları – Kurulum openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Kurulum Adımları – Kurulum 9 - Master sunucuda aşağıdaki komut kullanılarak cluster yazılımının kurulumu yapılır. root # python configBuild.py kurulum sorunsuz tamamlandıysa her iki sunucuda aşağıdaki komut çalıştırılarak cluster yazılımı başlatılır. root # service openUP start www.veritabanci.net 37 37
openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Yönetim Kurumlum Sonrası Oluşan Üç temel Dosya ( Her iki sunucuda da ) : Konfigürasyon Dosyası : /etc/openUP/config.py Program Dosyası : /etc/openUP/openUP.py Service Dosyası : /etc/init.d/openUP www.veritabanci.net 38 38
openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Yönetim Diğer Dosyalar : Log dosyası : /var/log/openUP.log Aktif node dosyası : /etc/openUP/ACTIVE SAN disk Kontrol dosyası : /pgdata/MOUNT_CONTROL www.veritabanci.net 39 39
openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Yönetim - Konfigurasyon dosyası /etc/openUP/config.py ##################NODE SPECIAL PARAMETERS################ IS_MASTER=True ## 1 = True, 0 = False LOCALE_NODE="10.1.1.11" #Bu sunucu REMOTE_NODE="10.1.1.12" #Diger cluster sunucusu www.veritabanci.net 40 40
openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Yönetim - Konfigurasyon dosyası /etc/openUP/config.py ##################SHARED PARAMETERS################# SW_IP="10.1.1.1" #Networkte baglanilan switch in ipsi VIRTUAL_IP="10.1.1.13" #Ortak ip 1 Service IP NETWORK_INT="bond0" #Kullanilan networke göre degisecek. DB_SERVICE_NAME="postgresql" DB_DATA="/pgdata/data/" DB_FILE="PG_VERSION" ACTIVE_FILE='/etc/openUP/ACTIVE' LOG_FILE="/var/log/openUP.log" RUN_FILE="/var/run/openUP.pid" SAN_DISK_CONTROL=True SAN_DISK_CONTROL_TIME=60 # SAN diskin ne kadar sure sonra devir alinabilecegi SAN_DISK_NAME="/dev/mapper/mpathg" ##mount /dev/mapper/mpathg /pgdata/ SAN_DISK_MOUNT_NAME="/pgdata/" MOUNT_CONTROL_FILE=SAN_DISK_MOUNT_NAME+"MOUNT_CONTROL" HA_SERVICE="openUP" SSH_USER="root" www.veritabanci.net 41 41
openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Yönetim Program Dosyası /etc/openUP/openUP.py Program akış diagramı www.veritabanci.net 42 42
www.veritabanci.net 43 43
openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Yönetim SAN disk Kontrol dosyası : /pgdata/MOUNT_CONTROL İçeriği : 10.1.1.11 20141201115244 Son Master ip si en son erisim zamanı www.veritabanci.net 44 44
openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Yönetim Log dosyası : /var/log/openUP.log * (2014.10.17 9:5:17) ::: ortak ipler atandi:) * (2014.10.17 9:5:17) ::: Kaynaklar acildi * (2014.10.17 9:5:30) ::: sw koptu * (2014.10.17 9:5:30) ::: Switch e ulasilamiyor. Kaynaklar kapatilacak. * (2014.10.17 9:5:32) ::: Kaynaklar serbes birakildi. * (2014.10.17 9:5:37) ::: switch baglantisi yok. * (2014.10.17 9:5:46) ::: ortak ipler atandi:) * (2014.10.17 9:5:46) ::: Kaynaklar acildi www.veritabanci.net 45 45
openUP Yönetim - Bakım ve Sürüm Yükseltme openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Yönetim - Bakım ve Sürüm Yükseltme root # service openUP stop ( Master veya slave ) www.veritabanci.net 46 46
openUP - SAN Tabanlı Aktif-Pasif Kümeleme Çözümü openUP Testler Test Gerçekleşen Olaylar Kesinti Süresi 1 - Master sunucuda network baglantisinin gitmesi. - Master kaynaklari kapatti. Slave devreye girdi. 60-70 sn. 2 - Master sunucuda ssh servisinin durmasi. - Master kaynaklari kapatti. Slave devreye girdi. 60-70 sn. 3 - Master sunucu reboot olmasi. - Master kaynaklari kapatti. Slave devreye girdi. 60-70 sn. 4 - Master sunucu kapandi. Master kaynaklari kapatti. Slave devreye girdi. 60-70 sn. 5 - Master sunucuda openUP servisi durdu. - Master kaynaklari kapatti. Slave devreye girdi. 20-30 sn. 6 - Slave sunucuda network baglantisinin gitmesi - Master calismaya devam ediyor. 0 sn 7 - Slave sunucuda ssh servisinin durmasi. - Master calismaya devam ediyor. 0 sn 8 - Slave sunucu reboot olmasi - Master calismaya devam ediyor. 0 sn 9- Slave sunucu kapandi. - Master calismaya devam ediyor. 0 sn 10- Slave sunucuda openUP servisi durdu. - Master calismaya devam ediyor. 0 sn 11- Switch te sorun yasanmasi - Master ve slave sunucu kaynaklari kapatiyor switch in geri gelmesini bekliyor. switch geri gelene kadar www.veritabanci.net 47 47
Bütüncül Kümeleme Çalışması Örnekleri www.veritabanci.net 48 48 48
Bütüncül Kümeleme Çalışması Örnekleri Örnek Veritabanı Öngörülen okuma yazma yüzdesi : Read > %99 Write < %1 Öngörülen maximum günlük kayit ekleme : 1 Milyon satır Öngörülen kayit sayisi : 225 Milyon sertifika Öngörülen maksimum data büyüklüğü : 2TB Öngörülen maximum günlük sorgu sayisi : 200 Milyon Öngörülen destekleyebileceği günlük sorgu sayısı : 500 Milyon www.veritabanci.net 49 49
www.veritabanci.net 50 50
www.veritabanci.net 51 51
Sorular ??? openUP link https://github.com/veritabanci/openUP OpenUP.tar.gz : https://drive.google.com/file/d/0B77ARrUQN1J7eUdMblhDM0VwNjQ/view?usp=sharing Postgresql link : https://drive.google.com/folderview?id=0B77ARrUQN1J7cHVodk9zN1drNGc&usp=sharing www.veritabanci.net 52 52
openUP KÜMELEME ( CLUSTER ) ÇÖZÜMÜ BÜTÜNCÜL KÜMELEME ÇALIŞMASI ve BÜTÜNCÜL KÜMELEME ÇALIŞMASI Mustafa YAVUZ Uzman Araştırmacı TÜBİTAK-BİLGEM Kamu Sertifikasyon Merkezi 53 53