Tuesday, December 6, 2016

Centos/RHEL/OEL 7'de GCC 6.2 Kurulumu

GNU derleyicilerinin en güncel sürümü GCC 6.2 ile aşağıdaki dillerde yazılan uygulamalar derlenebilir:
  • C
  • C++
  • Objective-C
  • Objective-C++
  • Java
  • Fortran
  • Ada
  • Go
Centos/RHEL/OEL 7 işletim sistemi için GCC 6.2'nin kurulumu için aşağıdaki adımları izlemeniz gerekir:

[guru@localhost ext]$ sudo yum -y install gmp-devel mpfr-devel libmpc-devel glibc-devel.i686 libgcc.i686 gcc-c++
Loaded plugins: fastestmirror, langpacks
base                                                                      | 3.6 kB  00:00:00     
extras                                                                    | 3.4 kB  00:00:00     
updates                                                                   | 3.4 kB  00:00:00     
Loading mirror speeds from cached hostfile
 * base: mirror.radoreservers.com
 * extras: mirror.radoreservers.com
 * updates: mirror.radoreservers.com
Package gcc-c++-4.8.5-4.el7.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package glibc-devel.i686 0:2.17-106.el7_2.8 will be installed
--> Processing Dependency: glibc-headers = 2.17-106.el7_2.8 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: glibc = 2.17-106.el7_2.8 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libutil.so.1 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libthread_db.so.1 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: librt.so.1 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libresolv.so.2 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libnss_nisplus.so.2 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libnss_nis.so.2 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libnss_hesiod.so.2 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libnss_files.so.2 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libnss_dns.so.2 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libnss_db.so.2 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libnss_compat.so.2 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libnsl.so.1 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libm.so.6 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libdl.so.2 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libcrypt.so.1 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libcidn.so.1 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libanl.so.1 for package: glibc-devel-2.17-106.el7_2.8.i686
--> Processing Dependency: libBrokenLocale.so.1 for package: glibc-devel-2.17-106.el7_2.8.i686
---> Package gmp-devel.x86_64 1:6.0.0-12.el7_1 will be installed
--> Processing Dependency: gmp = 1:6.0.0-12.el7_1 for package: 1:gmp-devel-6.0.0-12.el7_1.x86_64
---> Package libgcc.i686 0:4.8.5-4.el7 will be installed
---> Package libmpc-devel.x86_64 0:1.0.1-3.el7 will be installed
---> Package mpfr-devel.x86_64 0:3.1.1-4.el7 will be installed
--> Running transaction check
---> Package glibc.x86_64 0:2.17-105.el7 will be updated
--> Processing Dependency: glibc = 2.17-105.el7 for package: glibc-devel-2.17-105.el7.x86_64
--> Processing Dependency: glibc = 2.17-105.el7 for package: glibc-common-2.17-105.el7.x86_64
---> Package glibc.i686 0:2.17-106.el7_2.8 will be installed
--> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3) for package: glibc-2.17-106.el7_2.8.i686
--> Processing Dependency: libfreebl3.so for package: glibc-2.17-106.el7_2.8.i686
---> Package glibc.x86_64 0:2.17-106.el7_2.8 will be an update
---> Package glibc-headers.x86_64 0:2.17-105.el7 will be updated
---> Package glibc-headers.x86_64 0:2.17-106.el7_2.8 will be an update
---> Package gmp.x86_64 1:6.0.0-11.el7 will be updated
---> Package gmp.x86_64 1:6.0.0-12.el7_1 will be an update
--> Running transaction check
---> Package glibc-common.x86_64 0:2.17-105.el7 will be updated
---> Package glibc-common.x86_64 0:2.17-106.el7_2.8 will be an update
---> Package glibc-devel.x86_64 0:2.17-105.el7 will be updated
---> Package glibc-devel.x86_64 0:2.17-106.el7_2.8 will be an update
---> Package nss-softokn-freebl.x86_64 0:3.16.2.3-13.el7_1 will be updated
---> Package nss-softokn-freebl.i686 0:3.16.2.3-14.2.el7_2 will be installed
---> Package nss-softokn-freebl.x86_64 0:3.16.2.3-14.2.el7_2 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================
 Package                     Arch            Version                      Repository        Size
