Konfiguracja klastra Oracle Weblogic 12c z plugin Apache + szyfrowanie. 1


Google translate:

Ave:)

Ostatnio dużo czasu poświęciłem na konfigurację klastra Weblogic 12c (dokładnie na wersji 12.1.3), a właściwie najwięcej zajęło skonfigurowanie tak Apache z wykorzystaniem modułu mod_wl.so aby to wszystko działało z szyfrowaniem. Konfiguracja została wykonana na certyfikatach Demo jednak zmiana na swoje  klucze nie powinna już nastręczać wiele problemów. Oto solucja w żołnierskich słowach żeby nie trzeba było się za wiele zastanawiać co zrobić.

Zatem zabierzmy się do pracy. Ja akurat dysponowałem serwerem z systemem operacyjnym CentOS w wersji 6.5. Wszystkie komponenty instalacji w wersji 64 bitowej.

Do pobrania ze stron Oracle są:

  • Weblogic w postaci pliku fmw_12.1.3.0.0_wls.jar – z racji instalacji 64-bitowej
  • Plugin do Apache – WLSPlugin12.1.3-Apache2.2-Apache2.4-Linux_x86_64.zip
  • Java jdk 1.7

Oczywiście sam system operacyjny może potrzebować dodatkowych pakietów ale tutaj już administrator musi poradzić sobie sam i reagować na to co będzie pyszczył instalator Oracle. W każdym razie będą potrzebne X bo czasy instalacji w „czarnych okienkach” w postaci mode=console przestał być wspierany dlatego musimy sobie takowy dostęp zapewnić. Można to zrobić instalując X-ming oraz korzystając z Putty (tutaj przykład). Należy również pamiętać aby odpowiednio ustawić firewall aby istniała komunikacja między serwerami.

