2014年7月6日日曜日

SoftLayer で学ぶ Oracle RAC 入門、ワン・コインの自己投資(その1)

Oracle RAC を SoftLayer 上で構築する方法の詳細を投稿してほしい、というリクエストがありましたので、複数回に分けて紹介していきたいと思います。

DBA (DataBase Administrator) チームに身を置いている人を除くと、インフラ屋さんのほとんどが Oracle RAC を構築したことが無いようです。そもそも構築しようとも思わないようです。DBA チームでなければ、やったことがない人にやらせようとする人もいないようです。それだけ敷居が高いということが知られているということでもあると思います。
Oracle RAC の始め方は、Oracle RAC を構築したことがある人からマンツーマンで教えてもらいながら実践で鍛える、というのが一番の近道だとは思いますが、そのような環境に恵まれている人が非常に少ないという状況にあるのだと思われます。
私もそのような機会には恵まれなかったのですが、自宅に複数のサーバを買い込み、英語のインストール虎の巻のようなものを参照し、試行錯誤しながら Oracle RAC の勉強をしたことがいい思い出となっております。その経験からすると、一番理解を深めたのは実際にインストールした時点である、ということを自信を持って言えます。RMAN を使わずに物理バックアップ・スクリプトを自作できるとより理解が深まりますが、それは第2ステージということで。
まずは実際に構築してみることです。今はクラウドの時代であり、自宅にサーバを買い込む必要もなくなりました。1日を目途に、Oracle RAC を構築し、自由にいじってみてはいかがでしょうか。思い切って、壊してしまうような操作をガツン、ガツンと実施してみるのも面白いです。課金開始から8時間後には捨てる予定のものです。
1時間あたり $0.625($5/8hours) という予算を目安に、自分専用の Oracle RAC を構築してみて、いじってみましょう。ワン・コイン(500円)ほどの自己投資です。いい経験になると思います。
SoftLayer で Oracle RAC が動く最少要件を満たす物理サーバを発注すると1台あたり $0.28/hour です。NIC を冗長化しなければ $0.24/hour ですが、ここはこだわることにします。2台発注するとして、$0.56/hour です。更に、共有ストレージが必要となりますが、今回は iSCSI Target サーバを立てることにします。SoftLayer の iSCSI Storage は時間単位で発注することができず、毎月 $15/20GB なので、今回の趣旨から外れます。1LUN でも構築は可能ですが、本番環境を見据えた場合、最低でも 4LUN はほしいところなので、いきなり $60 の出費となってしまいます。iSCSI Target サーバは、DNS キャッシュサーバも兼ねさせます。こちらは仮想マシンでよいこととし、100GB のローカルディスクも追加します。通信速度も1Gbpsを選択します。$0.068/hour です。合計 $0.628/hour なので、8時間ほど利用する前提で500円ほどになります。

※ Bare Metal Instance (BMI) について、課金単位は1時間毎ですが、キャンセル(廃棄)については、月の締日の24時間前までに申し込み、月の締日まで課金されるというのが建前のようです。つまり、うまく開始日を調整できても、最低でも24時間分課金されてしまう建前になります。Catalyst プログラム特有の清算方法の可能性もありますが、そうではないと考えております。
1時間ほど使用してキャンセルし、12日ほど経過した BMI について、キャンセルをキャンセルした後、またキャンセルすると即時にキャンセル処理が走り始めました。香港データセンタ、シンガポールデータセンタの両方で確認しています。シンガポールデータセンタで追試してみました。13分使用し、キャンセルしました。キャンセルにあたり、締日の話が表示はされましたが、すぐにキャンセル処理が走り始めました。状況がよくわかりません。思い当たるとすれば、CLI からキャンセル操作をしたのが悪かったのかもしれません。管理ポータルから操作した時には、このようなことは記憶にありません。Bare Metal Server をキャンセルした時には、即時にキャンセルするか、1か月分使い切った日にキャンセルするかという選択肢があったと記憶しているので、CLI がこのあたりの処理をうまくできていないのかもしれません。
いずれにせよ、即時にキャンセルできない可能性があることがわかりました。
いきなり、ワン・コインでは済まない可能性があることが発覚し、申し訳ありません。
BMI を利用するパターンだけではなく、3台とも仮想マシンで構築するパターンも言及することにします。
BMI で $0.24/hour のものを、$0.114/hour の仮想マシンで代用することにします。2台で $0.228/hour、3台合計で $0.296/hour となります。16時間ほどの利用で $5 に達します。
BMI ではなく仮想マシンを利用することで構築手順に違いが出てきます。一番の違いは、NTP 設定ができなくなることです。Cluster Time Synchronization Service (CTSS) というものを利用して構築することになります。私はこの機能を利用したことが無いので、何らかのトラブルがあるかもしれません。また、OS からは NIC が冗長化されているように見えなくなるので、ネットワーク設定周りも異なります。今の時点で思い当たるのはこの2点です。
本稿(その1)については、BMI を利用する前提の記載となっていますが、このままとさせていただきます。物理マシンにおける NTP 設定の注意事項も記載することにします。物理マシンでチャレンジしたい方は、キャンセル処理を CLI ではなく、管理ポータルから実行することをお勧めします。
ところで、本番環境は、仮想マシンで構築してはいけません。おそらく、ライセンス違反になります。ライセンスの詳細については、Oracle Direct に直接お問い合わせください。私もよく電話しています。