=================================================================================================
Installing:
 glibc-devel                 i686            2.17-106.el7_2.8             updates          1.0 M
 gmp-devel                   x86_64          1:6.0.0-12.el7_1             updates          181 k
 libgcc                      i686            4.8.5-4.el7                  base             103 k
 libmpc-devel                x86_64          1.0.1-3.el7                  base              32 k
 mpfr-devel                  x86_64          3.1.1-4.el7                  base              68 k
Installing for dependencies:
 glibc                       i686            2.17-106.el7_2.8             updates          4.2 M
 nss-softokn-freebl          i686            3.16.2.3-14.2.el7_2          updates          187 k
Updating for dependencies:
 glibc                       x86_64          2.17-106.el7_2.8             updates          3.6 M
 glibc-common                x86_64          2.17-106.el7_2.8             updates           11 M
 glibc-devel                 x86_64          2.17-106.el7_2.8             updates          1.0 M
 glibc-headers               x86_64          2.17-106.el7_2.8             updates          663 k
 gmp                         x86_64          1:6.0.0-12.el7_1             updates          280 k
 nss-softokn-freebl          x86_64          3.16.2.3-14.2.el7_2          updates          204 k

Transaction Summary
=================================================================================================
Install  5 Packages (+2 Dependent packages)
Upgrade             ( 6 Dependent packages)

Total size: 23 M
Total download size: 5.8 M
Downloading packages:
(1/7): libmpc-devel-1.0.1-3.el7.x86_64.rpm                                |  32 kB  00:00:00     
(2/7): libgcc-4.8.5-4.el7.i686.rpm                                        | 103 kB  00:00:00     
(3/7): mpfr-devel-3.1.1-4.el7.x86_64.rpm                                  |  68 kB  00:00:00     
(4/7): glibc-devel-2.17-106.el7_2.8.i686.rpm                              | 1.0 MB  00:00:00     
(5/7): gmp-devel-6.0.0-12.el7_1.x86_64.rpm                                | 181 kB  00:00:00     
(6/7): nss-softokn-freebl-3.16.2.3-14.2.el7_2.i686.rpm                    | 187 kB  00:00:00     
(7/7): glibc-2.17-106.el7_2.8.i686.rpm                                    | 4.2 MB  00:00:01     
-------------------------------------------------------------------------------------------------
Total                                                            4.8 MB/s | 5.8 MB  00:00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libgcc-4.8.5-4.el7.i686                                                                                                                   1/19 
  Updating   : nss-softokn-freebl-3.16.2.3-14.2.el7_2.x86_64                                                                                             2/19 
  Updating   : glibc-common-2.17-106.el7_2.8.x86_64                                                                                                      3/19 
  Updating   : glibc-2.17-106.el7_2.8.x86_64                                                                                                             4/19 
  Updating   : glibc-headers-2.17-106.el7_2.8.x86_64                                                                                                     5/19 
  Installing : nss-softokn-freebl-3.16.2.3-14.2.el7_2.i686                                                                                               6/19 
  Installing : glibc-2.17-106.el7_2.8.i686                                                                                                               7/19 
  Updating   : 1:gmp-6.0.0-12.el7_1.x86_64                                                                                                               8/19 
  Installing : 1:gmp-devel-6.0.0-12.el7_1.x86_64                                                                                                         9/19 
  Installing : mpfr-devel-3.1.1-4.el7.x86_64                                                                                                            10/19 
  Installing : libmpc-devel-1.0.1-3.el7.x86_64                                                                                                          11/19 
  Installing : glibc-devel-2.17-106.el7_2.8.i686                                                                                                        12/19 
  Updating   : glibc-devel-2.17-106.el7_2.8.x86_64                                                                                                      13/19 
  Cleanup    : glibc-devel-2.17-105.el7.x86_64                                                                                                          14/19 
  Cleanup    : glibc-headers-2.17-105.el7.x86_64                                                                                                        15/19 
  Cleanup    : 1:gmp-6.0.0-11.el7.x86_64                                                                                                                16/19 
  Cleanup    : glibc-common-2.17-105.el7.x86_64                                                                                                         17/19 
  Cleanup    : nss-softokn-freebl-3.16.2.3-13.el7_1.x86_64                                                                                              18/19 
  Cleanup    : glibc-2.17-105.el7.x86_64                                                                                                                19/19 
  Verifying  : 1:gmp-6.0.0-12.el7_1.x86_64                                                                                                               1/19 
  Verifying  : libgcc-4.8.5-4.el7.i686                                                                                                                   2/19 
  Verifying  : glibc-2.17-106.el7_2.8.i686                                                                                                               3/19 
  Verifying  : nss-softokn-freebl-3.16.2.3-14.2.el7_2.i686                                                                                               4/19 
  Verifying  : glibc-devel-2.17-106.el7_2.8.i686                                                                                                         5/19 
  Verifying  : 1:gmp-devel-6.0.0-12.el7_1.x86_64                                                                                                         6/19 
  Verifying  : libmpc-devel-1.0.1-3.el7.x86_64                                                                                                           7/19 
  Verifying  : nss-softokn-freebl-3.16.2.3-14.2.el7_2.x86_64                                                                                             8/19 
  Verifying  : glibc-devel-2.17-106.el7_2.8.x86_64                                                                                                       9/19 
  Verifying  : glibc-headers-2.17-106.el7_2.8.x86_64                                                                                                    10/19 
  Verifying  : glibc-common-2.17-106.el7_2.8.x86_64                                                                                                     11/19 
  Verifying  : glibc-2.17-106.el7_2.8.x86_64                                                                                                            12/19 
  Verifying  : mpfr-devel-3.1.1-4.el7.x86_64                                                                                                            13/19 
  Verifying  : glibc-devel-2.17-105.el7.x86_64                                                                                                          14/19 
  Verifying  : glibc-headers-2.17-105.el7.x86_64                                                                                                        15/19 
  Verifying  : nss-softokn-freebl-3.16.2.3-13.el7_1.x86_64                                                                                              16/19 
  Verifying  : glibc-common-2.17-105.el7.x86_64                                                                                                         17/19 
  Verifying  : glibc-2.17-105.el7.x86_64                                                                                                                18/19 
  Verifying  : 1:gmp-6.0.0-11.el7.x86_64                                                                                                                19/19 

