Sunday, March 13, 2016

WebLogic 12.2.1'de Kümeleme (1. Bölüm)


Oracle orta katman uygulamalarının hemen hemen hepsi Java ve Weblogic uygulama sunucusu üzerinde koşuyor. Bu nedenle Oracle'ın Java SE ve Java EE platformlarına yatırım yapmak ve platformun gelişmesine öncülük etmek zorunda. Java SE platformunun en son sürümü olan Java SE 8, 2014 yılı Mart ayında çıktı. Java SE 8 getirdiği önemli yenilikler ile Java geliştiricilerini heyecanlandırmışa benziyor. Kurumsal uygulama geliştirmek için tasarlanan Java EE platformunun en son sürümü Java EE 7 ise 2013 yılı Haziran ayında çıktı. Oracle Java EE 7 uyumlu uygulama sunucusunu nihayet 2015 yılı sonuna doğru duyurdu: Oracle WebLogic 12.2.1. Weblogic 12.2.1 sürümü hem Java EE 7 uyumlu hem de Java SE 8 üzerinde çalışıyor olması açısından önemli bir sürüm. Java EE 7Java EE 5 ile gelen yeni programlama modelinin devam ettirildiği en olgun sürümdür. Ayrıca Java EE 7HTML 5 ile gelen yeni nesil web mimarilerini destekleyen API'ler içeriyor: Java API for WebSocket, Java API for JSON Processing, JAX-RS 2.0
Bu yazıda WebLogic 12cR2 sürümünün kurulumunu ve kümeleme çözümünü inceleyeceğiz. Kümleme çözümünün kurulumu için Weblogic 12cR2'nin ve yazılımsal yük dengeleyici olarak kullanacağımız Oracle HTTP Server (OHS)'nin kurulum dosyalarına ihtiyacımız bulunuyor. Bu kurulum dosyalarını Oracle'ın edelivery sitesinden indirebiliriz: edelivery.oracle.com.
http://www.edelivery.com giriş ekranında "Sign In" butonu ile giriş yapmamız gerekiyor
Ücretsiz olarak oluşturulabilecek Oracle hesabı ile giriş yapmalısınız.
Oracle'ın tüm ürünlerine Oracle Software Delivery Cloud üzerinden sorgulayıp, ulaşmak mümkündür. Arama alanına weblogic yazdığımızda listede gözüken Oracle Weblogic Suite başlığını seçiyoruz.
Ürünün adını seçtikten sonra kurulum yapmayı planladığımız platformu seçiyoruz: Linux x86-64.
Yazılım ve platform seçildiğinde seçilen ürün listede gözükecektir: Oracle Weblogic Suite ve Linux x86-64. Artık "Continue" butonuna basarak ilerleyebiliriz.
Toplam yaklaşık 11GB boyutunda kurulum paketlerine ulaşmak için "Continue" butonuna basmalısınız. 
Kurulum dosyalarını indireceğimiz sayfaya gelmeden önce "mutlaka baştan sona" kadar okumamız gereken  bir sayfa bulunuyor. Aldığım hızlı okuma eğitimi sayesinde bir çırpıda okuyup "Continue" butonuna basıyorum!
Burada kırmızı çerçeve içine aldığım iki dosyayı indirmemiz gerekiyor: i) OHS 12.2.1 için V78157-01.zip ii) WebLogic 12.2.1 için V78155-01.zip

WebLogic 12cR2'nin kurulumu

