Standby Express Pre/Post機能の便利な使い方 ~仮想IPのフェイルオーバ~

2016.04.12

こんにちは。YDCの やす です。 データベース関連の技術コラムをオープンしました。
このコラムではYDCのエンジニアがDBに関する様々な技術のご紹介や、 YDC独自のソフトウェア製品 「Standby Express」の 便利な機能や使い方について紹介していきます。

Standby Express はデータベースの障害復旧時の RTO(復旧に要する時間) と RPO(復旧で戻される時点) の短縮を低コストで実現することができる災害対策およびバックアップのためのソフトウェア製品です。

記念すべき第1回目の紹介内容は「Standby Express Pre/Post機能の便利な使い方 ~仮想IPのフェイルオーバ~」です。
Standby Express 5 では新たにPre/Postコマンド機能が追加されました。
今回はPre/Postコマンドに仮想IPの削除/追加コマンドを組み込み、 本番化した時に仮想IPをフェイルオーバする方法をご紹介します。
障害時に仮想IPをフェイルオーバさせることによって、アプリケーションは接続先を切り替えることなく、 業務を復旧させることができます。

環境
ホスト名 OS Oracle パブリックIPアドレス 説明
db01 Oracle Linux Server release 6.1 11.2.0.4 192.168.132.91/24 本番機
db02 Oracle Linux Server release 6.1 11.2.0.4 192.168.132.91/24 スタンバイ機

Pre/Postコマンドの事前設定

1. 仮想IPを設定するインターフェースを確認します。

# ip addr
1: lo: mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:0b:e3:c0 brd ff:ff:ff:ff:ff:ff
inet 192.168.132.91/24 brd 192.168.132.255 scope global eth0
inet6 fe80::20c:29ff:fe0b:e3c0/64 scope link
valid_lft forever preferred_lft forever

※今回はインターフェースeth0に仮想IP 192.168.132.93を設定します。

2. 本番機で仮想IPを追加します。

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

※下記を追記します。

IPADDR2=192.168.132.93
PREFIX2=24

3. 本番機でネットワークのサービスを再起動し、インタフェースを確認します。

# service network restart
# ip addr
1: lo: mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:0b:e3:c0 brd ff:ff:ff:ff:ff:ff
inet 192.168.132.91/24 brd 192.168.132.255 scope global eth0
inet 192.168.132.93/24 brd 192.168.132.255 scope global secondary eth0★仮想IPが追加されました。
inet6 fe80::20c:29ff:fe0b:e3c0/64 scope link
valid_lft forever preferred_lft forever

4. 本番機で sudoersにoracleユーザで実行する仮想IPの有効化・無効化する設定をします。

# visudo

※下記の設定をします。

#Defaults requiretty←★左記をコメントアウトします。

★下記を追記します。
oracle db01=NOPASSWD:/sbin/ip addr del 192.168.132.93/24 dev eth0
oracle db01=NOPASSWD:/bin/sed -i -e /IPADDR2/d /etc/sysconfig/network-scripts/ifcfg-eth0
oracle db01=NOPASSWD:/bin/sed -i -e /PREFIX2/d /etc/sysconfig/network-scripts/ifcfg-eth0
oracle db01=NOPASSWD:/sbin/ip addr add 192.168.132.93/24 dev eth0
oracle db01=NOPASSWD:/usr/bin/tee -a /etc/sysconfig/network-scripts/ifcfg-eth0

5. スタンバイ機でsudoersにoracleユーザで実行する仮想IPの有効化・無効化する設定をします。

# visudo

※下記の設定をします。

#Defaults requiretty←★左記をコメントアウトします。

★下記を追記します。
oracle db02=NOPASSWD:/sbin/ip addr del 192.168.132.93/24 dev eth0
oracle db02=NOPASSWD:/bin/sed -i -e /IPADDR2/d /etc/sysconfig/network-scripts/ifcfg-eth0
oracle db02=NOPASSWD:/bin/sed -i -e /PREFIX2/d /etc/sysconfig/network-scripts/ifcfg-eth0
oracle db02=NOPASSWD:/sbin/ip addr add 192.168.132.93/24 dev eth0
oracle db02=NOPASSWD:/usr/bin/tee -a /etc/sysconfig/network-scripts/ifcfg-eth0

6. IPアドレスの有効化・無効化の切り替えスクリプトを作成します。

※up_vip.shというファイルを作成し、下記を内容を記載します。

#!/bin/bash

sudo /sbin/ip addr add 192.168.132.93/24 dev eth0
echo IPADDR2=192.168.132.93 | sudo /usr/bin/tee -a /etc/sysconfig/network-scripts/ifcfg-eth0
echo PREFIX2=24 | sudo /usr/bin/tee -a /etc/sysconfig/network-scripts/ifcfg-eth0

※down_vip.shというファイルを作成し、下記を内容を記載します。

#! /bin/bash
sudo /sbin/ip addr del 192.168.132.93/24 dev eth0
sudo /bin/sed -i -e /IPADDR2/d /etc/sysconfig/network-scripts/ifcfg-eth0
sudo /bin/sed -i -e /PREFIX2/d /etc/sysconfig/network-scripts/ifcfg-eth0

7. Standby Expressの設定画面から作成したスクリプトをPreコマンド、Postコマンドに設定します。

※本番化のPreコマンド、Postコマンドにチェックし、実行するスクリプトを設定します。

sbex_1_1.jpg

※Preコマンドを設定します。ここではdown_vip.shというファイルを設定します。