Installed:
  glibc-devel.i686 0:2.17-106.el7_2.8       gmp-devel.x86_64 1:6.0.0-12.el7_1       libgcc.i686 0:4.8.5-4.el7       libmpc-devel.x86_64 0:1.0.1-3.el7      
  mpfr-devel.x86_64 0:3.1.1-4.el7          

Dependency Installed:
  glibc.i686 0:2.17-106.el7_2.8                                         nss-softokn-freebl.i686 0:3.16.2.3-14.2.el7_2                                        

Dependency Updated:
  glibc.x86_64 0:2.17-106.el7_2.8                   glibc-common.x86_64 0:2.17-106.el7_2.8           glibc-devel.x86_64 0:2.17-106.el7_2.8                    
  glibc-headers.x86_64 0:2.17-106.el7_2.8           gmp.x86_64 1:6.0.0-12.el7_1                      nss-softokn-freebl.x86_64 0:3.16.2.3-14.2.el7_2          

Complete!

Şimdi GCC 6.2'nin kaynak kodunu makinamıza indiriyoruz:

[guru@localhost ext]$ sudo wget https://ftp.gnu.org/gnu/gcc/gcc-6.2.0/gcc-6.2.0.tar.gz
--2016-12-02 08:48:23--  https://ftp.gnu.org/gnu/gcc/gcc-6.2.0/gcc-6.2.0.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 208.118.235.20, 2001:4830:134:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|208.118.235.20|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 128569126 (123M) [application/x-gzip]
Saving to: ‘gcc-6.2.0.tar.gz’

100%[====================================================================================================================>] 128,569,126 1.15MB/s   in 1m 42s 

2016-12-02 08:50:05 (1.20 MB/s) - ‘gcc-6.2.0.tar.gz’ saved [128569126/128569126]

[guru@localhost ext]$ 

build için bir dizin oluşturup Makefile oluşturmak üzere configure komutunu çalıştırıyoruz:

