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.
Installation einer Oracle NoSQL Datenbank auf drei Oracle Linux 6.4 Server
Ablauf:
Die benötigte Software:
# cd /etc/yum.repos.d # wget http://public-yum.oracle.com/public-yum-ol6.repo
[root@nosqldb01 ~]# vi /etc/selinux/config .. SELINUX=disabled .. [root@nosqldb01 ~]# reboot [root@nosqldb01 ~]# getenforce
groupadd -g 1000 oinstall useradd -u 1100 -g oinstall oracle passwd oracle
mkdir -p /opt/oracle chown -R oracle:oinstall /opt/oracle chmod -R 775 /opt/oracle
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
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
User Oracle!
Anlegen des KVROOT Verzeichnisses, hier werden später dann die Daten abgelegt.
mkdir /opt/oracle/kvdata
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.
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!
User Oracle auf jeden Knoten
Vorüberlegungen: Auf welchen Knoten soll der Admin Service laufen - in unserem Beispiel auf Node 1
Parameter bestimmen:
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“.
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.
java -jar $KVHOME/lib/kvstore.jar stop -root $KVROOT
Autostart über init.d Mechanismus einrichten.
Beispiel:
#!/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
Die Administration der Umgebung erfolgt über ein Kommando Zeilen Werkzeug.
Aufruf:
java -jar $KVHOME/lib/kvstore.jar runadmin -port 5000 -host $HOSTNAME Kv->
Ablauf:
Komandozeilen Werkzeug starten und mit dem Befehl „configure -name <NAME DER DATENBANK> „ einen Store Namen vergeben
Kv-> configure -name GPIDB Store configured: GPIDB
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:
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
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.
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
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
Im letzten Schritt werden die Replication Nodes für die „Kopien“ der Daten erstellt. Dazu wird der Befehl „topology create“ verwendet.
Parameter:
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.
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
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
Aufruf der Admin Console im Browser über den Server Namen und den Admin Port 5001
Leider nicht Passwort geschützt!
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