Contacto

CONTACTAR EN CASO DE EMERGENCIAS Móvil +56963679637 - MAIL : CONSULTADBABLOCK@GMAIL.COM
- SOPORTE REMOTO EN BASE DE DATOS ORACLE - ORACLE LINUX - ORACLE VM SERVER - ORACLE RAC - ORACLE DATA GUARD
- UPGRADES - CAPACITACION
Showing posts with label RAC. Show all posts
Showing posts with label RAC. Show all posts

Wednesday, January 29, 2014

Recuperación de OCR en Oracle RAC


Se producen problemas con los servicios de CRS, ya que no se encuentran operativos en uno o más nodos del RAC. El síntoma principal es que el nodo afectado no es capaz de iniciar los servicios de Clusterware en forma automática.


[root@vmrac01 ~]# crs_stat -t
CRS-0184: Cannot communicate with the CRS daemon.

Este error indica que no es posible iniciar los servicios de Clusterware, ya que el servicio CRS no se encuentra disponible.


Como revisar las alertas del sistema para detectar el problema


Para determinar el problema que origina que los servicios de Clusterware se encuentren operativos, se debe ingresar al siguiente directorio para chequear los archivos de log correspondientes al CRS:

u01/app/oracle/product/10.2.0/cr_1/log/vmrac02/client

cls*.log
css*.log

Para determinar el error y los archivos de Log donde se determina el error, se debe ingresar al siguiente directorio de cualquier nodo del RAC y revisar el archivo alertrac2.log.

/u01/app/oracle/product/10.2.0/cr_1/log/nombre_nodo/alternombre_nodo.log

[client(23271)]CRS-1009:The OCR configuration is invalid. Details in /u01/app/oracle/product/10.2.0/cr_1/log/vmrac02/client/css18186.log.
2013-08-05 13:10:34.742
[client(23278)]CRS-1009:The OCR configuration is invalid. Details in /u01/app/oracle/product/10.2.0/cr_1/log/vmrac02/client/css18187.log.
2013-08-05 13:10:37.843
[client(23287)]CRS-1009:The OCR configuration is invalid. Details in /u01/app/oracle/product/10.2.0/cr_1/log/vmrac02/client/css18188.log.
2013-08-05 13:10:40.920
[client(23297)]CRS-1009:The OCR configuration is invalid. Details in /u01/app/oracle/product/10.2.0/cr_1/log/vmrac02/client/css18189.log.

El error se origina, ya que el OCR se encuentra con problemas de corrupción. El error se puede apreciar en el siguiente log:

u01/app/oracle/product/10.2.0/cr_1/log/nombre_nodo/client/

Oracle Database 10g CRS Release 10.2.0.4.0 Production Copyright 1996, 2008 Oracle. All rights reserved.
2013-08-05 13:10:40.920: [ OCRRAW][50530464]propriogid:1: INVALID FORMAT
2013-08-05 13:10:40.920: [ OCRRAW][50530464]proprioini: OCR configuration on disk 0 is not valid
2013-08-05 13:10:40.920: [ OCRRAW][50530464]proprinit: Could not open raw device
2013-08-05 13:10:40.921: [ default][50530464]a_init:7!: Backend init unsuccessful : [26]
2013-08-05 13:10:40.921: [ CSSCLNT][50530464]clsssinit: Unable to access OCR device in OCR init.PROC-26: Error while accessing the physical storage


Solucionando la corrupción del OCR

Para solucionar el problema de corrupción, se debe restaurar el OCR desde un backup. En este caso el backup se encuentra en el segundo nodo del RAC en el siguiente directorio:


/u01/app/oracle/product/10.2.0/cr_1/cdata/crs

-rw-r--r-- 1 root root 8663040 Jan 6 2012 26916645
-rw-r--r-- 1 root root 8663040 dec 20 05:28 week.ocr
-rw-r--r-- 1 root root 7680000 Jan 1 09:35 week_.ocr
-rw-r--r-- 1 root root 7680000 Jan 4 03:58 day.ocr
-rw-r--r-- 1 root root 7680000 Jan 5 03:58 backup02.ocr
-rw-r--r-- 1 root root 7680000 Jan 5 07:58 day_.ocr
-rw-r--r-- 1 root root 7680000 Jan 5 07:58 backup01.ocr
-rw-r--r-- 1 root root 7680000 Jan 5 11:58 backup00.ocr