[guru@localhost ext]$ sudo tar -xzf gcc-6.2.0.tar.gz 
[guru@localhost ext]$ sudo mkdir build
[guru@localhost ext]$ ls
build  gcc-6.2.0  gcc-6.2.0.tar.gz  lost+found
[guru@localhost ext]$ cd build/
[guru@localhost build]$ sudo ../gcc-6.2.0/configure
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for a sed that does not truncate output... /bin/sed
checking for gawk... gawk
checking for libatomic support... yes
checking for libcilkrts support... yes
checking for libitm support... yes
checking for libsanitizer support... yes
checking for libvtv support... yes
checking for libmpx support... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether g++ accepts -static-libstdc++ -static-libgcc... no
checking for gnatbind... no
checking for gnatmake... no
checking whether compiler driver understands Ada... no
checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2
checking for objdir... .libs
checking for the correct version of gmp.h... yes
checking for the correct version of mpfr.h... yes
checking for the correct version of mpc.h... yes
checking for the correct version of the gmp/mpfr/mpc libraries... yes
checking for isl 0.16, 0.15, or deprecated 0.14... no
recommended isl version is 0.16 or 0.15, the minimum required isl version 0.14 is deprecated
checking for isl 0.16 or 0.15... no
The following languages will be built: c,c++,fortran,java,lto,objc
*** This configuration is not supported in the following subdirectories:
     gnattools gotools target-libada target-libgo target-liboffloadmic
    (Any other directories should still work fine.)
checking for default BUILD_CONFIG... bootstrap-debug
checking for --enable-vtable-verify... no
checking for bison... bison -y
checking for bison... bison
checking for gm4... no
checking for gnum4... no
checking for m4... m4
checking for flex... flex
checking for flex... flex
checking for makeinfo... no
/ext/gcc-6.2.0/missing: line 81: makeinfo: command not found
checking for expect... no
checking for runtest... no
checking for ar... ar
checking for as... as
checking for dlltool... no
checking for ld... ld
checking for lipo... no
checking for nm... nm
checking for ranlib... ranlib
checking for strip... strip
checking for windres... no
checking for windmc... no
checking for objcopy... objcopy
checking for objdump... objdump
checking for readelf... readelf
checking for cc... cc
checking for c++... c++
checking for gcc... gcc
checking for gcj... no
checking for gfortran... gfortran
checking for gccgo... no
checking for ar... no
checking for ar... ar
checking for as... no
checking for as... as
checking for dlltool... no
checking for dlltool... no
checking for ld... no
checking for ld... ld
checking for lipo... no
checking for lipo... no
checking for nm... no
checking for nm... nm
checking for objcopy... no
checking for objcopy... objcopy
checking for objdump... no
checking for objdump... objdump
checking for ranlib... no
checking for ranlib... ranlib
checking for readelf... no
checking for readelf... readelf
checking for strip... no
checking for strip... strip
checking for windres... no
checking for windres... no
checking for windmc... no
checking for windmc... no
checking where to find the target ar... host tool
checking where to find the target as... host tool
checking where to find the target cc... just compiled
checking where to find the target c++... just compiled
checking where to find the target c++ for libstdc++... just compiled
checking where to find the target dlltool... host tool
checking where to find the target gcc... just compiled
checking where to find the target gcj... just compiled
checking where to find the target gfortran... just compiled
checking where to find the target gccgo... host tool
checking where to find the target ld... host tool
checking where to find the target lipo... host tool
checking where to find the target nm... host tool
checking where to find the target objcopy... host tool
checking where to find the target objdump... host tool
checking where to find the target ranlib... host tool
checking where to find the target readelf... host tool
checking where to find the target strip... host tool
checking where to find the target windres... host tool
checking where to find the target windmc... host tool
checking whether to enable maintainer-specific portions of Makefiles... no
configure: creating ./config.status
config.status: creating Makefile

Artık make komutu ile build işlemini başlatabiliriz:

[root@localhost build]# sudo make

Build işlemi bittikten sonra nihayet kurulumu gerçekleştirebiliriz:

[root@localhost build]# sudo make install
make[1]: Entering directory `/ext/build'
/bin/sh ../gcc-6.2.0/mkinstalldirs /usr/local /usr/local
make[2]: Entering directory `/ext/build/fixincludes'
rm -rf /usr/local/libexec/gcc/x86_64-pc-linux-gnu/6.2.0/install-tools
/bin/sh ../../gcc-6.2.0/fixincludes/../mkinstalldirs /usr/local/libexec/gcc/x86_64-pc-linux-gnu/6.2.0/install-tools
mkdir -p -- /usr/local/libexec/gcc/x86_64-pc-linux-gnu/6.2.0/install-tools
/bin/sh ../../gcc-6.2.0/fixincludes/../mkinstalldirs /usr/local/lib/gcc/x86_64-pc-linux-gnu/6.2.0/install-tools/include
mkdir -p -- /usr/local/lib/gcc/x86_64-pc-linux-gnu/6.2.0/install-tools/include
/bin/install -c -m 644 ../../gcc-6.2.0/fixincludes/README-fixinc \

