1. Setting up VMWare for Clustering a. b. c. d.
Introduction Architecture Install VmWare 5.0 Create virtual machines i. Node 1 Config File ii. 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 2 GHZ Pentium Processor 4 Memory 2 GB Hard Disk 20 GB Free
Recommended Dual Core Pentium 3.2 GHZ 4GB 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 • • • • •
Private Network Public Network Nodes Shared Storage Client that is outside of the cluster
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 Node1 Node2
Public Interface 192.168.107.101 192.168.107.102
Private Interface 10.0.0.101 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 • •
More Stable Easy to backup the entire disk.
Also create ASM disks as you prefer. Here i have 3 ASM disks each with 10 GB capacity.
Component Entire Structure Empty 10GB Disk Empty 20GB Disk Empty 500M Disk
File Name RAC.zip 10G.zip 20G.zip 500M.zip
Size 24 KB 3 KB 6 KB 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.