Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:rac_add_second_ip

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:

  1. IP Adressen und Namen definieren
  2. DNS Eintrag für die neuen IP's und Namen im Nameserver hinzufügen
  3. Evtl. Routen und FW Einträge im Netz pflegen
  4. DNS Auflösung von jeden Knoten testen
  5. Bestehendes Routing auf den Maschinen protokollieren
  6. Ein cluvfy Check, das die bestehende Umgebung „gesund“ ist
  7. Bestehende Udev Konfiguration der Netzwerkkarten sichern
  8. Netzwerkkarte physikalisch aktivieren / hinzufügen (Kabel einstecken) - je nach Hardware
  9. Udev Konfiguration überprüfen (neue Karten hinten eingefügt!)
  10. ifcfg-ethx Scripte für die beiden neuen Karten erstellen
  11. ifcfg-bondx Script erstellen
  12. Bond Interface im OS aktivieren
  13. Cluster Status überprüfen
  14. Routing Tabellen prüfen
  15. IP Konfiguration überprüfen
  16. Verbindung der Knoten untereinander prüfen
  17. Extern Verbindung zu dem neuen Netz auf jeden Knoten prüfen
  18. Ein cluvfy Check, ob das neue Interface auch richtig erkannt wird
  19. Netzwerk im Cluster registrieren
  20. Konfiguration im Cluster überprüfen
  21. VIP's zum Cluster hinzufügen
  22. Neue Vips überprüfen
  23. Neuen Listener auf dieser Vips hinzufügen (netca oder manuell)
  24. Neuen Listener prüfen
  25. Lokale tnsname.ora auf den Knoten anpassen
  26. Local und Remote Listener Parameter setzen
  27. DB am Listener anmelden
  28. Datenbankverbindung prüfen

Umsetzung

IP Adressen und Namen definieren

In unsere Beispiel:

Bedeutung Name IP
Host 1 racdb01192.162.178.220
Host 2 racdb01192.162.178.222
GPI Lan Host 1 racdb01-GPI192.162.183.220
GPI Lan Host 2 racdb02-PL192.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
In meiner produktiven Umgebung wurde durch das Aktivieren des neuen Bondinterfaces die Default Route für das gesamte System gelöscht und durch die Default Route des zweiten Netzes ersetzt. Das diese aber falsch war, führte das zu Störungen. Nach einem Stopp und wiederholten Start dees Bond Interfaces wurden die Routen wieder richtig gesetzt → besser testen und routing policies verwenden!
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)
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
dba/rac_add_second_ip.txt · Zuletzt geändert: 2013/12/18 08:10 von Gunther Pippèrr