ターボリナックス株式会社
Turbolinux CLUSTERPRO X 3.0
簡易導入ガイド
~ MySQL 編 ~
Turbolinux CLUSTERPRO X 3.0
簡易導入ガイド
~ MySQL 編 ~
©2011 Turbolinux, Inc. All rights reserved.
本書の一部、または全部を著作権所有者の許諾なしに、商用目的のために複製、配布することはできません。
Turbolinux、ターボリナックスの名称およびロゴはターボリナックス株式会社の商標または登録商標です。Linux は Linus Torvalds 氏の米国および他の国における商標です。CLUSTERPRO® X は日本電気株式会社の登録商標です。FastSyncTMは
日本電気株式会社の商標です。RPM は Red Hat, Inc.の商標です。X Window System は X Consortium,Inc.の商標です。 Microsoft、Windows は、米国 Microsoft Corporation の米国およびその他の国における登録商標です。
その他、記載された会社名およびロゴ、製品名などは該当する会社の商標または登録商標です。本ガイドでは、©、®、TM の表示 を省略しています。ご了承ください。
1 章.はじめに...5
1.1.事前確認...5
1.2.参考情報...5
2 章.クラスタシステム構成について...7
2.1.ミラー型クラスタシステムの概要...7
2.2.クラスタ構成情報について...8
3 章.クラスタシステム導入...12
3.1.現用系サーバ server1 の導入作業...12
3.1.1.OS(Turbolinux 11 Server)のインストール...12 3.1.2.OS(Turbolinux 11 Server)のライセンス登録...12 3.1.3.CLUSTERPRO インストールの事前準備...13 3.1.3.1.ミラーディスクの設定... 13 3.1.3.2.OS 起動時間の設定... 14 3.1.3.3.ネットワークの設定... 14 3.1.3.4.ファイアウォールの設定... 14 3.1.3.5.サーバ時刻の同期設定... 15 3.1.4.CLUSTERPRO のインストール...15 3.1.5.CLUSTERPRO のライセンス登録...15 3.1.5.1.CLUSTERPRO(本体)のライセンス登録...15 3.1.5.2.オプション製品 Replicator のノードライセンス登録...16 3.1.5.3.オプション製品 Database Agent のノードライセンス登録...16 3.1.6.MySQL のインストール...16 3.1.6.1.MySQL インストールの事前準備... 16 3.1.6.2.MySQL バイナリファイルのコピー...17 3.1.6.3.ユーザ及びグループの作成... 17 3.1.6.4.MySQL Server システム・テーブルの作成...18 3.1.6.5.MySQL 設定ファイルの準備...18 3.1.6.6.MySQL サーバの起動・停止スクリプトの準備...19 3.1.6.7.MySQL ユーザの追加... 193.2.待機系サーバ server2 の導入作業...20
3.2.1.OS(Turbolinux 11 Server)のインストール...20 3.2.2.OS(Turbolinux 11 Server)のライセンス登録...20 3.2.3.CLUSTERPRO インストールの事前準備...20 3.2.3.1.ミラーディスクの設定... 20 3.2.3.2.OS 起動時間の設定... 20 3.2.3.3.ファイアウォールの設定... 20 3.2.3.4.サーバ時刻の同期設定... 21 3.2.4.CLUSTERPRO のインストール...21 3.2.5.CLUSTERPRO のライセンス登録...21 3.2.5.1.CLUSTERPRO(本体)のライセンスを確認...21 3.2.5.2.オプション製品 Replicator のノードライセンス登録...21 3.2.5.3.オプション製品 Database Agent のノードライセンス登録...213.3.クラスタ構成情報の作成と生成...21
3.3.1.クラスタ構成情報の作成...21 3.3.2.クラスタシステムの生成...39 3.3.3.クラスタシステム生成後の確認...403.4.CLUSTERPRO で MySQL を管理するための設定...40
3.4.1.MySQL のデータに係わる設定...40 3.4.2.クラスタシステムで MySQL サーバを起動・停止するための設定...42 3.4.3.クラスタシステムで MySQL サーバを死活監視するための設定...46 3.4.3.1.MySQL モニタリソース用 MySQL データベースとユーザの作成...46 3.4.3.2.MySQL モニタリソースの追加... 47 3.4.3.3.MySQL モニタリソースの動作確認...494 章.導入後に...51
4.1.MySQL に係わる設定の確認...51
4.1.1.MySQL に係わるディレクトリやファイルについて...51 4.1.2.MySQL のサーバ変数の確認...51 4.1.3.MySQL に関連する OS の設定...53 4.1.3.1.MySQL サーバに接続するクライアント数に関連する設定...53 4.1.3.2.MySQL サーバが使用するファイル数に関連する設定...544.2.待機系サーバを有効活用する...54
4.2.1.MySQL の管理ツール phpMyAdmin を導入...54 4.2.2.phpMyAdmin をクラスタに追加...56 4.2.2.1.事前準備... 56 4.2.2.2.グループの追加... 564.3.ユーザ・アプリケーションを使用した死活監視を行う場合...62
4.3.1.事前準備...62 4.3.2.ユーザ・アプリケーション用の EXEC リソースと PID モニタリソースの追加...624.4.クラスタシステムの評価について...67
付録 A.構成情報ファイル...68
A.1.clp.conf...68 A.2.scripts/MySQLGroup/exec1/start.sh...70 A.3.scripts/MySQLGroup/exec1/stop.sh...701章. はじめに
本資料は、Turbolinux CLUSTERPRO X 3.0(以降 CLUSTERPRO)を使用し、MySQL Standard Edition (以降 MySQL)をクラスタ化(フェイルーバクラスタ)するために必要なクラスタシステム導入や設定方法について具 体的な構成例を基に説明しています。
1.1. 事前確認
本資料を基にクラスタシステムを構築する場合は、下記の CLUSTERPRO(本体)製品パッケージやオプション製 品である Turbolinux CLUSTERPRO X Replicator 3.0(以降 Replicator)、Turbolinux CLUSTERPRO X Database Agent 3.0(以降 Database Agent)、MySQL 製品の収録物がお手元にあることを確認してください。
✗ Turbolinux 11 Server サービスパック 1 インストール CD(32ビット版もしくは 64 ビット版) サーバへ OS である Turbolinux 11 Server をインストールする際に使用する CD-ROM です。 ✗ Turbolinux ソフトウェア使用許諾契約書 Turbolinux 11 Server のライセンスを登録する際に必要となるシリアル番号が記載された印刷物です。 ✗ Turbolinux CLUSTERPRO X 3.0 CD サーバへ CLUSTERPRO をインストールする際に使用する CD-ROM です。 ✗ ソフトウェアライセンスキー証明 CLUSTERPRO もくしは CLUSTERPRO のオプション製品を稼動させるために必要となるライセンスキーが 記載された印刷物です。 ✗ MySQL Editions CD サーバへ MySQL をインストールする際に使用する CD-ROM です。
1.2. 参考情報
本資料の参考情報として、下記ドキュメントを合わせて確認してください。 ✗ Turbolinux 11 Server:インストールガイドCLUSTERPRO に付属している Turbolinux 11 Server をインストールする際に合わせて確認してください。 本ガイドは、印刷物が CLUSTERPRO の製品パッケージに同梱されています。また、次の URL で参照すること ができます。 http://www.turbolinux.co.jp/products/server/11s/install_guide/index.html ✗ Turbolinux 11 Server:ユーザーガイド Turbolinux 11 Server http://www.turbolinux.co.jp/products/server/11s/user_guide/index.html
✗ CLUSTERPRO:スタートアップガイド CLUSTERPRO をはじめてご使用になる方を対象に、CLUSTERPRO の製品概要、クラスタシステム導入の ロードマップ、他マニュアルの使用方法についてのガイドラインを記載しています。また、最新の動作環境情報や 制限事項などについても紹介しています。本ガイドは、「Turbolinux CLUSTERPRO X 3.0 CD」に、ファイル名 L30_SG_JP_06.pdf として収録しています。また、次の URL で参照することができます。 http://www.turbolinux.co.jp/support/document/manual/index.html ✗ CLUSTERPRO:インストール&設定ガイド CLUSTERPRO を使用したクラスタシステムの導入を行うシステムエンジニアと、クラスタシステム導入後の 保守・運用を行うシステム管理者を対象読者とし、CLUSTERPRO を使用したクラスタシステム導入から運用開 始前までに必須の事項について説明しています。本ガイドは、「Turbolinux CLUSTERPRO X 3.0 CD」に、 ファイル名 L30_IG_JP_06.pdf として収録しています。また、次の URL で参照することができます。 http://www.turbolinux.co.jp/support/document/manual/index.html ✗ CLUSTERPRO:リファレンスガイド システム管理者を対象に、クラスタシステム設計時に理解しておくべきリソースの詳細情報、製品の機能詳細、 メンテナンス関連情報およびトラブルシューティング情報について記載しています。本ガイドは、「Turbolinux CLUSTERPRO X 3.0 CD」に、ファイル名 L30_RG_JP_06.pdf として収録しています。また、次の URL で参 照することができます。 http://www.turbolinux.co.jp/support/document/manual/index.html ✗ CLUSTERPRO:統合 WebManager 管理者ガイド
CLUSTERPRO X 統合 WebManager(以下、統合 WebManager)を使用したクラスタシステム導入時に 必須の事項について、実際の手順に則して詳細を説明しています。本ガイドは、「Turbolinux CLUSTERPRO X 3.0 CD」に、ファイル名 X30_IWM_JP_01.pdf として収録しています。また、次の URL で参照することができ ます。
http://www.turbolinux.co.jp/support/document/manual/index.html ✗ MySQL 5.5 Reference Manual
MySQL の導入や MySQL を使用したシステム開発を行うシステムエンジニア、導入後の保守・運用を行うシ ステム管理者を対象者として、MySQL の導入から設定、開発やチュニーニング方法等を詳細に説明しています。 本マニュアルは、「MySQL Editions CD」の manual フォルダに収録されています。
2章. クラスタシステム構成について
本章では、本資料で説明する CLUSTERPRO を使用したクラスタシステムの構成について説明しています。2.1. ミラー型クラスタシステムの概要
本資料で説明する CLUSTERPRO を使用したクラスタシステムの構成を図 1:ミラー型クラスタシステム構成図に まとめます。 このクラスタシステムは、「server1」を現用系サーバとして MySQL を動作させ何らかの障害が発生した場合に待 機系サーバ「server2」で MySQL を動作させる非常にシンプルな片方向スタンバイクラスタとして構築し、MySQL が取り扱うデータは、CLUSTERPRO のオプション製品 Turbolinux CLUSTERPRO X Replicator 3.0 の機能を 使用したミラーディスクに保存します。また、クラスタ対象のアプリケーションである MySQL のクライアントは、現用系 サーバもしくは待機系サーバの IP アドレスではなく、CLUSTERPRO が管理するフローティング IP に対してアクセス します。 クラスタシステムの設計については、「CLUSTERPRO:インストール&設定ガイド」の「第 2 章 クラスタシス テムを設計する」を参照してください。 各サーバのネットワークに係る設定を表 1:各サーバのネットワーク設定にまとめます。本クラスタシステムでは各 サーバに2つのネットワークを使用し、パブリック LAN 側では主に MySQL のクライアントに対するサービスを提供す るために使用し、インタコネクト LAN 側は、サーバ間の死活監視を行うために使用します。またクラスタシステムの信 頼性を高めるために、各サーバの COM ポートに接続されたクロスケーブルも使用してサーバ間の死活監視を行いま す。 図 1:ミラー型クラスタシステム構成図サーバ間の死活監視については、「CLUSTERPRO:インストール&設定ガイド」の「第 2 章 クラスタシステ ムを設計する」「ハートビートリソースを理解する」を参照してください。 表 1:各サーバのネットワーク設定 項目 現用系サーバ 「server1」 待機系サーバ 「server2」 パブリック LAN 側ネットワークインタフェース名 eth0 eth0
パブリック LAN 側 IP アドレス 192.168.10.11 192.168.10.12 パブリック LAN 側サブネットマスク 255.255.255.0 255.255.255.0 インタコネクト LAN 側ネットワークインタフェース名 eth1 eth1
インタコネクト LAN 側 IP アドレス 10.0.0.1 10.0.0.2 インタコネクト LAN 側サブネットマスク 255.0.0.0 255.0.0.0
デフォルトゲートウェイ 192.168.10.1 192.168.10.1
CLUSTERPRO が管理するフローティング IP アドレス 192.168.10.9 , 192.168.10.10
本クラスタシステムの各サーバには2つの物理ディスク(もしくは RAID 構成等による論理ディスク)を接続し、一つ 目のディスク(/dev/sda)に OS である Turbolinux 11 Server や CLUSTERPRO、クラスタ対象のアプリケーション である MySQL の実行ファイル等を導入し、二つ目のディスク(/dev/sdb)には MySQL が取り扱うデータを格納しま す。また、一部 CLUSTERPRO がミラーの状態を管理する(CLUSTER パーティション)ために使用します。 クラスタシステムにおけるディスクの構成については、「CLUSTERPRO:インストール&設定ガイド」の「第 1 章 システム構成を決定する」「ハードウェア構成後の設定」を参照してください。 本クラスタシステムを使用して MySQL を運用することにより、次のメリットがあります。 ✔ 現用系サーバにおいてハードウェア障害やネットワーク障害、OS 等のソフトウェア障害により現用系サーバが 停止もしくはクライアントから MySQL に接続できなくなった場合、待機系サーバにおいて MySQL が起動し てサービスの提供を開始するため、クライアントは短時間(数分)の停止はあるが、継続してサービスを利用す ることができる ✔ 何らかの原因により現用系サーバにおいて稼働する MySQL に対してクライアントから接続できなくなった場 合、待機系サーバにおいて MySQL が起動してサービスの提供を開始するため、クライアントは短時間(数 分)の停止はあるが、継続してサービスを利用することができる ✔ 運用上の都合により現用系サーバを再起動する必要がある場合、システム管理者の操作により簡単に現用 系サーバにおいて稼働する MySQL を停止させ、待機系サーバへフェイルオーバさせることが可能です。
2.2. クラスタ構成情報について
CLUTERPRO では、クラスタシステムの構成内容を記述するデータのことを、クラスタ構成情報と呼びます。本資 料で説明する CLUSTERPRO を使用したクラスタシステムの構成情報を表 2:クラスタ構成情報にまとめます。 クラスタ構成情報の作成については、「CLUSTERPRO:インストール&設定ガイド」の「第 5 章 クラスタ構 成情報を作成する」を参照してください。表 2:クラスタ構成情報 設定対象 設定パラメータ 設定値 クラスタ構成 クラスタ名 cluster サーバ数 2 フェイルオーバ グループ数 2 モニタリソース数 7 ハートビート リソース LAN ハートビート数 2 カーネルモード LAN ハートビート数 2 COM ハートビート数 1 ディスクハートビート数 0 NP リソース PingNP 192.168.10.1 現用系サーバ サーバ名 server1 インタコネクトの IP アドレス(専用) 10.0.0.1 インタコネクトの IP アドレス(バックアップ) 192.168.10.11 パブリックの IP アドレス 192.168.10.11 COM ハートビートデバイス /dev/ttyS0 ディスクハートビートデバイス -ミラーディスクコネクト 10.0.0.1 待機系サーバ サーバ名 server2 インタコネクトの IP アドレス(専用) 10.0.0.2 インタコネクトの IP アドレス(バックアップ) 192.168.10.12 パブリックの IP アドレス 192.168.10.12 COM ハートビートデバイス /dev/ttyS0 ディスクハートビートデバイス -ミラーディスクコネクト 10.0.0.2 管理用のグループ (WebManager 用) タイプ フェイルオーバ グループ名 ManagementGroup 起動サーバ 全てのサーバ グループリソース数 1 管理用グループのグ ループリソース タイプ floating ip resource グループリソース名 ManagementIP IP アドレス 192.168.10.9 MySQL 用グループ タイプ フェイルオーバ
設定対象 設定パラメータ 設定値 グループ名 MySQLGroup 起動サーバ 全てのサーバ グループリソース数 3 MySQL 用グループ の、1 つ目のグループ リソース タイプ floating ip resource グループリソース名 fip1 IP アドレス 192.168.10.10 MySQL 用グループ の、2 つ目のグループ リソース
タイプ mirror disk resource
グループリソース名 md1 ミラーパーティションデバイス名 /dev/NMP1 マウントポイント /mnt/md1 データパーティションデバイス名 /dev/sdb2 クラスタパーティションデバイス名 /dev/sdb1 ファイルシステム ext3 MySQL 用グループ の、3 つ目のグループ リソース タイプ execute resource グループリソース名 exec1 スクリプト 標準スクリプト
1 つ目のモニタリソース タイプ user mode monitor
モニタリソース名 userw 2 つ目のモニタリソース タイプ disk monitor モニタリソース名 diskw1 デバイス名 /dev/sdb2 監視方法 read(O_DIRECT) 監視タイミング 常時 監視対象 -異常検出時 何もしない
3 つ目のモニタリソース タイプ NIC Link Up/Down monitor
モニタリソース名 miiw1
監視対象 eth0
異常検出時 “ManagementGroup”グループ
のフェイルオーバ
4 つ目のモニタリソース タイプ NIC Link Up/Down monitor
モニタリソース名 miiw2
設定対象 設定パラメータ 設定値
異常検出時 “MySQLGroup”グループのフェ
イルオーバ
5 つ目のモニタリソース タイプ mirror disk connect monitor
モニタリソース名 mdnw1
監視ミラーディスクリソース md1
異常検出時 何もしない
6 つ目のモニタリソース タイプ mirror disk monitor
モニタリソース名 mdw1 監視ミラーディスクリソース md1 異常検出時 何もしない 7 つ目のモニタリソース タイプ MySQL minitor モニタリソース名 mysqlw1 監視対象 MySQL サーバ 異常検出時 “MySQLGroup”グループのフェ イルオーバ
3章. クラスタシステム導入
本章では、本資料で説明する CLUSTERPRO を使用したクラスタシステムの導入方法について説明しています。
3.1. 現用系サーバ server1 の導入作業
3.1.1. OS(Turbolinux 11 Server)のインストール
現用系サーバである server1 に OS(Turbolinux 11 Server)をインストールします。OS は、1つ目のディスク (/dev/sda)にインストールし、二つ目のディスク(/dev/sdb)については OS のインストール時に設定等は行いませ ん。また、ネットワーク設定については、「2 章.クラスタシステム構成について」の通り eth0,eth1 ともに設定し、インス トールタイプは「標準サーバー」を選択してインストールします。
Turbolinux 11 Server のインストール方法については、「Turbolinux 11 Server:インストールガイド」を 参照してください。 OS インストール後に OpenSSH を使用してリモート・コンピュータから操作を実行するには、次の処理を実施します。 ✔ リモート・コンピュータから ssh 接続で root アカウントとしてログインする場合は、OpenSSH の設定ファイル を変更します (設定ファイル/etc/ssh/sshd_config に次の行を追加します) PermitRootLogin yes ✔ root アカウントで次のコマンドを実行して OpenSSH サーバを起動します # service sshd restart ✔ OS が起動する際に OpenSSH サーバを起動させる場合は次のコマンドを root アカウントで実行します # chkconfig sshd on
OpenSSH の詳細な情報については、「Turbolinux 11 Server:ユーザーガイド」の「第 21 章 SSH(Secure SHell)サーバー」を参照してください。 3.1.2. OS(Turbolinux 11 Server)のライセンス登録 インストール後に Turbolinux 11 Server のライセンス登録を行います。ライセンスの登録は、コンソールにおいて コマンド「turbolicensecfg」を実行して、製品シリアル番号1等の必要な情報を入力します。ライセンスを登録すること により、ターボリナックスがインターネットに公開している不具合やセキュリティホールを修正したパッケージを、ネット ワーク経由でアップデートすることが可能になります。 1 製品シリアル番号とは、CLUSTERPRO 製品パッケージに含まれている「Turbolinux ソフトウェア使用許諾契約書」に記載されている「シリア ル No」です。
Turbolinux 11 Server のライセンス登録については、「Turbolinux 11 Server:インストールガイド」「第 5 章 ライセンス登録とパッケージアップデート」を参照してください。 3.1.3. CLUSTERPRO インストールの事前準備 現用系サーバである server1 に CLUSTERPRO をインストールする前に、以下の作業を実施します。 3.1.3.1. ミラーディスクの設定 現用系サーバである server1 に接続している2つ目のディスク(/dev/sdb)にパーティション設定を行います。パー ティションを表 3:ミラー用ディスクのパーティション構成にまとめます。 表 3:ミラー用ディスクのパーティション構成 デバイス名 パーティション ID 容量 用途 /dev/sdb1 83 10M バイト以上 CLUSTER パーティション /dev/sdb2 83 残り全て ミラーリソース用パーティション ミラーディスクの設定については、「CLUSTERPRO:インストール&設定ガイド」「第 1 章 システム構成を 決定する」「4. ミラーディスクリソース用のパーティションを設定する」を参照してください。 ディスクのパーティション設定は、root アカウントで fdisk コマンドを使用します。 (パーティションの設定と確認) # fdisk /dev/sdb # fdisk -l /dev/sdb
Disk /dev/sdb: xxxxx MB, xxxxxxxxxxx bytes ~~~ cylinders
Units = cylinders of ~~~ bytes
Device Boot Start End Blocks Id System /dev/sdb1 1 2 16033+ 83 Linux /dev/sdb2 3 ??? ???????? 83 Linux
fdisk については、「Turbolinux 11 Server:ユーザーガイド」「第 37 章 ファイルシステム」「37.3. パーティ ションの作成と削除」を参照してください。 パーティション設定後に、root アカウントで下記のコマンドを実行して CLUSTER パーティションを初期化します。 (CLUSTER パーティションの初期化) # dd if=/dev/zero of=/dev/sdb1 上記 fdisk コマンドや dd コマンドを実行すると、ディスクの設定を変更したりディスクに保存されている データを消去するため、設定対象以外のディスクを指定しないように注意してください。 ミラーリソース用パーティションをマウントするためのディレクトリを作成します。root アカウントで次のコマンドを実行 します。
(ミラーリソース用パーティションのマウント・ポイントを作成) # mkdir /mnt/md1 次にミラーリソース用パーティションに Ext3 ファイルシステムを作成します。 (ミラーリソース用パーティションをフォーマット) # mke3fs /dev/sdb2 ミラーリソース用パーティションの情報を、/etc/fstab に記述する必要はありません。 3.1.3.2. OS 起動時間の設定 サーバの再起動でフェイルオーバを発生させたい場合に、ハートビートタイムアウト時間内にそのサーバが再起動 してしまうと、相手側からはハートビートが継続しているとみなされフェイルオーバが発生しないため、サーバの電源を 投入してから OS が起動する時間を”ハートビートタイムアウト時間(規定値は 90 秒)”以上に長くなるよう OS のブー トローダである GRUB の設定ファイルを編集します。
(GRUB 設定ファイル/boot/grub/grub.conf の timeout 値を変更)
timeout 90
OS 起動時間の設定については、「CLUSTERPRO:インストール&設定ガイド」「第 1 章 システム構成を決 定する」「5. OS 起動時間を調整する」を参照してください。また、GRUB については「Turbolinux 11 Server:ユーザーガイド」の「第 2 章 GRUB(GRand Unified Bootloader)」を参照してください。
3.1.3.3. ネットワークの設定 現用系サーバと待機系サーバ間におけるネットワークが正常に動作している必要があります。パブリック LAN 及び インタコネクト LAN を介して、ping や ssh コマンドを使用してサーバ間で通信することが可能か確認します。またサー バ間の名前解決に DNS サーバを利用せず、双方のサーバの hosts ファイルを次のように設定します。 /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.10.11 server1.intra.jp server1 10.0.0.1 server1.intra.jp server1 192.168.10.12 server2.intra.jp server2 10.0.0.2 server2.intra.jp server2 3.1.3.4. ファイアウォールの設定 CLUSTERPRO はいくつかのポートを使用してサーバ間で通信を行います。本クラスタシステムでは iptables 等 のファイアウォールは使用しませんが、設定する場合は CLUSTERPRO が使用するポートをクラスタシステムを構成 するサーバ間で使用できるようにファイアウォールの設定する必要があります。 CLUSTERPRO が使用するポートについては、「CLUSTERPRO:インストール&設定ガイド」「第 1 章 シス テム構成を決定する」「8. ファイアウォールの設定を確認する」を参照してください。また、ファイアウォールの 詳細な情報については、「Turbolinux 11 Server:ユーザーガイド」の「第 22 章 パケットフィルタリングと NAT」及び「第 20 章 ネットワークサービスへのアクセス制御」を参照してください。
3.1.3.5. サーバ時刻の同期設定 クラスタシステムにおいて何らかの障害が発生した際に、各サーバの時刻が同期されていると原因解析時間が短 縮することができます。タイムサーバを利用するか、下記のスクリプトを定期的に実行することによりサーバ時刻を同期 します。 (CRON を利用したスクリプトの実行:/etc/cron.hourly/timecheck) #!/bin/sh /usr/sbin/ntpdate ntp.nict.jp if [ $? = 0 ]; then /sbin/hwclock --systohc fi タイムサーバの詳細な情報については、「Turbolinux 11 Server:ユーザーガイド」の「第 14 章 タイム サーバー」を参照してください。 3.1.4. CLUSTERPRO のインストール
現用系サーバである server1 に CLUSTERPRO をインストールします。CLUSTERPRO の RPM パッケージは、 「Turbolinux CLUSTERPRO X 3.0 CD」に下記のファイル名で収録されています。
<CD-ROM>/Linux/3.0/jp/server/clusterpro-3.0.3-1.i686.rpm 32 ビット版 <CD-ROM>/Linux/3.0/jp/server/clusterpro-3.0.3-1.x86_64.rpm 64 ビット版 root アカウントで server1 にログインし、下記の手順で CLUSTERPRO をインストールします。
(CD-ROM をマウントし、64 ビット版の CLUSTERPRO をインストールする場合) # mount /mnt/cdrom # cd /mnt/cdrom/Linux/3.0/jp/server/ # rpm -ihv clusterpro-3.0.3-1.x86_64.rpm Preparing... ########################################### [100%] 1:clusterpro ########################################### [100%] # cd # eject 3.1.5. CLUSTERPRO のライセンス登録 現用系サーバである server1 にインストールした CLUSTERPRO のライセンスを登録します。登録には、 CLUSTERPRO の製品パッケージに含まれる「ソフトウェアライセンスキー証明」に記載されている「ライセンスキー」 と「シリアルナンバー」等が必要です。 CLUSTERPRO のライセンス登録については、「CLUSTERPRO:インストール&設定ガイド」「第 4 章 ライ センスを登録する」を参照してください。 3.1.5.1. CLUSTERPRO(本体)のライセンス登録 現用系サーバである server1 に CLUSTERPRO(本体)のライセンスを登録します。ライセンスの登録には、 clplcnsc コマンドを使用します。root アカウントで下記のコマンドを実行します。 (CLUSTERPRO のライセンス登録:対話形式) # clplcnsc -i -p BASE30
登録後に CLUSTERPRO(本体)のライセンスを確認するには、root アカウントで下記のコマンドを実行します。 (CLUSTERPRO のライセンスの確認) # clplcnsc -l -p BASE30 clplcnsc コマンドの詳細な情報については、「CLUSTERPRO:リファレンスガイド」「第 3 章 CLUSTERPRO コマンドリファレンス」「ライセンスを管理する(clplcnsc コマンド)」を参照してください。 3.1.5.2. オプション製品 Replicator のノードライセンス登録
現用系サーバである server1 に、Replicator(Turbolinux CLUSTERPRO X Replicator 3.0)のノードライセン スを登録します。ライセンスの登録には、clplcnsc コマンドを使用します。root アカウントで下記のコマンドを実行しま す。 (Replicator のノードライセンス登録:対話形式) # clplcnsc -i -p REPL30 登録後に Replicator のノードライセンスを確認するには、root アカウントで下記のコマンドを実行します。 (Replicator のノードライセンスの確認) # clplcnsc -l -p REPL30 3.1.5.3. オプション製品 Database Agent のノードライセンス登録
現用系サーバである server1 に、Database Agent(Turbolinux CLUSTERPRO X Database Agent 3.0)の ノードライセンスを登録します。ライセンスの登録には、clplcnsc コマンドを使用します。root アカウントで下記のコマン ドを実行します。
(Database Agent のノードライセンス登録:対話形式)
# clplcnsc -i -p DBAG30
登録後に Database Agent のノードライセンスを確認するには、root アカウントで下記のコマンドを実行します。 (Database Agent のノードライセンスの確認)
# clplcnsc -l -p DBAG30
3.1.6. MySQL のインストール
現用系サーバである server1 に、MySQL をインストールします。インストールする MySQL は、「MySQL Editions CD」のファイル名「MySQL_Enterprise_DVD.pdf」を確認します。server1 には、「MySQL Server 5.5.13 TAR for Generic Linux 2.6 x86 (64bit)」を以下の手順でインストールします。
3.1.6.1. MySQL インストールの事前準備
OS に含まれる MySQL 5.0 がインストールされていないか rpm コマンドを実行して確認します。もしインストールさ れている場合は、rpm コマンドを実行してアンインストールします。
(MySQL Server パッケージの確認)
# rpm -qa|grep -i mysql-server
「3.1.1.OS(Turbolinux 11 Server)のインストール」の例の通り、インストールタイプに「標準サーバー」 を選択してインストールした場合は、OS に含まれる MySQL 5.0 はインストールされません。
MySQL は、Linux ネイティブ非同期 I/O 機能を使用するため、RPM パッケージ libaio をインストールする必要が あります。インストールするサーバがインターネットへ接続できる場合は、下記のコマンドを実行することによりターボリ ナックスから libaio をダウンロードしてインストールすることが可能です。 (libaio パッケージのインストール) # turbo+ -i libaio turbo+コマンドの詳細な情報については、「Turbolinux 11 Server:ユーザーガイド」「第 28 章 ソフトウェ アの管理(turbo+)」を参照してください。 インストールするサーバがインターネットへ接続できない場合は、下記の FTP サーバから RPM パッケージをダウン ロードしてインストールしてください。 32 ビット版 ftp://ftp.turbolinux.co.jp/pub/TurboLinux/TurboLinux/ia32/Server/11/updates/misc/RPMS/libaio-0.3.106-1.i686.rpm 64 ビット版 ftp://ftp.turbolinux.co.jp/pub/TurboLinux/TurboLinux/x64/Server/11/updates/misc/RPMS/libaio-0.3.106-1.x86_64.rpm 3.1.6.2. MySQL バイナリファイルのコピー
「MySQL Editions CD」から MySQL バイナリを対象サーバにコピーします。 (MySQL バイナリファイルのコピー)
# mount /mnt/cdrom
# cp /mnt/cdrom/V26609-01.zip .
# unzip V26609-01.zip (圧縮ファイルを解凍)
# md5sum -c mysql-advanced-5.5.13-linux2.6-x86_64.tar.gz.md5 (ファイルを確認) # tar xvzf mysql-advanced-5.5.13-linux2.6-x86_64.tar.gz -C /usr/local/
# cd /usr/local/ # ln -s mysql-advanced-5.5.13-linux2.6-x86_64 mysql 3.1.6.3. ユーザ及びグループの作成 MySQL 用のユーザ及びグループを作成します。 (ユーザ及びグループの作成) # groupadd mysql
# adduser -c 'MySQL User' -g mysql -G mysql mysql
MySQL 用グループ「mysql」及びユーザ「mysql」を作成する場合、GID,UID を現用系サーバと待機系 サーバで同じにするようにしてください。
(パーミッションの変更)
# cd /usr/local/mysql # chown -R mysql:mysql *
MySQL 用ユーザ mysql の環境変数を設定するために、ホームディレクトリの.bashrc ファイルに次の行を追加し ます。 /home/mysql/.bashrc ## for MySQL export MYSQL_HOME=/usr/local/mysql export PATH=${MYSQL_HOME}/bin:${PATH} export LD_LIBRARY_PATH=${MYSQL_HOME}/lib:/usr/lib:${LD_RUN_PATH} export LD_RUN_PATH=${MYSQL_HOME}/lib:${LD_RUN_PATH} export MANPATH=${MYSQL_HOME}/man:${MANPATH} 3.1.6.4. MySQL Server システム・テーブルの作成 MySQL Server のシステム・テーブルを作成します。 (システム・テーブルの作成) # su - mysql $ cd ${MYSQL_HOME}
$ ./scripts/mysql_install_db --basedir=${MYSQL_HOME} --datadir=${MYSQL_HOME}/data --ldata=${MYSQL_HOME}/data --user=mysql Installing MySQL system tables...
OK
Filling help tables... OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h server1 password 'new-password' Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation
which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers.
See the manual for more instructions. You can start the MySQL daemon with:
cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd /usr/local/mysql/mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/local/mysql/scripts/mysqlbug script!
3.1.6.5. MySQL 設定ファイルの準備
(設定ファイルをコピー) # cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf 3.1.6.6. MySQL サーバの起動・停止スクリプトの準備 MySQL サーバの起動・停止スクリプトを準備します。 (起動・停止スクリプトをコピー) # cp /usr/local/mysql/support-files/mysql.server /etc/init.d/ 次のコマンドを実行して MySQL サーバを起動してみます。 (MySQL サーバの起動)
# service mysql.server start
問題なく起動したことを確認した後に、次のコマンドを実行して MySQL サーバを停止します。 (MySQL サーバの停止)
# service mysql.server stop
OS が起動する際に MySQL サーバを起動するように設定する必要はありません。MySQL サーバの起動・ 停止は CLUSTERPRO が管理します。
3.1.6.7. MySQL ユーザの追加
次のスクリプトを mysql アカウントで実行し、MySQL ユーザ(OS のユーザアカウントではない)に係わる設定を実 行します。
(MySQL ユーザに係わる設定を行うスクリプト)
#!/bin/bash
### root ユーザのパスワード設定 mysql -h localhost -u root << EOF select Host, User from mysql.user;
SET PASSWORD FOR root@localhost = PASSWORD('turbolinux'); exit
EOF
### mysql ユーザの作成
mysql -h localhost -u root -pturbolinux << EOF select Host, User from mysql.user;
GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%'
IDENTIFIED BY 'turbolinux' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'192.168.10.10'
IDENTIFIED BY 'turbolinux' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost'
IDENTIFIED BY 'turbolinux' WITH GRANT OPTION; FLUSH PRIVILEGES;
exit EOF
3.2. 待機系サーバ server2 の導入作業
3.2.1. OS(Turbolinux 11 Server)のインストール
待機系サーバである server2 に OS(Turbolinux 11 Server)をインストールします。OS のインストールについて は、現用系サーバへ OS のインストールを説明している「3.1.1.OS(Turbolinux 11 Server)のインストール」と同様 の作業を行います。 3.2.2. OS(Turbolinux 11 Server)のライセンス登録 インストール後に Turbolinux 11 Server のライセンス登録を行います。ライセンスの登録も現用系サーバと同様 の作業(「3.1.2.OS(Turbolinux 11 Server)のライセンス登録」)を行います。 3.2.3. CLUSTERPRO インストールの事前準備 待機系サーバである server2 に CLUSTERPRO をインストールする前に、以下の作業を実施します。 3.2.3.1. ミラーディスクの設定 待機系サーバである server2 に接続している2つ目のディスク(/dev/sdb)にパーティション設定を行います。パー ティションの設定も現用系サーバと同様の作業(「3.1.3.1.ミラーディスクの設定」)を行います。 3.2.3.2. OS 起動時間の設定 OS 起動時間の設定も現用系サーバと同様の作業(「3.1.3.2.OS 起動時間の設定」)を行います。 3.2.3.3. ファイアウォールの設定 ファイアウォールの設定も現用系サーバと同様の作業(「3.1.3.4.ファイアウォールの設定」)を行います。
3.2.3.4. サーバ時刻の同期設定
サーバ時刻の同期も現用系サーバと同様の作業(「3.1.3.5.サーバ時刻の同期設定」)を行います。
3.2.4. CLUSTERPRO のインストール
待機系サーバである server2 に CLUSTERPRO をインストールします。CLUSTERPRO のインストールも現用系 サーバと同様の作業(「3.1.4.CLUSTERPRO のインストール」)を行います。 3.2.5. CLUSTERPRO のライセンス登録 待機系サーバである server2 にインストールした CLUSTERPRO のライセンスを登録します。登録には、 CLUSTERPRO の製品パッケージに含まれる「ソフトウェアライセンスキー証明」に記載されている「ライセンスキー」 と「シリアルナンバー」等が必要です。 3.2.5.1. CLUSTERPRO(本体)のライセンスを確認 現用系サーバに CLUSTERPRO(本体)のライセンス登録を完了している場合、待機系サーバには CLUSTERPRO(本体)のライセンスを登録する必要はありません。現用系サーバに CLUSTERPRO(本体)のライセ ンス登録を完了しているか確認してください。 3.2.5.2. オプション製品 Replicator のノードライセンス登録 待機系サーバである server2 に、Replicator のノードライセンスを登録します。ノードライセンスの登録も現用系 サーバと同様の作業(「3.1.5.2.オプション製品 Replicator のノードライセンス登録」)を行います。 3.2.5.3. オプション製品 Database Agent のノードライセンス登録
待機系サーバである server2 に、Database Agent のノードライセンスを登録します。ノードライセンスの登録も現 用系サーバと同様の作業(「3.1.5.3.オプション製品 Database Agent のノードライセンス登録」)を行います。
3.2.6. MySQL のインストール
待機系サーバである server2 に、MySQL をインストールします。MySQL のインストールも現用系サーバと同様の 作業(「3.1.6.MySQL のインストール」)を行います。
3.3. クラスタ構成情報の作成と生成
3.3.1. クラスタ構成情報の作成 「2.2.クラスタ構成情報について」の表 2 クラスタ構成情報を基に、WebManager から起動した Builder を用いて クラスタ構成情報を作成します。 WebManager については、「CLUSTERPRO:インストール&設定ガイド」「第 5 章 クラスタ構成情報を作 成する」「WebManager を起動する」及び「CLUSTERPRO:リファレンスガイド」「第 1 章 WebManager の機能」を参照してください。クライアント PC で Web ブラウザを起動し、アドレスに現用系サーバの実 IP アドレス(192.168.10.11)と WebManager のポート番号(29003)を入力します。
クラスタが未構成の場合、確認画面が表示されます。
[クラスタ生成ウィザードを開始する]をクリックしてウィザードを開始します。
[クラスタ名(M)]入力ボックスに「cluster」を入力し、[管理 IP アドレス(I)]入力ボックスに WebManager 用フ ローティング IP アドレス「192.168.10.9」を入力して[次へ(N)>]をクリックします。
図 2:確認画面
待機系サーバである server2 を追加します。[サーバの定義一覧(L)]右の[追加(D)]ボタンをクリックし、[サーバ 追加]ダイヤログボックスの[サーバ名または IP アドレス(N)]入力ボックスに「server2」2を入力して[OK]ボタンを クリックし、server2 が追加されたことを確認し[次へ(N)>]をクリックします。 [インタコネクト一覧(L)]に自動的に各サーバの IP アドレスが表示されます。インタコネクト専用ネットワークである 「10.0.0.0 / 8」の各サーバの IP アドレスが[優先度]の[1]に[上へ(U)]もしくは[下へ(O)]ボタンをクリックして移 動します。また[MDC]を[使用しない]から各ネットワークに[mdc1][mdc2]を選択します。設定後に[次へ(N)>]を 図 4:クラスタ生成ウィザード画面 - サーバの定義 図 5:クラスタ生成ウィザード画面 - インタコネクトの設定
クリックします。 デフォルトゲートウェイである 192.168.10.1 に対して ping を実行し NP(ネットワークパーティション)解決を行う ように設定します。[追加(D)]ボタンをクリックし NP 解決を追加し[Ping ターゲット]に「192.168.10.1」を入力しま す。次に[調整(T)]ボタンをクリックして、[ネットワークパーティション解決調整プロパティ]ダイヤログボックスの[NP 発生時動作]で[サービス停止(T)]を選択して[OK]ボタンをクリックします。設定後に[次へ(N)>]をクリックします。 グループの定義を行います。この例では、[グループ一覧(L)]に管理グループ[ManagementGroup]が追加さ れています。[プロパティ(P)]や[グループリソース(G)]ボタンをクリックして設定内容を確認します。 図 6:クラスタ生成ウィザード画面 - NP 解決の設定 図 7:クラスタ生成ウィザード画面 - グループ一覧
MySQL 用グループを追加するために[追加(D)]ボタンをクリックします。
[名前(M)]入力ボックスに「MySQLGroup」を入力し[次へ(N)>]をクリックします。
[全てのサーバでフェイルオーバ可能(P)]がチェックされていることを確認し[次へ(N)>]をクリックします。 図 8:グループの定義画面
追加するグループ属性を確認し[次へ(N)>]をクリックします。
グループリソース(フローティング IP アドレス)を追加します。[追加(D)]ボタンをクリックします。 図 10:グループの定義(MySQLGroup)画面 - 起動可能サーバ一覧
[タイプ(T)]に[floating ip resource]を選択し、[名前(M)]入力ボックスに「fip1」を入力し[次へ(N)>]をク リックします。
内容を確認し[次へ(N)>]をクリックします。
図 12:グループ(MySQLGroup)のリソース定義画面
内容を確認し[次へ(N)>]をクリックします。 [IP アドレス(I)]入力ボックスに「192.168.10.10」を入力し[完了]をクリックします。 次に、グループリソース(ミラーディスクリソース)を追加します。[グループの定義(MySQLGroup)]画面で[追加 (D)]ボタンをクリックします。 図 14:グループ(MySQLGroup)のリソース定義画面 - 復旧動作設定 図 15:グループ(MySQLGroup)のリソース定義画面 - 詳細設定
[タイプ(T)]に[mirror disk resource]を選択し、[名前(M)]入力ボックスに「md1」を入力し[次へ(N)>]をク リックします。
内容を確認し[次へ(N)>]をクリックします。
図 16:グループ(MySQLGroup)のリソース定義画面
内容を確認し[次へ(N)>]をクリックします。 [ミラーパーティションデバイス名(M)]に[/dev/NMP1]を選択、[マウントポイント(I)]入力ボックスに 「/mnt/md1]を入力、[データパーティションデバイス名(D)]に[/dev/sdb2]を選択、[クラスタパーティションデバ イス名(C)]に[/dev/sdb1]を選択、[ファイルシステム(F)]に[ext3]を選択して[完了]をクリックします。 図 18:グループ(MySQLGroup)のリソース定義画面 - 復旧動作設定 図 19:グループ(MySQLGroup)のリソース定義画面 - 詳細設定
最後に、グループリソース(EXEC リソース)を追加します。グループの定義(MySQLGroup)]画面で[追加(D)] ボタンをクリックします。 [タイプ(T)]に[execute resource]を選択し、[名前(M)]入力ボックスに「exec1」を入力し[次へ(N)>]をク リックします。 図 20:グループ(MySQLGroup)のリソース定義画面 図 21:グループ(MySQLGroup)のリソース定義画面 - 依存関係設定
内容を確認し[次へ(N)>]をクリックします。
内容を確認し[次へ(N)>]をクリックします。
後で MySQL サーバの起動・停止に係わる設定を行うため、ここでは[完了]をクリックします。 図 22:グループ(MySQLGroup)のリソース定義画面 - 復旧動作設定
グループ(MySQLGroup)に3つのリソースが追加されたことを確認し[完了]をクリックします。
[グループ一覧(L)]に[MySQLGroup]が追加されたことを確認し[次へ(N)>]をクリックします。 図 24:グループの定義(MySQLGroup)画面 - グループリソース一覧
モニタリソース[userw]を選択し[プロパティ(P)]をクリックして[監視(固有)]の[監視方法(M)]に [keepalive]を選択してください。 [OK]ボタンをクリックして[クラスタ生成ウィザード]画面に戻り、次にモニタリソース[disk monitor]を追加します。 [モニタリソース一覧(L)]右の[追加(D)]ボタンをクリックします。 図 26:クラスタ生成ウィザード画面 - モニタリソース一覧 図 27:[userw]モニタリソースのプロパティ
[タイプ(T)]に[disk monitor]を選択し、[名前(M)]入力ボックスに「diskw1」を入力し[次へ(N)>]をクリック します。
内容を確認し[次へ(N)>]をクリックします。
図 28:モニタリソースの定義
[監視方法(M)]に[READ(O_DIRECT)]を選択、[監視先(T)]に[/dev/sdb2]を選択[次へ(N)>]をクリック します。
[回復対象]に[参照(W)]ボタンをクリックして[MySQLGroup]を選択し[完了]ボタンをクリックします。次にモ ニタリソース[NIC Link Up/Down monitor]を追加します。[モニタリソース一覧(L)]右の[追加(D)]ボタンをク
図 30:モニタリソースの定義 - 監視(固有)設定
リックします。
[タイプ(T)]に[NIC Link Up/Down monitor]を選択し、[名前(M)]入力ボックスに「miiw1」を入力し[次へ (N)>]をクリックします。
内容を確認し[次へ(N)>]をクリックします。
図 32:モニタリソースの定義
[監視対象(T)]入力ボックスに「eth0」を入力し[次へ(N)>]をクリックします。
[回復対象]に[参照(W)]ボタンをクリックして[ManagementGroup]を選択し[完了]ボタンをクリックします。 最後に、グループ MySQLGroup 用のモニタリソース[NIC Link Up/Down monitor]を同様の手順で追加します。
図 34:モニタリソースの定義 - 監視(固有)設定
追加したモニタリソースが[モニタリソース一覧(L)]に表示されていることを確認し、[完了]ボタンをクリックしてク ラスタの生成を完了します。
以上で、基本的なクラスタ構成情報の作成が完了します。
3.3.2. クラスタシステムの生成
作成したクラスタ構成情報を反映させクラスタシステムを生成します。クライアント PC の Web ブラウザに表示され ている WebManager から起動された Builder の[ファイル(F)]メニューから[設定の反映(A)]をクリックします。
図 37:Cluster Manager 画面
[設定を反映しますか?]というポップアップメッセージが表示されるので、[はい]をクリックします。 3.3.3. クラスタシステム生成後の確認 設定の反映後に現用系サーバと待機系サーバを再起動し、クライアント PC の Web ブラウザから WebManager に接続してクラスタシステムが動作していることを確認します。WebManager への接続は、管理用フローティング IP(192.168.10.11)に接続します。 (管理用フトーティング IP の WebManager に接続する場合の URL) http://192.168.10.9:29003/ WebManager を使用して、クラスタを構成するサーバやグループ、各リソースに問題がないか確認します。 クラスタシステムの確認方法については、「CLUSTERPRO:インストール&設定ガイド」の「第 6 章 クラス タシステムを確認する」を参照してください。
3.4. CLUSTERPRO で MySQL を管理するための設定
生成したクラスタシステムにおいて、MySQL サーバの起動・停止や死活監視、データの管理等を行うように設定を 行います。 3.4.1. MySQL のデータに係わる設定現用系サーバ server1 や待機系サーバ server2 にインストールした MySQL は、/usr/local/mysql/data ディレ クトリにデータを保存するように設定しています。このディレクトリをクラスタシステムの MySQLGroup グループの mirror disk resource である md1 に移動します。
各サーバで次のコマンドを実行しデータを移動します。なお次のコマンドは、MySQLGroup グループが現用系サー バである server1 で起動していることを前提にしています。 (server1 で MySQLGroup グループが起動していることを確認) [root@server1 ~]# clpstat ======================== CLUSTER STATUS =========================== Cluster : cluster <server> *server1 ...: Online
lankhb1 : Normal Kernel Mode LAN Heartbeat lankhb2 : Normal Kernel Mode LAN Heartbeat pingnp1 : Normal ping resolution
server2 ...: Online
lankhb1 : Normal Kernel Mode LAN Heartbeat lankhb2 : Normal Kernel Mode LAN Heartbeat pingnp1 : Normal ping resolution
<group> ManagementGroup .: Online current : server1 ManagementIP : Online MySQLGroup ...: Online current : server1 exec1 : Online fip1 : Online md1 : Online <monitor> diskw1 : Normal mdnw1 : Normal mdw1 : Normal miiw1 : Normal miiw2 : Normal userw : Normal ===================================================================== (server1 で MySQLGroup グループの md1 リソースのディスクがマウントされていることを確認) [root@server1 ~]# mount /dev/sda2 on / type ext3 (rw) none on /proc type proc (rw) sysfs on /sys type sysfs (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620) none on /dev/shm type tmpfs (rw)
/dev/NMP1 on /mnt/md1 type ext3 (rw)
(server1 で MySQL サーバが起動していないことを確認)
[root@server1 mysql]# service mysql.server status ERROR! MySQL is not running
(server1 で MySQL のデータをミラーディスクへ移動しリンクを作成)
[root@server1 ~]# cd /usr/local/mysql
[root@server1 mysql]# mv /usr/local/mysql/data /mnt/md1/ [root@server1 mysql]# ln -s /mnt/md1/data data
(server1 で MySQL サーバが起動・停止することを確認)
[root@server1 mysql]# service mysql.server start Starting MySQL... SUCCESS!
[root@server1 mysql]# service mysql.server status SUCCESS! MySQL running (31383)
[root@server1 mysql]# service mysql.server stop Shutting down MySQL. SUCCESS!
[root@server1 mysql]# service mysql.server status ERROR! MySQL is not running
(server2 で MySQL サーバが起動していないことを確認)
[root@server2 ~]# service mysql.server status ERROR! MySQL is not running
(server2 で MySQL のデータを削除しミラーディスクへリンクを作成)
[root@server2 ~]# cd /usr/local/mysql [root@server2 mysql]# rm -Rf data
[root@server2 mysql]# ln -s /mnt/md1/data data
(server2 において MySQLGroup グループを server1 から server2 へ移動)
[root@server2 mysql]# clpgrp -m MySQLGroup -h server1 -a server2 Command succeeded.
*.WebManager からグループを移動することも可能です
(グループ移動後に server2 で MySQL サーバが起動・停止することを確認)
[root@server2 mysql]# service mysql.server status SUCCESS! MySQL running (5547)
[root@server2 mysql]# service mysql.server stop Shutting down MySQL. SUCCESS!
[root@server2 mysql]# service mysql.server status ERROR! MySQL is not running
3.4.2. クラスタシステムで MySQL サーバを起動・停止するための設定
MySQL のデータに係わる設定完了後に、クラスタシステムで MySQL サーバを起動・停止するための設定を行い ます。ここでは、WebManager(Builder)を使用して MySQLGroup グループの execute resource である exec1 リソースのスクリプトに MySQL サーバの起動・停止を追加することにより実現します。
クライアント PC の Web ブラウザから WebManager に接続(http://192.168.10.9:29003/)して、[ファイル (F)]メニュー下のモードを[設定モード](Builder に変更)にします。次に[ファイル(F)]メニューから[設定の取得 (T)]を選択して、現在の設定情報を取得します。
[cluster]→[Groups]→[MySQLGroup]→[exec1]を選択し、右クリック後に表示されるメニューから[プロパ ティ(P)]を選択します。
[詳細]タブの[Start script]を選択し[編集(E)]ボタンをクリックすることで、エディタが起動し MySQLGroup グ ループが起動する際に実行されるスクリプト(start.sh)を編集することができます。次のとおり、MySQL サーバを起動 する行(太字の 2 行)を追加します。
図 39:Webmanager 画面 - exec1 リソースの選択
start.sh #! /bin/sh #*************************************** #* start.sh * #*************************************** ulimit -s unlimited if [ "$CLP_EVENT" = "START" ] then if [ "$CLP_DISK" = "SUCCESS" ] then echo "NORMAL1" if [ "$CLP_SERVER" = "HOME" ] then echo "NORMAL2" else echo "ON_OTHER1" fi
/sbin/service mysql.server start else
echo "ERROR_DISK from START" fi
elif [ "$CLP_EVENT" = "FAILOVER" ] then if [ "$CLP_DISK" = "SUCCESS" ] then echo "FAILOVER1" if [ "$CLP_SERVER" = "HOME" ] then echo "FAILOVER2" else echo "ON_OTHER2" fi
/sbin/service mysql.server start else
echo "ERROR_DISK from FAILOVER" fi else echo "NO_CLP" fi echo "EXIT" exit 0 次に、[詳細]タブの[Stop script]を選択し[編集(E)]ボタンをクリックすることで、エディタが起動し MySQLGroup グループが停止する際に実行されるスクリプト(stop.sh)を編集することができます。次のとおり、 MySQL サーバを停止する行(太字の 2 行)を追加します。
stop.sh #! /bin/sh #*************************************** #* stop.sh * #*************************************** ulimit -s unlimited if [ "$CLP_EVENT" = "START" ] then if [ "$CLP_DISK" = "SUCCESS" ] then echo "NORMAL1" if [ "$CLP_SERVER" = "HOME" ] then echo "NORMAL2" else echo "ON_OTHER1" fi
/sbin/service mysql.server stop else
echo "ERROR_DISK from START" fi
elif [ "$CLP_EVENT" = "FAILOVER" ] then if [ "$CLP_DISK" = "SUCCESS" ] then echo "FAILOVER1" if [ "$CLP_SERVER" = "HOME" ] then echo "FAILOVER2" else echo "ON_OTHER2" fi
/sbin/service mysql.server stop else
echo "ERROR_DISK from FAILOVER" fi else echo "NO_CLP" fi echo "EXIT" exit 0
編集後に、[OK]ボタンをクリックして exec1 リソースの変更を完了します。WebManager から起動された Builder の[ファイル(F)]メニューから[設定の反映(A)]をクリックし、変更した内容をクラスタへ反映します。
反映後に MySQLGroup グループを WebManager もしくはコマンドから再起動し、グループが起動したサーバで MySQL サーバが起動するか確認します。
(server1 で MySQLGroup グループが再起動した場合)
[root@server1 mysql]# clpstat
======================== CLUSTER STATUS =========================== Cluster : cluster
<server>
*server1 ...: Online
lankhb1 : Normal Kernel Mode LAN Heartbeat lankhb2 : Normal Kernel Mode LAN Heartbeat pingnp1 : Normal ping resolution
server2 ...: Online
lankhb1 : Normal Kernel Mode LAN Heartbeat lankhb2 : Normal Kernel Mode LAN Heartbeat pingnp1 : Normal ping resolution
<group> ManagementGroup .: Online current : server1 ManagementIP : Online MySQLGroup ...: Online current : server1 exec1 : Online fip1 : Online md1 : Online <monitor> diskw1 : Normal mdnw1 : Normal mdw1 : Normal miiw1 : Normal miiw2 : Normal userw : Normal ===================================================================== [root@server1 mysql]# service mysql.server status
SUCCESS! MySQL running (15784)
3.4.3. クラスタシステムで MySQL サーバを死活監視するための設定 クラスタシステムで MySQL サーバを起動・停止するための設定完了後に、MySQL サーバを死活監視するための 設定を行います。ここでは、MySQL モニタリソースを追加し、定期的に MySQL に接続して SQL を実行して死活監視 を行うように設定します。 3.4.3.1. MySQL モニタリソース用 MySQL データベースとユーザの作成 MySQL モニタリソースで使用する MySQL のデータベースとユーザを作成します。現用系サーバもしくは待機系 サーバにおいて、mysql ユーザアカウントで次のスクリプトを実行します。これにより、データベース CPROAgent_db と MySQL ユーザ CPROAgent が作成されます。
(3.4.3.1. MySQL データベースとユーザの作成)
#!/bin/bash
### CPROAgent ユーザの作成
mysql -h 192.168.10.10 -u mysql -pturbolinux << EOF select Host, User from mysql.user;
GRANT ALL PRIVILEGES ON *.* TO 'CPROAgent'@'%'
IDENTIFIED BY 'turbolinux' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'CPROAgent'@'192.168.10.10' IDENTIFIED BY 'turbolinux' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'CPROAgent'@'localhost'
IDENTIFIED BY 'turbolinux' WITH GRANT OPTION; FLUSH PRIVILEGES;
exit EOF
### MySQL モニタリソース用データベースの作成
mysql -h 192.168.10.10 -u CPROAgent -pturbolinux << EOF DROP DATABASE IF EXISTS CPROAgent_db;
CREATE DATABASE CPROAgent_db CHARACTER SET utf8; SHOW DATABASES;
exit EOF
3.4.3.2. MySQL モニタリソースの追加
WebManager(Builder)を使用して MySQL モニタリソースを追加します。クライアント PC の Web ブラウザから WebManager に接続(http://192.168.10.9:29003/)して、[ファイル(F)]メニュー下のモードを[設定モード] (Builder に変更)にします。次に[ファイル(F)]メニューから[設定の取得(T)]を選択して、現在の設定情報を取得し ます。 [cluster]→[Monitors]を選択し、右クリック後に表示されるメニューから[モニタリソースの追加(A)]を選択しま す。 図 41:モニタリソースの定義画面
[タイプ(T)]に[MySQL minitor]を選択、[名前(M)]入力ボックスに「mysqlw1」を入力し[次へ(N)>]をクリッ クします。 [監視タイミング]の[参照(W)]ボタンをクリックして MySQLGroup グループの exec1 リソースを選択し[次へ (N)>]をクリックします。 [データベース名(D)]入力ボックスに前項で作成したデータベース名「CPROAgent_db」を入力、[IP アドレス (R)]入力ボックスに「127.0.01」を入力、[ポート番号(O)]入力ボックスに MySQL が使用するポート番号「3306」 を入力、[ユーザ名(U)]入力ボックスに前項で作成した MySQL ユーザ名「CPROAgent」を入力、[パスワード(P)] 入力ボックスに MySQL ユーザ CPROAgent のパスワード「turbolinux」を入力、[ストレージエンジン(E)]に [InnoDB]を選択、[ライブラリパス(L)]入力ボックスに「/usr/local/mysql/lib/libmysqlclient.so」を入力し[次 へ(N)>]をクリックします。
図 42:モニタリソースの定義画面 - 監視(共通)設定
[回復対象]に[参照(W)]ボタンをクリックして[MySQLGroup]を選択、[最終動作(F)]に[グループ停止]を選 択し[完了]ボタンをクリックします。
MySQL モニタリソース mysqlw1 の追加後に、WebManager から起動された Builder の[ファイル(F)]メ ニューから[設定の反映(A)]をクリックし、変更した内容をクラスタへ反映します。クラスタに反映するとクラスタがサ スペンドするため、WebManager に再接続して[サービス(S)]メニューの[クラスタリジューム(R)]を選択してサス ペンドしたクラスタを回復します。
3.4.3.3. MySQL モニタリソースの動作確認
クラスタの回復後に、MySQL モニタリソースが機能して MySQL に対する死活監視を行うことができるか確認しま す。方法は、MySQLGroup グループの exec1 リソースから起動した MySQL サーバを強制的に停止することにより、 MySQLGroup グループがフェイルオーバすることを確認します。 (server1 で MySQLGroup グループが起動していることを確認) [root@server1 ~]# clpstat ======================== CLUSTER STATUS =========================== Cluster : cluster ・・・ MySQLGroup ...: Online current : server1 exec1 : Online fip1 : Online md1 : Online ・・・ ===================================================================== (server1 で MySQL サーバを停止)
[root@server1 ~]# service mysql.server stop Shutting down MySQL.. SUCCESS!
MySQL モニタリソース mysqlw1 を定義(監視(共通))した、インターバルとタイムアウト値を足した時間を待って MySQLGroup グループがフェイルーバするか確認します。 (server1 で MySQLGroup グループが起動していることを確認) [root@server1 ~]# clpstat ======================== CLUSTER STATUS =========================== Cluster : cluster ・・・ <group> ・・・
MySQLGroup ...: Online Pending current : server2 exec1 : Online Pending fip1 : Online
md1 : Online ・・・
4章. 導入後に
本章では、クラスタシステムの運用を開始する前に必要な作業等について説明しています。
4.1. MySQL に係わる設定の確認
ここでは、クラスタ対象アプリケーションである MySQL に係わる設定について説明しています。
4.1.1. MySQL に係わるディレクトリやファイルについて
現用系サーバ server1 と待機系サーバ server2 にインストールした MySQL に係わるディレクトリやファイルを表 4:MySQL のディレクトリやファイルにまとめます。プログラムを開発もしくは使用する場合や、MySQL を設定する際 に参考にしてください。 表 4:MySQL のディレクトリやファイル ディレクトリ / ファイル名 内容 /usr/local/mysql/bin MySQL のサーバ及びクライアントプログラムが保存されているディレク トリ /usr/local/mysql/data ログやデータベースが保存されているディレクトリであり、実際には CLUSTERPRO が管理しているミラーディスク(/mnt/md1/data)にリ ンクされている /usr/local/mysql/docs マニュアルが保存されているディレクトリ /usr/local/mysql/include ヘッダファイルが保存されているディレクトリ /usr/local/mysql/lib ライブラリが保存されているディレクトリ /usr/local/mysql/man オンライアンマニュアル(man)が保存されているディレクトリ /usr/local/mysql/mysql-test MySQL サーバのテスト・スイートが保存されているディレクトリ /usr/local/mysql/scripts MySQL サーバを初期化するスクリプトが保存されているディレクトリ /usr/local/mysql/share エラーメッセージやサンプル構成ファイル、データベースを作成する際に 必要な SQL ファイル等が保存されているディレクトリ /usr/local/mysql/sql-bench MySQL Benchmarks が保存されているディレクトリ
/usr/local/mysql/support-files サンプルとなる MySQL の設定ファイルや MySQL サーバを制御するス クリプトが保存されているディレクトリ /etc/init.d/mysql.server MySQL サーバを制御するスクリプトファイル /etc/my.cnf MySQL の設定ファイル 4.1.2. MySQL のサーバ変数の確認 MySQL サーバを設定するには、サーバ変数を変更する必要があります。サーバ変数は、MySQL の設定ファイルで ある my.cnf に設定値を記述したり、MySQL サーバを起動する際に指定することができます。また、SQL 文で変更す ることも可能です。MySQL が稼働する実際の環境に合わせて設定する必要があります。