Archive for Maj, 2010

Monitorowanie bazy danych Postgres przy użyciu RHQ Server

Wtyczka do monitorowania bazy danych Postgres jest jedną ze standardowo dostarczanych razem z serwerem RHQ. Pozwala ona zarówno na monitorowanie działanie bazy danych, uzyskiwanie o niej informacji statystycznych oraz także zarządzanie serwerem.

Bezpośrednio po instalacji serwera RHQ nie jest ona skonfigurowana do pracy. Baza danych powinna zostać odnaleziona poprawnie, jednak nie będzie ona monitorowana. Wygląda to mniej więcej tak:

Postgres - brak monitorowania

Postgres - brak monitorowania

Domyślnie RHQ stara się wykorzystać do monitorowania konto użytkownika postgres. W systemie Debian użytkownik ten nie ma skonfigurowanego hasła. Jego dostęp do bazy danych następuje poprzez identyfikację użytkownika zalogowanego w systemie (czyli tylko będąc zalogowanym użytkownikiem postgres możemy dostać się do bazy i nie musimy wtedy podawać hasła). Konfiguracja tego zachowania znajduje się w pliku /etc/postgresql/8.3/main/pg_hba.conf:

65
66
67
68
69
70
71
72
73
74
# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database
# super user can access the database using some other method.
# Noninteractive
# access to all databases is required during automatic maintenance
# (autovacuum, daily cronjob, replication, and similar tasks).
#
# Database administrative login by UNIX sockets
local   all         postgres                          ident sameuser

I tak jak nie jest zalecane wprowadzenie zmian w tej konfiguracji, tak nic nie stoi na przeszkodzie zdefiniowanie odpowiedniego hasła dla tego użytkownika. Tym samym umożliwimy mu łączenie przy wykorzystaniu lokalnego interfejsu sieciowego.

Zdefiniowanie hasła można wykonać tak:

  • połączenie się z bazą danych na uprawnieniach użytkownika postgres:
    # su - postgres -c psql
  • ustawienie hasła dla użytkownika:
    postgres=# ALTER USER postgres WITH PASSWORD 'hasło';

Teraz pozostaje podanie tych informacji w RHQ. Należy wybrać na liście zasobów bazę danych Postgres a następnie zakładkę Inventory. W ramach tej zakładki mamy możliwość wyboru polecenie CONNECTION. Pozwoli ona na konfigurację parametrów połączenia.

Postgres - konfiguracja połączenia

Postgres - konfiguracja połączenia

Należy wybrać przycisk EDIT i wprowadzić poprawnie wartości w polach role name oraz role password. Jeżeli hasło zostanie podane poprawnie, to monitorowanie powinno działać. Ponieważ użytkownik postgres jest super użytkownikiem, mamy także możliwość modyfikowania parametrów bazy danych (w zakładce CONFIGURE).

Postgres - konfiguracja parametrów

Postgres - konfiguracja parametrów

Tags: , , , , , , ,

Instalacja RHQ Server wraz z wtyczkami Jopr w systemie Debian oraz Red Hat

W tym wpisie przedstawię w jaki sposób można zainstalować oraz skonfigurować serwer monitorujący RHQ Server wraz z odpowiednimi wtyczkami z projektu Jopr. Przedstawię instalację aplikacji skompilowanych ze źródeł tych projektów. Można również pobrać odpowiedni pakiet ze strony Jopr i uprościć sobie trochę życie. W takim przypadku jednak (przynajmniej w momencie pisanie tego tekstu) nie będzie działało monitorowanie serwera aplikacji JBoss EAP 5.

Na zakończenie artykuły powinniśmy dysponować zainstalowanym serwerem RQH wraz z wtyczkami z Jopr, udostępnionym poprzez serwer WWW Apache oraz monitorujący swoje działanie. Jeżeli nie ma potrzeby budowania takiej konfiguracji zawsze można niektóre kroki pominąć.

Pobranie instalatora

Istnieją następujące sposoby pobrania plików z serwerem RQH oraz z Joprem:

  1. Pobrać ze strony Jopr: Jopr – Releases, w chwili pisanie tego artykułu ostatnią dostępną wersją była 2.3.1, wersja ta zawiera w sobie zarówno serwer RHQ jak odpowiednie wtyczki pozwalające na monitorowanie serwera aplikacji JBoss.
  2. Pobranie źródeł serwera RHQ oraz Jopr i ich kompilacja, opis tego procesu można przeczytać w tym wpisie: Jak skompilować ze źródeł aplikacje RHQ Server oraz Jopr.
  3. Można pobrać wersję skompilowaną przeze mnie:

W przypadku wybrania metody pierwszej nie będzie potrzeby integrowania ze sobą serwera RHQ z wtyczkami Jopr. W pozostałych dwóch metodach będzie trzeba to zrobić (oczywiście, może się coś zmieni w międzyczasie i także tak konieczność zniknie).