Para restaurar elegimos el archivo llamado day.ocr. Este archivo posee la metadata que será cargada nuevamente al Clúster mediante el comando ocrconfig.


Restaurando el archivo OCR

Con el usuario root, ejecutar el siguiente comando:

ocrconfig –restore /u01/app/oracle/product/10.2.0/cr_1/cdata/crs/day.orc


      Chequeo de Servicios

Es importante cuando el OCR ha sido restaurado satisfactoriamente, revisar los servicios verificando mediante los comandos de Clusterware:

Reinicio de servicios CRS (usuario root)

crsctl start crs


chequeo de OCR (oracle/root)

[oracle@vmrac02 bin]$ ./ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 3144280
Used space (kbytes) : 7072
Available space (kbytes) : 3137208
ID : 2109299085
Device/File Name : /dev/raw/raw1
Device/File integrity check succeeded
Device/File Name : /dev/raw/raw3
Device/File needs to be synchronized with the other device
Cluster registry integrity check succeeded





[oracle@vmrac02 bin]$ ./crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.rac.db application 0/0 0/1 ONLINE ONLINE vmrac02
ora....c1.inst application 0/5 0/0 ONLINE ONLINE vmrac01
ora....c2.inst application 0/5 0/0 ONLINE ONLINE vmrac02
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE vmrac01
ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE vmrac01
ora.rac1.gsd application 0/5 0/0 ONLINE ONLINE vmrac01
ora.rac1.ons application 0/3 0/0 ONLINE ONLINE vmrac01
ora.rac1.vip application 0/0 0/0 ONLINE ONLINE vmrac01
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE vmrac02
ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE vmrac02
ora.rac2.gsd application 0/5 0/0 ONLINE ONLINE vmrac02
ora.rac2.ons application 0/3 0/0 ONLINE ONLINE vmrac02
ora.rac2.vip application 0/0 0/0 ONLINE ONLINE vmrac02






Tuesday, November 17, 2009

Creando una SAN en EOL 5 para Oracle RAC

Preparando un Target SCSI para Oracle RAC

Estaba trabajando con discos compartidos con la opción "eagerzerothick" en ESX 4.0. Esta configuración permite tener discos virtuales compartidos, los cuales son presentados a los nodos que componen la configuración de un Cluster de sistema operativo y en este caso utilizados para conformar los dispositivos asociados a una instancia ASM para Oracle RAC. La verdad que me complique bastante intentando hacer esto y las particiones presentadas a cada nodo funcionan sin problemas. Pero es necesario tener bastante conocimiento de ESX para que funcione. Los issues fueron bastantes y decidí preparar otra configuración mas simple de algo que conozco en mas detalle.

La solución fue implementar un Target SCSI, capaz de presentar Luns a los nodos como una SAN y asignar estos dispositivos particionados al Oracle ASM. Permitiendo configurar todo mediante la asignación lógica de los dispositivos pertenecientes a cada Nodo.

Revisemos el diagrama para entender la solución:



El diagrama muestra un único almacenamiento, el cual esta conformado por discos virtuales creados en el nodo donde se encuentra instalado el "SCSI target" o "tgt". En el Nodo Target los dispositivos son presentados como LUNs "Logical unit numbers". El protocolo Ip basado en un almacenamiento remoto vía red, proporcionara acceso a las LUNs, que a su vez serán descubiertas por los otros nodos y serán presentadas como dispositivos lógicos, los cuales deben ser particionados para su utilización y posterior configuración con Oracle ASMLib (createdisk).
Se crea una interfaz de red por cada nodo en un segmento distinto al definido para las publicas y privadas relacionadas al interconnect. Esta red solo será para trafico de paquetes al puerto 3260. También se instalaran los deamons iscsid y tgtd.


Definición de Servidor SAN

La siguiente configuración de requerimientos mininos esta corriendo en una maquina virtual con ESX 4.0.

Memoria: inicial 512MB
CPU: 1 Procesador
Disco: 1 Partición para S.0 - 20GB
1 Partición para Swap - Depende de la memoria de la maquina (memoria RAM * 2.5)
1 Partición para almacenamiento de discos. - 60GB
S.O : Oracle Enterprise Linux 5 (32Bit ò 64 Bit)
Red: 1 eth0

Instalar los siguientes paquetes en el Nodo Target (vmstorage01)

rpm -Uvh iscsi*

iscsi-initiator-utils-6.2.0.871-0.10.el5
iscsi-target-utils-0.0-5.20080917snap.el5

