Engineered System at home. Part 2. Install Cell software in Amazon

Продолжение серии по установке Exadata версии 12.1.1.1.1.

В предыдущих сериях:



Вам понадобится завести бесплатный account в Amazon (free trial)  и вы сможете доже начать пользовать некоторыми ресурсами совершенно бесплатно. Я это использовал для экономии. Итак, нам нужна машина с Oracle  Linux 5.9, мы ее легко находим по этой ссылке.   На самом деле вы можете выбрать любой регион, главное все машины должны будут потом жить в одном регионе. Европа к нам ближе, если вы задумаете потом заканчивать данные, возможно это будет лучше. На следующем шаге у вас спрашивают тип intance.

Легко видеть, что я попросил бесплатный вариант. Тут следует сделать важную оговорку.
 Кажется, эта бесплатная машинка существует только в виде PVM образа, и дальше, когда мы будет добавлять память, она так и останется PVM. Что не даст нам воспользоваться hupe pages. Возможно если сразу выбрать большую машину эту проблему удасться обойти. По умолчанию вам дадут 15Gb дисков - что нам не хватит, но я опишу дальше как добавлять ресурсы. Т.е. когда вы пройдете один раз в след раз вы сможете сразу создать нужную вам конфигурацию.
Дальше все по умолчанию. Обратите внимание, что для доступа к машине вам нужно скачать ключ. Без него вы доступ не получите. Ok, считаем что вы справились и  смогли попасть на консоль.

ssh -i amazon.pem -l root <ваш ip адрес> 

Вот тут нас ждет первая засада. Ядро не базовое 5.9, а обновленное.

2.6.39-400.17.1.el5uek

Известно, что rds over tcp/ip работает на 2.6.39-300.26.1, а дальше он был сломан. В 5.10 уже не работает. Чтобы не рисковать, мы можем поставить проверенное ядро:

Правим yum repo

vi public-yum-el5.repo

[ol5_UEK_base]
name=Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-el5
gpgcheck=1
enabled=1

и устанавливаем нужное ядро

yum install kernel-uek-2.6.39-300.26.1.el5uek.x86_64

Загружаем rds

lsmod | grep rds
modprobe rds
modprobe rds_tcp
modprobe rds_rdma
lsmod | grep rds

rds_rdma               82580  0
rds_tcp                10455  0
rds                    96059  2 rds_rdma,rds_tcp
rdma_cm                36793  2 rds_rdma,ib_iser
ib_core                66577  7 rds_rdma,ib_iser,rdma_cm,ib_cm,iw_cm,ib_sa,ib_mad


Для автоматической загрузки rds используем следующий метод

cat /etc/modprobe.d/rds.conf
install rds /sbin/modprobe --ignore-install rds && /sbin/modprobe rds_tcp && /sbin/modprobe rds_rdma


Запрещаем  SELINIX

  • In /etc/selinux/config, change the line SELINUX to disabled (SELINUX=disabled)
  • echo 0 > /selinux/enforce

В нормальной ситуации я бы рекомендовал поставить oracle-validate но тут он уже стоит.

Для установки cell нам понадобятся два пакета net-snmp*

yum install net-snmp net-snmp-utils 

Добавим в систему swap file 

 dd if=/dev/zero of=/swapfile bs=1M count=1024
1024+0 записей считано
1024+0 записей написано
1073741824 bytes (1,1 GB) copied, 1,4198 секунд, 756 MB/s

mkswap /swapfile
Устанавливается пространство для свопинга версии 1, размер = 1073737 кБ

swapon /swapfile

Добавим строку в /etc/fstab
swapfile swap swap defaults 0 0
Нужно поправить /etc/sysctl 
cat  /etc/sysctl.conf
<...>

net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=2097152
# vm.nr_hugepages = 1560   # Only if have huge pages in your system
fs.aio-max-nr = 50000000


cat /etc/security/limits.conf

<...> 

*     soft      nofile           655360
*     hard      nofile          655360
*     soft     memlock          409600000
*     hard     memlock          409600000

Скачать и установить jdk 

rpm -ivh jdk-1.7.0_55-fcs.x86_64.rpm

Создать две директории 

