Pages

12 Şubat 2011 Cumartesi

Oracle 11g R2 RAC mimarisinde "server pools"

Sunucu havuzları(server pools) Oracle 11g R2 ile yeni gelen özelliklerden bir tanesidir ve cluster ortamında iş yükünün mantıksal dağıtımı ile ilgili clouding(bulut) teknolojisi hizmetleri getirmektedir. Sunucu havuzlarının kullanımının sağlanması, ilke bazlı(policy based) cluster yönetimi adı altında bir metot ile sağlanmaktadır.Hem uygulamaları, hemde veritabanları ilke bazlı yönetilebilmektedir. Bunun için RDBMS sürümünün 11.2.0 veya üzeri olması gereklidir.

Sunucu havuzu, aslında RAC ortamında clusterware hizmetinde arzu edilen mantıksal işyükünü sağlayacak olan düğüm sayısını optimal seviyede tutarak(aktif/aktif), varsa diğer düğümleride yedekte bekleterek(pasif), bir felaket anında <- havuz içindeki düğümlerden birisi erişilemez olursa -> bu yedekteki düğümü havuza dahil ederek mantıksal işyükünü her daim optimal seviyede bulundurmayı sağlamaktadır. Bu şekilde, havuzlar mantıksal olarak işlevsellik yapmakta olup, aslında kümelerin cluster içindeki yönetimini sağlamaktadır.

Sunucu havuzu mimarisi 4 bölümden oluşmaktadır;
-  Sunucu havuz ismi
-  Havuz içinde bulunacak minimum sunucu sayısı
-  Havuz içinde bulunacak maksimum sunucu sayısı (varsayılan değer 0’dır)
-  Sunucu havuzları arasındaki öncelik oranı (varsayılan değer 0’dır)

Sunucu havuzu mimarisinde yukardaki bölümlerin ne anlama geldiğine bakalım.Farzedinki, 6 düğümlü cluster sisteminizde 2 tane farklı RAC veritabanı vardır, her zaman 1 düğümün pasif olarak yedekte beklemesini ve düğümlerden birisi down olduğu zaman bu boştaki düğümün havuza dahil olmasını istiyoruz. Birinci RAC veritabanında arzu edilen işyüküne cevap vermesi için en fazla 3 düğümün işleme girmesini, ikinci RAC veritabanında arzu edilen işyükü 2 düğümle karşılanabilecektir. Bu maksatla sunucu havuzları aşağıdaki gibi düzenlenmektedir.

Sunucu havuzu adı= POOL1               Sunucu havuzu adı= POOL2
MIN_SERVERS = 2                              MIN_SERVERS = 2
MAX_SERVERS=3                               MAX_SERVERS= 2
ÖNCELİK=3                                         ÖNCELİK=2

Yukardaki iki sunucu havuzunda önceliği yüksek olan sunucu havuzu POOL1 olduğundan dolayı(değeri yüksek olan yüksek önceliklidir) cluster hizmet sırasındaki ilk 2 düğüm POOL1 sunucu havuzuna kayıt olacak, sonraki 2 düğüm POOL2 sunucu havuzuna kayıt olacaktır. Cluster öncelik listesindeki 5. düğüm MAX_SERVER değeri 3 olan POOL1 havuzuna kayıt olacaktır. 6. düğüm ise boşta bekleyecektir.

rac1, rac2,rac5 --> POOL1
rac3, rac4 --> POOL2
rac6 --> free

Sunucu havuzlarını yönetmek için crsctl, srvctl veya Enterprise Manager kullanılabilir. srvctl komutu veritabanı instance sunucu havuzu için, crsctl komutu ise veritabanı olmayan uygulamaların sunucu havuzu için kullanılır. Aşağıdaki örnekte admin yönetimli veritabanını,ilke yönetimli veritabanına dönüştüreceğiz ve "testpool" adını verdiğimiz sunucu havuzu içerisine ekleyeceğiz.

Dönüştürme işlemi boyunca veritabanı kesinlikle düşmeyecek ve kesintisiz hizmetine devam edecektir. Ancak, ilke yönetimli sistemden admin yönetimli sisteme geçişte kısa süreli düşmeler olacaktır.

Adım 1: Mevcut kurulumu doğrulayın.
srvctl config database –d <db_unique_name> komutuyla kullanıdığınız yönetim tipini doğrulayın.

 [oracle@rac1 ~]$ srvctl config database -d rac
Database unique name: RAC
Database name: RAC
.
.
.
Services: management, users
Database is administrator managed

Adım 2: Sunucu havuzu oluşturun.
“testpool” adını verdiğimiz bir sunucu havuzu oluşturacağız ve bu havuzda en az 2 sunucu(-l) ile en fazla 2 sunucu(-u) tanımlayacağız.

[oracle@rac1 ~]$ srvctl add srvpool -g testpool –l 2 -u 2  
[oracle@rac1 ~]$ srvctl status srvpool
Server pool name: Free
Active servers count: 0
Server pool name: Generic
Active servers count: 2
Server pool name: testpool
Active servers count: 0 

Adım 3:  Veritabanı konfigürasyonunu değiştirin.
Admin yönetimli konfigürasyonu yeni oluşturulan sunucu havuzu ile değiştirin.

[oracle@rac1 ~]$ srvctl modify database -d rac -g testpool

Aşağıdaki komutu çalıştırarak yeni durumu doğrulayın.

[oracle@rac1 ~]$ srvctl config database -d rac
Database unique name: RAC
Database name: RAC
Oracle home: /u01/app/oracle/product/11.2.0/db_1
Oracle user: oracle
Spfile: +DATA/RAC/spfileRAC.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: testpool
Database instances:
Disk Groups: DATA
Services: management, users
Database is policy managed

Bu aşamadan sonra artık havuza üye düğümleri eklemek ve veritabanı için gerekli izinlerin atanması gerekecektir.Bu seçenek opsiyoneldir, eğer çok düğümünüz varsa ve spesifik düğümleri seçerek sunucu havuzuna kayıt etmek isterseniz aşağıdaki komut kullanılabilir. Bu havuz için önceliği 999 olarak atıyoruz.

[oracle@rac1 ~] $  srvctl add srvpool -g testpool -l 1 -u 2 -i 999 -n rac1,rac2
Ardından RAC ortamına eğer üçüncü bir düğüm eklersek bu düğüm “testpool” adlı sunucu havuzu dışında olacaktır. Ne zaman birinci veya ikinci düğümlerden birisindeki clusterware servisi durursa, o zaman bu üçüncü düğüm bu havuza ilave olunacaktır.

[oracle@rac1 ~] $ srvctl status srvpool -g testpool -a
Server pool name: testpool
Active servers count: 2
Active server names: rac1,rac2
NAME=rac1 STATE=ONLINE
NAME=rac2 STATE=ONLINE

Şimdi rac3 adlı 3. düğümden sunucu havuzuna bakıyoruz ve 3. düğümün boşta beklediğini teyit ediyoruz.

[oracle@rac3 ~]$ crsctl stat serverpool
NAME=Free
ACTIVE_SERVERS=rac3

NAME=Generic
ACTIVE_SERVERS=

NAME=testpool
ACTIVE_SERVERS=rac1 rac2

0 yorum:

Yorum Gönder