Es muy importante resolver las dependencias de paquetes que se necesitan al momento de instalar.

Configurando el dispositivo de Red para el nodo de almacenamiento

Se debe modificar el script que controla la configuración del dispositivo eth0 en la siguiente ruta:

cd /etc/sysconfig/network-scripts

editar: ifcfg-eth0 y configurar de la siguiente manera:

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=1.99.1.254
NETMASK=255.255.0.0

Configurar nombre de maquina

editar /etc/host
1.99.1.254 vmstorage01.andoria.cl vmstorage01

Creación de discos para LUNs

dd if=/dev/zero of=/Storage/discos/disk01.dat bs=1M count=10240

Se ha creado un filesystem llamado Storage con una capacidad de 60GB. Dentro de este filesystem serán creados los discos virtuales, los cuales serán reconocidos posteriormente como Luns. Cada discos tendrá un tamaño de 10GB.

/Storage/discos/disk01.dat --> Disco de10GB.

Configuración del initiator

cd /etc/iscsi y modificar el archivo initiatorname.iscsi.

Se debe agregar el nombre del target SCSI y puerto donde corre el initiator para permitir la conexión de los Host clientes.

initiatorName=vmstorage01.andoria.cl:3260

Definiendo la ruta física de los discos

Editar el archivo targets.conf en la ruta /etc/tgt y agregar todos los discos creados en el paso 6. También se debe agregar el initiatorName para identificar la conocer la procedencia de los discos.



backing-store /Storage/discos/disk01.dat
backing-store /Storage/discos/disk02.dat
.
.
backing-store /Storage/discos/diskn.dat



Configurando el rc.local

La utilidad tgtadm (Linux SCSI Target Administración Utility), se encarga de asignar los discos a unidades lógicas numéricas permitiendo configurar una LUN.

tgtadm -lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /Storage/discos/disk01.dat

tgtadm --lld iscsi --op bin --mode target --tid 1 -I ALL

En el caso que se creen mas Luns, estas deben ser definidas en los archivos targets.conf y rc.local

Para detalles de cada una de las opciones: http://linux.die.net/man/8/tgtadm

Para determinar que esta funcionando y se crearon efectivamente las Luns, se deben ejecutar los siguientes comandos.

[root@vmstorage01 ~]# tgtadm --lld iscsi --op show --mode target
Target 1: vmstorage01.andoria.cl:vmstorage01
System information:
Driver: iscsi
State: ready
I_T nexus information:
I_T nexus: 10
Initiator: iqn.1994-05.com.redhat:29d1d814e590 ---> Cliente nodo VMRAC1
Connection: 0
IP Address: 1.99.1.252
I_T nexus: 11
Initiator: iqn.1994-05.com.redhat:4258579d9357 ----> Cliente nodo VMRAC2
Connection: 0
IP Address: 1.99.1.251
LUN information:
LUN: 0
Type: controller
SCSI ID: deadbeaf1:0
SCSI SN: beaf10
Size: 0 MB
Online: Yes
Removable media: No
Backing store: No backing store
LUN: 1
Type: disk
SCSI ID: deadbeaf1:1
SCSI SN: beaf11
Size: 10737 MB
Online: Yes
Removable media: No
Backing store: /Storage/discos/disk01.dat
LUN: 2
Type: disk
SCSI ID: deadbeaf1:2
SCSI SN: beaf12
Size: 10737 MB
Online: Yes
Removable media: No
Backing store: /Storage/discos/disk02.dat

Hasta aquí, la configuración esta terminada.

Presentando las Luns a un nuevo nodo

Se definen dos nodos para la configuración de Oracle RAC. En este caso el nuevo nodo se ha denominado VMRAC1. Para la presentación de las Luns, se debe instalar el paquete
en EOL 5:

rpm -Uvh iscsi-initiator-utils-6.2.0.871-0.10.el5.rpm

[root@vmrac1 ~]# rpm -qa | grep initiator
iscsi-initiator-utils-6.2.0.871-0.10.el5

Este package debe estar instalado en todos los nodos que componen la configuración de Oracle RAC. Este package también fue instalado en el nodo VMRAC2.

Verificando los nuevos dispositivos

Este comando realizara el descubrimiento de los nuevos dispositivos en forma automática:

[root@vmrac1 iscsi]# iscsiadm -m discovery -t sendtargets -p vmstorage01
1.99.1.253:3260,1 vmstorage01.bizware.cl:vmstorage01