mkdir /var/log/oracle
chmod 775 /var/log/oracle

Мы готовы к главному - установке cell rpm. Я писал,  где его взять, в самом посте.  Конечно, до установки  было бы разумно перегрузить инстансе, чтобы убедиться что все в порядке, особенно с версией ядра. 

Теперь нам нужно решить сколько вам нужно ресурсов - памяти и дисков. Это важно, потому что, как только вы запросите ресурсы с вас начнут брать за них деньги. За процессоры и память по часам использования (пока инстанс работает), за диски - пока в не удалите инстанс (terminate).    Все типы инстансев можно найти по этой ссылке.  Рекомендую регулярно контролировать ваши расходы.

Итак меняем тип инстанса из EC2 management console

 Для Exadata Cell я выбрал m3.2xlarge - наиболее близкую к той, в которой cell работает в настоящей Exadata.  

Собственно диалог изменения типа инстанса.



На следующем шаге нужно добавить дисков - по умолчанию у нас всего 15Gb 

Для нормальной работы cell нам понадобиться  как минимум 15Gb, поэтому я просто расширяю свой диск на 15 Gb и получаю 30Gb дискового пространства. Обращаю ваше внимание что у Amazon масса способов получить самое разное по скорости и объему дисков пространство. Так что все зависит только от бюджета. 

Диск расширяется таким образом: вы должны сделать snapshot текущего диска, затем на его основе новый volume с увеличенным размером (30Gb в моем случае), затем должны старый volume отключить от инстанса и подключить ваш новый. У Amazon есть инструкция

Важные детали 
- создавать snapshot и новый volume вы должна в той же availability zone  (eu-west1-1b в моем примере) что и ваш инстанс, иначе подключить не получится
- когда будете подключать диск обратно, нужно указать /dev/sda1 а не то что предлагают по умолчанию (мы расширяем основной диск), иначе машина больше не загрузится 
- после того как все удалось не забудьте удалить snapshot и не нужный старый volume 



Все, у нас все есть, ресурсы, настройки, правильная версия ядра. 

Устанавливаем cell rpm

[root@ip-172-31-24-72 media]# rpm -ivh cell-12.1.1.1.1_LINUX.X64_140712-1.x86_64.rpm
Подготовка...     ########################################### [100%]
Pre Installation steps in progress ...
   1:cell                   ########################################### [100%]
Post Installation steps in progress ...
Set cellusers group for /opt/oracle/cell12.1.1.1.1_LINUX.X64_140712/cellsrv/deploy/log directory
Set 775 permissions for /opt/oracle/cell12.1.1.1.1_LINUX.X64_140712/cellsrv/deploy/log directory
/opt/oracle/cell12.1.1.1.1_LINUX.X64_140712/cellsrv/deploy
/opt/oracle/cell12.1.1.1.1_LINUX.X64_140712/cellsrv/deploy
/opt/oracle/cell12.1.1.1.1_LINUX.X64_140712
Installation SUCCESSFUL.
Starting RS and MS... as user celladmin
Done. Please Login as user celladmin and create cell to startup CELLSRV to complete cell configuration.
If this is a manual installation, please stop and restart ExaWatcher to pick up newly installed binaries.
You can run "/opt/oracle.ExaWatcher/ExaWatcher.sh --stop" and then "/opt/oracle.ExaWatcher/ExaWatcher.sh --fromconf" to stop and restart ExaWatcher.
Logout and then re-login to use the new cell environment.


На самом деле, cellsrv не стартует пока мы не настроим его параметры 

vi /opt/oracle/cell12.1.1.1.1_LINUX.X64_140712/cellsrv/deploy/config/cellinit.ora

#CELL Initialization Parameters
version=0.0
DEPLOYED=TRUE
HTTP_PORT=8888
RMI_PORT=23791
SSL_PORT=23943
JMS_PORT=9127
BMC_SNMP_PORT=162
# Additional parameters

_cell_executing_in_vm=TRUE
_cell_1mb_buffers_hugepage_support=FALSE  # in Amazon env without huge pages
_cell_reserve_hugepage_memory_mb=0        # in Amazon env without huge pages
ipaddress1=172.31.24.72/16

