1. Setting up VMWare for Clustering


  1. Introduction
  2. Architecture
  3. Install VmWare 5.0
  4. Create virtual machines
    1. Node 1 Config File
    2. Node 2 Config File

1.a Introduction

Usually Oracle 10g RAC database is installed on multiple machines connected to shared storage (such as an EMC) via fiber channel. We will try to do the same thing using VMWare on one machine. The trick is we could emulate all the components of the cluster using Vmware. The computer which runs the VMWare emulation software is called as the HOST computer and the virtual machines are called GUEST computers. So basically if you are planning to build a RAC on a single workstation, you will end up with 3 operating systems (2 virtual and 1 host) running on the same machine. Needless to say you will need atleast 2 GB of RAM and a good processor to try this setup.

Here are the minimum requirements.

Component Minimm Recommended
Processor 2 GHZ Pentium 4 Dual Core Pentium 3.2 GHZ
Memory 2 GB 4GB
Hard Disk 20 GB Free 60 GB free

 

1.b Architecture

A typical Real application cluster installation would look like the image below. You have multiple nodes each running an instance of the database communicating over a private network (interconnect) and using virtual IP addresses to communicate with the clients. Usually these virtual IP addresses are on the public network. We will try to emulate all of the following components using VMWare

 

When using VmWare you could create multiple networks internally by making the nodes connect to virtual switches. Connect both the nodes to the same switch and give them consecutive IP addresses and they will be able to communicate immediately.

For the public network I have chosen to use the NAT feature, although i chose the IP addresses instead of relying on DHCP.

Node Name Public Interface Private Interface
Node1 192.168.107.101 10.0.0.101
Node2 192.168.107.102 10.0.0.102

Your DHCP 3rd octet might be different. I noticed it was changing on different machines with VMWare installed.

 

1.c Install VMWare 5.0

Installing VMWare is straight forward. Download and Install version 5.0 workstation from http://www.vmware.com .

1.d Create Virtual Machines

The best way to organize your virtual machines is as shown in the image below. You will have one Root folder called RAC - Each Node will have its own folder. Remember each node has its own OS / Oracle installation disk. This is named sda.vmdk. You will also need an OCR (Oracle cluster registry) and voting disk , I created both of them around 500 MB. There are advantages in creating them as seperate disks instead of partitions of a bigger disk

Also create ASM disks as you prefer. Here i have 3 ASM disks each with 10 GB capacity.

Component File Name Size
Entire Structure RAC.zip 24 KB
Empty 10GB Disk 10G.zip 3 KB
Empty 20GB Disk 20G.zip 6 KB
Empty 500M Disk 500M.zip 1 KB

The file sizes are small as VMWare does not allocate disk space(It is an option if you want to preallocate space) when creating the virtual machine. Below is the VMX file for each vmware node (Node 1 and Node 2).

1.d.i Node 1 Configuration File

Node 1 ( Location : C:\RAC\Node1\rhel3.vmx )
config.version = "8"
virtualHW.version = "4"
scsi0.present = "TRUE"
scsi0.virtualDev = "lsilogic"
memsize = "1024"
scsi0:0.present = "TRUE"
scsi0:0.fileName = "sda.vmdk"
ide1:0.present = "TRUE"
ide1:0.fileName = "auto detect"
ide1:0.deviceType = "cdrom-raw"
floppy0.present = "FALSE"
ethernet0.present = "TRUE"
ethernet0.connectionType = "nat"
usb.present = "FALSE"
sound.present = "FALSE"
sound.virtualDev = "es1371"
displayName = "Node1"
guestOS = "rhel3"
nvram = "rhel3.nvram"

ethernet1.present = "TRUE"
ethernet1.connectionType = "custom"
ethernet1.vnet = "VMnet2"

scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsi1.sharedBus = "VIRTUAL"

scsi1:1.present = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.fileName = "..\Shared\ocr.vmdk"
scsi1:1.deviceType = "disk"

scsi1:2.present = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.fileName = "..\Shared\votingdisk.vmdk"
scsi1:2.deviceType = "disk"

scsi1:3.present = "TRUE"
scsi1:3.mode = "independent-persistent"
scsi1:3.fileName = "..\Shared\spfileasm.vmdk"
scsi1:3.deviceType = "disk"

scsi1:4.present = "TRUE"
scsi1:4.mode = "independent-persistent"
scsi1:4.fileName = "..\Shared\ASM1.vmdk"
scsi1:4.deviceType = "disk"

