Benutzer-Werkzeuge

Webseiten-Werkzeuge


nosql:install_oracle_nosql_db_11gr2

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
nosql:install_oracle_nosql_db_11gr2 [2013/09/16 14:42] gpipperrnosql:install_oracle_nosql_db_11gr2 [2014/06/06 14:58] (aktuell) – [Boot Konfiguration erstellen] gpipperr
Zeile 1: Zeile 1:
 +====== Installation Oracle NoSQL Database 11gR2 (11.2.2.0.39) ======
  
 +==== Übersicht über die Architektur ====
 +
 +In der folgenden Übersicht wird von einen Replikationsfaktor von Drei ausgegangen, d.h. es gibt für jede Storage mit seinen jeweiligen zugeordneten Partitionen je zwei "Kopien" die automatisch immer aktuell gehalten werden.
 +Es werden drei physikalische Server eingesetzt.
 +
 +{{ :nosql:oracle_nosql_architektur_uebersicht.png?500 | Übersicht über die Oracle NoSQL Architektur}}
 +
 +  * SN = Storage Node = Physikalischer Rechner mit lokalen Plattenplatz 
 +  * SNA = Storage Node Agent = Kontroll Prozess
 +  * KVStore = Das Speicherarray mit den Storage Nodes
 +  * Storage Node Master = Pro Node ein Master (schreibt / ließt) und repliziert mit dem [[http://en.wikipedia.org/wiki/Paxos_%28computer_science%29| Paxos Protokoll]] zu seinen je zwei Replikaten und hat seinen eigenen lokalen Speicherbereich mit seinen ihm zugeteilten Partitionen ( mit eine je anderen Hashkey!)
 +  * Storage Node Replication = Kopie der Daten von einen Storage Node Master für die Ausfallsicherheit
 +  * Replikationsgruppe =Ein Master und min. eine Replika
 +
 +
 +
 +
 +==== Installation ====
 +
 +
 +Installation einer Oracle NoSQL Datenbank auf drei Oracle Linux 6.4 Server
 +
 +Ablauf:
 +  * Betriebssystem auf den Servern bereitstellen
 +  * FW Konfiguration plannen, falls FW zwischen den Knoten und der eigentlichen Anwendung
 +  * Java auf den Servern aufsetzen
 +  * Deploy der Oracle NoSQL Software
 +  * Aufsetzen der Store Struktur 
 +
 +
 +=== Download Software ===
 +
 +Die benötigte Software:
 +  * [[http://www.oracle.com/technetwork/products/nosqldb/downloads/index.html|Oracle NoSQL Database, Community Edition 11gR2 (11.2.2.0.39)]]
 +  * Oracle Linux 6.4 - Download über [[https://edelivery.oracle.com/EPD/Download/get_form?egroup_aru_number=16064752| edelivery ]]
 +  * Java Kit 7 - Download über [[http://www.oracle.com/technetwork/java/javase/downloads/index.html|Oracle Java SE Downloads ]]
 +    * oder alternativ : Oracle JRockit - Download über [[http://www.oracle.com/technetwork/middleware/jrockit/downloads/index.html | Oracle JRockit Downloads ]]
 +
 +
 +===== Installation Linux Umgebung =====
 +
 +  * Installation Oracle Linux 6.4 Basis ( Desktop Umgebung nur bei Bedarf) 
 +  * Yum Repository prüfen, Konfiguration bei Bedarf anlegen <code bash>
 +# cd /etc/yum.repos.d
 +# wget http://public-yum.oracle.com/public-yum-ol6.repo
 +</code> 
 +  * Update mit "yum update"
 +  * SELinux deaktiviert :<code bash>
 +[root@nosqldb01 ~]# 
 +vi /etc/selinux/config
 +..
 +SELINUX=disabled
 +..
 +
 +[root@nosqldb01 ~]#  reboot
 +
 +[root@nosqldb01  ~]#  getenforce
 +
 +</code>
 +  * Firewall Einstellungen prüfen und je nach Umgebung einstellen!
 +  * Auf die richtige Uhrzeit achten und per ntpd die Zeit auf allen Servern im Store immer richtig einstellen lassen!
 +
 +===Oracle User anlegen===
 +
 +<code bash>
 +groupadd -g 1000 oinstall
 +useradd -u 1100 -g oinstall oracle
 +passwd oracle
 +</code>
 +
 +
 +===Software Verzeichnis anlegen ===
 +
 +<code bash>
 +mkdir -p /opt/oracle
 +chown -R oracle:oinstall /opt/oracle
 +chmod -R 775 /opt/oracle
 +</code>
 +
 +===Java Version prüfen - JDK nach Bedarf installieren ===
 +** Als User root! **
 +\\
 +
 +Kopieren von jdk-7u25-linux-x64.rpm auf dem Server und installieren/aktivieren.
 +<code bash>
 +# Java installieren
 +yum install  --nogpgcheck jdk-7u25-linux-x64.rpm
 +
 +
 +# Java aktivieren
 +# Neue Java Version dem OS bekannt geben
 +/usr/sbin/alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_25/bin/java 17025
 +# Versionen anzeigen
 +/usr/sbin/alternatives --display java
 +# Version einstellen
 +/usr/sbin/alternatives --config java
 +# testen
 +java -version
 +</code>
 +
 +Alternativ kann auch Oracle JRockit eingesetzt werden, siehe hier als Anleitung [[http://www.oracle-base.com/articles/linux/jrockit-installation-on-linux.php|jrockit Installation Oracle-Base.com]].
 +\\ 
 +Für das Oracle Sun JDK ist hier ein hilfreicher Link  [[http://www.gokhanatil.com/2011/07/how-to-installupdate-java-jdk-on-oracle.html|How to Install/Update Java (JDK) on Oracle Linux]]
 +
 +Das Programm jps muss auf dem Server im Pfad liegen/funktionieren, wird vom SNA benötigt!
 +
 +<code bash>
 +jps-m
 +
 +# falls fehler
 +# über /usr/bin verlinken
 +ln -s /usr/java/jdk1.7.0_21/bin/jps /usr/bin/jps
 +
 +</code>
 +
 +
 +===Software auf den Server kopieren und entpacken/installieren ===
 +**User Oracle!**
 +\\
 +Entpacken der Software in das Verzeichnis /opt/oracle/product/11.2.0, damit ist die eigentliche Installation der Software auch schon abgeschlossen.
 +
 +<code bash>
 +mkdir -p /opt/oracle/product/11.2.0/
 +unzip kv-cc-2.0.39.zip -d /opt/oracle/product/11.2.0/
 +</code>
 +
 +Umgebungsvariable KVHOME in der Bash setzen und je nach Vorlieben permanent einrichten:
 +<code bash>
 +export KVHOME=/opt/oracle/product/11.2.0/Kv-2.0.39
 +</code>
 +
 +Testen der Installation mit:
 +<code bash>
 +# zeigt die installierte Software Version
 +java -jar $KVHOME/lib/kvclient.jar
 +11gR2.2.0.39
 +</code>
 +==== Anlegen der Storage Location ====
 +**User Oracle!**
 +\\
 +
 +Anlegen des KVROOT Verzeichnisses, hier werden später dann die Daten abgelegt.
 +
 +<code bash>
 +
 +mkdir /opt/oracle/kvdata
 +
 +</code>
 +
 +==== Clonen der Umgebung um die weitern Storage Node zu konfigurieren ====
 +
 +Die bestehende Umgebung stoppen und als Clone Template verwenden um die Hosts 2 und 3 anzulegen
 +
 +Tipp:
 +Daran denken das nach einen Clone einer Linux 6 Maschine die Netzwerkkarten Konfiguration stark verbogen wird,
 +siehe [[http://www.cyberciti.biz/tips/vmware-linux-lost-eth0-after-cloning-image.html|UDEV nach Clone reparieren]] !
 +
 +Die Namensauflösung zwischen den Knoten prüfen und bei Bedarf die Namen in der hosts Datei eintragen. Darauf achten, dass auch der eigenen Name des Servers richtig aufgelöst wird.
 +
 +
 +==== FW Konfiguration plannen, falls FW zwischen den Knoten und der eigentlichen Anwendung ====
 +
 +Soll eine FW den Zugriff zwischen den Store und der Applikation kontrollieren, sind die folgenden Regeln zu beachten: [[nosql:netzkonfiguration_fw_oracle_nosql_db_11gr2|Oracle NoSQL Netzwerk Konfiguration]].
 +
 +Der Client/Applikation Server, der mit dem Store arbeiten soll, muss auf JEDEN Knoten des Store über den passenden Port zugreifen können!
 +
 +
 +==== Boot Konfiguration erstellen ====
 +** User Oracle auf jeden Knoten **
 +
 +Vorüberlegungen:
 +Auf welchen Knoten soll der Admin Service laufen - in unserem Beispiel auf Node 1
 +
 +
 +Parameter bestimmen:
 +
 +  * **root**
 +    * KVROOT Verzeichnis für die abzulegenden Daten
 +  * **port** <port>
 +    * TCP/IP Port um den Knoten auf Client aus zu erreichen wie 5000
 +  * **admin** <port>
 +    * TCP/IP Port für die ADMIN Web Console wie 5001
 +  * **harange** <startPort,endPort>
 +    *  Portrange für die interne Kommunikation der Nodes untereinander wie 5010,5020
 +  * **servicerange** <startPort,endPort>
 +    *  Portrange für RMI basierende Dienste
 +  * **capacity** optional
 +    * Wieviele Replication Prozesse können auf diesen Server kaufen
 +  * **storagedir** optional
 +    *  Alternativer Speicherplatz für die Replication Prozesse
 +  * **num_cpus** 
 +    *  Wie viele CPU's können die Replication nodes verbrauchen
 +  * **memory_mb** 
 +    *  Wie viel Speicher können die Replication nodes verbrauchen
 +
 +Konfiguration anlegen:
 +<code bash>
 +export KVROOT=/opt/oracle/kvdata
 +
 +java -jar $KVHOME/lib/kvstore.jar makebootconfig -root $KVROOT          \
 +                                                -port 5000              \
 +                                                -admin 5001             \
 +                                                -host $HOSTNAME         \
 +                                                -harange 5010,5020      \
 +                                                -servicerange 5021,5041 \
 +                                                -capacity 3             \
 +                                                -num_cpus 1             \
 +                                                -memory_mb 500
 +</code>
 +
 +**Update V3!**
 +Für die Version 3 ist nun auch der Parameter -store-security anzugeben, soll der Store sich wie in der Version 2 verhalten mit dem Wert "none".
 +
 +==== Oracle NoSQL Database Storage Node Agent (SNA) starten ====
 +
 +<code bash>
 +nohup java -jar $KVHOME/lib/kvstore.jar start -root $KVROOT &
 +</code>
 +
 +Logfile prüfen:
 +<code bash>
 +  cd $KVROOT
 +  vi snaboot_0.log
 +</code>
 +
 +Java Prozesse auf der Maschine lassen sich mit jps und jstat [[http://openbook.galileocomputing.de/java7/1507_23_002.html#dodtp2da3a818-4728-47dc-84a7-105c87b85834|Java 7 - Mehr als eine Insel]] auf der Maschine überwachen. Liegen aber normalerweise nicht im Pfad, sondern im Bin Verzeichnis des aktuellen JDK!
 +
 +<code bash>
 +/usr/java/jdk1.7.0_21/bin/jps -v
 +
 +2033 kvstore
 +...
 +
 +/usr/java/jdk1.7.0_21/bin/jstat -gcutil <java prozessnummer von obiger Ausgabe>
 +
 +</code>
 +
 +
 +
 +Connect prüfen:
 +<code bash>
 +java -jar $KVHOME/lib/kvstore.jar ping -port 5000 -host $HOSTNAME
 +
 +SNA at hostname: nosqldb01, registry port: 5000 is not registered
 +No further information is available
 +</code>
 +
 +Die Meldung zeigt uns, dass zwar ein SNA Prozess auf dem Knoten schon läuft, diese aber noch nicht konfiguriert ist.
 +
 +Diese Konfiguration auf den beiden anderen Servern anlegen und über den Host Parameter vom obigen ping Kommando testen ob alle SNA Nodes erreichbar sind.
 +
 +Damit ist die Grundinstallation der Oracle NoSQL Umgebung abgeschlossen.
 +
 +===Um SNA wieder zu stoppen ===
 +<code bash>
 + java -jar $KVHOME/lib/kvstore.jar stop -root $KVROOT 
 +</code>
 +
 +
 +=== Autostart einrichten ===
 +
 +Autostart über init.d Mechanismus einrichten.
 +
 +Beispiel:
 +<code bash nosql>
 +#!/bin/bash
 +#
 +# Run-level Startup script NoSQL
 +#
 +# chkconfig: 2345 08 92
 +# description:  Starts, stops Oracle NoSQL
 +#
 +#
 +### BEGIN INIT INFO
 +# Provides: OracleNoSQLKVStore
 +# Required-Start:
 +# Required-Stop:
 +# Default-Start: 2 3 4 5
 +# Default-Stop: 0 1 6
 +# Short-Description: start and stop OracleNoSQLKVStore
 +# Description: Start, stop and save OracleNoSQLKVStore
 +### END INIT INFO
 +
 +
 +# Source function library.
 +. /etc/init.d/functions
 +
 +ORACLE_USER=oracle
 +KVHOME=/opt/oracle/produkt/11.2.0/kv-2.0.39
 +KVROOT=/opt/oracle/kvdata/
 +
 +#Start or stop the Oracle NoSQL Node
 +case "$1" in
 +    start)
 +        # Oracle NoSQL start
 +        echo -n "Starting Oracle: "
 +        su - $ORACLE_USER -c "nohup java -jar $KVHOME/lib/kvstore.jar start -root $KVROOT > /tmp/nohup.out 2>&1 &"
 +        echo "OK"
 +        ;;
 +    stop)
 +        # Oracle Nosql shutdown
 +        echo -n "Shutdown Oracle: "
 +        su - $ORACLE_USER -c "java -jar $KVHOME/lib/kvstore.jar stop -root $KVROOT"
 +        echo "OK"
 +        ;;
 +    status)
 +        # status
 +        echo -n "Status Oracle: "
 +        jps -m | grep kv
 +        ;;     
 +    reload|restart)
 +        $0 stop
 +        $0 start
 +        ;;
 +    *)
 +        echo "Usage: $0 start|stop|restart|reload|status"
 +        exit 1
 +esac
 +exit 0
 +</code>
 +
 +Start Script einrichten:
 +<code bash>
 +# datei nach /etc/init.d/nosql
 +
 +# rechte
 +chmod 777 /etc/init.d/nosql
 +
 +
 +chkconfig  --add nosql
 +
 +#
 +chkconfig  | grep nosql
 +
 +</code>
 +
 +==== KV Store einrichten und konfigurieren ====
 +
 +Die Administration der Umgebung erfolgt über ein Kommando Zeilen Werkzeug.
 +
 +Aufruf:
 +<code bash>
 +java -jar $KVHOME/lib/kvstore.jar runadmin -port 5000 -host $HOSTNAME 
 +
 +Kv-> 
 +
 +</code>
 +
 +
 +Ablauf:
 +  * SNA müssen alle gestartet sein ( mit der Installation erfolgt)
 +  * KV Store einen Namen vergeben
 +  * Data Center anlegen
 +  * Admin Prozess auf einen Knoten anlegen
 +  * Storage Node Pool anlegen
 +  * Weitere Storage Knoten hinzufügen
 +  * Erzeugen und Verteilen der Replication Nodes
 +
 +
 +
 +=== KV Store einen Namen vergeben ===
 +
 +Komandozeilen Werkzeug starten und mit dem Befehl „configure -name <NAME DER DATENBANK> „ einen Store Namen vergeben
 +<code bash>
 +Kv-> configure -name GPIDB
 +Store configured: GPIDB
 +</code>
 +
 +=== Data Center anlegen ===
 +
 +
 +Ein Store kann nur ein Data Center enthalten und wird mit dem Befehl "plan deploy-datacenter" erstellt.
 +Mit -wait wartet die Console auf der Ergebnis des Befehls.
 +
 +
 +Parameter:
 +  * name 
 +    * datacenter name - eindeutiger Name der Systemumgebung
 +  * rf
 +    * replication factor  - weiviele relicate der Daten sollen gehalten werden - bei uns 3
 +
 +
 +Ablauf:
 +<code bash>
 +kv-> plan deploy-datacenter -name jupiter -rf 3 -wait
 +Executed plan 1, waiting for completion...
 +Plan 1 ended successfully
 +</code>
 +
 +Ergebnis anzeigen lassen:
 +<code bash>
 +kv-> show plans
 +1 Deploy Datacenter (1) SUCCEEDED 
 +</code>
 +
 +
 +=== Admin Prozess auf einen Knoten anlegen ===
 +
 +Jeder KVStore hat eine administrative Datenbank. Auf dem Knoten der die Admin Datenbank halten soll, mit dem Kommandozeilen Werkzeug anmelden und dort mit den Befehlen deploy-sn und deploy-admin die administrative DB anlegen.
 +
 +Umgebung (topology) anzeigen lassen:
 +
 +<code bash>
 +kv-> show topology
 +store=GPIDB numPartitions=0 sequence=1
 +dc=[dc1] name=jupiter repFactor=3 
 +</code>
 +
 +Für den deploy-sn Befehl benötigen wir die obigen Ausgaben, wir fügen im ersten Schritt den Node hinzu:
 +<code bash>
 +kv-> plan deploy-sn -dc dc1 -host nosqldb01 -port 5000 -wait
 +Executed plan 2, waiting for completion...
 +Plan 2 ended successfully
 +
 +kv->show topology
 +
 +# => zeigt nun den ersten Node mit an
 +
 +</code>
 +
 +Nach dem Hinzufügen des ersten Knoten können wir hier den administrativen Prozess konfigurieren.
 +
 +
 +<code bash>
 +kv-> plan deploy-admin -sn sn1 -port 5001 -wait
 +Executed plan 3, waiting for completion...
 +Plan 3 ended successfully
 +</code>
 +
 +
 +Für das Einrichten der Umgebung bzw. für unsere drei Knoten Test Umgebung ist das nun ausreichend, für produktive Umgebungen empfiehlt Oracle bis zu 3 administrative Services zu verwenden.
 +
 +
 +=== Storage Node Pool anlegen ===
 +
 +Der Storage Node Pool enthält unser 3 Hosts als Storage Knoten.
 +Mit "pool create" wird der Pool angelegt, mit "pool join" werden die Knoten hinzugefügt werden.
 +
 +<code bash>
 +
 +kv-> pool create -name JupiterPool
 +
 +kv-> show topology
 +dc=[dc1] name=Jupiter
 + sn=[sn1]  dc=dc1 nosqldb01:5000 status=UNREPORTED
 +
 +
 +kv-> pool join -name JupiterPool -sn sn1
 +Added Storage Node sn1 to pool JupiterPool
 +
 +</code>
 +
 +===Weitere Storage Knoten hinzufügen===
 +
 +Nun können die beiden anderen Knoten dem System hinzugefügt werden.
 +Hinzufügen eines Hosts mit "plan deploy-sn", anzeigen der System mit "show topology", hinzufügen zum Pool mit "pool join", anzeigen des Pools mit "show pool".
 +
 +
 +<code bash>
 +kv-> plan deploy-sn -dc dc1 -host nosqldb02 -port 5000 -wait
 +Executed plan 4, waiting for completion...
 +Plan 4 ended successfully
 +
 +kv-> pool join -name JupiterPool-sn sn2
 +Added Storage Node sn2 to pool JupiterPool
 +
 +
 +kv->  plan deploy-sn -dc dc1 -host nosqldb03 -port 5000 -wait
 +Executed plan 5, waiting for completion...
 +Plan 5 ended successfully
 +
 +kv-> pool join -name JupiterPool-sn sn3
 +Added Storage Node sn3 to pool JupiterPool
 +
 +</code>
 +
 +=== Erzeugen und Verteilen der Replication Nodes ===
 +
 +Im letzten Schritt werden die Replication Nodes für die "Kopien" der Daten erstellt.
 +Dazu wird der Befehl "topology create" verwendet.
 +
 +Parameter:
 +  * topology name  - Name für die Topologie
 +  * pool name      - Name des Pools 
 +  * number of partitions  - Anzahl der Partitionen
 +
 +
 +Ein wichtiger Wert ist hier die Anzahl der Partitionen.
 +Faustformel: (Total number of disks hosted by the storage nodes  /  Replication Factor) * 10
 +Genauer siehe [[http://docs.oracle.com/cd/NOSQL/html/AdminGuide/estimate-total-shards-and-machines.html#num-partitions|Number of Partitions]]
 +
 +<code bash>
 +kv-> topology create -name GPItopo -pool JupiterPool-partitions 300
 +Created: GPItopo
 +
 +kv-> plan deploy-topology -name GPItopo -wait
 +Executed plan 6, waiting for completion...
 +Plan 6 ended successfully
 +
 +</code>
 +
 +
 +Mit dem Kommando "show plans" prüfen ob alles geklappt hat.
 +
 +=== Skripten ===
 +
 +Die Befehle lassen sich auch in einem Script bündeln und gemeinsam ausführen, in der Kommandoshell mit dem Befehl "load -file <path to file>" aufrufen oder als Parameter von "java -jar KVHOME/lib/kvstore.jar runadmin -port 5000 -host node01 load -file <path to file>".
 +
 +Siehe auch:[[nosql:install_oracle_nosql_db_11gr2_script_based|Oracle NoSQL Installation automatisieren]]
 +
 +=== Test der Umgebung ===
 +
 +Ping auf die Storage Knoten:
 +
 +<code bash>
 +java -jar $KVHOME/lib/kvstore.jar ping -port 5000 -host nosqldb01
 +</code>
 +
 +
 +Umgebung mit verify überprüfen:
 +
 +<code bash>
 +
 +java -jar KVHOME/lib/kvstore.jar runadmin -port 5000 -host $HOSTNAME
 +kv-> verify
 +
 +</code>
 +
 +== Im Browser Status prüfen ==
 +
 +Aufruf der Admin Console im Browser über den Server Namen und den Admin Port 5001
 +
 +Aufruf über den Browser:
 +{{:nosql:admin_overview_nosql.png?300 |Admin Übersicht Oracle NoSQL}}
 +
 +Leider nicht Passwort geschützt!
 +
 +
 +=== Löschen einer Umgebung ===
 +
 +Um eine Umgebung zurückzusetzen muss auf jeden Knoten alles gestoppt und der KVROOT gelöscht werden.
 +
 +<code bash>
 +java -jar $KVHOME/lib/kvstore.jar stop -root $KVROOT 
 +
 +rm -r $KVROOT 
 +</code>
 +==== Quellen ====
 +
 +  * http://www.oracle.com/technetwork/products/nosqldb/overview/index.html
 +  * http://docs.oracle.com/cd/NOSQL/html/AdminGuide/index.html
nosql/install_oracle_nosql_db_11gr2.txt · Zuletzt geändert: 2014/06/06 14:58 von gpipperr