Хочу пояснить про hugepages и Amazon. Вот тут есть хорошая дискуссия на эту тему. В общем их наличие или отсутсвие зависит от того как вы создавали свою виртуальную машину. 

До того как мы выполним создание ячейки, нужно создать несколько файлов (или symlink) которые будет эмулировать диски Exadata. Я  крайне рекомендую вам создать именно то кол-во дисков и Flash устройств как показано ниже. Мои попытки играть с этим закончились плачевно. 

as root 
mkdir -p /opt/oracle/cell12.1.1.1.1_LINUX.X64_140712/disks/raw

Создаем 12 cell дисков по 1Gb

1..12
dd if=/dev/zero of=cell1_DISK01 bs=1048576 count=1024

6 Flash дисков по 512 Mb 

1..6 
dd if=/dev/zero of=cell1_DISK01 bs=1048576 count=512

-rw-r--r-- 1 root root 1073741824 Ноя 24 03:47 cell1_DISK01
-rw-r--r-- 1 root root 1073741824 Ноя 24 03:47 cell1_DISK02
-rw-r--r-- 1 root root 1073741824 Ноя 24 03:47 cell1_DISK03
-rw-r--r-- 1 root root 1073741824 Ноя 24 03:47 cell1_DISK04
-rw-r--r-- 1 root root 1073741824 Ноя 24 03:47 cell1_DISK05
-rw-r--r-- 1 root root 1073741824 Ноя 24 03:47 cell1_DISK06
-rw-r--r-- 1 root root 1073741824 Ноя 24 03:48 cell1_DISK07
-rw-r--r-- 1 root root 1073741824 Ноя 24 03:48 cell1_DISK08
-rw-r--r-- 1 root root 1073741824 Ноя 24 03:48 cell1_DISK09
-rw-r--r-- 1 root root 1073741824 Ноя 24 03:49 cell1_DISK10
-rw-r--r-- 1 root root 1073741824 Ноя 24 03:49 cell1_DISK11
-rw-r--r-- 1 root root 1073741824 Ноя 24 03:49 cell1_DISK12
-rw-r--r-- 1 root root  536870912 Ноя 24 03:52 cell1_FLASH01
-rw-r--r-- 1 root root  536870912 Ноя 24 03:52 cell1_FLASH02
-rw-r--r-- 1 root root  536870912 Ноя 24 03:52 cell1_FLASH03
-rw-r--r-- 1 root root  536870912 Ноя 24 03:52 cell1_FLASH04
-rw-r--r-- 1 root root  536870912 Ноя 24 03:52 cell1_FLASH05
-rw-r--r-- 1 root root  536870912 Ноя 24 03:52 cell1_FLASH06


Мне не понадобилось создавать в них никакие partition 

Входим как пользователь celladmin, создаем cell под названием cell1 


CellCLI> create cell cell1 interconnect1=eth0
Cell cell1 successfully created
Starting CELLSRV services...
The STARTUP of CELLSRV services was successful.
Flash cell disks, FlashCache, and FlashLog will be created...
CellDisk FD_00_cell1 successfully created
CellDisk FD_01_cell1 successfully created
CellDisk FD_02_cell1 successfully created
CellDisk FD_03_cell1 successfully created
CellDisk FD_04_cell1 successfully created
CellDisk FD_05_cell1 successfully created
Flash log cell1_FLASHLOG successfully created
Flash cache cell1_FLASHCACHE successfully created


На мой взгляд, если вы не увидели, что создан Flashcase и Flash лог идти дальше бесполезно. Создать дисковую группу без этого у меня не получилось. Я не вижу в этом никакого смысла, но попытки работать просто с дисками были бесполезны. Видимо,  в коде  жестко предполагает наличие Flash. 

Можно полностью остановить/запустить cell чтобы убедиться что все в порядке. 

cellcli -e alter cell startup  services rs
cellcli -e alter cell startup  services ms
cellcli -e alter cell startup  services cellsrv

Или все одной командой 

cellcli -e alter cell startup  services all 
cellcli -e alter cell shutdown  services all


Мониторить процесс можно в alert.log 