Kurulum sonrasında g++ derleyecisinin sürümünü kontrol edebiliriz:

[guru@localhost Desktop]$ g++ --version
g++ (GCC) 6.2.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Son olarak GNU kütüphanelerinin sembolik linklerini yeni kütüphaneye bağlamamız gerekir:

sudo cp /ext/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so /lib64/
sudo rm /lib64/libstdc++.so.6
sudo ln -s /lib64/libstdc++.so /lib64/libstdc++.so.6

Tuesday, November 15, 2016

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


WebLogic 12c 12.2.1'de kümeleme yazısının ilk bölümüne bu bağlantıdan ulaşabilirsiniz. Yazının devamında, ikinci bölümde, kümeleme yöntemlerini inceleyeceğiz. 

1. Kümeleme Yöntemleri

WebLogic 12c 12.2.1'de kümeleme için iki ayrı yöntem bulunuyor:

  • Durağan (=Configured) Kümeleme
Durağan kümelemede, kümeyi oluşturan yönetilen sunucular (=managed servers) teker teker tanıtılır ve ayrı ayrı yapılandırılır. 

  • Devingen (=Dynamic) Kümeleme
Devingen kümelemede, kümedeki sunucular için önce bir şablon yaratılır. Daha sonra, yönetilen sunucular bu şablondan, kümedeki sunucu sayısı kadar, otomatik olarak yaratılır. Bu yöntemde, kümedeki sunucuların yapılandırılması tek bir yerden, şablondan yönetilir. 
Üstelik kümedeki sunucu sayısı dinamik olarak değiştirilmesi sağlanabilir:

Şimdi sırayla bu iki yöntemi kullanarak birer küme yaratalım.


2. Yönetim Panelinden Durağan Kümeleme Kurulumu

4 adet yönetilen sunucunun yer aldığı bir durağan kümeleme çözümünde, yönetim paneli kullanarak gerçekleştirilen kurulumun adımlarını aşağıda bulabilirsiniz:
Kuruluma Lock & Edit butonuna basarak başlıyoruz.

Küme adını cluster1 olarak tanımlıyoruz. Dört düğümlü bir küme için Unicast haberleşmeyi tercih edebiliriz. Kümedeki sunucu sayısı arttığında Unicast haberleşme yerine Multicast haberleşme tercih edilmelidir. Ok butonuna basarak kümeyi yaratmış olduk.
Kümelerin listesinde cluster1 isimli kümemiz yerini aldı. Ancak henüz kümede sunucu bulunmuyor. Sunucu eklemek üzere cluster1 kümesinin tanımına gidelim.

cluster1 ekranında Configuration sekmesi altında servers sekmesini ziyaret ediyoruz. Add butonuna basarak yönetilen sunucu ekleyeceğiz. Bunu dört kere takrarlamamız gerekecek!

İlk yönetilen sunucuyu ekliyoruz. Sunucu adı cluster1-server1, ağ adresi host01.example.com ve port numarası 8100. 

İkinci yönetilen sunucuyu ekliyoruz. Sunucu adı cluster1-server2, ağ adresi host02.example.com ve port numarası 9100.
Üçüncü yönetilen sunucuyu ekliyoruz. Sunucu adı cluster1-server3, ağ adresi host01.example.com ve port numarası 8200.

Dördüncü ve son yönetilen sunucuyu ekliyoruz. Sunucu adı cluster1-server4, ağ adresi host02.example.com ve port numarası 9200.

Sunucuları doğru eklediğimizden emin olmak için tekrar listesini bu tablodan kontrol ediyoruz.
cluster1 kümesindeki ilk sunucuyu (cluster1-server1) machine1 isimli fiziksel makinaya atıyoruz ve değişikliği Save butonuna basarak kaydediyoruz. 