En el directorio /dev se encuentran los distintos dispositivos asociados a particiones, hardware, etc.

ls -ltr /dev/sd*

[root@vmrac1 dev]# ls -ltr sd*
brw-r----- 1 root disk 8, 2 Nov 22 22:21 sda2
brw-r----- 1 root disk 8, 0 Nov 22 22:21 sda
brw-r----- 1 root disk 8, 1 Nov 22 22:22 sda1
brw-r----- 1 oracle oinstall 8, 80 Nov 22 22:22 sdf
brw-r----- 1 oracle oinstall 8, 16 Nov 22 22:22 sdb
brw-r----- 1 oracle oinstall 8, 48 Nov 22 22:22 sdd
brw-r----- 1 root oinstall 8, 96 Nov 22 22:22 sdg
brw-r----- 1 oracle oinstall 8, 128 Nov 22 22:22 sdi
brw-r----- 1 oracle oinstall 8, 144 Nov 22 22:22 sdj
brw-r----- 1 oracle oinstall 8, 160 Nov 22 22:22 sdk
brw-r----- 1 oracle oinstall 8, 32 Nov 22 22:22 sdc
brw-r----- 1 oracle oinstall 8, 64 Nov 22 22:22 sde
brw-r----- 1 root oinstall 8, 112 Nov 22 22:22 sdh


Con Fdisk vamos a crear la nueva partición. Esto genera los nuevos dispositivos para ser configurados con OracleASM.

brw-r----- 1 root disk 8, 17 Nov 23 01:24 sdb1
brw-r----- 1 root disk 8, 33 Nov 23 01:24 sdc1
brw-r----- 1 root disk 8, 65 Nov 23 01:24 sde1
brw-r----- 1 root disk 8, 49 Nov 23 01:24 sdd1
brw-r----- 1 root disk 8, 81 Nov 23 01:24 sdf1
brw-r----- 1 root oinstall 8, 113 Nov 27 11:10 sdh1
brw-r----- 1 root oinstall 8, 97 Nov 27 11:10 sdg1
brw-r----- 1 oracle oinstall 8, 129 Nov 27 12:12 sdi1
brw-r----- 1 oracle oinstall 8, 161 Nov 27 12:12 sdk1
brw-r----- 1 oracle oinstall 8, 145 Nov 27 12:12 sdj1

Podemos observar que hay ciertos dispositivos asignados al usuario root con grupo oinstall y otros asignados al usuario oracle grupo oinstall. Por definición solamente los dispositivos que serán asociados al OCR mediante el Clusterware deben pertenecer al root, el Voting Disk y particiones que soportaran los discos de ASM deben pertenecer al usuario oracle.

En esta configuración se han creado dos dispositivos para OCR de 600MB, tres dispositivos para Voting Disk de 600MB y cuatro particiones de 10GB, las cuales soportaran los discos de ASM y posteriormente almacenaran la base de datos. Es importante recordar que ya no es necesario crear los raw devices y simplemente todo puede ir almacenados en particiones. Para el caso de 11gR2 la instancia de ASM es creada al inicio para que el OCR y Voting Disk sean almacenados en discos de ASM directamente.

asignación de permisos a los distintos dispositivos

Se debe configurar el archivo /etc/rc.local de la siguiente manera:

[root@vmrac1 etc]# cat rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

chown oracle:oinstall /dev/sdb1
chown oracle:oinstall /dev/sdc1
chown oracle:oinstall /dev/sdd1
chown oracle:oinstall /dev/sde1
chown oracle:oinstall /dev/sdf1
chown root:oinstall /dev/sdg1 ----> OCR01
chown root:oinstall /dev/sdh1 ----> OCR02
chown oracle:oinstall /dev/sdi1
chown oracle:oinstall /dev/sdj1
chown oracle:oinstall /dev/sdk1


Instalando ASM

Todos los packages deben ser instalados en todos los nodos que componen el ambiente de Oracle RAC.
Para bajar los paquetes necesarios para la versión de sistema operativo, consultar el siguiente Link:

http://www.oracle.com/technology/tech/linux/asmlib/index.html