tail -f   /opt/oracle/cell/log/diag/asm/cell/ip-172-31-24-72/trace/alert.log

Нам осталось создать celldisk и griddisk 


CellCLI> list celldisk
      FD_00_cell1      normal
      FD_01_cell1      normal
      FD_02_cell1      normal
      FD_03_cell1      normal
      FD_04_cell1      normal
      FD_05_cell1      normal

CellCLI> CREATE CELLDISK ALL HARDDISK
CellDisk CD_DISK01_cell1 successfully created
CellDisk CD_DISK02_cell1 successfully created
CellDisk CD_DISK03_cell1 successfully created
CellDisk CD_DISK04_cell1 successfully created
CellDisk CD_DISK05_cell1 successfully created
CellDisk CD_DISK06_cell1 successfully created
CellDisk CD_DISK07_cell1 successfully created
CellDisk CD_DISK08_cell1 successfully created
CellDisk CD_DISK09_cell1 successfully created
CellDisk CD_DISK10_cell1 successfully created
CellDisk CD_DISK11_cell1 successfully created
CellDisk CD_DISK12_cell1 successfully created

CellCLI> create griddisk all harddisk prefix=DATA
GridDisk DATA_CD_DISK01_cell1 successfully created
GridDisk DATA_CD_DISK02_cell1 successfully created
GridDisk DATA_CD_DISK03_cell1 successfully created
GridDisk DATA_CD_DISK04_cell1 successfully created
GridDisk DATA_CD_DISK05_cell1 successfully created
GridDisk DATA_CD_DISK06_cell1 successfully created
GridDisk DATA_CD_DISK07_cell1 successfully created
GridDisk DATA_CD_DISK08_cell1 successfully created
GridDisk DATA_CD_DISK09_cell1 successfully created
GridDisk DATA_CD_DISK10_cell1 successfully created
GridDisk DATA_CD_DISK11_cell1 successfully created
GridDisk DATA_CD_DISK12_cell1 successfully created


По умолчанию у вас появился сервис celld который предназначен для автозапуска cell. Мне это мешает, я его отключил. 

chkconfig celld off



CellCLI> list cell detail
      name:                    cell01
      bbuChargeThreshold:      800
      bbuTempThreshold:        60
      bmcType:                 absent
      cellVersion:             OSS_12.1.1.1.1_LINUX.X64_140712
      cpuCount:                8
      diagHistoryDays:         7
      fanCount:                0/0
      fanStatus:               normal
      flashCacheMode:          WriteThrough
      id:                      612b4a0a-cb81-45a5-a969-eefdec1ff325
      interconnectCount:       1
      interconnect1:           eth0
      iormBoost:               0
      ipaddress1:              172.31.24.72/20
      kernelVersion:           2.6.39-300.26.1.el5uek
      makeModel:               Fake hardware
      metricHistoryDays:       7
      offloadGroupEvents:
      offloadEfficiency:       1,0
      powerCount:              0/0
      powerStatus:             normal
      releaseVersion:          12.1.1.1.1
      releaseTrackingBug:      18084575
      status:                  online
      temperatureReading:      0.0
      temperatureStatus:       normal
      upTime:                  0 days, 0:03
      cellsrvStatus:           running
      msStatus:                running
      rsStatus:                running

Продолжение следует. Но оно уже примитивное, все ясно - нужно ставить Grid Infrastructure и подключать диски к ASM. 

3 комментария:

  1. Привет. Где можно скачать jdk-1.7.0_55-fcs.x86_64.rpm ?

    ОтветитьУдалить
    Ответы
    1. Интересный вопрос - вообще то имеется в виду обычный jdk,

      Эту версию можно взять тут
      http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u55-oth-JPR
      Но там файл называется jdk-7u55-linux-x64.rpm

      Но я явно привел название файла и придумать такое не мог. Мне кажется я нашел его там же где cell*.rpm. Я посмотрю - сейчас сходу не смог вспомнить.

      Удалить
  2. Автозагрузка RDS:
    Добавил в конец /etc/rc.d/rc.sysinit
    modprobe rds
    modprobe rds_tcp
    modprobe rds_rdma

    ОтветитьУдалить