sbex_1_2.jpg

※Postコマンドを設定します。ここではup_vip.shというファイルを設定します。

sbex_1_3.jpg

設定は以上になります。それでは実際に本番化をしてみましょう!

仮想IPのフェイルオーバの検証

1. 本番機、スタンバイ機のIPを事前に確認しておきます。

本番機

# ip addr
1: lo: mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:0b:e3:c0 brd ff:ff:ff:ff:ff:ff
inet 192.168.132.91/24 brd 192.168.132.255 scope global eth0
inet 192.168.132.93/24 brd 192.168.132.255 scope global secondary eth0
inet6 fe80::20c:29ff:fe0b:e3c0/64 scope link
valid_lft forever preferred_lft forever

スタンバイ機

# ip addr
1: lo: mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:cc:f6:32 brd ff:ff:ff:ff:ff:ff
inet 192.168.132.92/24 brd 192.168.132.255 scope global eth0
inet6 fe80::20c:29ff:fecc:f632/64 scope link
valid_lft forever preferred_lft forever

2. 本番化を実施します

$ /u01/app/oracle/standby_express/admin/orcl/bin/RUN_activate
------------------------------------------------------------------------------
| |
| Standby Express |
| |
| Activate Database Process |
| |
------------------------------------------------------------------------------

Run Activate Database Process (Y or N):
Y
INFO [2013/12/15 05:56:51](Activate)INFO-00005: スタンバイ・データベースのアクティベートを開始します。
INFO [2013/12/15 05:56:51](StandbyDB)INFO-00010: db02ノードのスタンバイ・データベースでOPEN_MODEをチェックしています。
INFO [2013/12/15 05:56:52](Activate)INFO-00115: db02グループの本番化プレコマンドを開始します。
INFO [2013/12/15 05:56:52](Activate)INFO-00139: db02グループの本番化プレコマンドが正常終了しました。
INFO [2013/12/15 05:56:52](StandbyDB)INFO-00010: db02ノードのスタンバイ・データベースでOPEN_MODEをチェックしています。
INFO [2013/12/15 05:56:52](StandbyDB)INFO-00109: db02ノードのスタンバイ・データベースから、転送済みSCNを取得しています。
INFO [2013/12/15 05:56:52](StandbyDB)INFO-00010: db02ノードのスタンバイ・データベースでOPEN_MODEをチェックしています。
INFO [2013/12/15 05:56:53](StandbyDB)INFO-00039: db02ノードのスタンバイ・データベースから、適用済みSCNを取得しています。

APPLY_SCN_TIME = 2013/12/15 03:50:14
TRANS_SCN_TIME = 2013/12/15 03:50:14

Please enter time to activate would you like. [yyyy/mm/dd hh:mm:ss]:
2013/12/15 03:50:14
INFO [2013/12/15 05:57:27](Activate)INFO-00028: db02ノードのスタンバイ・データベースをアクティベートしています。
INFO [2013/12/15 05:57:30](Activate)INFO-00074: db02ノードのデータベースを、MOUNTで起動しています。
INFO [2013/12/15 05:57:38](StandbyDB)INFO-00093: /dev/shmの領域が解放されるのを待っています。
INFO [2013/12/15 05:57:41](StandbyDB)INFO-00094: /dev/shmの領域が解放されました。
INFO [2013/12/15 05:57:48](Activate)INFO-00018: db02ノードで一時表領域を作成しています。
INFO [2013/12/15 05:57:56](StandbyDB)INFO-00010: db02ノードのスタンバイ・データベースでOPEN_MODEをチェックしています。
INFO [2013/12/15 05:57:56](Activate)INFO-00121: db02グループの本番化ポストコマンドを開始します。
INFO [2013/12/15 05:57:56](PrePost)IPADDR2=192.168.132.93
INFO [2013/12/15 05:57:56](PrePost)PREFIX2=24
INFO [2013/12/15 05:57:56](Activate)INFO-00145: db02グループの本番化ポストコマンドが正常終了しました。
INFO [2013/12/15 05:57:56](Activate) ----------------------------------------------------------------------------------
INFO [2013/12/15 05:57:56](Activate) | スタンバイ・データベースは、2013/12/15 03:50:14 時点の状態で本番化され ました。 |
INFO [2013/12/15 05:57:56](Activate) ----------------------------------------------------------------------------------
INFO [2013/12/15 05:57:56](Activate)INFO-00043: 処理が正常に終了しました。

3. 本番機、スタンバイ機のIPを確認します。

本番機

# ip addr
1: lo: mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:0b:e3:c0 brd ff:ff:ff:ff:ff:ff
inet 192.168.132.91/24 brd 192.168.132.255 scope global eth0
inet6 fe80::20c:29ff:fe0b:e3c0/64 scope link
valid_lft forever preferred_lft forever

スタンバイ機

# ip addr
1: lo: mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:cc:f6:32 brd ff:ff:ff:ff:ff:ff
inet 192.168.132.92/24 brd 192.168.132.255 scope global eth0
inet 192.168.132.93/24 scope global secondary eth0★フェイルオーバーしました。
inet6 fe80::20c:29ff:fecc:f632/64 scope link
valid_lft forever preferred_lft forever


どうでしたか?意外と簡単だったのではないでしょうか。
ぜひPre/Postコマンドを活用し、システム障害にご備えください。

Standby Expressに関するお問合わせ

  • TEL 042-333-6217
  • FAX 042-352-6101
  • LINE
  • Mail