-rw-r--r-- 1 root root 129621 Nov 17 10:25 oracleasm-2.6.18-164.el5PAE-2.0.5-1.el5.i686.rpm
-rw-r--r-- 1 root root 85222 Nov 17 10:25 oracleasm-support-2.1.3-1.el5.i386.rpm
-rw-r--r-- 1 root root 13769 Nov 17 10:25 oracleasmlib-2.0.4-1.el5.i386.rpm
[root@vmrac1 tmp]# rpm -Uvh oracleasm-2.6.18-164.el5PAE-2.0.5-1.el5.i686.rpm
error: Failed dependencies:
oracleasm-support >= 2.0.0 is needed by oracleasm-2.6.18-164.el5PAE-2.0.5-1.el5.i686
[root@vmrac1 tmp]# rpm -Uvh oracleasm-support-2.1.3-1.el5.i386.rpm
Preparing... ########################################### [100%]
1:oracleasm-support ########################################### [100%]
[root@vmrac1 tmp]# rpm -Uvh oracleasm-2.6.18-164.el5PAE-2.0.5-1.el5.i686.rpm
Preparing... ########################################### [100%]
1:oracleasm-2.6.18-164.el########################################### [100%]
[root@vmrac1 tmp]# rpm -Uvh oracleasmlib-2.0.4-1.el5.i386.rpm
Preparing... ########################################### [100%]
1:oracleasmlib ########################################### [100%]

[root@vmrac1 tmp]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting without typing an
answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: oinstall
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]

Instalar y configurar de la misma manera en todos los nodos del ambiente Oracle RAC.

Creando los discos de ASM

conectarse como root al nodo 1 y ejecutar lo siguiente:

[root@vmrac1 ~]# /etc/init.d/oracleasm createdisk DISK01 /dev/sdb1
Marking disk "DISK01" as an ASM disk: [ OK ]
[root@vmrac1 ~]# /etc/init.d/oracleasm createdisk DISK02 /dev/sdc1
Marking disk "DISK02" as an ASM disk: [ OK ]
[root@vmrac1 ~]# /etc/init.d/oracleasm createdisk DISK03 /dev/sdd1
Marking disk "DISK03" as an ASM disk: [ OK ]
[root@vmrac1 ~]# /etc/init.d/oracleasm createdisk DISK04 /dev/sde1
Marking disk "DISK04" as an ASM disk: [ OK ]
[root@vmrac1 ~]# /etc/init.d/oracleasm createdisk DISK05 /dev/sdf1
Marking disk "DISK05" as an ASM disk: [ OK ]

[root@vmrac1 ~]# /etc/init.d/oracleasm listdisks
DISK01
DISK02
DISK03
DISK04
DISK05
[root@vmrac1 ~]# /etc/init.d/oracleasm scandisks
Scanning the system for Oracle ASMLib disks: [ OK ]

nodo 2:

[root@vmrac2 init.d]# ./oracleasm scandisks
Scanning the system for Oracle ASMLib disks: [ OK ]
[root@vmrac2 init.d]# ./oracleasm listdisks
DISK01
DISK02
DISK03
DISK04
DISK05

verificar los discos de ASM a nivel de Sistema Operativo:

cd /dev/oracleasm/disks

brw-rw---- 1 oracle oinstall 8, 17 Nov 23 01:24 DISK01
brw-rw---- 1 oracle oinstall 8, 33 Nov 23 01:24 DISK02
brw-rw---- 1 oracle oinstall 8, 49 Nov 23 01:24 DISK03
brw-rw---- 1 oracle oinstall 8, 65 Nov 23 01:24 DISK04
brw-rw---- 1 oracle oinstall 8, 81 Nov 23 01:24 DISK05


Hasta aquí la configuración de los discos y ASM esta completada. Ahora se puede proceder para crear la instancia en RAC y la base de datos.

Saludos.
Alberto
Viva Linux!!!!!!

Wednesday, June 17, 2009

Como crear dispositivos RAW en Vmware RHEL5

Depreciacion de soporte Raw Devices

El soporte para raw devices ha sido depreciado en Linux Kernel 2.6 en favor del acceso directio (O_DIRECT). Ya no es posible configurar raw device usando el "/etc/sysconfig/rawdevices, sin embargo todavia es posible configurar raw devices en RHEL5/EOL5.

Para saber mas detalles consultar los siguientes documentos:

* /usr/share/doc/kernel-doc-2.6.18/Documentation/feature-removal-schedule.txt
* Red Hat Enterprise Linux 4/5 Release notes


Ademas, Oracle auncio que ya no soportara raw device que sean asignados en forma directa a la base de datos.

Entonces que sucedera con los dispositivos raw?