1. Weblogic 12cR2'nin kurulumuna geçmeden önce Java 8 kurmamız gerekiyor. Bunun için jdk 8 update 60'ı kuracağım:
[oracle@host01]tar xvf jdk-8u60-linux-x64.tar.gz -C /u01/app
[oracle@host01]mv /u01/app/jdk1.8.0_60 /u01/app/jdk8
[oracle@host01]export JAVA_HOME=/u01/app/jdk8
[oracle@host01]export PATH=$JAVA_HOME/bin:$PATH
Java kurulumunu test edelim:
[oracle@host01]$ java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
Evet, artık Weblogic 12cR2'nin kurulumuna geçebiliriz!
2. edelivery sitesinden indirdiğimiz V78155-01.zip dosyasını açıyoruz. İçinden bir java arşiv dosyası (jar) dosyası çıkacaktır: fmw_12.2.1.0.0_wls.jar. Kurulum için bu jar dosyasını çalıştırıyoruz:
[oracle@host01]$ java -d64 -jar fmw_12.2.1.0.0_wls.jar
1. Adım: Karşılama ekranını "Next" butonuna basarak geçiyoruz.
2. Adım: Kurulumdan hemen sonra güncelleme almak isteyebilirsiniz. Bunun için Oracle destek hesap bilgilerini girmeniz gerekir. Ya da elle indirdiğiniz güncelleme dosylarının bulunduğu dizini verebilirsiniz. Biz güncellemeleri atlayacağız.
3. Adım: Kurulumu yapacağımız dizini tanımlıyoruz.Bu dizin "Oracle Home" olarak adlandırılır.

4. Adım: Kurulumun türünü seçiyoruz. Üç seçeneğimiz bulunuyor: a) WebLogic kurulumu b) Coherence kurulumu c) Örnek uygulamalarla birlikte WebLogic kurulumu. WebLogic kurulumu Coherence kurulumunu da içerir. Coherence Oracle'ın "Distributed Cache Server" çözümüdür.
5. Adım: Kurulum öncesi işletim sistemi ve Java versiyonu denetleniyor.
6. Adım: Oracle Support hesabı bilgileri isteniyor. Bu kurulumda Oracle Support hesabı bilgilerini girmek istemiyoruz. Bu nedenle "wish to receive security updates via My Oracle Support" seçimini kaldırıyoruz.
6. Adım: Evet, Oracle Support almak istemiyoruz. "Rahat ol Oracle! Ne yaptığımızın farkındayız!" anlamında Yes butonuna basıyoruz. 
7. Adım: Seçimlerimizi, daha sonra sessiz kurulum yapmak için "Response File" olarak kaydetmek isteriz. Bu amaçla Save Response File butonuna basıyoruz.
Response File" dosyasının adını veriyoruz: fmw.rsp. 
8. Adım: Kurulum nihayet başladı
8. Adım: Dosyalar kopyalanıyor.
8. Adım: Kütüphane dosyaları oluşturuluyor.
8. Adım: Kurulum yapılıyor.
8. Adım: Kurulum tamamlandı!
9. Adım: Kurulumun başarı ile tamamlandığını gösterir ekran. Bundan sonra domain oluşturacağız. Bunu için gerekli komutu elle çalıştırmak istediğimiz için "Automatically Launch the Quickstart Configuration Wizard" seçeneğini kaldırıyoruz. Finish butonuna basarak kurulumu tamamlayalım.

Alan (=Domain) Kurulumu

WebLogic sunucularını yönetebilmek için "alan" (=domain) oluşturuyoruz. Her alan mutlaka ve bir tane yönetim sunucusundan (Admin Server) oluşur. Bunun dışında herhangi bir sayıda "yönetilen" weblogic sunucuları yer alır. Yönetim sunucusu sunucuların yapılandırma bilgilerini saklar ve alandaki diğer yönetilen sunuculara iletir. Yönetilen sunuculara uzaktan ulaşmak ve yönetmek için makinalardan (=machine) yararlanıyoruz. Her yönetilen weblogic sunucuları bir makinada tanımlanır. Bir fiziksel makinada birden fazla makina ve bir makinada birden fazla yönetilen weblogic sunucusu bulunabilir. Ancak her alanda ancak bir tane yönetim sunucusu yer alır. Bu yazıda iki düğümlü bir küme (=cluster) kuracağız. Bunun için iki makina ve iki yönetilen weblogic sunucusu tanımlayacağız. Kuracağımız sistemin şemasını aşağıdaki şekilden inceleyebilirsiniz:
Kurulum şeması
Alan aslında bir şablondan yaratılır. Kurulumla gelen şablonlar /u01/app/fmw/wlserver/common/templates/wls
 dizininde yer alır. Weblogic kurulumunda wls.jar şablonunu kullanacağız. Alan yaratmak için aşağıdaki komutu çalıştırıyoruz:
[oracle@host01 ~]$ cd /u01/app/fmw/oracle_common/common/bin/
[oracle@host01 bin]$ ./config.sh 
Başlangıç ekranı ile alan yaratmaya başlıyoruz!
1. Adım: Alanı hangi dizine yaratacağımızı söylüyoruz.  
2. Adım: Alanı hangi dizine yaratacağımızı söylüyoruz.
3. Adım: Weblogic sunucuları için kullanıcı adı ve parolayı belirliyoruz.
4. Adım: Alanı üretim ortamı için düşünüyoruz. Java versiyonumuz ise HotSpot 1.8.0_60 olacak.
5. Adım: Yönetim sunucusu ve yönetilen sunucu ve kümeleme ayarı yapacağımızı bildirdik.
6. Adım: Yönetim sunucusu host01.example.com ağına 7001 numaralı port üzerinden hizmet verecek.
7. Adım: İki adet yönetilen sunucumuz var: server1 ve server2.
8. Adım: Kümeleme adını cluster1 olarak verdik. Yük dengeleyiciyi daha sonra tanımlayacağız.
9. Adım: cluster1 kümesinin sunucularını tanımladık.
10. Adım: Makinaların tanımları veriliyor.
11. Adım: Hangi sunucunun hangi makinada çalışacağının tanımı veriliyor.
12. Adım: Alanı yaratmadan önce seçimlerimizi gözden geçirebiliriz. Sonra Create butonuna basarak alanı yaratıyoruz.
13. Adım: Alan yaratıldı.
14. Adım: Alan başarı ile yaratıldı!
Alanı host01.example.com'da yarattık. Şimdi bu alanı paketleyip host02.com.example'da da oluşturalım. Bunun için pack.sh ve unpack.sh betiklerinden yararlanıyoruz. Bu betikleri /u01/app/fmw/oracle_common/common/bin dizininde bulabilirsiniz.
oracle@host01:~ >export JAVA_HOME=/u01/app/jdk
oracle@host01:~ >export PATH=$JAVA_HOME/bin:$PATH
oracle@host01:~ >java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
oracle@host01:~ >export ORACLE_HOME=/u01/app/fmw
oracle@host01:~ >export PATH=$ORACLE_HOME/oracle_common/common/bin:$PATH
oracle@host01:~ >pack.sh -domain /u01/domains/part1/wlsadmin -template=/home/oracle/managedserver.jar -template_name=wlsadmin_managed -managed=true
<< read domain from "/u01/domains/part1/wlsadmin"
>>  succeed: read domain from "/u01/domains/part1/wlsadmin"
<< set config option Managed to "true"
>>  succeed: set config option Managed to "true"
<< write template to "/home/oracle/managedserver.jar"
..........................................................................................
>>  succeed: write template to "/home/oracle/managedserver.jar"
<< close template
>>  succeed: close template
oracle@host01:~ >scp /home/oracle/managedserver.jar oracle@host02.example.com:/home/oracle 
managedserver.jar                                                           100%   62KB  62.5KB/s   00:00
Alanı paketleyip host02.example.com makinasına taşıdıktan sonra, bu makinada aşağıdaki komutu çalıştırıyoruz:
[root@host02 ~]# export JAVA_HOME=/u01/app/jdk
[root@host02 ~]# export PATH=$JAVA_HOME/bin:$PATH
[root@host02 ~]# export ORACLE_HOME=/u01/app/fmw
[root@host02 ~]# export PATH=$ORACLE_HOME/oracle_common/common/bin:$PATH
[root@host02 ~]# unpack.sh -domain=/u01/domains/part1/wlsadmin -template=/home/oracle/managedserver.jar 
<< read template from "/home/oracle/managedserver.jar"
>>  succeed: read template from "/home/oracle/managedserver.jar"
<< set config option DomainName to "wlsadmin"
>>  succeed: set config option DomainName to "wlsadmin"
<< write Domain to "/u01/domains/part1/wlsadmin"
..........................................................................................
>>  succeed: write Domain to "/u01/domains/part1/wlsadmin"
<< close template
>>  succeed: close template