Instalacja bazy danych

Serwer RHQ pozwala na użycie następujących baz danych:

  • systemy produkcyjne – PostgreSQL oraz Oracl
  • testowo – HSQL oraz MSSQL

Serwer bazy danych HSQL można użyć, jeżeli chcemy sprawdzić jak wygląda całe rozwiązania, czy też w celach demonstracyjnych. Nie należy go używać jednak w systemie produkcyjnym. My zajmiemy się instalacją bazy danych PostgreSQL oraz jej konfiguracją tak, aby dało się używać razem z nią serwer RHQ.

Należy pamiętać, że RHQ Server wymaga wersji PostreSQL przynajmniej 8.2.4, wersja 8.1 nie jest w ogóle wspierana.

W przypadku Debiana instalacja PostgreSQL sprowadza się do wydania polecenia:

# aptitude install postgresql

Spowoduje ono instalację bazy danych w wersji 8.3. W repozytorium z backportami występuje także wersja 8.4, ale na potrzeby tego wpisu instalacja jej nie jest konieczna.

Z Red Hatem w wersji 5.5. problemów też nie będzie, instalacja odbywa się poprzez komendę:

# yum install postgresql84

Należy zwrócić uwagę na instalację odpowiedniej wersji bazy danych. W przypadku wydań RHEL wcześniejszych niż 5.5 będzie dostępna tylko wersja 8.1 bazy danych. W takim przypadku należy skorzystać z repozytoriów zewnętrznych lub pobrać odpowiednią wersję ze strony domowej PostgreSQL.

Pozostaje teraz dodać użytkownika rhqadmin wraz z hasłem:

# su - postgres -c 'createuser -S -D -R -P rhqadmin'
Enter password for new role:
Enter it again:

Tworzymy bazę danych rhq, która będzie używana przez system monitorujący:

# su - postgres -c 'createdb -O rhqadmin rhq'

To wszystko, co jest niezbędne do uruchomienia RHQ Server wraz z PostreSQL, dla osób nie znających tej bazy danych polecam przeczytanie dokumentacji.

Instalacja plików binarnych

Pobrane lub skompilowane pliki binarne należy teraz rozkompresować do odpowiedniego katalogu. Może to być dowolny katalog na naszej maszynie, ja zakładam że serwer RHQ będzie znajdować się w katalogu /opt/rhq-server. Do do rozpakowania archiwum dobrze jest użyć narzędzia konsolowego unzip.

Najprostszym sposobem będzie zatem wydanie następujących komend:

# cd /opt
# unzip < ścieżka do pliku zip z RHQ>

Po rozpakowaniu serwera RHQ należy jego nazwę zmienić na rhq-server (lub też utworzyć odpowiedni link).

Pierwsze uruchomienie serwera

Skrypt uruchamiający RHQ znajduje się w katalogu /opt/rhq-server/bin i nazwy się rhq-server.sh. Posiada on następujące komendy:

  • start – uruchamia serwer w trybie demona
  • console – uruchamia serwer w ramach konsoli, logi z serwera są wypisywane na ekranie
  • stop – pozwala na wyłączenie serwera
  • kill – zabija serwer (usuwa proces JVM z pamięci)
  • status – pokazuje, czy serwer działa

Pierwsze uruchomienie proponuje wykonać przy użyciu komendy console. Pozwala ona na wyświetlenie logów z serwera bezpośrednio na konsolę, więc od razu będzie wiadomo czy wszystko działa.

# cd /opt/rhq-server/bin
# ./rhq-server.sh console

Komenda ta powinna uruchomić serwer i w ciągu kilkunastu sekund powinniśmy otrzymać komunikat o jego pomyślnym starcie:

[Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)] Started in 5s:450ms

Jak widać uruchomiony został serwer aplikacji JBoss w wersji 4.2.3. Po pomyślnym uruchomieniu serwer powinien nasłuchiwać na wszystkich interfejsach sieciowych na następujących portach:

# netstat -tulpn | grep java
tcp        0      0 0.0.0.0:37024           0.0.0.0:*               LISTEN      21481/java      
tcp        0      0 0.0.0.0:9093            0.0.0.0:*               LISTEN      21481/java      
tcp        0      0 0.0.0.0:5446            0.0.0.0:*               LISTEN      21481/java      
tcp        0      0 0.0.0.0:7080            0.0.0.0:*               LISTEN      21481/java      
tcp        0      0 0.0.0.0:57165           0.0.0.0:*               LISTEN      21481/java      
tcp        0      0 0.0.0.0:34703           0.0.0.0:*               LISTEN      21481/java      
tcp        0      0 0.0.0.0:9009            0.0.0.0:*               LISTEN      21481/java      
tcp        0      0 0.0.0.0:2098            0.0.0.0:*               LISTEN      21481/java      
tcp        0      0 0.0.0.0:7443            0.0.0.0:*               LISTEN      21481/java      
tcp        0      0 0.0.0.0:2099            0.0.0.0:*               LISTEN      21481/java      
tcp        0      0 0.0.0.0:7444            0.0.0.0:*               LISTEN      21481/java      
tcp        0      0 0.0.0.0:7445            0.0.0.0:*               LISTEN      21481/java

Jak widać są to inne porty niż te standardowo zajmowane przez JBossa czy też Tomcata. Może się jednak zdarzyć, że wystąpi tutaj jakiś konflikt z innymi aplikacjami. Proszę się wtedy skonsultować z dokumentacją JBossa, gdzie można znaleźć informacje o tym jak zmienić te porty na inne.

Dla nas na tę chwilę najważniejsza jest informacja, że RHQ nasłuchuje na ruch HTTP na porcie 7080 oraz na ruch HTTPS na porcie 7443. Będzie nam to potrzebne do dalszej konfiguracji serwera.

Konfiguracja serwera RHQ

Powinniśmy do tej chwili dysponować działającym serwerem RHQ ale jeszcze nie został on skonfigurowany. Dalsza część tego porcesu odbywa się przez przeglądarkę. Proszę połączyć się z portem 7080 z maszyną na której została uruchomiona usługa. W moim przypadku będzie to połączenie na adres: http://localhost:7080.

Po połączeniu się powinien pokazać się następujący ekran:

Ekran powitalny RHQ Server

Ekran powitalny RHQ Server

Nie pozostaje teraz nic innego jak wybrać link do kontynuacji instalacji. Pozwoli on na zdefiniowaniu dostępu do bazy danych oraz innych podstawowych elementów serwera.

Instalacja RHQ Server - parametry bazy danych

Instalacja RHQ Server - parametry bazy danych

  • Database Type – typ bazy danych, w naszym przypadku PostgreSQL
  • Database Connection URL – definicja połączenia z bazą danych, czyli serwer oraz jej nazwa
  • Database JDBC Driver Class – klasa sterownika odpowiadająca za obsługę bazy danych
  • Database XA DataSource Class – klasa źródła danych
  • Database User Name – nazwa użytkownika, który będzie używany do łączenia się z bazą danych
  • Database Password – hasło użytkownika

Po zakończeniu konfiguracji bazy danych dobrze jest wybrać przycisk Test Connection, który sprawdzi, czy można się z bazą danych połączyć. W przypadku problemów trzeba będzie je skorygować.

Teraz czas na zdefiniowanie, jak będziemy się łączyć z serwerem:

Instalacja RHQ Server - parametry instalacji

Instalacja RHQ Server - parametry instalacji

  • Server Name – nazwa maszyny na której instalujemy RHQ
  • Server Public Address – publiczna nazwa maszyny
  • HTTP Port – port HTTP na którym serwer będzie nasłuchiwał
  • Secure HTTPS Port – port HTTPS na którym serwer będzie nasłuchiwał

Ostatnim elementem będzie skonfigurowanie samego serwera:

Instalacja RHQ Server - parametry serwera

Instalacja RHQ Server - parametry serwera

  • Server Bind Address – adres interfejsu sieciowego z którego ma korzystać serwer RHQ
  • Embedded Agent Enabled – opcja umożliwia włączenie agenta wbudowanego w serwer RHQ, pozwoli to na monitorowanie maszyny na której działa serwer, nie jest zalecane uruchamianie tego w środowisku produkcyjny, w takim przypadku należy skonfigurować oddzielnego agenta
  • Email SMTP Hostname – nazwa serwera przyjmującego pocztę
  • Email From Address – adres z którego ma wychodzić poczta z serwera RHQ

I to wszystko jeżeli chodzi o instalacją. Nie pozostaje nic innego jak nacisnąć przycisk Install Server! i poczekać chwilę.

Instalacja RHQ Server - proces instalacji

Instalacja RHQ Server - proces instalacji

W czasie instalacji w logach powinniśmy obserwować wzmożony ruch, powinna zostać utworzona baza danych, zainicjalizowane aplikacje. Mogę pojawić się różne błędy, ale jeżeli dostaniemy na końcu komunikat Done! Click here to get started! to wszystko powinno być OK.

Jeżeli instalacja się zakończyła, możemy się zalogować do systemu. Domyślny użytkownik to rhqadmin a domyślne hasło jest takie samo, czyli brzmi rhqadmin.

RHQ Server - logowanie

RHQ Server - logowanie

Po zalogowaniu pojawi się ekran powitalny. Instalacja została zakończona. Należy zmienić domyślne hasło i można rozpocząć monitorowanie.

Instalacja wtyczek Jopr

W przypadku braku wtyczek Jopr, należy jeszcze je doinstalować. Czyli najpierw należy rozpakować plik z wtyczkami i skopiować ich zawartość do katalogu /opt/rhq-server:

# cp -a jbossas /opt/rhq-server/

Należy zwrócić uwagę na to, aby skopiować zawartość katalogu jbossas do katalogu takiego samego w instancji serwera RHQ. Dzięki temu odpowiednie pliki zostaną skopiowane we właściwe miejsce.

Operacja ta może być wykonana na działającym serwerze RHQ, po chwili powinien automatycznie wczytać wtyczki oraz zaktualizować agenty.

Jeżeli pliki zostały skopiowane w dobre miejsca, w logach powinny pojawić się takie komunikaty:

11:20:23,780 INFO  [ProductPluginDeployer] Discovered agent plugin [RHQServer]
11:20:23,859 INFO  [ProductPluginDeployer] Discovered agent plugin [Tomcat]
11:20:23,967 INFO  [ProductPluginDeployer] Discovered agent plugin [JBossCache]
11:20:24,070 INFO  [ProductPluginDeployer] Discovered agent plugin [JBossAS5]
11:20:24,160 INFO  [ProductPluginDeployer] Discovered agent plugin [JBossAS]
11:20:24,230 INFO  [ProductPluginDeployer] Discovered agent plugin [JBossCache3]
11:20:24,335 INFO  [ProductPluginDeployer] Discovered agent plugin [Hibernate]
11:20:24,353 INFO  [ProductPluginDeployer] Deploying [7] new or updated agent plugins: [RHQServer, JBossAS5, JBossAS, Hibernate, JBossCache3, Tomcat, JBossCache]
11:20:29,520 INFO  [ProductPluginDeployer] Plugin metadata updates are complete for [7] plugins: [RHQServer, JBossAS5, JBossAS, Hibernate, JBossCache3, Tomcat, JBossCache]

Utworzenie wirtualnego serwera Apacha

Ostatnim elementem będzie udostępnienie instancji serwera poprzez serwer WWW Apache. Tutaj będą chyba największe różnice między Debianem a Redhatem.

Konfigruracja Debiana

  1. Utworzyć plik o nazwie rhq w katalogu /etc/apache2/sites-available. Zdefiniujemy w ten sposób nowy serwer wirtualny, zawartość tego pliku prawdopodobnie będzie trzeba dostosować do własnej konfiguracji:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <VirtualHost *:80>
            ServerName rhq
            ServerAdmin administrator@example.com
            ProxyRequests On
            ProxyPreserveHost On
            <Proxy *>
                    Order deny,allow
                    Allow from all
            </Proxy>
            ProxyPass / http://localhost:7080/
            ProxyPassReverse / http://localhost:7080/
            <Location />
                    Order allow,deny
                    Allow from all
            </Location>

            ErrorLog /var/log/apache2/error.rhq.log
            LogLevel warn
            CustomLog /var/log/apache2/access.rhq.log combined
            ServerSignature Off
    </VirtualHost>
  2. Należy włączyć moduły odpowiedzialne za obsługę przesyłania połączeń:
    # a2enmod proxy_http
  3. Włączyć zdefiniowany serwer wirtualny:
    # a2ensite rhq
  4. Ponownie wymusić załadowanie konfiguracji przez serwer Apache
    # /etc/init.d/apache2 reload

Konfiguracja Red Hata

  1. Utworzyć plik o nazwie rhq.conf w katalogu /etc/httpd/conf.d:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <VirtualHost *:80>
            ServerName rhq
            ServerAdmin administrator@example.com
            ProxyRequests On
            ProxyPreserveHost On
            <Proxy *>
                    Order deny,allow
                    Allow from all
            </Proxy>
            ProxyPass / http://localhost:7080/
            ProxyPassReverse / http://localhost:7080/
            <Location />
                    Order allow,deny
                    Allow from all
            </Location>

            ErrorLog /var/log/httpd/error.rhq.log
            LogLevel warn
            CustomLog /var/log/httpd/access.rhq.log combined
            ServerSignature Off
    </VirtualHost>
  2. W przypadku RHEL 5.5 moduły mod_proxy oraz mod_proxy_http są włączone standardowo. W razie wątpliwości należy sprawdzić plik /etc/httpd/conf/httpd.conf:
    192
    LoadModule proxy_http_module modules/mod_proxy_http.so
  3. Ponowne wczytanie konfiguracji serwera Apache:
    # /etc/init.d/httpd reload

Po tych operacjach powinniśmy mieć możliwość otworzenia strony z poziomu Internetu.

Źródła

Tags: , , , , , , ,

Konfiguracja serwera aplikacji JBoss 5 do pracy z Jopr

Nowa wersja aplikacji Jopr (2.3.1) teoretycznie wspiera obsługę zarządzania serwerem aplikacji JBoss EAP 5. W praktyce niestety agent nie wyrywa w ogóle tego serwera aplikacji. Spowodowane jest to brakiem odpowiedniej wtyczki, która obsługiwałaby tę wersję JBoss (z wersją 4.x nie tutaj żadnych problemów, jest w pełni obsługiwana).

Okazuje się na szczęście, że odpowiedni plugin istnieje, i nawet działa, ale należy skompilować go samodzielnie. Odpowiednią procedurę przedstawiłem w tym wpisie: Jak skompilować ze źródeł aplikacje RHQ Server oraz Jopr. Po kompilacji kodu powinniśmy dysponować odpowiednią wersję wtyczki, która już powinna wykryć wersję 5 serwera JBoss.

Jednakże nie wystarczy tylko do włączenia zarządzania instancją serwera przy użyciu Jopra. Od wersji 5 wyłączono anonimowy dostęp do konsoli JMX (dzięki której można ta naprawdę zarządzać serwerem). W związku z tym, dopóki po stronie serwera aplikacji nie zdefiniujemy użytkownika mogącego się łączyć z konsolą, nie będziemy w stanie korzystać z konsoli JMX.

Przy domyślnej konfiguracji dane użytkowników są przechowywane w dwóch plikach, zapisanych w wybranej konfiguracji serwera:

  • conf/props/jmx-console-users.properties – informacje o loginach i hasłach użytkowników
  • conf/props/jmx-console-roles.properties – informacje o grupach użytkowników

W najprostszym przypadku wystarczy odkomentować jedną linię z pliku jmx-console-users.properties i już można cieszyć się kontem administracyjnym. Ze względu bezpieczeństwa jednak proponowałbym zmienić chociaż hasło dostępu dla tego użytkownika na jakieś mniej standardowe.

Drugim niezbędnym elementem jest odpowiednia konfiguracja Jopra. Robi się to poprzez:

  • import serwera JBoss do monitorowanych zasobów
  • konfigurację użytkownika i hasła pozwalającego na dostęp do konsoli JMX

Konfigurację loginu i hasła należy zrobić poprzez:

  • wybranie z listy serwerów interesujący nas serwer JBossa
  • wybranie zakładki Inventory
  • wybranie opcji Connection
  • edycję pozycji[cci] Principal/cci] i [cci]Credential/cci] (najpierw należy wybrać przycisk [cci]Edit/cci] znajdujący się na dole strony)
    Połączenie Jopr - JBoss 5

    Połączenie Jopr - JBoss 5

  • po zatwierdzeniu zmian powinniśmy już dysponować dostępem do serwera aplikacji JBoss i możliwością jego zarządzania

Źródła

Tags: , , , ,

Jak skompilować ze źródeł aplikacje RHQ Server oraz Jopr

Poniżej znajduje się krótki przewodnik w którym przestawię w jaki sposób skompilować oraz zainstalować ze źródeł zarówno serwer RHQ jak i pluginy dostarczane z aplikację JOPR. Kroki są te niezbędne, aby udało się uruchomić monitorowanie JBossa EAP 5 (lub też wersji społecznościowe 5.1) przy użyciu Jopra. Standardowa instalacja (w wersji 2.3.1) niestety nie zawiera odpowiedniego pluginu.

Krok 1: warunki wstępne

Przed rozpoczęciem kompilacji tych aplikacji, trzeba wcześniej zainstalować w systemie następujące aplikacje:

  • Java – zainstalować JDK 6, należy także poprawnie skonfigurować zmienną systemową $JAVA_HOME, która powinna wskazywać na katalog domowy z Javą
  • Maven – zainstalowany w wersji przynajmniej 2.1.x, można pobrać go ze strony http://maven.apache.org/download.html
  • Subversion – należy zainstalować klienta tego systemu wersji
  • PostgreSQL – zainstalować bazę danych, w wersji przynajmniej 8.3 (ja używałem wersji 8.4)

Krok 2: pobranie źródeł

Zanim przystąpimy do konfiguracji kolejnych aplikacji, można rozpocząć pobieranie źródeł aplikacji. Proces ten zajmuje trochę czasu, więc może się wykonywać w czasie gdy przystosujemy kolejne elementy instalacji.

Źródła należy pobrać z repozytorium SVN udostępnianego zarówno przez RHQ jak i Jopra. Najprościej to zrobić używając komendy svn, ale można też użyć innych aplikacji współpracujących z tym systemem kontroli wersji.

Pobranie kodu źródłowego RHQ Server:

svn co http://svn.rhq-project.org/repos/rhq/trunk/ rhq

Pobranie kodu źródłowego Jopr:

svn co https://anonsvn.jboss.org/repos/jopr/trunk/ jopr

W moim przypadku została dla RHQ Serwer została pobrana wersji repozytorium o numerze 5305 a dla Jopr o numerze 1360, także pozostałe informacje dotyczą tych wersji kodu. W nowszych niektóre rzeczy na pewno mogą się zmienić.

Krok 3: konfiguracja bazy danych

RHQ Server do swojego działania potrzebuje bazy danych. Może on działać produkcyjnie na bazie danych PostreSQL lub Oracle, testowo na HSQL (istnieje także eksperymentalne wsparcie dla MSSQL). Na potrzeby tej instalacji skonfigurujemy bazę danych PostgresSQL.

Konfiguracja bazy danych sprowadza się do następujących punktów:

  • konfiguracja pliku pg_hba.conf, w przypadku Ubunut plik ten znajduje się w tym katalogu: /etc/postgresql/8.4/main, należy włączyć logowanie zaufane dla użytkowników korzystających z lokalnego interfejsu sieciowego oraz z lokalnego komputera (uwaga, powoduje to, że nie będą oni pytani o hasło dostępu przy próbie łączenia się z bazą danych):
    82
    83
    84
    85
    86
    #local   all         all                               ident
    local   all         all                               trust
    # IPv4 local connections:
    #host    all         all         127.0.0.1/32          md5
    host    all         all         127.0.0.1/32          trust
  • utworzenie użytkownika w bazie danych o nazwie rhqadmin oraz z hasłem rhqadmin:
    createuser -U postgres -S -D -R -P rhqadmin
  • utworzyć bazę danych rhq, której właścicielem będzie użytkownik rhqadmin:
    createdb -U postgres -O rhqadmin rhq

Krok 4: kompilacja RHQ Server

Można teraz przystąpić do kompilacji oraz instalacji serwera RHQ. Robi się to przy użyciu aplikacji Maven, która powinna być dostępna na ścieżce. Pierwsze wykonanie kompilacji może zająć sporo czasu (w moim przypadku trwało to ponad godzinę), ponieważ muszą zostać pobrane odpowiednie biblioteki niezbędne do kompilacji.

Uruchomić kompilacje można wydając takie polecenie (należy jednocześnie znajdować się w katalogu z plikami źródłowymi RHQ Server):

mvn -Penterprise,dev -Dmaven.test.skip=true -Ddbsetup install

Parametr -Ddbsetup powoduje utworzenie schematu w bazie danych i jest wymagany podczas pierwszej kompilacji i za każdym razem gdy jej schemat zostanie zmieniony.

W trakcie procesu kompilacji zostanie utworzony schemat bazy danych. Zostanie także utworzony katalogu dev-container, w którym będzie znajdowała się aplikacji. Aby uruchomić RHQ Server, należy wejść do katalogu dev-container/bin i wykonać polecenie:

cd dev-container/bin
./rhq-server.sh start

Spowoduje to uruchomienie serwera RHQ. Po uruchomieniu powinien o być dostępny pod adresem: http://localhost:7080. Aby się do niego zalogować, należy użyć loginu rhqadmin oraz hasła rhqadmin.

About RHQ

Informacje o wersji RHQ Server

Istnieje także możliwość utworzenia archiwum z serwerem RHQ, które będzie można następnie użyć do instalacji nowej jego instancji. Należy w takim przypadku wydać następujące polecenie (będąc w katalog głównym ze źródłami RHQ):

mvn -Penterprise,dist -Dmaven.test.skip=true -Ddbsetup install

Spowoduje to kompilację projektu i utworzenie w katalogu modules/enterprise/server/container/target zarówno katalogu z serwerem (rhq-server-1.4.0-SNAPSHOT), jak i odpowiedniego archiwum zip (rhq-server-1.4.0-SNAPSHOT.zip). Uruchomienie tak przygotowanego serwera spowoduje konieczność przejścia przez kolejne kroki związane z jego konfiguracją.

Krok 5: kompilacja Jopr

Ostatnim elementem jest kompilacja pluginów wchodzących w skład Jopr oraz ich instalacja w ramach serwera RHQ.

Zanim jednak uda się zbudować Jopr, trzeba zmodyfikować pliki konfiguracyjne pom.xml w kilku miejscach. Jest to spowodowane tym, że znajdują się w nich odwołania do repozytorium Mavena, które nie istnieją, więc nie daje się przeprowadzić pomyślnie kompilacji projektu. Mam nadzieję, że zostanie to zmienione w repozytorium i nie będzie potrzeby wprowadzania tych zmian, ale dla wersji której ja używałem niestety było to potrzebne.

Przygotowałem plik o nazwie jopr-1360.patch, który zawiera różnice pomiędzy modyfikacjami które wprowadziłem oraz wersją źródeł które używałem. Należy pobrać ten plik i użyć aplikacji patch, która zastosuje go do źródeł. Aplikację te należy wywołać w katalogu w którym znajdują się źródła jopr:

$ patch -p0 < ../jopr-1360.patch.txt
patching file modules/tools/jbas5-plugin-descriptor-gen/pom.xml
patching file modules/plugins/jboss-as-5/testsuite/pom.xml
patching file modules/plugins/jboss-as-5/pom.xml
patching file modules/plugins/jboss-cache-v3/pom.xml
patching file pom.xml
patching file etc/jbas5-ejb2-mdb-test/pom.xml
patching file etc/jbas5-jnp-client/pom.xml
patching file etc/jbas5-ejb-client/pom.xml

Należy zwrócić uwagę na to, że niekoniecznie ten plik będzie działał, jeżeli coś się zmieniło w źródłach aplikacji. Dlatego też w przypadku gdy kompilacja nie będzie działać, proponują zobaczyć co ten plik modyfikuje i ręcznie te modyfikacje nanieść do odpowiednich plików.

Sama kompilacja Jopr polega na wywołaniu aplikacji Maven (w katalogu ze źródłami aplikacji):

mvn -Pdev -Drhq.containerDir=rhq/dev-container/ install

Za pomocą parametru -Drhq.containerDir wskazujemy miejsce, gdzie znajduje się skompilowana wersja RHQ Server. Należy zwrócić uwagę, aby podać pełną ścieżkę do tego katalogu, w innym przypadku pluginy mogą zostać skopiowane do innego katalogu.

Zamiast katalogu z wersją deweloperską serwera RHQ można także podać katalog modules/enterprise/server/container/target/rhq-server-1.4.0-SNAPSHOT. Wtedy wtyczki zostaną skopiowane do tej instancji serwera, wystarczą ją teraz skompresować i już można spróbować zainstalować na innym serwerze.

Tyle przynajmniej w teorii :(. Z jakiś magicznych powodów podczas instalacji serwera RHQ łącznie z wtyczkami z Jopra pojawiał się błąd o niemożliwości instalacji jednej z aplikacji (rhq.ear).W moim przypadku nie chciało to do końca działać. Rozwiązaniem okazało się utworzenie dwóch oddzielnych archiwów: w jednym był serwer RHQ, w drugim wtyczki Jopr. Czy w przypadku kompilacji wtyczek Jopr nie podajemy katalogu do samego serwera, ale jakiś katalog tymczasowy. Zostanie w nim odzwierciedlona odpowiednia struktura serwera, i wtyczki zostaną zapisane w odpowiednie miejsca. Wystarczy po instalacji serwera RHQ po prostu skopiować te pliki i już powinno działać.

Oto serwer RHQ Server oraz wtyczki Jopr, skompilowane:

Konfiguracja klastra oparta o moduł mod_cluster – konfiguracja

Po wstępie wyjaśniającym czym jest mod_cluster oraz jak skompilować odpowiednie moduły potrzebne do jego uruchomienia czas na konfigurację.

Oto wpisy poświęcone konfiguracji modułowi mod_cluster:

  1. Konfiguracja klastra oparta o moduł mod_cluster — wprowadzenie
  2. Konfiguracja klastra oparta o moduł mod_cluster — kompilacja modułów
  3. Konfiguracja klastra oparta o moduł mod_cluster – konfiguracja

Pobranie modułu mod_cluster

Odpowiednie pliku do ściągnięcie można znaleźć na stronie projektu. Ja użyłem wersji stabilnej oznaczonej jako 1.0.3 GA dla platformy 64 bitowej:

Instalacja modułów w serwerze Apache

Należy pamiętać, że mod_cluster wymaga wersji Apacha przynajmniej 2.2.8. Może to być problem w przypadku RHEL 5.5, ponieważ tutaj dostępna jest wersja 2.2.3. Należy w związku z tym zainstalować nowszą wersję aplikacji.

Należy rozpakować plik z bibliotekami dynamicznymi (mod_cluster-1.0.3.GA-linux2-x64-so.tar.gz) i skopiować zawarte w nim biblioteki do katalogu /etc/httpd/modules):

cp mod_advertise.so mod_manager.so mod_proxy_cluster.so mod_slotmem.so /etc/httpd/modules

W przypadku gdy nie znajdziemy odpowiedniej wersji modułów, należy skompilować je samodzielnie.

Konfiguracja serwera WWW Apache

Jeżeli wszystko poszło OK, to powinniśmy już dysponować zainstalowanymi modułami potrzebnymi do działania klastra. Aby je włączyć, należy kazać je serwerowi Apache załadować i odpowiednio je skonfigurować.