scsi1:5.present = "TRUE"
scsi1:5.mode = "independent-persistent"
scsi1:5.fileName = "..\Shared\ASM2.vmdk"
scsi1:5.deviceType = "disk"

scsi1:6.present = "TRUE"
scsi1:6.mode = "independent-persistent"
scsi1:6.fileName = "..\Shared\ASM3.vmdk"
scsi1:6.deviceType = "disk"

disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"

scsi0:0.redo = ""
scsi1:1.redo = ""

ethernet0.addressType = "generated"
ethernet1.addressType = "generated"
uuid.location = "56 4d 72 58 f2 c4 75 75-bd 79 8c 2b b4 75 ad ca"
uuid.bios = "56 4d 72 58 f2 c4 75 75-bd 79 8c 2b b4 75 ad ca"
tools.remindInstall = "TRUE"
ethernet0.generatedAddress = "00:0c:29:75:ad:ca"
ethernet0.generatedAddressOffset = "0"
ethernet1.generatedAddress = "00:0c:29:75:ad:d4"
ethernet1.generatedAddressOffset = "10"

ide1:0.startConnected = "TRUE"

tools.syncTime = "FALSE"

scsi1:2.redo = ""
scsi1:3.redo = ""
scsi1:4.redo = ""
scsi1:5.redo = ""
scsi1:6.redo = ""
scsi1:7.redo = ""

1.d.ii Node 2 Configuration File

Node 2 ( Location : C:\RAC\Node2\rhel3.vmx )

config.version = "8"
virtualHW.version = "4"
scsi0.present = "TRUE"
scsi0.virtualDev = "lsilogic"
memsize = "1024"
scsi0:0.present = "TRUE"
scsi0:0.fileName = "sda.vmdk"
ide1:0.present = "TRUE"
ide1:0.fileName = "auto detect"
ide1:0.deviceType = "cdrom-raw"
floppy0.present = "FALSE"
ethernet0.present = "TRUE"
ethernet0.connectionType = "nat"
usb.present = "FALSE"
sound.present = "FALSE"
sound.virtualDev = "es1371"
displayName = "Node2"
guestOS = "rhel3"
nvram = "rhel3.nvram"

ethernet1.present = "TRUE"
ethernet1.connectionType = "custom"
ethernet1.vnet = "VMnet2"

scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsi1.sharedBus = "VIRTUAL"

scsi1:1.present = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.fileName = "..\Shared\ocr.vmdk"
scsi1:1.deviceType = "disk"

scsi1:2.present = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.fileName = "..\Shared\votingdisk.vmdk"
scsi1:2.deviceType = "disk"

scsi1:3.present = "TRUE"
scsi1:3.mode = "independent-persistent"
scsi1:3.fileName = "..\Shared\spfileasm.vmdk"
scsi1:3.deviceType = "disk"

scsi1:4.present = "TRUE"
scsi1:4.mode = "independent-persistent"
scsi1:4.fileName = "..\Shared\ASM1.vmdk"
scsi1:4.deviceType = "disk"

scsi1:5.present = "TRUE"
scsi1:5.mode = "independent-persistent"
scsi1:5.fileName = "..\Shared\ASM2.vmdk"
scsi1:5.deviceType = "disk"

scsi1:6.present = "TRUE"
scsi1:6.mode = "independent-persistent"
scsi1:6.fileName = "..\Shared\ASM3.vmdk"
scsi1:6.deviceType = "disk"

disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"

uuid.bios = "56 4d 88 e1 d8 25 00 e0-e3 ae f1 4f b1 65 76 26"

scsi0:0.redo = ""
scsi1:1.redo = ""
ethernet0.addressType = "generated"
ethernet1.addressType = "generated"
uuid.location = "56 4d 88 e1 d8 25 00 e0-e3 ae f1 4f b1 65 76 26"
tools.remindInstall = "TRUE"
ethernet0.generatedAddress = "00:0c:29:65:76:26"
ethernet0.generatedAddressOffset = "0"
ethernet1.generatedAddress = "00:0c:29:65:76:30"
ethernet1.generatedAddressOffset = "10"

tools.syncTime = "FALSE"

scsi1:2.redo = ""
scsi1:3.redo = ""
scsi1:4.redo = ""
scsi1:5.redo = ""
scsi1:6.redo = ""


Open the virtual machines now in VmWare. You should see the screens like below.


Freshly opened VM's in VMWare

All the hardware components in each of your virtual machines. Now both nodes are ready for RHEL 3.0 installations.