Oracle のライセンスですが、1か月の試用については無料とうたわれています。インストーラは本番環境と同じものがダウンロード可能です。

では、さっそく始めたいと思います。
最初に、SoftLayer のアカウントを作成します。
電話対応で英語が必要になるようですが、ここの部分の詳細は割愛します。
私自身は、何を隠そう、やったことがないので、この部分の解説は他の人にお任せします。

SL999999」というアカウントが発行されたこととして話を続けます。
このアカウントは万能ユーザなので、別途 SoftLayer のユーザを作成します。
ユーザ設計の考慮事項は、SoftLayer のユーザ管理 (http://dba-ha.blogspot.jp/2014/06/softlayer_21.html) にまとめているところなので、そちらを参照していただくとして、今回は、全ての操作をこのユーザでやってしまうことにします。
https://control.softlayer.com/ にてログインし、[Account]-[Users] メニューをクリックします。
[VPN Access] 欄の「None」というリンクをクリックし、[VPN Type:] 欄の値を「SSL」に変更し、[Save]ボタンをクリックします。[Logged in as:]の右横にある「Edit Master User Profile」というツールチップが現れるリンクをクリックします。[VPN Password:] 欄、およびその下の [Confirm Password:]欄に VPN 用のパスワードを入力し、[Edit User] ボタンをクリックします。
続いて [API Key] 欄の「Generate」というリンクをクリックすると「View」というリンクに変更されるのでクリックします。API Key が表示されるのでメモします。厳重に保管してください。この API Key があれば SoftLayer に対する操作が何でもできてしまうからです。
abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz01」という64文字の API Key が発行されたものとして話を続けます。

次に、概要設計をします。
インストールするバージョンを決めます。Oracle Linux 6、Oracle Database 12c Release 1 にします。12c は私も初挑戦なので、何らかの問題にぶつかり、手戻りもあるかと思いますが、それはそれで面白いのではないかと考えています。
Oracle Database は Standard Edition のライセンス条件に合わせて構築していくことにします。インストール要件だけでいえば、Enterprise Edition をインストールするほうが楽です。ASM というストレージマネージャを導入することが必須ではなくなるからです。
今回選ぶ物理サーバのスペックで、定価ベースの Oracle CPU ライセンス料を計算してみます。4GB x 4 CPU Core (1ソケット) の物理サーバ2台を考えています。
Standard Edition の場合、1,902,200円 CPU ライセンス × 2ソケット = 3,804,400円です。
Enterprise Edition の場合、(5,163,000円 CPU ライセンス + 2,500,000円 RAC ライセンス) × 8 Core × 0.5 (x86 割引き係数) = 30,652,000円です。
Enterprise Edition を選ぶ動機としては、Active Data Guard を構築して DR (disaster recovery) 対応したい、Partitioning 機能を利用しデータの分割を図ってメンテナンス時間を効率化したい、セキュリティ要件を満たしたい、等が考えられます。これらはさらに別料金が必要となるオプションです。ここまでは初期導入時の金額で、別途、Edition やオプションに関わらず、毎年22%ほどのサポート費用も必要になります。5年間利用するとして、Enterprise Edition の1時間当たりのライセンス料は $15 近くになります。ちなみに、SoftLayer で提供されている物理サーバで一番高いものにメモリフル搭載、SSD最大サイズフル搭載、RAIDコントローラ追加、10Gbps NIC で構成しても1時間当たり $10 ほどです。これだけのライセンス料を支払ってクラウド上に構築したいか、ということになると、Enterprise Edition を構築する機会はほとんどないような気がします。CPU ライセンスではなく、Named User ライセンスでイントラネット用ということであればニーズは多少増えるかもしれませんが、…。何台 Oracle を導入しても構わない、というライセンスを購入している企業もあるので、その関連であれば機会があるかもしれません。
まずは Oracle RAC が動けばよい、ということにします。バックアップ (NFS) サーバは構築しません。iSCSI Target サーバを SoftLayer の iSCSI Storage に置き換え、スペックアップをすれば本番でもそのまま使えるようなものを目指したいと思います。
登場人物としては、Oracle RAC が稼働するサーバ2台とデータベースを保存する共有ストレージが必要になります。また、DNS サーバにちょっとした要件があるので、こちらも構築します。iSCSI Target サーバに同居させます。
構築するノードは以上です。
Oracle RAC が稼働するサーバの要件としては、4GB以上のメモリがあることに気を付ければ、SoftLayer の物理サーバを利用する場合、他の要件は簡単にクリアできます。あくまで最少要件ですが。
共有ストレージについては、NFS か SAN となります。NFS だと速度が遅くなるので、本番稼働しているのを見たことがありません。実績がないものについては安定性も期待できない、と判断されているものと思われます。
SAN については、FC-SAN か IP-SAN(iSCSI) のどちらかとなります。あまり知られていませんが、SAS を直接共有することもできます(安くて速いですが4サーバまでしかつなげないものが多いです。マルチパスで構成すると2台までになります。2台、4台つなげられれば十分だという要件は多いと思いますが、注文される数はかなり少ないようです)。今回は SoftLayer 上に構築するので iSCSI にします。
ネットワーク設計については、最低2つのセグメントが必要となります。データベースクライアントとやり取りをするパブリックネットワークと、Oracle RAC を構成するノード同士がやり取りするためのプライベートネットワークです。さらに、共有ストレージとのやり取りを行うセグメントを分けることができればよいのですが、SoftLayer では2つの NIC しかない(冗長化すると4つありますが、理論的に2つな)ので、パブリックネットワークにて通信を行うこととします。監視・運用のためのセグメントもあればよいのですが、こちらもパブリックネットワークにて通信を行うこととします。ここで述べているパブリックネットワークとプライベートネットワークは、Oracle からみた場合の呼び方です。これらを SoftLayer のネットワークに割り当てる場合、逆につなぐことになります。ややこしいので、SoftLayer 側のネットワークについては、英語で Public、Private と呼ぶことで区別することとします。
整理すると、SoftLayer の Public VLAN では、Oracle RAC を構成するノード同士がやり取りするための通信が流れます。Oracle のプライベートネットワークに該当します。SoftLayer の Private VLAN では、データベースクライアントとの通信が流れます。Oracle のパブリックネットワークに該当します。共有ストレージとの通信、監視・運用のための通信も Private VLAN を流れます。チケットを発行することで複数の Private VLAN を接続可能らしいですが、帯域が増えるわけではないので、そこはこだわらないことにします。
Public VLAN に接続されている NIC にはグローバル IP アドレスが振られますが、最終的には、プライベート IP アドレスに置き換え、インターネットから接続できないようにします。SoftLayer が無料で提供している Ping 監視ができなくなりますが、セキュリティの確保を優先することにします。
Private VLAN に接続されている NIC には プライベート IP アドレス(Primary)が振られますが、Portable Private IP Address に置き換えます。Primary IP Address は、純粋に SoftLayer の都合で割り当てられます。1号機と2号機を同時発注しても、2号機の方が小さい番号になってしまったりしたこともあります。物理サーバが壊れた際に、新サーバを発注しても同じ IP アドレスが割り当てられることを期待できません。Portable Private IP Address であれば、割り当てられた範囲(最大 26ビットマスク)内で自由に割り当てでき、Private ネットワーク内でルーティングしてもらえます。1つの Private VLAN に複数のセグメントを割り当てることも可能です。ルーティングが不要であれば、割り当てられたネットワークアドレス以外のプライベート IP アドレスを自由に割り当てできます。
性能に関する設計は予算の都合で決めますが、拡張性は確保します。
セキュリティ設計について、ファイアウォールは RHEL の標準的な設定を踏襲、発展させることとし、SELinux については Oracle Database のほとんどの機能が対応済みらしいですが、無効化することとします。IPv6 は無効化します。アンチウィルスソフト等を導入しません。監視や監査も考慮しません。パスワードも基本的に「oracle」で済ませます。その代り、ssh については、公開鍵認証のみで接続可能とします。SoftLayer のユーザに関しては先に述べたとおりです。
サーバには、余計なソフトウェアは極力入れないようにする、という方針を堅持したいのですが、GUI 操作ができるようにします。Oracle Database はインストール作業も含め基本的にはコマンドラインでほとんどの操作が可能になっていますが、今回は GUI 操作を含む説明にしたいと思います。そのため、Gnome を導入することにします。

次に、ネットワーク図を作成したいと思います。
ドメイン名は「example.com」とします。Private VLAN が1つしかないフラットなネットワークにします。62台目(61台目?)のサーバを発注すると、もう一つ Private VLAN が無料で提供されますが、61台目のサーバを発注したことが無く、61台目で作成されると思われる13個目の無料提供される Public VLAN とどのようにつながるのか検証していないので、とりあえず、仮想サーバを60台まで発注しても大丈夫な図を Visio で作りました(物理サーバの場合に Private VLAN に付与される Remote management IP アドレスについては考慮していません。IPMI にアクセスするためのユーザ名は root ですが、管理者権限が全て与えられているわけではなく、活用方法を検討中です。コンソールアクセスには有用ですが、管理ポータルでサーバ一覧を表示し、[Actions] から [KVM Console] をクリックすることでコンソールを開くことができるため、特に IP アドレスを管理する必要性が低いこともあります。この情報まで記載すると、図が見難くなるため、あえて外しています。Primary Private アドレスは基本的に図から取り除き、Portable Private IP アドレスを記載するのがよいと考えています)。

https://raw.githubusercontent.com/pcserver-jp/SoftLayer/master/SoftLayerNetwork.vsd

PDF 化したものも置きました。

https://raw.githubusercontent.com/pcserver-jp/SoftLayer/master/SoftLayerNetwork.pdf


1ページ目は、論理ネットワーク図です。IP アドレスや VLAN ID が伏字になっています。
最初の1台を発注するまで確定しないからです。香港データセンタだと下の方にある IP アドレス(ホスト名)は最低限押さえておきたいところです。ストレージに関しては発注したタイミングで決まるものかもしれないので、発注した後で確認してください。



2ページ目は、SoftLayer が標準で無料提供している Ping 監視のネットワーク・フロー図となっています。冗長化された監視サーバを別途設けたいところですが、今回は構築しません。冗長化されたログサーバも欲しいですが、今回は構築しません。



3ページ目は、DNS プロトコルのネットワーク・フロー図となっています。
DNS サーバは冗長化したいところですが、今回はしません。
DNS キャッシュ・サーバの冗長化(http://dba-ha.blogspot.jp/2012/01/dns.html)を参照していただければと思います。ちょっと古いですが、参考になると思います。Private VLAN 側だけでサービス提供するように変更すればよいと思います。rpm は作らなくても、標準で含まれるようになりました。



4ページ目は、NTP プロトコルのネットワーク・フロー図となっています。
SoftLayer の VS (仮想マシン) では、NTP による時刻同期は不要です。ハイパーバイザの時刻で動いています。物理サーバでは、NTP による時刻同期が必須と考えましょう。



5ページ目は、iSCSI プロトコルのネットワーク・フロー図となっています。iSCSI Target は冗長化や DR (disaster recovery) 対応のものにしたいところですが、今回はシングル構成です。信頼性を除くと、SoftLayer iSCSI Storage よりは高機能なものとなります。



6ページ目は、DB アクセスのネットワーク・フロー図となっています。
NFS サーバからは、バックアップの手続きの中で DB アクセスが発生します。そのためのフローのみが入っています。
今回はこの部分の構築を省略するので、テスト用のために、どこかに DB クライアントを用意する必要があります。iscsi01 サーバで動かす予定の DNS サーバでは、ローカルで名前解決させると、SCAN IP アドレスが固定されてしまった記憶があります。DB サーバ上でクライアントを動かすのも障害試験で苦しいですが、SCAN IP アドレスは想定通りラウンドロビンされていい感じになります。このあたりの制約があることを前提に、iscsi01 サーバに Oracle instant client をインストールすることにします。SCAN IP アドレスの説明は後日行います。



7ページ目は、SSH プロトコルのネットワーク・フロー図となっています。
https://vpn.tok01.softlayer.com/ へ接続する前提にしています。
専用の踏み台を構築し、全ての操作ログをログサーバに記録するようにしたいところですが、今回は構築しません。iscsi01 を疑似踏み台とします。



8ページ目は、HTTP/HTTPS プロトコルのネットワーク・フロー図となっています。
今回の構成では、唯一、インターネットに出ていくものになります。SoftLayer 標準の Ping 監視をあきらめる前提で、こちらの通信が不要となるようにすれば、インターネットに直接接続する必要性がなくなり、よりセキュアな構成になります。
今回は、Oracle Database のインストーラをダウンロードするために、また、Oracle Linux のリポジトリにアクセスするために利用します。前者は、SSL VPN を経由する手もありますが、帯域が細いので非常に時間がかかってしまいます。後者についてですが、RHEL や CentOS のリポジトリは SoftLayer の Private ネットワーク内に存在しますが、Oracle Linux のものについては存在していません。そこで、iscsi01 を簡易リポジトリとして利用することにします。このリポジトリの作成はインターネット経由で行いますが、メンテナンスを SSL VPN 経由で実施することにすれば、構築完了後に、インターネットとの接続を切ることができるようになります。今回はそこまで考えないことにします。



9ページ目は、SoftLayer API プロトコルのネットワーク・フロー図となっています。
バックアップサーバは今回構築しません。iscsi01 サーバから db01、db02 を発注しようと思っています。



10ページ目は、デフォルト・ゲートウェイ設定に関する図となっています。




ここまでで、SoftLayer の NAS に矢印線がつながっていませんが、使い方を模索中です。
機能と費用(毎月$10/20GB)対効果を考えると…。今の時点で実用的に考えているのは、サーバ1台とそのマシンにあるデータのバックアップを定期的に他のデータセンタに残しておきたい、という要件があり、バックアップサイズが 40GB を超えない場合です。超える場合は、他のデータセンタに 100GB のローカルディスクを追加した仮想マシン($27/monthほど)を立てて簡易バックアップサーバにすればよいです。信頼性が、という話を考えても、ローカルディスクではなく SAN ディスクにすること($34/monthほど)で似たり寄ったりだと思われます。仮想マシンの2台目以降の仮想ハードディスクは Portable Storage として他の仮想マシンに付け替えることが可能なので、データを残す、という観点での信頼性は似たり寄ったりだと思います。
とりあえず NAS を図に残しておきますが、そのうち消えるかもしれません。

構築前の検討としては、このあたりにとどめたいと思います。
詳細設計は、構築しながら進めていきます。
一度構築してみて、どのような詳細設計が必要かが分かります。
事前にマニュアルだけを頼りに詳細設計せざるを得ない場合もあります。メジャーな製品は情報も多いこともあり、無理でも無理とは言えない立場に立つこともありますが、今回はお許しいただきたい、と思います。

詳細設計の時に参照する図を掲載しておきます。これまでの図で空欄にしておいたノードは除外し、省略していた IP アドレスを全部掲載したものになります。

https://raw.githubusercontent.com/pcserver-jp/SoftLayer/master/OracleRAConSoftLayer.vsd

https://raw.githubusercontent.com/pcserver-jp/SoftLayer/master/OracleRAConSoftLayer.pdf




次回は、iscsi01 サーバを発注して、必要な構築作業を具体的に進めていきます。

0 件のコメント:

コメントを投稿