solamente esta soportado en el Relase 12G en un almacenamiento ASM compuesto por raw device.
Si existen bases de datos 10g y 11g con dispositivos raw asignados en forma directa, estas bases no estan soportadas para realizar el upgrade. Entonces se deben migrar a un almacenamiento ASM compuestos por raw device, lo cual si esta soportado.

En el release 12G esto no esta permitido, ya que entrega errores:

SQL> create tablespace ABC DATAFILE '/dev/raw/ABC1.dbf' size 2GB;

Oracle recomienda a sus clientes usar ASM para agregar raw device a un diskgroup existente o crear un nuevo diskgroup en ASM.

La formas correctas de crear almacenamientos logicos (Tablespaces) es la siguiente:

opcion 1: Agregar un raw al diskgroup


SQL>alter diskgroup MYDG add disk '/dev/raw/ABC1.dbf';

opcion 2: Crear un nuevo diskgroup

SQL>create diskgroup MYDB EXTERNAL REDUNDANCY disk 'dev/raw/ABC1.dbf'


opcion 3: Utilizar el siguiente comando para crear el tablespace

SQL> create tablespace ABC DATAFILE '+MYDG' size 2GB;

Nota referencia: 578455.1 - Announcement of De-Support of using RAW devices in Release 12G


A continuacion revisaremos como configurar raw device como un almacenamiento compartido dentro de una configuracion de Clusterware en RHEL5.

Servidor Heretic

Este sevidor posee dos maquinas virtuales configuradas con vmware (vmrac1,vmrac2). El sistema operativo es un Linux Redhat 5 (RHEL5). Para el almacenamiento compartido he destinado un directorio en mi heretic (ubuntu) donde creare el almacenamiento:

heretic@heretic:~$ cd /u01/
app/ timesten/ VM/
heretic@heretic:~$ cd /u01/VM/shared/
heretic@heretic:/u01/VM/shared$ pwd
/u01/VM/shared

En este directorio se encuentran los discos creados con vmware. Para no tener problemas es necesario tener los permisos correspondientes de lectura y escritura.
cualquier modificacion debe ser realizada en ambos nodos, ya que debe ser simetrica en su configuracion de hardware y software.


Revisamos la configuracion de nuestra maquina virtual:



Agregando los discos:

Antes que todo, debemos verificar el espacio disponible para almancenar los nuevos discos, que componen el almacenamiento compartido.



Creacion de discos:

Es necesario seleccionar la opcion "Hard Disk", la cual nos permitira agregar un nuevo disco a la maquina virtual.



Seleccionando un nuevo drive:

En este proceso, se debe seleccionar el drive, si es uno existente o si existe una nueva particion para esto. En este caso elegimos la opcion "create a new Disk".




Seleccionando el tipo de Drive
:

En este caso seleccionamos SCSI que es el recomendado.



Capacidad de almacenamiento del nuevo Drive:

Dependiendo de la cantidad de espacio y requerimientos necesario para la creacion del alamcenamiento compartido, he asignado 8GB para este nuevo drive; pero no lo voy a asignar completamente. A medida que necesite espacio va ir creciendo hasta alcanzar 8GB.



Path de discos:

La ruta de los nuevos discos debe ser la definida como almacenamiento compartido para ambas maquinas.

ejemplo: /u01/VM/shared




Creacion de discos terminada:



Propiedades avanzadas:

Es necesario seleccionar el nuevo disco creado y asignar una controladora de discos SCSI. en este caso asigne la 0:13. De esta manera el disco es independiente de los ya configurados. Esto es por razones de performance, ya que podemos mover a otras controladoras los discos fisicos del servidor central y luego asignar nuevas controladoras virtuales a la maquinas en vmware y asi mantener una buen balanceo de I/O.




Hasta aqui tenemos asignados los discos a las maquinas vmrac1 y vmrac2. Posterior a esto debemos iniciar las maquinas virtuales para que reconozcan los discos asignados.



Una vez que todos los discos fueron detectados por Linux y no existieron problemas en el inicio del S.O, necesitamos crear la nueva particion, la cual esta relacionada al nuevo disco creado en vmware; pero que el sistema operativo lo interpreta como el siguiente dispositivo:

ejemplo : /dev/sdl

ejecutamos fdisk /dev/sdl para crear la nueva particion:



Aqui tenemos la nueva particion generada.

Como entonces el sistema operativo sabe que la nueva particion va a hacer utilizada como un dispositivo raw?

