Inhaltsverzeichnis
Ein neues VIP und ein neues Netzwerk einem RAC Cluster ONLINE hinzufügen
Ziel ist es, in einer bestehenden Umgebung ONLINE ein neues Netz und einen neuen Listener für dieses Netz hinzuzufügen OHNE dass die anderen Datenbanken auf dem System „gestört“ werden.
Genereller Ablauf:
- IP Adressen und Namen definieren
- DNS Eintrag für die neuen IP's und Namen im Nameserver hinzufügen
- Evtl. Routen und FW Einträge im Netz pflegen
- DNS Auflösung von jeden Knoten testen
- Bestehendes Routing auf den Maschinen protokollieren
- Ein cluvfy Check, das die bestehende Umgebung „gesund“ ist
- Bestehende Udev Konfiguration der Netzwerkkarten sichern
- Netzwerkkarte physikalisch aktivieren / hinzufügen (Kabel einstecken) - je nach Hardware
- Udev Konfiguration überprüfen (neue Karten hinten eingefügt!)
- ifcfg-ethx Scripte für die beiden neuen Karten erstellen
- ifcfg-bondx Script erstellen
- Bond Interface im OS aktivieren
- Cluster Status überprüfen
- Routing Tabellen prüfen
- IP Konfiguration überprüfen
- Verbindung der Knoten untereinander prüfen
- Extern Verbindung zu dem neuen Netz auf jeden Knoten prüfen
- Ein cluvfy Check, ob das neue Interface auch richtig erkannt wird
- Netzwerk im Cluster registrieren
- Konfiguration im Cluster überprüfen
- VIP's zum Cluster hinzufügen
- Neue Vips überprüfen
- Neuen Listener auf dieser Vips hinzufügen (netca oder manuell)
- Neuen Listener prüfen
- Lokale tnsname.ora auf den Knoten anpassen
- Local und Remote Listener Parameter setzen
- DB am Listener anmelden
- Datenbankverbindung prüfen
Umsetzung
IP Adressen und Namen definieren
In unsere Beispiel:
Bedeutung | Name | IP |
---|---|---|
Host 1 | racdb01 | 192.162.178.220 |
Host 2 | racdb01 | 192.162.178.222 |
GPI Lan Host 1 | racdb01-GPI | 192.162.183.220 |
GPI Lan Host 2 | racdb02-PL | 192.162.183.222 |
VIP GPI Lan Host 1 | racdb01-GPI-vip | 192.162.183.224 |
VIP GPI Lan Host 2 | racdb02-GPI-vip | 192.162.183.226 |
Name der DB : GPIDB
DNS Eintrag für die neuen IP's und Namen im Nameserver hinzufügen
Möglichst keine Host files sondern einen DNS Server verwenden!
Evtl. Routen und FW Einträge im Netz pflegen
Je nach Umgebung nicht vergessen zu pflegen
DNS Auflösung von jeden Knoten testen
User root , auf 1. Knoten und 2. Knoten
nslookup racdb01-GPI-vip nslookup racdb02-GPI-vip nslookup racdb02-GPI nslookup racdb01-GPI
Bestehendes Routing auf den Maschinen protokollieren - je nach Routing Komplxität auf Policies umsteigen
User root , auf 1. Knoten und 2. Knoten
ip route show > route_before.txt route >> route_before.txt
Da sich das Routing beim Aktivieren einer Netzwerkarte ändert, ist ein Lösung „Policy Routing“ einzuetzen.
Policy Routing With Linux Details:
Clufy Check, das bestehende Umgebung "gesund" ist
Als Oracle Grid, auf 1. Knoten
set ORALCE_HOME=/u01/app/11.2.0.4/grid cd %ORACLE_HOME/bin ./cluvfy comp nodecon -n racdb01,racdb02 -verbose > clufy_before.txt
Ausgabe in der Datei auf Fehler prüfen, treten hier Fehler auf, diese zuvor fixen.
Bestehende Udev Konfiguration der Netzwerkkarten sichern
User root , auf 1. Knoten und 2. Knoten
vi /etc/udev/rules.d/70-persistent-net.rules # für die Doku cp 70-persistent-net.rules /tmp
Netzwerkkarte physikalisch aktivieren / hinzufügen
User root , auf 1. Knoten und 2. Knoten
Je nach Hardware ist eine Karte bereits im System bekannt bzw. wird per HotPlug dem System hinzugefügt.
Im OS testen ob die Karte da ist:
lspci
lshw - class network
Mac Adresse kann erkannt werden mit:
ip link show
Udev Konfiguration überprüfen, fall eine neue Karte per HotPlug aktiviert wurde
User root , auf 1. Knoten und 2. Knoten In VMware kann zum Beispiel eine Karte via Hotplug im laufenden Betrieb hinzugefügt werden, allerdings setzt dabei die Maschine kurz aus.
# check the changes, numbering of the interfaces should not change! vi /etc/udev/rules.d/70-persistent-net.rules
Ändert sich hier die Reihenfolge, gibt es spätestens beim nächsten Reboot Ärger!
ifcfg-ethx Scripte für die beiden neuen Karten erstellen
User root , auf 1. Knoten und 2.Knoten
cd /etc/sysconfig/network-scripts/ vi ifcfg-eth5 DEVICE=eth5 BOOTPROTO=none HWADDR="<MAC ADDRESS>" NM_CONTROLLED="no TYPE="Ethernet" PEERDNS=no ONBOOT=yes MASTER=ibond3 SLAVE=yes USERCTL=no vi ifcfg-eth6 DEVICE=eth6 BOOTPROTO=none HWADDR="<MAC ADDRESS>" NM_CONTROLLED="no TYPE="Ethernet" PEERDNS=no ONBOOT=yes MASTER=ibond3 SLAVE=yes USERCTL=no
ifcfg-bondx Script erstellen
User root , auf 1. Knoten und 2.Knoten
#add Bonding Interface /etc/modprobe.d/bonding.conf: alias bond3 bonding # be carefully no default gateway! # Gateway set with routing rules vi ifcfg-ibond3 DEVICE=ibond3 TYPE="Ethernet" IPADDR=192.162.183.224 NETMASK=255.255.255.0 ONBOOT=yes NM_CONTROLLED=no PEERDNS=no BOOTPROTO=none BONDING_OPTS="mode=1 miimon=1000" # Define Routing Polices /etc/iproute2/rt_tables: 100 gpivlan /etc/sysconfig/network-scripts/route-bond3: default via 192.162.183.254 dev bond3 table gpivlan /etc/sysconfig/network-scripts/rule-bond3: from 192.162.183.224 lookup plvlan from 192.162.183.226 lookup plvlan from all to 192.162.183.220 lookup gpivlan from all to 192.162.183.224 lookup gpivlan
Bond Interface im OS aktivieren
User root , auf 1. Knoten und 2.Knoten
ifconfig bond3 up # alternativ ifup bond3
Cluster Status überprüfen
User root , auf 1. Knoten und 2.Knoten
set ORALCE_HOME=/u01/app/11.2.0.4/grid cd %ORACLE_HOME/bin ./crsctl stat res -t ./srvctl status nodeapps ./crs_stat -t -v
Routing Tabellen prüfen
User root , auf 1. Knoten und 2.Knoten
ip route show
route
IP Konfiguration überprüfen
User root , auf 1. Knoten und 2.Knoten
ifconfig cat /sys/class/net/bonding_masters cat /sys/class/net/bond0/bonding/mode cat /proc/net/bonding/bond3
Verbindung der Knoten untereinander prüfen
User root , auf 1. Knoten und 2.Knoten
ping rac-db01-pl
Extern Verbindung zu dem neuen Netz auf jeden Knoten prüfen
User root , auf 1. Knoten und 2.Knoten
ping racdb01-GPI ping racdb02-pl
Clufy Check, ob das neue Interface auch richtig erkannt wird
User Oracle GRID, auf 1 Knoten für das ganze Cluster
set ORALCE_HOME=/u01/app/11.2.0.4/grid %ORACLE_HOME/bin/cluvfy comp nodecon -n racdb01,racdb02 -verbose
Netzwerk im Cluster registrieren
User root , auf 1 Knoten für das ganze Cluster
set ORALCE_HOME=/u01/app/11.2.0.4/grid cd %ORACLE_HOME/bin ./srvctl add network -k 2 -S 192.168.183.0/255.255.255.0/bond3
Konfiguration im Cluster überprüfen
User root , auf 1 Knoten für das ganze Cluster
set ORALCE_HOME=/u01/app/11.2.0.4/grid cd %ORACLE_HOME/bin ./srvctl config network ./oifcfg iflist
VIP's zum Cluster hinzufügen
User root , auf 1 Knoten für das ganze Cluster
cd %ORACLE_HOME/bin ./srvctl add vip -n racdb01 -k 2 -A 192.168.183.224/255.255.255.0/bond3 ./srvctl add vip -n racdb02 -k 2 -A 192.168.183.226/255.255.255.0/bond3
Neue Vips überprüfen
User root , auf 1 Knoten für das ganze Cluster
VIP is zu diesem Zeitpunkt noch offline, bis der Listener die Resource anfordert und es online genommen wird.
cd %ORACLE_HOME/bin ./crsctl stat res -t | grep -C 2 vip ./oifcfg iflist ./srvctl config nodeapps
Neuen Listener auf dieser Vips hinzufügen (netca oder manuell)
User oracle GRID , Knoten 1
#Als user Oracle GRID set ORALCE_HOME=/u01/app/11.2.0.4/grid %ORACLE_HOME/bin/netca & # the create LISTENER_GPI ; Check carefully that you use network 2
Per Befehlt:
./srvctl add listener -l LISTENER_GPI -s -p 1521 -k 2
Neuen Listener prüfen
User oracle, auf jeden Knoten
lsnrctl status listener LISTENER_PL
Locale tnsname.ora auf den Knoten anpassen
User oracle, auf jeden Knoten
vi $TNS_ADMIN/tnsnames.ora #add entry local listner listener_net2_racdb01_GPI listener_net2_racdb01_GPI=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=racdb01-GPI-vip)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.162.183.224)(PORT=1521)(IP=FIRST)))) #add entry local listner listener_net2_racdb02_GPI listener_net2_racdb02_GPI=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=racdb02-GPI-vip)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.162.183.226)(PORT=1521)(IP=FIRST))))
Local und Remote Listener Parameter setzen
User oracle DB, Knoten 1
export ORACLE_SID=GPIDB1 sqlplus / AS sysdba SHOW parameter listner ALTER system SET LISTENER_NETWORKS='((NAME=network2)(LOCAL_LISTENER=listener_net2_racdb01_GPI)(REMOTE_LISTENER=listener_net2_racdb02_GPI))' sid='GPIDB1' ALTER system SET LISTENER_NETWORKS='((NAME=network2)(LOCAL_LISTENER=listener_net2_racdb02_GPI)(REMOTE_LISTENER=listener_net2_racdb01_GPI))' sid='GPIDB2';
DB am Listener anmelden
User oracle DB, Knoten 1
sqlplus / as sysdba sql>alter system register;
Datenbankverindung prüfen
User oracle, Externer Rechner
#tnsnames Eintrag für das neue Netz hinzufügen vi $TNS_ADMIN/tnsnames.ora tnsping new_GPI_db sqlplus system@new_GPI_db
Quellen
Metalink:
- How to Configure A Second Listener on a Separate Network in 11.2 Grid Infrastructure (Doc ID 1063571.1)
- How to Validate Network and Name Resolution Setup for the Clusterware and RAC (Doc ID 1054902.1)