Google Cloud上でのLifeKeeperを使ったHAクラスター構築手順

    ※2020年12月3日に公開した記事に加筆修正いたしました。

    こんにちは。サイオステクノロジーの高田です。

    近年多くのシステムが物理や仮想環境からクラウド環境へ移行するケースを増加しているように感じます。様々なクラウドがありますが、それぞれのクラウド毎にメリットがあります。Google がクラウド上で提供するサービス群であるGoogle Cloudも同様にIaaS(infrastructure as a service)やマネージドサービス等多くのサービスを利用することが可能です。

    本稿では、Google CloudのIaaS環境にてOracle Database (以降Oracle)をLifeKeeper for Linuxで冗長化する手順をステップバイステップの方法でご紹介します。IaaS環境の作成やOracleのインストールも含め全ての手順を記載しておりますので、ご紹介する手順に沿って実施いただくことで容易にLifeKeeperによる冗長化構成を容易に構築することが可能です。

    構築環境

    今回は以下Oracleのアクティブ/スタンバイ構成のクラスターを構築します。ガイドの手順に沿って操作いただくと最終的に以下の構成となります。

    クラスターを構成しているVPCネットワークとは別のVPCネットワーク内のクライアントからOracleへ接続する構成も行います。同じVPCだけでなくクライアントが別の環境にある構成も確認できるため、様々な構成での動作環境の構築および確認が可能です。

    構成の詳細

    本構成で利用しているソフトウェアおよびGoogle Cloudのネットワーク部分の設定については以下です。

    <利用しているソフトウェア>

    <Google Cloudのネットワーク構成>

    Google Cloud上でクラスターを構成する際のポイント

    クラスター環境では、フェイルオーバーした後にクライアントからのリクエストは新しくアクティブになったノードに送られる必要があります。LifeKeeperではアドレス解決プロトコル(ARP)を使用してこのルーティングを実施しています。

    ただし、Google CloudのVPCネットワーク環境では、このARPによるルーティングが使用できないため、ロードバランサを導入し、クライアントからのリクエストを制御する必要があります。ロードバランサを利用してOracleが起動しているサーバー(サービスを提供する稼働系ノード)に接続する仕組みは以下の通りです。

    1. OracleクライアントがOracleリスナーへ接続するため、内部ロードバランサのフロントエンドのIPアドレス 10.0.1.100(Port 1521)へ接続します。

    2. 内部ロードバランサの負荷分散先(バックエンド)には、プライマリーノード(lk-node01 / 10.0.101.11)とセカンダリーノード(lk-node02 / 10.0.101.12)が登録されています。 内部ロードバランサは各ノードに対してLifeKeeperで指定した任意のポートにヘルスチェックを行い、ポートがオープンになっているノードを確認して、受け取ったOracleリスナー宛のパケットを転送します。

    LifeKeeper for Linux v9.5.1で追加された機能「Generic ARK for Load Balancer probe reply」(以下Gen LB) について説明します。Gen LBは、Microsoft AzureやGoogle Cloud環境でLoad Balancerの負荷分散対象インスタンスへのヘルスチェックプローブを待ち受けて応答する仕組みを提供します。

    LifeKeeper for Linux v9.5.0以前の環境でもクラウドで提供するLoad Balancerを利用する構成は同じです。ただし、Load Balancerのヘルスチェックに応答するポートはアプリケーションに依存していました。そのため、アプリケーション側でヘルスチェックに応答するポートを必要としていました。Gen LBではヘルスチェックに応答するポートをLifeKeeper側で用意する事によりアプリケーションに依存せずに構成する事が可能となりました。

    Gen LBを利用するには、LifeKeeperのGenericARKで応答するポートを制御するためのリソースを作成します。既に用意しているスクリプトを利用するため、リソースの作成も簡単です。

    構築の流れ

    Google Cloud環境の作成からクラスターでのOracle冗長化までは以下の流れで実施します。

    • Google Cloud上の構成
      1. VPCネットワークの作成
      2. VMインスタンスの作成
      3. ファイアウォールルールの作成
      4. Cloud NATの作成
      5. 鍵認証設定、インスタンスへSSH接続
    • OS設定
      1. 名前解決の設定
      2. X Window Systemの設定
      3. SELinuxの無効化
      4. Firewallの無効化
      5. rootパスワードを設定
      6. RHELのカーネルバージョンを確認
      7. 各モジュールのアップロード
    • LifeKeeper/DataKeeperの設定
      1. LifeKeeper/DataKeeperのインストール
      2. コミュニケーションパスの作成
      3. Quorum/Witnessの設定
      4. DataKeeperリソースの作成
    • ロードバランサ作成
      1. インスタンスグループ作成
      2. ロードバランサの作成
      3. Gen LBリソースの作成
    • Oracleのインストール、設定
      1. Oracleインストール前の準備
      2. Oracle DBのインストール
      3. リスナーの設定
      4. Oracle DBの作成
      5. Oracle設定
    • Oracleリソース作成
      1. Oracleリソースの作成
      2. Oracleクライアントのインストール
      3. 接続確認

    StepByStepガイドの提供

    今回ご紹介した構成を構築するための詳細な手順を、約100ぺージのStep By Stepガイドとしてまとめました。以下のURLにて公開していますので、Google Cloud上でのOracle冗長化のご参考に、是非ご活用ください。

    SNSでもご購読できます。