Sunucuların Başlatılması

Yönetim sunucusunu startWebLogic.sh betiğini kullanarak başlatıyoruz:
gnome-terminal --title "Admin Server"-e "/u01/domains/part1/wlsadmin/startWebLogic.sh" 
Üretim ortamı için kurulum yaptığımızdan, weblogic sunucusu bizden kullanıcı adı ve parola isteyecektir:
Sunucuyu her başlatırken bunun olmasını istemeyiz. Çözüm için aşağıdaki adımları bir kez yapmanız ve kullanıcı adı ve parolayı içeren boot.properties dosyasını oluşturmalısınız:
[oracle@host01]$ cd /u01/domains/part1/wlsadmin/servers/AdminServer/
[oracle@host01] mkdir security
[oracle@host01] cd security/
[oracle@host01] touch boot.properties
[oracle@host01] echo username=weblogic > boot.properties 
[oracle@host01] echo password=Welcome1 >> boot.properties 
Bundan sonraki ilk açılışta dosyanın içeriğinin AES ile şifrelenmiş olduğunu göreceksiniz:
[oracle@host01 security]$ cat boot.properties 
#Tue Mar 08 11:51:03 EET 2016
password={AES}e9YzTK33FBYiEMG0P5iZ3oyBCE4+XLVlKiSv5bnylG4\=
username={AES}MxPQruwueQAdLQBd2rWd44yanML0BW1md3bznAUiaik\=
host01.example.com makinasında server1'i başlatmak için startManagedWebLogic.sh betiğini kullanıyoruz:
[oracle@host01]$ gnome-terminal --title "server1" "/u01/domains/part1/wlsadmin/bin/startManagedWebLogic.sh server1 host01.example.com:7001" &
host02.example.com makinasında server2'yi başlatmak için startManagedWebLogic.sh betiğini kullanıyoruz:
[oracle@host02]$ gnome-terminal --title "server2" "/u01/domains/part1/wlsadmin/bin/startManagedWebLogic.sh server2 host01.example.com:7001" &
Şimdi, weblogic yönetim ekranına (http://host01.example.com:7001/console) bağlanıp sunucuların çalıştığını doğrulayalım:


Düğüm Yöneticisi (=Nodemanager) Kullanımı

Sunucuları her seferinde çalıştıkları makinaya uzaktan bağlanarak çalıştırmak, durdurmak, yeniden başlatmak, istenmeyen bir şekilde sonlandığında yeniden ayağa kaldırmak işlemlerini elle yapmak yerine otomatikleştirmek isteriz. Bu işi bizim için düğüm yöneticisi (Node manager) gerçekleştirecektir. Her bir makinada bir düğüm yöneticisi çalışır. Şimdi host01.example.com'da düğüm yöneticilerini başlatalım:
[oracle@host01]$ gnome-terminal --title "Nodemanager @host01" "/u01/domains/part1/wlsadmin/bin/startNodeManager.sh" &
host02.example.com'da düğüm yöneticisini başlatmak için yine aynı betiği çalıştırıyoruz.

[oracle@host02]$ gnome-terminal --title "Nodemanager @host02" "/u01/domains/part1/wlsadmin/bin/startNodeManager.sh" &
Aynı makinada her alan için bir düğüm yöneticisi olabileceği gibi tek bir düğüm yöneticisi birden fazla alan için de hizmet verebilir. Düğüm yöneticisinin çalıştığını yönetim ekranından doğrulayabiliriz:
machine1'deki düğüm yöneticisi çalışır durumda.
machine2'deki düğüm yöneticisi çalışır durumda.
Yazının ikinci bölümünde kümeleme stratejileri, yapılandırılması ve çalışması ile ilgili detaylar ve yük dengeleme konuları yer alacaktır.

1 comment: