Inhaltsverzeichnis
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.
- 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 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:
- Oracle Linux 6.4 - Download über edelivery
- Java Kit 7 - Download über Oracle Java SE Downloads
- oder alternativ : Oracle JRockit - Download über 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
# cd /etc/yum.repos.d # wget http://public-yum.oracle.com/public-yum-ol6.repo
- Update mit „yum update“
- SELinux deaktiviert :
[root@nosqldb01 ~]# vi /etc/selinux/config .. SELINUX=disabled .. [root@nosqldb01 ~]# reboot [root@nosqldb01 ~]# getenforce
- 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
groupadd -g 1000 oinstall useradd -u 1100 -g oinstall oracle passwd oracle
Software Verzeichnis anlegen
mkdir -p /opt/oracle chown -R oracle:oinstall /opt/oracle chmod -R 775 /opt/oracle
Java Version prüfen - JDK nach Bedarf installieren
Als User root!
Kopieren von jdk-7u25-linux-x64.rpm auf dem Server und installieren/aktivieren.
# 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
Alternativ kann auch Oracle JRockit eingesetzt werden, siehe hier als Anleitung jrockit Installation Oracle-Base.com.
Für das Oracle Sun JDK ist hier ein hilfreicher Link 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!
jps-m # falls fehler # über /usr/bin verlinken ln -s /usr/java/jdk1.7.0_21/bin/jps /usr/bin/jps
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.
mkdir -p /opt/oracle/product/11.2.0/ unzip kv-cc-2.0.39.zip -d /opt/oracle/product/11.2.0/
Umgebungsvariable KVHOME in der Bash setzen und je nach Vorlieben permanent einrichten:
export KVHOME=/opt/oracle/product/11.2.0/Kv-2.0.39
Testen der Installation mit:
# zeigt die installierte Software Version java -jar $KVHOME/lib/kvclient.jar 11gR2.2.0.39
Anlegen der Storage Location
User Oracle!
Anlegen des KVROOT Verzeichnisses, hier werden später dann die Daten abgelegt.
mkdir /opt/oracle/kvdata
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 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: 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:
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
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
nohup java -jar $KVHOME/lib/kvstore.jar start -root $KVROOT &
Logfile prüfen:
cd $KVROOT vi snaboot_0.log
Java Prozesse auf der Maschine lassen sich mit jps und jstat Java 7 - Mehr als eine Insel auf der Maschine überwachen. Liegen aber normalerweise nicht im Pfad, sondern im Bin Verzeichnis des aktuellen JDK!
/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>
Connect prüfen:
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
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
java -jar $KVHOME/lib/kvstore.jar stop -root $KVROOT
Autostart einrichten
Autostart über init.d Mechanismus einrichten.
Beispiel:
- 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
Start Script einrichten:
# datei nach /etc/init.d/nosql # rechte chmod 777 /etc/init.d/nosql # chkconfig --add nosql # chkconfig | grep nosql
KV Store einrichten und konfigurieren
Die Administration der Umgebung erfolgt über ein Kommando Zeilen Werkzeug.
Aufruf:
java -jar $KVHOME/lib/kvstore.jar runadmin -port 5000 -host $HOSTNAME Kv->
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
Kv-> configure -name GPIDB Store configured: GPIDB
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:
kv-> plan deploy-datacenter -name jupiter -rf 3 -wait Executed plan 1, waiting for completion... Plan 1 ended successfully
Ergebnis anzeigen lassen:
kv-> show plans 1 Deploy Datacenter (1) SUCCEEDED
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:
kv-> show topology store=GPIDB numPartitions=0 sequence=1 dc=[dc1] name=jupiter repFactor=3
Für den deploy-sn Befehl benötigen wir die obigen Ausgaben, wir fügen im ersten Schritt den Node hinzu:
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
Nach dem Hinzufügen des ersten Knoten können wir hier den administrativen Prozess konfigurieren.
kv-> plan deploy-admin -sn sn1 -port 5001 -wait Executed plan 3, waiting for completion... Plan 3 ended successfully
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.
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
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“.
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
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 Number of Partitions
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
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:Oracle NoSQL Installation automatisieren
Test der Umgebung
Ping auf die Storage Knoten:
java -jar $KVHOME/lib/kvstore.jar ping -port 5000 -host nosqldb01
Umgebung mit verify überprüfen:
java -jar KVHOME/lib/kvstore.jar runadmin -port 5000 -host $HOSTNAME kv-> verify
Im Browser Status prüfen
Aufruf der Admin Console im Browser über den Server Namen und den Admin Port 5001
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.
java -jar $KVHOME/lib/kvstore.jar stop -root $KVROOT rm -r $KVROOT