cluster1 kümesindeki ilk sunucuyu (cluster1-server2machine2 isimli fiziksel makinaya atıyoruz ve değişikliği Save butonuna basarak kaydediyoruz. 

cluster1 kümesindeki ilk sunucuyu (cluster1-server3machine1 isimli fiziksel makinaya atıyoruz ve değişikliği Save butonuna basarak kaydediyoruz. 

cluster1 kümesindeki ilk sunucuyu (cluster1-server4machine2 isimli fiziksel makinaya atıyoruz ve değişikliği Save butonuna basarak kaydediyoruz. 

Her Save butonuna bastığımızda üst alanda işlemin başarılı olduğunu gösterir iletiyi okumamız gerekir.

Activate changes butonuna basmadan önce sunucuların özelliklerini tablodan kontrol edelim.


Artık Activate changes butonuna basabiliriz. 
İşlemin başarılı olduğunı, "All changes have been activated" iletisinden okumamız gerekir.


Servers menüsündeki Control sekmesinden cluster1 kümesindeki tüm sunucuları seçip Start butonuna basıyoruz.
Seçili sunucuları başlatma işlemine onay vermek üzere Yes butonuna basalım.

Onayın ardından sunucuların durumu STARTING durumuna geçecektir. 
cluster1 kümesini oluşturan sunucular bir süre sonra RUNNING durumuna gelecektir.




3. WLST ile Durağan Kümeleme Kurulumu

Yönetim paneli üzerinden 4 sunuculu bir durağan kümeleme kurulumu epey bir işlem gerektirdi. Aynı işi basitçe WLST kullanarak ve Python betiği yazarak gerçekleştirebiliriz. Aşağıda yönetim paneli kullanılarak gerçekleştirilen kümeleme kurulumundaki yapının aynısı bu kez WLST ve Python kullanılarak gerçekleştirilmiştir:

create_cluster2.py:
url = 't3://host01.example.com:7001'
username = 'admin'
password = 'Secret_1234'
clustername = 'cluster2'
servers   = [ 'cluster2-server1'  , 'cluster2-server2'  , 'cluster2-server3'  , 'cluster2-server4'   ]
addresses = [ 'host01.example.com', 'host02.example.com', 'host01.example.com', 'host02.example.com' ]
ports     = [ 4100                , 5100                , 4200                , 5200                 ]

connect(username, password, url)
try:
        cd('/Clusters/' + clustername)
        print '>>>The cluster ' + clustername + ' already exists. Exiting...'
        exit()
except WLSTException:
        pass

edit()
startEdit()

cd('/Machines')
cd('machine1')
machine1 = cmo
cd('/Machines')
cd('machine2')
machine2 = cmo
machines = [ machine2, machine2 , machine1, machine2 ]

cd('/')
thecluster = cmo.createCluster(clustername)
print '>>>Created cluster ' + clustername + '.'

for i in range(len(servers)):
        server= servers[i]
        addr = addresses[i]
        port= ports[i]
        machine= machines[i]
        cd('/')
        create(server, 'Server')
        cd('Servers/' + server)
        set('ListenAddress', addr)
        set('ListenPort', port)
        set('Machine', machine)
        set('Cluster', thecluster)
        print server + ' is created.'

save()
activate(block='true')
print 'Cluster and its servers are created successfully.'

exit()

Yukarıdaki Python betiğini, komut satırından aşağıda verildiği şekilde çalıştırabiliriz:

[oracle@host01]$ source /u01/app/fmw/wlserver/server/bin/setWLSEnv.sh
[oracle@host01]$ java weblogic.WLST create_cluster2.py
CLASSPATH=/u01/app/jdk/lib/tools.jar:/u01/app/fmw/wlserver/modules/features/wlst.wls.classpath.jar:

PATH=/u01/app/fmw/wlserver/server/bin:/u01/app/fmw/wlserver/../oracle_common/modules/org.apache.ant_1.9.2/bin:/u01/app/jdk/jre/bin:/u01/app/jdk/bin:/home/oracle/bin:/u01/app/jdk/bin:/home/oracle/bin:/u01/app/jdk/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/u01/app/fmw/wlserver/../oracle_common/modules/org.apache.maven_3.2.5/bin

Your environment has been set.

Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

Connecting to t3://host01.example.com:7001 with userid weblogic ...
Successfully connected to Admin Server "AdminServer" that belongs to domain "wlsadmin".

Warning: An insecure protocol was used to connect to the server. 
To ensure on-the-wire security, the SSL port or Admin port should be used instead.

No stack trace available.
Location changed to edit tree.   
This is a writable tree with DomainMBean as the root.   
To make changes you will need to start an edit session via startEdit(). 
For more help, use help('edit').
You already have an edit session in progress and hence WLST will 
continue with your edit session.

Starting an edit session ...
Started edit session, be sure to save and activate your changes once you are done.
>>>Created cluster cluster2.
MBean type Server with name cluster2-server1 has been created successfully.
cluster2-server1 is created.
MBean type Server with name cluster2-server2 has been created successfully.
cluster2-server2 is created.
MBean type Server with name cluster2-server3 has been created successfully.
cluster2-server3 is created.
MBean type Server with name cluster2-server4 has been created successfully.
cluster2-server4 is created.
Saving all your changes ...
Saved all your changes successfully.
Activating all your changes, this may take a while ... 
The edit lock associated with this edit session is released once the activation is completed.
Activation completed
Cluster and its servers are created successfully.


Exiting WebLogic Scripting Tool.

cluster2 kümesindeki sunucuları WLST kullanarak Python betiği ile kolayca başlatabiliriz:

start_cluster2.py:

url = 't3://host01.example.com:7001'
username = 'weblogic'
password = 'Welcome1'
target = 'cluster2'

connect(username, password, url)

print '>>>Starting the cluster ' + target
start(target,'Cluster')

Yukarıdaki Python betiğini, komut satırından aşağıda verildiği şekilde çalıştırabiliriz:

[oracle@host01]$ source /u01/app/fmw/wlserver/server/bin/setWLSEnv.sh

CLASSPATH=/u01/app/jdk/lib/tools.jar:/u01/app/fmw/wlserver/modules/features/wlst.wls.classpath.jar:
PATH=/u01/app/fmw/wlserver/server/bin:/u01/app/fmw/wlserver/../oracle_common/modules/org.apache.ant_1.9.2/bin:/u01/app/jdk/jre/bin:/u01/app/jdk/bin:/home/oracle/bin:/u01/app/jdk/bin:/home/oracle/bin:/u01/app/jdk/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/u01/app/fmw/wlserver/../oracle_common/modules/org.apache.maven_3.2.5/bin

Your environment has been set.

[oracle@host01]$ java weblogic.WLST start_cluster2.py
Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

Connecting to t3://host01.example.com:7001 with userid weblogic ...
Successfully connected to Admin Server "AdminServer" that belongs to domain "wlsadmin".

Warning: An insecure protocol was used to connect to the server. 
To ensure on-the-wire security, the SSL port or Admin port should be used instead.

>>>Starting the cluster cluster2

Starting the following servers in Cluster, cluster2 : cluster2-server4,cluster2-server1,cluster2-server2,cluster2-server3
...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
All servers in the cluster cluster2 are started successfully.
[oracle@host01]$ 

cluster2 kümesindeki sunucuları kapatmak için aşağıdaki Python betiği yeterli olacaktır:

url = 't3://host01.example.com:7001'
username = 'weblogic'
password = 'Welcome1'
target = 'cluster2'

connect(username, password, url)

print '>>>Shutting down the cluster ' + target
shutdown(target,'Cluster')

Herhangi bir an cluster2'deki sunucuların durumunu aşağıdaki Python betiğini kullanarak izleyebilirsiniz:

url = 't3://host01.example.com:7001'
username = 'weblogic'
password = 'Welcome1'
target = 'cluster2'

connect(username, password, url)

state(target,'Cluster')


4. Yönetim Paneli Kullanarak Devingen Kümeleme Kurulumu

Devingen kümelemede, kümeyi oluşturan sunucular bir şablondan üretilirler. Yönetim paneli ile devingen küme yaratırken ya yeni bir şablon yaratırız ya da mevcut şablonlardan birini kullanırız. Şimdi yönetim paneli kullanarak yine dört düğümden oluşan, ancak bu kez devingen bir küme yaratacağız. Aşağıda bu işlemin adımlarını bulabilirsiniz:


Lock & Edit butonuna basarak bir oturum açıyoruz.


Devingen bir kümeleme oluşturmak için listeden "New Dynamic Cluster" başlığını seçiyoruz.

Kümenin adını cluster3 olarak adlandırıyoruz.
Devingen kümede 4 adet düğüm olmasını istiyoruz. Kümemiz elastik, ihtiyaç durumunda 16 düğüme kadar  genişleyebilir.
Yönetilen sunucuların makinalara atanması gerekiyor. Bunun için üç seçeneğimiz bulunuyor: 

  i) Alandaki tüm makinaları kullanmak 
 ii) Makinalardan sadece birini kullanmak. Listeden kullanacak makina seçilebilir. 
iii) Alandaki makinaların bir alt kümesi makina adına göre yazılacak bir ifade ile seçilebilir. Örneğin machine* ile makina adı machine ile başlayan makinaları seçiyoruz.




Yönetilen sunuculara port atamak için iki yöntem bulunuyor: i) Başlangıç portunu tanımlamak. Sistem birer artımlarla sırayla sunuculara port atamasını otomatik olarak yapacaktır. ii) Tüm sunuculara aynı port numarası vermek. Bunun için her sunucunun ayrı bir adreste yer alması gerekir. 
cluster3'ün tanımlanması süreci bitmek üzere,  Finish butonuna basmak kaldı!



cluster3 kümeler tablosunda yerini almış durumda, ancak henüz gerçekten yaratılmadı.

Activate Changes butonuna basarak tanımlamalarımızı kalıcı hale getiriyoruz.

İşlem başarı ile gerçekleşti.

Sunucu şablonları listesinde cluster3 ile birlikte yaratılan şablonu (cluster3-serverTemplate) görebiliyoruz. 
Şimdi cluster3'deki sunucuları başlatabiliriz.



Yes butonuna basarak onay verdiğimizde cluster3'ü oluşturan sunucular Düğüm Yöneticisi (=Node Manager) yardımı ile uzaktan başlatılacaktır.

Sunucular başlatılıyor.

Bir süre sonra cluster3'ü oluşturan tüm sunucular başlamış görünüyor!


5. WLST ile Devingen Kümeleme Kurulumu

