Вот именно о данной возможности и пойдет речь далее.
Для рассмотрения данной возможности я использовал две виртуальные машины на базе Oracle VM-сервера 2.2.0 (x86 64 bit). В качестве гостевой операционной системы использовался Oracle Enterprise Linux 5.3 (x86). В качестве разделяемой системы хранения использовался Openfiler.
Установка Oracle Clusterware
Вначале установим Oracle Clusterware. На момент написания статьи, интеграция Oracle TimesTen и Oracle Clusterware возможна только на платформах Linux x86 и Linux x86-64, и только с версией Oracle Clusterware 11.1.0.7., поэтому после установки 11.1.0.6. необходимо поставить патчсет 11.1.0.7.
Процессу установки Oracle Clusterware посвящено достаточно много статей и поэтому я не буду детально описывать процесс установки. Только отмечу, что все машины должны использовать Network Time Protocol (NTP) или похожую систему для устранения расхождения во времени между машинами на интервал не больше чем 250 миллисекунд. Данное ограничение связано с функционированием active-standby pair репликации в Oracle TimesTen.
В данном примере я создал 2-ух узловой кластер со следующими настройками:
OS username / password:
• root/oracle
• oracle/oracle
Hostname raс1
• public IP 192.168.2.131
• virtual IP 192.168.2.31
• private IP 10.10.10.131
• IP for openfiler 172.16.2.131
Hostname rac2
• public IP 192.168.2.132
• virtual IP 192.168.2.32
• private IP 10.10.10.132
• IP for openfiler 172.16.2.132
Openfiler
• Public IP 172.16.2.1
Oracle Clusterware
• CRS_HOME=/u01/app/oracle/product/11.1.0/crs
Убедимся, что программное обеспечение Oracle Clusterware установлено и нормально функционирует.
[oracle@rac1 ~]$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora.rac1.gsd application ONLINE ONLINE rac1 ora.rac1.ons application ONLINE ONLINE rac1 ora.rac1.vip application ONLINE ONLINE rac1 ora.rac2.gsd application ONLINE ONLINE rac2 ora.rac2.ons application ONLINE ONLINE rac2 ora.rac2.vip application ONLINE ONLINE rac2 [oracle@rac1 ~]$
Также, убедимся что версия Oracle Clusterware соответствующая (11.1.0.7).
[oracle@rac1 ~]$ crsctl query crs activeversion Oracle Clusterware active version on the cluster is [11.1.0.7.0]
Установка Oracle TimesTen 11g
После установки Oracle Clusterware устанавливаем Oracle TimesTen 11.2. Установить необходимо на те же машины, на которых функционирует Oracle Clusterware.
Процесс установки Oracle TimesTen 11.2 детально описан здесь (http://ggsig.blogspot.com/2010/05/oracle-timesten_01.html), за одним исключением (пункт взаимодействия с Oracle Clusterware). На данном этапе установки, необходимо прописать директорию хоума CRS-а, после чего инсталлятор должен показать доступные узлы для конфигурации active-standby pair репликации. После чего можно определить узлы на которых будет работать репликация.
Would you like to use TimesTen Replication with Oracle Clusterware? [ no ]yes Please provide the path to the Oracle Clusterware installation on this machine (s=skip)? [ ] /u01/app/oracle/product/11.1.0/crs NOTE: The TimesTen Clusterware agent port must be the same on all nodes of the cluster. Please refer to the TimesTen documentation for additional information. Please enter a port number for the TimesTen Clusterware agent? [ 53386 ] Executing '/u01/app/oracle/product/11.1.0/crs/bin/crsctl check cluster' ... Oracle Clusterware is currently configured on the following nodes : 1. rac1 2. rac2 NOTE: By default, all of the nodes listed above will be added to the TimesTen Replication with Oracle Clusterware configuration. You can also specify your own list of nodes based on the list above. Would you like to specify a node list for TimesTen Replication with Oracle Clusterware? [ no ]После установки, проверим работу основного демона Oracle TimesTen
[oracle@rac1 ~]$ ttstatus TimesTen status report as of Fri Feb 19 08:54:30 2010 Daemon pid 12978 port 53384 instance tt1 TimesTen server pid 13016 started on port 53385 ------------------------------------------------------------------------ Accessible by group oinstall End of reportДалее необходимо повторить процедуру установки на втором узле. Для более легкого управления рекомендуется устанавливать программное обеспечение под одним пользователем и в те же директории.
Если вы вначале установили Oracle TimesTen и после этого установили Oracle Clusterware, то для активации возможности интеграции данных продуктов вам необходимо воспользоваться утилитой ttmodinstall
Создание базы данных
Создадим на обоих узлах следующие директории:
- /u01/app/datastore - для хранения всех баз данных Oracle TimesTen
- /u01/app/datastore/ha_ds – для базы данных «ha_ds», которую будем реплицировать.
[root@rac1 ~]$ mkdir /u01/app/datastore[root@rac1 ~]$ chown oracle:oinstall /u01/app/datastore [root@rac1 ~]$ mkdir /u01/app/datastore/ha_ds [root@rac1 ~]$ chown oracle:oinstall /u01/app/datastore/ha_ds
Далее выбираем один из узлов кластера для создания базы данных. В данном случае - это узел rac1. Cоздадим сущность в файле sys.odbc.ini.
… [ha_ds] Driver=/u01/app/oracle/product/11.2.1/TimesTen/tt1/lib/libtten.so DataStore=/u01/app/datastore/ha_ds PermSize=40 TempSize=32 PLSQL=1 DatabaseCharacterSet=AL32UTF8 …Далее соединяемся с базой данных «ha_ds» под администратором экземпляра Oracle TimesTen (пользователь, который устанавливал экземпляр Oracle TimesTen, в данном примере – это пользователь oracle) и создадим в ней необходимых пользователей:
- adm – администратор базы данных и репликации (для этого данному пользователю необходима привилегия ADMIN).
- app – пользователь имеющий минимальный набор привилегий, хозяин объектов.
[oracle@rac1 ~]$ ttisql ha_ds Copyright (c) 1996-2009, Oracle. All rights reserved. Type ? or "help" for help, type "exit" to quit ttIsql. connect "DSN=ha_ds"; Connection successful: DSN=ha_ds;UID=oracle;DataStore=/u01/app/datastore/ha_ds;
DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=US7ASCII;
DRIVER=/u01/app/oracle/product/11.2.1/TimesTen/tt1/lib/libtten.so;
PermSize=40;TempSize=32;TypeMode=0; (Default setting AutoCommit=1) Command> create user adm identified by adm; User created. Command> grant ADMIN to adm; Command> create user app identified by app; User created. Command> grant create session, create table to app; Command> exit; Disconnecting... Done. [oracle@rac1 ~]$
После этого соединяемся с базой данных под пользователем app и создаем таблицу plans.
[oracle@rac1 ~]$ ttisql "DSN=ha_ds;UID=app;PWD=app" Copyright (c) 1996-2009, Oracle. All rights reserved. Type ? or "help" for help, type "exit" to quit ttIsql. connect "DSN=ha_ds;UID=app;PWD=app"; Connection successful: DSN=ha_ds;UID=app;DataStore=/u01/app/datastore/ha_ds;
DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=US7ASCII;
DRIVER=/u01/app/oracle/product/11.2.1/TimesTen/tt1/lib/libtten.so;
PermSize=40;TempSize=32;TypeMode=0; (Default setting AutoCommit=1) Command> create table plans ( Id number(12), > Name varchar(32 char), > PricePerMin binary_double, > Status char(3 char), > primary key (Id) ); Command> exit; Disconnecting... Done. [oracle@rac1 ~]$
Конфигурирование Active-Standby pair репликации и Oracle Clusterware
После того, как установка Oracle Clusterware и Oracle TimesTen завершена, база данных в Oracle TimesTen создана, можно приступать к конфигурации Active-Standby pair репликации.
В данном примере описывается создание простой конфигурации (basic level of availability).
Вначале добавим сущность в cluster.oracle.ini в котором пропишем узлы на которых будет запущена репликация и директория для скриптов (check, start, stop для определенной репликации) для CRS-са.
… [ha_ds] MasterHosts=rac1,rac2 ScriptInstallDir=/u01/app/oracle/product/11.2.1/TimesTen/tt1/info/crs_scripts …Теперь нужно повторить настройки cluster.oracle.ini и sys.odbc.ini на втором узле.
Далее регистрируем TimesTen кластер в OCR.
[root@rac1 ~]$ cd /u01/app/oracle/product/11.2.1/TimesTen/tt1/bin/ [root@rac1 bin]$ ./ttCWAdmin -ocrconfig Oracle Clusterware home = /u01/app/oracle/product/11.1.0/crsЗапускаем агенты кластера TimesTen на обоих узлах.
[root@rac1 bin]$ ./ttCWAdmin -init Oracle Clusterware home = /u01/app/oracle/product/11.2.1/crs, hosts = rac1,rac2 =============================================================== Registering agent resources:... Registration complete. =============================================================== =============================================================== Registering daemon resources:... Registration complete. =============================================================== [root@rac1 bin]$После этого в CRS должны появиться четыре новых сервиса
[oracle@rac1 ~]$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ TT_A...le_RAC1 application ONLINE ONLINE rac1 TT_A...le_RAC2 application ONLINE ONLINE rac2 TT_D...le_RAC1 application ONLINE ONLINE rac1 TT_D...le_RAC2 application ONLINE ONLINE rac2 ora.rac1.gsd application ONLINE ONLINE rac1 ora.rac1.ons application ONLINE ONLINE rac1 ora.rac1.vip application ONLINE ONLINE rac1 ora.rac2.gsd application ONLINE ONLINE rac2 ora.rac2.ons application ONLINE ONLINE rac2 ora.rac2.vip application ONLINE ONLINE rac2 [oracle@rac1 ~]$
[oracle@rac2 ~]$ crs_stat … NAME=TT_Agent_tt1_oracle_RAC1 TYPE=application TARGET=ONLINE STATE=ONLINE on rac1 NAME=TT_Agent_tt1_oracle_RAC2 TYPE=application TARGET=ONLINE STATE=ONLINE on rac2 NAME=TT_Daemon_tt1_oracle_RAC1 TYPE=application TARGET=ONLINE STATE=ONLINE on rac1 NAME=TT_Daemon_tt1_oracle_RAC2 TYPE=application TARGET=ONLINE STATE=ONLINE on rac2 ...Также видим новые процессы на обоих узлах.
[oracle@rac2 ~]$ ps -ef | grep ttCRS oracle 5007 1 0 13:18 ? 00:00:00 /u01/app/oracle/product/11.2.1/TimesTen/tt1/bin/ttCRSdaemonCmd start oracle 5008 1 0 13:18 ? 00:00:00 /u01/app/oracle/product/11.2.1/TimesTen/tt1/bin/ttCRSAgentCmd startТеперь создаем Active-Standby pair репликацию. Данную репликацию можно создать двумя способами: используя команду create active standby pair replication или с помощью ttCWAdmin, но не обоями сразу!!! В данном случае создавать и управлять репликацией будем с помощью ttCWAdmin. При вводе имени пользователя с привелегией ADMIN вводим имя пользователя adm (создан на этапе создания базы данных и объектов).
[root@rac1 bin]$ ./ttCWAdmin -create -dsn ha_ds Successful connection with Oracle clusterware stack replication DDL = create active standby pair "HA_DS" on "rac1","HA_DS" on "rac2" Enter internal UID with ADMIN privileges: adm Enter password for the same UID: Enter any phrase for password encryption: Uid/Pwd verified on host rac1 Create active standby pair scheme on this host? (Y/N)Y Waiting for confirmation from hosts... Active Standby pair created on host rac1 ================================================================== Warning!! Data store on host(s) rac2 may be destroyed in order to be duplicated from active after the roll out. Please back up this data store manually if necessary, before executing ttCWAdmin -start Command ================================================================== Registering TimesTen Cluster with Oracle Clusterware ================================================================== Number of unregistered dsn resources = 2 Registering dsn resources:... Registration complete. ================================================================== ================================================================== Number of unregistered service resources = 2 Registering service resources:... Registration complete. ================================================================== [root@rac1 bin]$После этого в CRS появятся еще четыре сервиса, связанные непосредственно с репликацией HA_DS. Также можно увидеть что два из них не запущены - имеют статусы OFFLINE.
[oracle@rac1 info]$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ TT_A...e_HA_DS application ONLINE ONLINE rac1 TT_A...le_RAC1 application ONLINE ONLINE rac1 TT_A...le_RAC2 application ONLINE ONLINE rac2 TT_D...le_RAC1 application ONLINE ONLINE rac1 TT_D...le_RAC2 application ONLINE ONLINE rac2 TT_M...HA_DS_0 application OFFLINE OFFLINE TT_M...HA_DS_1 application OFFLINE OFFLINE TT_S...e_HA_DS application ONLINE ONLINE rac1 ora.rac1.gsd application ONLINE ONLINE rac1 ora.rac1.ons application ONLINE ONLINE rac1 ora.rac1.vip application ONLINE ONLINE rac1 ora.rac2.gsd application ONLINE ONLINE rac2 ora.rac2.ons application ONLINE ONLINE rac2 ora.rac2.vip application ONLINE ONLINE rac2 [oracle@rac1 info]$
[oracle@rac2 ~]$ crs_stat ... NAME=TT_Activeservice_tt1_oracle_HA_DS TYPE=application TARGET=ONLINE STATE=ONLINE on rac1 NAME=TT_Master_tt1_oracle_HA_DS_0 TYPE=application TARGET=OFFLINE STATE=OFFLINE NAME=TT_Master_tt1_oracle_HA_DS_1 TYPE=application TARGET=OFFLINE STATE=OFFLINE NAME=TT_Subservice_tt1_oracle_HA_DS TYPE=application TARGET=ONLINE STATE=ONLINE on rac1 ...Также, после этого в директории, прописанной в файле конфигурации репликации (cluster.oracle.ini) появяться ряд файлов для CRS(start, stop, check) для определенной репликации.
[oracle@rac2 crs_scripts]$ ls ... ora_tt_tt1_HA_DS_master_1.sh ora_tt_tt1_HA_DS_master_0.sh ora_tt_tt1_HA_DS_activeservice.sh ora_tt_tt1_HA_DS_subservice.shТеперь посмотрим состояние нашей репликации.
[root@rac1 bin]# ./ttCWAdmin -status TimesTen Cluster status report as of Wed Apr 14 17:00:19 2010 ==================================================================== TimesTen daemon monitors: Host:RAC1 Status: online Host:RAC2 Status: online ==================================================================== ==================================================================== TimesTen Cluster agents Host:RAC1 Status: online Host:RAC2 Status: online ==================================================================== Status of Cluster related to DSN HA_DS: ==================================================================== 1. Status of Cluster monitoring components: Monitor Process for Master Datastore 1 on Host RAC1: NOT RUNNING Monitor Process for Master Datastore 2 on Host RAC2: NOT RUNNING Monitor Process for Active datastore:RUNNING on Host rac1 Monitor Process for Standby datastore:RUNNING on Host rac1 2.Status of Datastores comprising the cluster Master Datastore 1: Host:RAC1 Status:AVAILABLE State:ACTIVE Master Datastore 2: Host:RAC2 Status:UNAVAILABLE State:UNKNOWN ==================================================================== The cluster containing the replicated DSN is offlineВидим также, что агенты кластера Oracle TimesTen запущены, репликация существует, но она не запущена.
Ну и теперь запустим нашу реприкацию.
[root@rac1 bin]$ ./ttCWAdmin -start -dsn ha_ds Successful connection with Oracle clusterware stack Starting Cluster resources with Oracle clusterware TimesTen Cluster is starting [root@rac1 bin]$Проверим статусы репликации.
[root@rac1 bin]$ ./ttCWAdmin –status TimesTen Cluster status report as of Sat Feb 27 14:49:00 2010 ================================================================== TimesTen daemon monitors: Host:RAC1 Status: online Host:RAC2 Status: online ================================================================== ================================================================== TimesTen Cluster agents Host:RAC1 Status: online Host:RAC2 Status: online ================================================================== Status of Cluster related to DSN HA_DS: ================================================================== 1. Status of Cluster monitoring components: Monitor Process for Master Datastore 1 on Host rac1: RUNNING Monitor Process for Master Datastore 2 on Host rac2: RUNNING Monitor Process for Active datastore:RUNNING on Host rac1 Monitor Process for Standby datastore:RUNNING on Host rac2 2.Status of Datastores comprising the cluster Master Datastore 1: Host:rac1 Status:AVAILABLE State:ACTIVE Master Datastore 2: Host:rac2 Status:AVAILABLE State:STANDBY ================================================================== The cluster containing the replicated DSN is onlineКак видно реплицируемая база данных находиться в состоянии online. Состояние узлов в состояниях Active и Standby. Проверим CRS.
[oracle@rac2 info]# crs_stat -t Name Type Target State Host ------------------------------------------------------------ TT_A...e_HA_DS application ONLINE ONLINE rac1 TT_A...le_RAC1 application ONLINE ONLINE rac1 TT_A...le_RAC2 application ONLINE ONLINE rac2 TT_D...le_RAC1 application ONLINE ONLINE rac1 TT_D...le_RAC2 application ONLINE ONLINE rac2 TT_M...HA_DS_0 application ONLINE ONLINE rac1 TT_M...HA_DS_1 application ONLINE ONLINE rac2 TT_S...e_HA_DS application ONLINE ONLINE rac1 ora.rac1.gsd application ONLINE ONLINE rac1 ora.rac1.ons application ONLINE ONLINE rac1 ora.rac1.vip application ONLINE ONLINE rac1 ora.rac2.gsd application ONLINE ONLINE rac2 ora.rac2.ons application ONLINE ONLINE rac2 ora.rac2.vip application ONLINE ONLINE rac2 [oracle@rac1 info]#Как видно, все сервисы находяться в рабочем состоянии.
На этом конфигурация Active-Standby pair репликации завершено.
Теперь если мы будем вносить изменения на Активном узле, все эти изменения будут передаваться на standby, причем standby открыт на чтение.
При возникновении сбоя на основном узле, CRS достаточно быстро (одной командой) переведет standby в состояние active, после чего пользователи смогут продолжить работу. Рассмотрение возможности client failover будут рассмотрены в следующих статьях.
Комментариев нет:
Отправить комментарий