Dans cet article nous allons aborder le cas particulier sur une machine exadata du changement de l’interface réseau pour le vlan Dataguard dédié au transfert des modifications et archives sur le site de secours.
Cette opération n’est pas compliquée en soi mais elle nécessite quelques précautions qui garantissent le succès de la bascule du vlan Dataguard. Ce changement ne nécessite que l’arrêt du listener Dataguard sur le site de secours et l’arrêt de la réplication depuis le site primaire et n’impose nullement l’arrêt de l’application ou du cluster Oracle.
Configuration cible
Dans notre exemple le VLAN dédié aux échanges dataguard est le VLAN 737 qui est porté par l’interface physique eth3 de chaque serveur du cluster sur laquelle est montée une adresse virtuelle 172.99.99.x. Actuellement la couche clusterware d’Oracle vient monter cette adresse virtuelle sur l’interface réseau eth3
Cette migration consiste donc à déplacer les flux dédiés dataguard de l’interface actuelle eth3 vers un nouveau VLAN, à créer sur l’interface 10 gbits bondeth0 qui supporte aujourd’hui d’autres VLANs.
eth3 Link encap:Ethernet HWaddr 00:10:E0:29:A1:FF inet addr:172.99.99.160 Bcast:172.99.99.255 Mask:255.255.255.128 inet6 addr: fe80::210:e0ff:fe29:a1ff/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6059302649 errors:0 dropped:0 overruns:0 frame:0 TX packets:4802596377 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:46543647608887 (42.3 TiB) TX bytes:283471217590 (264.0 GiB) eth3:1 Link encap:Ethernet HWaddr 00:10:E0:29:A1:FF inet addr:172.99.99.170 Bcast:172.99.99.255 Mask:255.255.255.128 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Au niveau du cluster RAC, les ressources suivantes devront être modifiées pour tenir compte du changement d’interface.
Sur l'EXADATA de secours srvctl config network Network exists: 737/172.99.99.128/255.255.255.128/eth3, type static srvctl config vip -n easystb01 VIP exists: /172.99.99.170/172.99.99.170/172.99.99.128/255.255.255.128/eth3, hosting node easystb01 srvctl config vip -n easystb02 VIP exists: /172.99.99.171/172.99.99.171/172.99.99.128/255.255.255.128/eth3, hosting node easystb02 Sur l’EXADATA de production srvctl config network Network exists: 737/172.99.99.128/255.255.255.128/eth3, type static srvctl config vip -n easyrac01 VIP exists: /172.99.99.150/172.99.99.150/172.99.99.128/255.255.255.128/eth3, hosting node easyrac01 srvctl config vip -n easyrac02 VIP exists: /172.99.99.151/172.99.99.151/172.99.99.128/255.255.255.128/eth3, hosting node easyrac02
Les précautions à prendre
Le plan d’adressage IP demeure identique à celui défini initialement.
- Sur chacune des bases répliquées et depuis l’EXADATA de production, stopper la réplication dataguard.
sqlplus / as sysdba alter system set log_archive_dest_state_2 = ‘DEFER’ ; Ou dgmgrl / edit database <nom_de_la_base_primaire> SET STATE=TRANSPORT-OFF ;
2. Pour un éventuel retour arrière et parce que les opérations qui suivent impactent le contenu du référentiel OCR, nous sauvegarderons son contenu sous le compte ‘root’
ocrconfig -showbackup ocrconfig –manualbackup cp –p backup_20150918_*ocr before_move_vlan.ocr
Plan d’actions
Pour ajouter le vlan 737 nous allons implémenter un ‘tagged vlan’ sur l’interface bondeth0. Pour de plus amples informations sur cette notion de ‘tagged vlan’ se référer à la documentation MOS suivante Implementing Tagged VLAN Interfaces in Oracle VM Environments on Exadata (Doc ID 2018550.1)
Arrêt des adresses virtuelles et des listeners du VLAN 737
Sur chacun des serveurs EXADATA de production et de secours, il faut en premier stopper toutes les ressources associées à l’interface eth3 (VIP, réseau et listener) et supprimer la ressource réseau dédiée au vlan 737.
Sur l’EXADATA de secours srvctl stop listener -l LIST737 srvctl stop vip -i 172.99.99.170 srvctl stop vip -i 172.99.99.171 crsctl status resource ora.net737.network crsctl stop resource ora.net737.network Sur l’EXADATA de production srvctl stop listener -l LIST737 srvctl stop vip -i 172.99.99.150 srvctl stop vip -i 172.99.99.151 crsctl stop resource ora.net737.network |
Configuration du nouveau VLAN 737
Puis à nouveau sur chaque serveur des EXADATA de secours et de production, il faudra arrêter l’interface eth3 et déclarer maintenant le nouveau VLAN 737 sur l’interface bondeth0 à l’aide du script dbm-vlan-config.sh (MOS Note 1423676.1) :
# Arrêt interface eth3 et suppression configuation ifdown eth3 ifconfig eth3 down vconfig rem bondeth0.737 # Ajout du VLAN 737 sur l'interface bondeth0 /root/dbm-vlan-config.sh del -v 737 -i bondeth0 # Suppression configuration si déjà existante # Options -v (Numéro de vlan) -i (Interface réseau) -n (Netmask) -g (@IP gateway) /root/dbm-vlan-config.sh add -v 737 -i bondeth0 -ip <@IP> -n 255.255.255.128 -g 172.99.99.129 /root/dbm-vlan-config.sh show bondeth0.734 | 734 | bondeth0 | 172.31.34.42 | 255.255.255.0 | up bondeth0.797 | 797 | bondeth0 | 172.31.97.42 | 255.255.255.0 | up bondeth0.737 | 737 | bondeth0 | 172.99.99.161 | 255.255.255.128 | up |
Contrôle de la configuration des interfaces ‘réseau’
A ce stade un petit contrôle s’impose pour vérifier le statut des interfaces ‘réseau’.
ifconfig eth3 eth3 Link encap:Ethernet HWaddr 00:10:E0:29:B5:85 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:118043481 errors:0 dropped:0 overruns:0 frame:0 TX packets:103129875 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:470876473974 (438.5 GiB) TX bytes:21243300632 (19.7 GiB) ifconfig bondeth0.737 bondeth0.737 Link encap:Ethernet HWaddr 90:E2:BA:38:E4:A8 inet addr:172.99.99.161 Bcast:172.99.99.255 Mask:255.255.255.128 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:300 (300.0 b)
Tests de communication du nouveau VLAN
Une fois que toutes les interfaces eth3 ont été remplacées par bondeth0.737, tester le bon fonctionnement physique par un ping sur les différentes adresses du VLAN
ping 172.99.99.160 –c2 ping 172.99.99.161 –c2 ping 172.99.99.140 –c2 ping 172.99.99.141 –c2 |
Reconfiguration des VIPs et listeners VLAN 737
Modifier les définitions des ressources cluster pour tenir compte du changement d’interface eth3 à bondeth0.737.
srvctl modify network -k 737 -S 172.99.99.128/255.255.255.128/bondeth0.737 srvctl start network –k 737 # Pour chaque nœud de l’EXADATA et avec les bonnes adresses VIP (2 en secours et 2 en production) srvctl remove vip -i <alias_reseau> srvctl add vip -k 737 -A <alias_reseau-vip>/255.255.255.128/bondeth0.737 –n <host_name> srvctl start vip -i <alias_reseau-vip> # Lorsque les VIP sont configurées et démarrées sur l’ensemble des nœuds, démarrer les listeners en exécutant la commande suivante : srvctl start listener -l LIST737 # Vérification des ressources réseau crsctl stat res –t ifconfig -a |
Relance de la réplication
Relancer la réplication dataguard sur chacune des bases déclarées sur l’EXADATA de production.
sqlplus / as sysdba alter system set log_archive_dest_state_2 = ‘enable’ ; Ou dgmgrl / edit database <nom_de_la_base_primaire> SET STATE=TRANSPORT-ON ;
Conclusion
Comme il s’agit d’opérations répétitives sur chaque membre du cluster, il est vivement recommandé d’utiliser un script qui vous permettra d’automatiser aisément cette procédure; un exemple ci-joint qui peut être facilement adapté à vos besoins et votre environnement.
#!/bin/sh DEVICE=`cat ifcfg | grep DEVICE | cut -f2 -d'='` GATEWAY=`cat ifcfg | grep GATEWAY | cut -f2 -d'='` IPADDR=`cat ifcfg | grep IPADDR | cut -f2 -d'='` NETMASK=`cat ifcfg | grep NETMASK | cut -f2 -d'='` echo $DEVICE $GATEWAY Vlan=`echo $DEVICE | cut -f2 -d'.'` ORAENV_ASK='NO' export ORACLE_SID=+ASM1 . oraenv for host in `cat Hosts` do Asm_Number=`expr $Asm_Number + 1` srvctl stop listener -l LIST737 -n $host Host_db=$(echo $host | sed s/bko/db/g) srvctl stop vip -i ${Host_db}-dr-vip done crsctl stop resource ora.net$Vlan.network for host in `cat Hosts` do echo "------> " $host scp dbm-vlan-config.sh $host:$HOME/ scp $host:/etc/sysconfig/network-scripts/*eth3 . for File in `ls *eth3 | sort` do mv $File $File.$host done ipaddr=`cat ifcfg-eth3.$host | grep IPADDR | cut -f2 -d'='` gateway=`cat ifcfg-eth3.$host | grep GATEWAY | cut -f2 -d'='` Interface=`echo $DEVICE | cut -f1 -d'.'` ssh $host ifdown eth3 ssh $host ifconfig eth3 down ssh $host rm /etc/sysconfig/network-scripts/*$DEVICE ssh $host ifdown $DEVICE ssh $host ifconfig $DEVICE down ssh $host $HOME/dbm-vlan-config.sh del -v $Vlan -i $Interface echo "ssh $host $HOME/dbm-vlan-config.sh add -v $Vlan -i $Interface -ip $ipaddr -n $NETMASK -g $GATEWAY" ssh $host $HOME/dbm-vlan-config.sh add -v $Vlan -i $Interface -ip $ipaddr -n $NETMASK -g $GATEWAY ssh $host $HOME/dbm-vlan-config.sh show ssh $host ifconfig eth3 ssh $host ifconfig $DEVICE ssh $host ping -c3 $GATEWAY ssh $host rm /etc/sysconfig/network-scripts/*eth3 done