Yönetim paneli üzerinden 4 sunuculu bir devingen kümeleme kurulumu oldukça kolay bir şekilde gerçekleştirdik. Aynı işi basitçe WLST kullanarak ve Python betiği yazarak da gerçekleştirebiliriz. Aşağıda yönetim paneli kullanılarak gerçekleştirilen kümeleme kurulumundaki yapının aynısı bu kez WLST ve Python kullanılarak gerçekleştirilmiştir:

create_dynamic_cluster4.py:

url = 't3://host01.example.com:7001'
username = 'weblogic'
password = 'Welcome1'
clustername = 'cluster4'
listenport = 5299
ssllistenport = 4299
servercount = 4
serverprefix = 'cluster4-server'
templatename = serverprefix + '-template'

connect(username, password, url)

try:
        cd('/Clusters/' + clustername)
        print '>>>The cluster ' + clustername + ' already exists. Exiting...'
        exit()
except WLSTException:
        pass

edit()
startEdit()

cd('/')
template = cmo.createServerTemplate(templatename)
cd('/ServerTemplates/' + templatename)
cmo.setListenPort(listenport)
cmo.setListenPortEnabled(true)
cd('SSL/' + templatename)
cmo.setListenPort(ssllistenport)
cmo.setEnabled(false)

print '>>>Created server template ' + templatename + '.'

cd('/')
cluster = cmo.createCluster(clustername)
servers = cluster.getDynamicServers()
servers.setServerNamePrefix(serverprefix)
servers.setMaximumDynamicServerCount(servercount)
servers.setServerTemplate(template)
servers.setCalculatedMachineNames(true)
print '>>>Created dynamic cluster ' + clustername + ' with ' + str(servercount) + ' servers.'

save()
activate(block='true')
print '>>>Dynamic cluster created successfully.'

exit()

Yukarıdaki Python betiğini komut satırından çalıştırarak cluster4 isimli devingen kümeyi yaratabiliriz:


[oracle@host01]$ java weblogic.WLST create_dynamic_cluster4.py 

Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

Connecting to t3://host01.example.com:7001 with userid weblogic ...
Successfully connected to Admin Server "AdminServer" that belongs to domain "wlsadmin".

Warning: An insecure protocol was used to connect to the server. 
To ensure on-the-wire security, the SSL port or Admin port should be used instead.

No stack trace available.
Location changed to edit tree.   
This is a writable tree with DomainMBean as the root.   
To make changes you will need to start an edit session via startEdit(). 
For more help, use help('edit').

Starting an edit session ...
Started edit session, be sure to save and activate your changes once you are done.
>>>Created server template cluster4-server-template.
>>>Created dynamic cluster cluster4 with 4 servers.
Saving all your changes ...
Saved all your changes successfully.
Activating all your changes, this may take a while ... 
The edit lock associated with this edit session is released once the activation is completed.
Activation completed
>>>Dynamic cluster created successfully.


Exiting WebLogic Scripting Tool.

Yönetim panelinden cluster4'ün yaratıldığını izleyebiliriz:


Yazının üçüncü bölümünde ise son olarak kümelemenin çalışma şeklini ve yük dengeleyici konularını inceleyeceğiz.