En el directorio /etc/udev/rules.d se encuentran los siguientes archivos:



Son dos archivos que hacen toda la magia:

1.- 60-raw.rules
2.- 99-raw-perms.rules


Modificando 60-raw.rules

Este archivo contiene la asignacion logica de la particion con respecto al raw que representa. Con esto el sistema operativo sabe que la particion sdl1 es asignada al dispositivo raw.

¿Y por que debemos definirlo?

La asignacion del dispotivo es dinamica en esta version de RHEL5. Entonces cada vez que se inicie el sistema no encontrara el dispositivo asignado.

ACTION=="add", KERNEL=="sdl1", RUN+="/bin/raw /dev/raw/raw1 %N"

Modificando 99-raw-perms.rules

En este archivo lo que se definen son los permisos para el dispositivo raw.

KERNEL=="raw[1-3]*", OWNER="root", GROUP="oinstall", MODE="640"
KERNEL=="raw[4-8]*", OWNER="oracle", GROUP="oinstall", MODE="644"


En este ejemplo he asignado para la configuracion de mi 10gRAC los dispositivos para OCR desde el raw1 al raw3 y definir que solamente tuviera permisos el root.
Por el contrario los archivos de votingdisk y ASM se asignan permisos solamente el usuario Oracle.

Es necesario reiniciar las maquinas virtuales para que reconozca los cambios realizados.

En cada una de las maquinas, debemos asignar los permisos necesarios y crear links simbolicos a los para cada raw device.

ln -s /dev/raw/raw1 /u01/oradata/ocr
ln -s /dev/raw/raw2 /u01/oradata/ocr1
ln -s /dev/raw/raw3 /u01/oradata/ocr2
ln -s /dev/raw/raw4 /u01/oradata/votingdisk
ln -s /dev/raw/raw5 /u01/oradata/votingdisk1
ln -s /dev/raw/raw6 /u01/oradata/votingdisk2
ln -s /dev/raw/raw7 /u01/oradata/asm1
ln -s /dev/raw/raw8 /u01/oradata/asm2


Asignacion de permisos:

Esto se debe hacer si por algun motivo en el proceso de instalacion del clusterware existen problemas de permiso.

chown oracle:oinstall /dev/raw/raw4
chown oracle:oinstall /dev/raw/raw5
chown oracle:oinstall /dev/raw/raw6
chown oracle:oinstall /dev/raw/raw7
chown oracle:oinstall /dev/raw/raw8
chmod 644 /dev/raw/raw1
chmod 644 /dev/raw/raw2
chmod 644 /dev/raw/raw3
chmod 644 /dev/raw/raw4
chmod 644 /dev/raw/raw5


Se concluye que este procedimento es standard y en la realidad debe ser realizado de igual manera ya sea virtualmente o fisicamente.

Saludos y a gozar!!!!

Tuesday, June 16, 2009

Configuracion equivalencias de usuario - Metodo Secure Shell (SSH)

Existen varios metodos de autentificacion remota, los cuales permiten tener un entorno seguro de conexion a distintos nodos.
Para la configuracion de OracleRAC es necesario tener cuentas de usuarios equivalentes, ya que deben ser iguales en la configuracion de variables de ambiente, puntos de montaje, claves y permisos.

La equivalencia permite acceder a los distintos nodos que conforman el cluster sin necesidad de ingresar la clave al momento de conectarse via ssh.

En Linux deberiamos primero saber si tenemos instalado el OpenSSH SSH daemon o sshd. Este proceso permite escuchar conexiones entrantes para conectarse a cualquier ambiente.

conectarse al ambiente Linux y ejecutar el siguiente comando:

[oracle@vmrac2 ~]$ pgrep sshd

Si no devuelve ningun numero de proceso, quiere decir que no esta activo.

En mi caso, yo baje el siguiente RPM rsh-server-0.17-38.el5.i386.rpm y se instala de la siguiente manera.

rpm -Uvh rsh-server-0.17-38.el5.i386.rpm

Cuando ya esta configurado el ssh, nuevamente consultamos si existen procesos relacionados con el daemon sshd:

[oracle@vmrac2 ~]$ pgrep sshd
2376
2989
2991
6778
6780

Ahora, vamos a configurar la equivalencia del usuario, que en este caso le llame oracle. Este proceso debe ser realizado en cada uno de los nodos.

Nodo vmrac1:

[oracle@vmrac1 ~]$ mkdir -p ~/.ssh
[oracle@vmrac1 ~]$ chmod 700 ~/.ssh
[oracle@vmrac1 ~]$ /usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
65:c8:c1:9c:17:ea:31:fb:76:a6:c8:1f:11:e4:96:b0 oracle@vmrac1.andoria.cl
[oracle@vmrac1 ~]$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
59:36:7d:96:14:61:7b:32:80:b8:d5:d0:65:32:3a:45 oracle@vmrac1.andoria.cl


Nodo vmrac2:

[oracle@vmrac2 ~]$ mkdir -p ~/.ssh
[oracle@vmrac2 ~]$ chmod 700 ~/.ssh
[oracle@vmrac2 ~]$ mkdir -p ~/.ssh
[oracle@vmrac2 ~]$ chmod 700 ~/.ssh
[oracle@vmrac2 ~]$ /usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
42:4a:96:db:fe:29:a3:a4:ac:05:1d:ac:ee:45:49:3d oracle@vmrac2.andoria.cl
[oracle@vmrac2 ~]$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
55:d7:f1:9e:b9:78:61:fd:2b:88:26:be:e9:03:c9:d0 oracle@vmrac2.andoria.cl

Hasta aqui, tenemos en cada uno de los nodos la llave publica para acceder a cada uno de los nodos. Esta llave deber ser distribuida en cada uno de los nodos del Cluster para lograr la equivalencia en las cuentas de usuario.

Nodo vmrac1:

[oracle@vmrac1 ~]$ cd .ssh
[oracle@vmrac1 .ssh]$ touch ~/.ssh/authorized_keys
[oracle@vmrac1 .ssh]$ ls -ltr
total 16
-rw-r--r-- 1 oracle oinstall 406 Jun 16 03:52 id_rsa.pub
-rw------- 1 oracle oinstall 1675 Jun 16 03:52 id_rsa
-rw-r--r-- 1 oracle oinstall 614 Jun 16 03:52 id_dsa.pub
-rw------- 1 oracle oinstall 672 Jun 16 03:52 id_dsa
-rw-r--r-- 1 oracle oinstall 0 Jun 16 03:52 authorized_keys
[oracle@vmrac1 .ssh]$ ssh vmrac1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'vmrac1 (192.168.1.47)' can't be established.
RSA key fingerprint is 1f:6e:e1:d9:91:bc:5c:5e:b8:23:49:2f:a8:5c:4f:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'vmrac1,192.168.1.47' (RSA) to the list of known hosts.
oracle@vmrac1's password:
[oracle@vmrac1 .ssh]$ ssh vmrac1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

Nodo vmrac2:

ssh vmrac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'vmrac2 (192.168.1.48)' can't be established.
RSA key fingerprint is 1f:6e:e1:d9:91:bc:5c:5e:b8:23:49:2f:a8:5c:4f:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'vmrac2,192.168.1.48' (RSA) to the list of known hosts.
oracle@vmrac2's password:
[oracle@vmrac2 ~]$ ssh vmrac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

Desde el nodo vmrac1:

[oracle@vmrac1 .ssh]$ scp ~/.ssh/authorized_keys vmrac2:.ssh/authorized_keys
oracle@vmrac2's password:
authorized_keys 100% 2040 2.0KB/s 00:00

Finalmente, probamos que efectivamente la configuracion de la equivalencia de usuarios sea la correcta:

Desde el Nodo vmrac1:

[oracle@vmrac1 .ssh]$ ssh vmrac1
Last login: Tue Jun 16 03:50:25 2009 from vmrac1.andoria.cl
[oracle@vmrac1 ~]$ ssh vmrac2
Last login: Tue Jun 16 04:25:34 2009 from vmrac1.andoria.cl

Desde el nodo vmrac2:
[oracle@vmrac2 .ssh]$ ssh vmrac1
Last login: Tue Jun 16 03:54:15 2009 from vmrac2.andoria.cl

Chequeo de equivalencia ejecutando el siguiente comando:

[oracle@vmrac1 cluvfy]$ ./runcluvfy.sh stage -pre crsinst -n vmrac1,vmrac2 -verbose

Extracto de ejecucion:

Check: User equivalence for user "oracle"
Node Name Comment
------------------------------------ ------------------------
vmrac1 passed
vmrac2 passed
Result: User equivalence check passed for user "oracle".

Esto es todo amigos!!!

Saludos.