Należy utworzyć plik /etc/httpd/conf.d/jboss.conf. Pliki znajdujące się w tym katalogu i z rozszerzeniem conf zostaną automatycznie wczytane podczas startu serwera i zinterpretowane. W pliku tym załadujemy potrzebne moduły oraz zdefiniujemy serwer wirtualny, w ramach którego będzie działa balansowanie ruchem.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
LoadModule slotmem_module modules/mod_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule advertise_module modules/mod_advertise.so

<VirtualHost 192.168.3.11:80>

        <Directory />
                Order deny,allow
                Allow from all
        </Directory>

        KeepAliveTimeout 60
        MaxKeepAliveRequests 0

       AdvertiseFrequency 5

       <Location /mod_cluster-manager>
           SetHandler mod_cluster-manager

           Order deny,allow
           Deny from all
           Allow from 127.0.0.1
       </Location>


</VirtualHost>

Powyższy plik jest minimalnym plikiem, który pozwala nam uruchomić klaster. Jeżeli serwer Apache uruchomił się bez problemów, można uznać do za sukces i przystąpić do dalszych kroków.

Definicja serwera wirtualnego jest standardowa, poza następującymi elementami:

  • AdvertiseFrequency – czas jaki musi upłynąć pomiędzy próbą wykrycia adresów IP oraz portu, domyślna wartość to 10 sekund
  • SetHandler – pozwala na wyświetlanie informacji o tym, jakie węzły klastra są widoczne przez moduł mod_cluster

Problemy ze startem serwera Apache

W przypadku problemów trzeba jest najpierw rozwiązać. Ja spotkałem się z nastepującymi problemami:

  • Cannot load /etc/httpd/modules/mod_slotmem.so into server: /etc/httpd/modules/mod_slotmem.so: cannot open shared object file: No such file or directory – brak możliwości otworzenia podanego pliku. Może to oznaczać:
    • brak pliku w podanej lokalizacji, czyli błędnie skopiowany plik
    • błędne uprawnienia na plik (biblioteka powinna mieć ustawiony bity do odczytu i wykonywalności)
    • próba wczytania biblioteki o złej architekturze (to przytrafiło się mi 🙂 ), można to sprawdzić w prosty sposób, wynik tego polecenia powinien zwrócić takie same informacje (poniżej są inne):
      file /etc/httpd/modules/mod_slotmem.so /etc/httpd/modules/mod_alias.so
      /etc/httpd/modules/mod_slotmem.so: ELF 64-bit LSB shared object, IA-64, version 1 (SYSV), not stripped
      /etc/httpd/modules/mod_alias.so:   ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), stripped
  • Module mod_proxy_balancer is loaded it must be removed  in order for mod_proxy_cluster to function properly – komunikat pojawi się w w pliku error.log. Aby rozwiązać problem, należy usunąć ładowanie modułu mod_proxy_balancer. Można to zrobić edytując plik /etc/httpd/conf/httpd.conf i zakomentować linię:
    189
    #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

Instalacja modułu w serwerze aplikacji

Pierwszym krokiem jest skopiowanie aplikacji mod_cluster.sar do katalogu deploy danego serwera:

cp -a mod_cluster.sar $JBOSS_HOME/server/node1/deploy

Teraz należy odpowiednio skonfigurować serwer aplikacji. Konfiguracja będzie dotyczyła aplikacji jbossweb.sar znajdującej się w katalogu deploy danej konfiguracji serwera. W pliku tym należy dodać następujący element (pod istniejącymi elementami Listener):

9
10
11
<Listener
 className="org.jboss.web.tomcat.service.deployers.MicrocontainerIntegrationLifecycleListener"
 delegateBeanName="ModClusterService"/>

Drugą modyfikacją jest dodanie zmiennej jvmRoute do sekcji Engine:

36
<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">

Na podstawie tej wartości dany węzeł będzie identyfikowany przez serwer Apache, wartość ta powinna być unikalna w ramach klastra.

Kolejnym plikiem który trzeb otworzyć jest deploy/jbossweb.sar/META-INF/jboss-beans.xml. Do pliku tego należy dodać następujący w ramach definicji ziarna WebServer następującą zależność:

17
<depends>ModClusterService</depends>

I to wszystko, teraz należy wystartować serwery Apache oraz JBoss i jeżeli nie wystąpią jakieś błędy to powinniśmy mieć już skonfigurowany load balancer. Można otworzyć lokalizację mod_cluster-manager na serwerze WWW i sprawdzić, czy mod_cluster poprawnie wykrył klaster.

Pozostaje jeszcze skonfigurować pozostałe węzły klastra i również je uruchomić.

Źródła

Tags: , , , ,