Przystępujemy do instalacji.

  1. Zakładamy użytkownika – ja akurat na swoje potrzeby założyłem użytkownika wl12 z grupą oinstall.
  2. Należy wkopiować potrzebne komponenty
  3. Instalujemy Java i w przypadku tych, którzy korzystają z powłoki bash w pliku .bash_profile (w przypadku użytkowników korn shell należy to uczynić w pliku .profile) w katalogu domowym exportujemy zmienną JAVA_HOME ze wskazaniem na katalog, w którym się znajduje
    export JAVA_HOME=$HOME/java/jdk1.7.0_67
  4. Instalujemy Weblogic będąc zalogowanym do putty w konfiguracji z X-ming. Robimy to za pomocą polecenia:
    java -jar fmw_12.1.3.0.0_wls.jar
  5. Samej instalacji krok po kroku nie będę umieszczał ponieważ jest ona dość prosta.
  6. Tworzymy domenę i teraz jeżeli chcecie aby wszystko poszło szybko i sprawnie to w JAVA_HOME/jre/lib/security/java.security należy zmienić zmienną na poniższy zapis (zainteresowanych tym dlaczego odsyłam do Google, tam z całą pewnością znajdziecie wytłumaczenie):
    securerandom.source=file:/dev/./urandom
  7. Tworzymy domenę za pomocą skryptu config.sh znajdującego się w Waszym WL_HOME/oracle_common/common/bin (w moim przypadku to /home/wl12/Oracle/Middleware/wl1213_64/oracle_common/common/bin), ja akurat zaznaczyłem utworzenie tylko AdminServer’a i NodeManagera (sam proces instalacji wg mnie jest prosty ale jak będzie trzeba to umieszczę w innym artykule)
  8. Po zakończeniu procesu instalacji będziemy posiadali domenę z serwerem administracyjnym oraz NodeManager. Ja akurat wykreowałem domenę w trybie developerskim gdzie AdminServer pracuje na porcie 7003 (http), a Node Manager na porcie 5556. W moim przypadku domena powstała w katalogu /home/wl12/Oracle/Middleware/wl1213_64/user_projects/domains/base_domain
  9. Teraz wyłączmy szyfrowanie dla Node Managera w pliku nodemanager.properties (u mnie plik znajduje się w katalogu /home/wl12/Oracle/Middleware/wl1213_64/user_projects/domains/base_domain/nodemanager) poprzez zmianę wartości parametru z true na false.
    SecureListener=false
  10. Możemy już wystartować NodeManager za pomocą polecenia znajdującego się w katalogu bin wykreowanej domeny. Uruchomimy w tle bez tty za pomocą nohup
    nohup ./startNodeManager.sh &
  11. Następnie startujemy nasz AdminServer podobnie jak Node Manager
    nohup ./startWeblogic.sh &
  12. Jeżeli wszystko się powiodło mamy pracującą domenę i możemy spróbować zalogować się do konsoli za pomocą przeglądarki internetowej pod adresem http://adres_serwera:zdefiniowany_port/console (w moim przypadku to http://bolek:7003/console)
  13. Teraz możemy przystąpić do konfiguracji właściwej czyli zdefiniowania maszyny, serwerów oraz klastra.
  14. W konsoli przechodzimy do Environment -> Machines i definiujemy maszynę z typem Plain, wskazaniem na localhost jako adres oraz portem 5556 i zapisujemy. Definicja powinna wyglądać jak poniżej.

    2016-03-15 16_02_03-Settings for Machine-0 - base_domain - WLS Console – Opera

  15. Teraz przechodzimy do definicji Serwerów. Przechodzimy do Environment -> Servers, definiujemy nazwę, adres oraz port oraz aby był póki co w trybie stand-alone. W ten sposób definiujemy tyle serwerów ile życzymy sobie aby były w klastrze.
  16. Definiujemy klaster. Environment -> Clusters. Znowu potrzebna jest nazwa, pozostawiamy Messaging Mode ustawiony na Unicast. Zapisujemy definicję.
  17. Skoro klaster zdefiniowany możemy przypisać serwery do klastra oraz zdefiniować porty do połączeń szyfrowanych na tych serwerach. Przechodzimy do Environment -> Servers, wybieramy interesujący nas serwer wchodząc w edycję i dokonujemy potrzebnych zmian wybierając nazwę klastra zamiast Stand-alone oraz ustawiając port SSL. Tą czynność powtarzamy na każdym serwerze, który ma znaleźć się w klastrze.

    2016-03-15 16_12_13-Settings for aciek1 - base_domain - WLS Console – Opera

  18. Pozostaje jeszcze zmienić definicję klastra. Przechodzimy do zdefiniowanego klastra, wpisujemy adresy serwerów z portami w notacji server1:port, serwer2:port np. 172.25.106.35:8001, 172.25.106.35:8002 itd. i dokonujemy zapisu, a następnie wybieramy Advanced gdzie pojawią się dodatkowe pola wyboru. Tam musimy ustawić WebLogic Plug-In Enabled na Yes aby włączyć możliwość połączeń via plugin w Apache.

    2016-03-15 16_22_52-Settings for Cluster - base_domain - WLS Console – Opera

  19. Z menu konsoli weblogic restartujemy serwery, na których wykonywaliśmy zmiany
  20. Instalujemy aplikację i możemy sprawdzić czy działa logując się na poszczególne serwery. Koniec części Weblogic’owej.
  21. Teraz wypadałoby przekonfigurować apache. Ten kto nie ma niech go zainstaluje (na wszystkich systemach związanych z Red Hat to yum install httpd)
  22. Należy rozpakować plik WLSPlugin12.1.3-Apache2.2-Apache2.4-Linux_x86_64.zip. Ja akurat zrobiłem to w katalogu /home/wl12/plugin. W katalogu lib znajduje się moduł i biblioteki z nim związane. W katalogu bin znajduje się aplikacja java do administrowania Wallet gdzie będzie znajdował się certyfikat do połączeń szyfrowanych. Należy pamiętać o odpowiednich uprawnieniach jeżeli biblioteki i ścieżka dostępu do nich znajduje się na innym użytkowniku aniżeli ten, który uruchamia serwer httpd.
  23. Pierwszą rzeczą jaką musimy zrobić jest ustawienie LD_LIBRARY_PATH aby wskazywała na biblioteki modułu weblogic. Ja wstawiłem dla pewności w dwóch miejscach /etc/profile (profil default’owy) oraz w skrypcie, który uruchamia apache czyli apachectl, który znajduje się w /usr/sbin (łatwo sprawdzić wystarczy wydać komendę type apachectl). W obu przypadkach dodałem następujący wpis:

    export LD_LIBRARY_PATH=/home/wl12/plugin/lib

  24. Możemy przejść do konfiguracji Apache. W przypadku CentOS znajduje się ona w /etc/httpd/conf oraz /etc/httpd/conf.d. Edytujemy httpd.conf. Należy dodać moduł do konfiguracji. W przypadku Apache 2.2 jest to mod_wl.so w przypadku Apache 2.4 to mod_wl_24.so.

    LoadModule weblogic_module /home/wl12/plugin/lib/mod_wl.so

  25. Definiujemy maszynę wirtualną jak w przykładzie poniżej i cieszymy się klastrem w postaci nieszyfrowanej. Możemy wystartować Apache i aplikacja (w tym przypadku przykładowa browsestore) powinna chodzić.

    <VirtualHost *:80>
    <Location /browsestore>
    WLSRequest On
    WebLogicCluster 172.25.106.35:8001,172.25.106.35:9001
    DebugConfigInfo ON
    </Location>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /home/wl12/plugin
    ServerName bolek
    ErrorLog logs/error_log
    CustomLog logs/access_log common
    </VirtualHost>

  26. Musimy utworzyć Wallet i wrzucić certyfikat z naszego Weblogic’a. W katalogu w którym zainstalowaliśmy weblogic przechodzimy do ścieżki wlserver/server/lib. Tutaj powinien znajdować się wygenerowany w trakcie instalacji certyfikat o nazwie CertGenCA.der. W moim przypadku to katalog /home/wl12/Oracle/Middleware/wl1213_64/wlserver/server/lib. Możemy go przekopiować lub też w trakcie ładowania certyfikatu do Wallet wskazać pełną ścieżkę. Musimy wykonać 2 rzeczy utworzyć Wallet, a następnie wrzucić certyfikat. Te czynności wykonamy za pomocą następujących poleceń:

    orapki wallet create -wallet mywallet -auto_login_only

    orapki wallet add -wallet mywallet -trusted_cert -cert CertGenCAKey.der -auto_login_only

  27. Należy pamiętać aby katalog oraz znajdujące się w nim pliki miały prawo do odczytu (chmod -R a+r mywallet). W moim przypadku Wallet znajduje się w katalogu /home/wl12/plugin/mywallet.
  28. Teraz definicja wersji szyfrowanej w trybie One-Way. Do predefiniowanej maszyny wirtualnej w pliku ssl.conf dodałem następujące wpisy:

    <Location /browsestore>
    WLSRequest On
    SecureProxy ON
    WLSSLWallet /home/wl12/plugin/mywallet
    WebLogicCluster 172.25.106.35:8002,172.25.106.35:9002
    DebugConfigInfo ON
    DynamicServerList OFF
    </Location>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /home/wl12/plugin
    ServerName bolek
    ErrorLog logs/error_ssl_log
    CustomLog logs/access_ssl_log common

  29. Restartujemy Apache i cieszymy się, że aplikacja działa po https. Gdyby coś nie działało to najlepiej ustawić LogLevel na wartość debug wtedy w  logach znajdzie się więcej informacji pomagających zdiagnozować problem.

Ave 🙂


Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Komentarz do “Konfiguracja klastra Oracle Weblogic 12c z plugin Apache + szyfrowanie.

  • Andre83

    Reading your content is pure pleasure for me, it deserves to go viral, you need some initial traffic only.

    If you want to know how to get it search for: blackhatworrens strategies