Автор: Горбоконенко Евгений
Тема: О создании стенда с использованием Oracle VM
Источник: Russian Oracle User Group
Номер документа: 3.1
Дата публикации: 12.05.2009
Последнее изменение: 12.05.2009
Целью данной работы было создание 3-ех узлового кластера из виртуальных машин на базе Oracle VM-сервера. В качестве аппаратной платформы использовалась рабочая станция с двухядерным процессором, 8Гб оперативной памяти и 2-мя SATA-дисками (один для установки ОС, другой - разделяемый диск для узлов кластера). Был установлен Oracle VM-сервер 2.1.2 (x86 64 bit). В нашей конфигурации он получил имя vmrac.
В качестве гостевой операционной системы использовался Oracle Enterprise Linux 5.2 (x86 64 bit). Образ ОС был получен с сайта http://edelivery.oracle.com. Полное название данного образа: Oracle VM Templates for Oracle Enterprise Linux 5 Media Pack v2 for x86_64 (64 bit).
Архив образа гостевой ОС (файл OVM_EL5U2_X86_64_PVM_10GB.tgz) был скопирован на VM-сервер, на файловую систему /OVS. На этой же файловой системе был создан подкаталог running_pool, где образ разархивировался а полученный в результате подкаталог OVM_EL5U2_X86_64_PVM_10GB переименовывался в node1. Затем операция повторялась для node2 и node3. Полученные 3 образа - это узлы нашего кластера. Для каждого образа имеется конфигурационный файл (например, /OVS/running_pool/node1/vm.cfg). В этом конфигурационном файле для каждого узла необходимо добавить по два сетевых интерфейса и разделяемое дисковое пространство.
Для добавления сетевых интерфейсов необходимо сгенерировать MAC-адреса:
[root@vmrac ~]# python /opt/ovs-agent-2.2/macgen.py 00:16:3e:0d:0f:48
Нам потребовалось 6 MAC-адресов по 2 на каждый узел (публичная и
приватная сеть). После того как они были сформированы, сетевые
интерфейсы добавлялись в конфигурационные файлы виртуальных машин:
vif = [ 'mac=00:16:3e:0d:0f:48, bridge=xenbr0', 'mac=00:16:3e:e6:2e:cf, bridge=xenbr0', ]
В качестве разделяемого дискового пространства был использован
2-ой диск нашего сервера. Он был разбит на разделы следующим
образом:
[root@vmrac ~]# fdisk -l /dev/sdb Disk /dev/sdb: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 30401 244196001 5 Extended /dev/sdb5 1 48 385497 83 Linux /dev/sdb6 49 96 385528+ 83 Linux /dev/sdb7 97 1093 8008371 83 Linux /dev/sdb8 1094 2090 8008371 83 Linux /dev/sdb9 2091 4083 16008741 83 Linux /dev/sdb10 4084 6076 16008741 83 Linux /dev/sdb11 6077 9967 31254426 83 Linux
В конфигурационный файл каждого узла была добавлена информация о
доступности данного устройства в виртуальных машинах:
disk = [ 'file:/OVS/running_pool/node1/System.img,xvda,w', 'phy:/dev/sdb,hdd,w!', ]
Т.е. устройство /dev/sdb будет доступно гостевым ОС на чтение и запись как устройство /dev/hdd.
Обратите внимание, что путь до образа (System.img) также требует изменения.
Кроме этого в конфигурационном файле необходимо указать уникальное имя для каждой виртуальной машины (например, name="node1"), указать требуемый объем оперативной памяти и кол-во виртуальных процессоров (в нашей конфигурации объем оперативной памяти оставили в значение по-умолчанию: 2Гб, а кол-во процессоров уменьшили до 1).
После того как все изменения в конфигурационном файле сдаланы,
можно запускать виртуальную машину:
[root@vmrac ~]# xm create node1
Т.к. добавленные в виртуальные машины сетевые интерфейсы не настроены, то загрузка гостевой ОС останавливается на этапе их активизации и требуется вмешательство администратора.
Cделать настройку сетевых интерфейсов из консоли VM-сервера не
удалось и для продолжения необходим vnc-клиент. На VM-сервере
можно узнать сетевой порт, который отвечает за подключение к
графической консоле нашей виртуальной машины:
[root@vmrac ~]# xm list -l node1 | grep location
(location 0.0.0.0:5900)
(location 2)
После того как сетевой порт определен, можно подключиться к консоле
виртуальной машины с любой клиентской машины, на которой установлен
vncviewer:
[oracle@client ~]$ vncviewer vmrac:5900
Подключившись к графической консоле, вы должны будете в
интерактивном режиме сделать сетевые настройки. Только после
этого загрузка виртуальной машины продолжится. По окончании
загрузки к текстовой консоли можно подключиться с VM-сервера:
[root@vmrac ~]# xm console node1
Пароль пользователя root будет "ovsroot".
Во время первой загрузки вы настраиваете только один сетевой
интерфейс, поэтому вы должны будете настроить второй, например,
с помощью утилиты system-config-network.
После того как все узлы будут запущены, необходимо выполнить еще ряд настроек, связанных с тем, что мы планируем развернуть кластерную конфигурацию, используем версию ПО Oracle 11.1 и планируем разместить реестр OCR и диски для голосования (voting disk) на сырых разделах, а для файлов БД использовать ASM.
Включенный по умолчанию firewall не позволяет процессам Кластерного ПО Oracle, запущенным на всех узлах кластера, взаимодействовать друг с другом. Отключить firewall можно с помощью утилиты system-config-securitylevel.
Для 11g требуется установить следующие параметры ядра в
файле /etc/sysctl.conf:
net.core.rmem_default=4194304 net.core.rmem_max=4194304
Как уже было отмечено разделяемый диск в гостевых ОС будет виден
как устройство /dev/hdd. Для того, чтобы пользователь oracle имел
доступ к разделам диска необходимо дать ему права на соответствующие
специальные файлы. На постоянной основе это можно сделать в
конфигурационном файле /etc/udev/rules.d/50-udev.rules, добавив
строку:
KERNEL=="hdd[0-9]*" OWNER="oracle" GROUP="dba", MODE="0660"
Таким образом, при загрузке гостевой ОС специальные файлы /dev/hdd*, которые соответствуют разделам разделяемого диска, будут принадлежать пользователю oracle и доступны на чтение-запись пользователям группы dba.
Нужно отметить, что начиная с версии 10.2, Кластерное ПО Oracle может использовать блочные устройства, для размещения реестра OCR и дисков для голосования. Начиная с версии 11.1, нужные блочные устройства можно указать во время установки ПО. Т.е. делать привязку разделов диска к сырым устройствам /dev/raw/raw* нет необходимости.
В нашей конфигурации разделы /dev/hdd5 и /dev/hdd6 запланированы для реестра OCR и диска для голосования, 4 следующих раздела - диски для системы ASM, раздел /dev/hdd11 - временная файловая система, монтируемая на одном из узлов кластера для размещения дистрибутивов ПО Oracle. Нужно отметить, что свободного пространства на корневой файловой системе гостевой ОС хватает только на установку Кластерного ПО Oracle и СУБД с опцией RAC (при установке патча 11.1.0.7 сообщение о нехватке места можно игнорировать).
С разделами используемыми в качестве дисков системы ASM, планируем
работать через ASMlib, поэтому делаем соответствующую привязку на
одном из узлов и даем разделам логические имена:
/etc/init.d/oracleasm configure /etc/init.d/oracleasm createdisk VOL1 /dev/hdd7 /etc/init.d/oracleasm createdisk VOL2 /dev/hdd8 /etc/init.d/oracleasm createdisk VOL3 /dev/hdd9 /etc/init.d/oracleasm createdisk VOL4 /dev/hdd10
На остальных узлах достаточно настроить модуль ASMlib, а логические
имена дисков станут доступными автоматически:
/etc/init.d/oracleasm configure /etc/init.d/oracleasm listdisks
Прежде чем начать развертывание RAC, вы должны настроить эквивалентность узлов (рекомендуется использовать ssh) и обеспечить разрешение всех сетевых имен на всех узлах кластера. Эти шаги описаны в стандартной документации по установке Oracle RAC. На данном этапе узлы готовы к процессу установки.
Заключение.
Готовые образы гостевых ОС (шаблоны) для Oracle VM-сервера содержат все
необходимое системное ПО и имеют большинство необходимых настроек.
В качестве разделяемой дисковой подсистемы можно использовать аппаратные
ресурсы (диски) сервера, на котором установлен Oracle VM-сервер.
Полученный стенд позволяет знакомиться с функциональными возможностями
RAC.