※現在、LifeKeeperお試しキットの提供は終了しております。
こんにちはサイオステクノロジーでHAクラスタソフトウェアLifeKeeperのマーケティングを担当しています石部です。
LifeKeeperは「安心を、簡単に。」をスローガンに製品を提供しています。
そんなLifeKeeperを非エンジニアである私が、ノンプログラミングでHAクラスタ(安心)を簡単に構築できるのか試してみました。
ですのでこの記事ではかなり初歩的な内容から紹介しています。
エンジニアでシステム構築経験のある方はLifeKeeper評価版を是非ご利用ください。
この記事はこんな人にお勧め
- エンジニアではないけどHAクラスタの構築や動作を体験したい方
- まじかよ!配属先で初めてHAクラスタを扱うことになった方
- HAクラスタ構築は難しいとお考えの方
- LifeKeeperを初めて触る方
前提条件
- AWSアカウントがあること※
- クライアント端末にSSHクライアント、SCPクライアントがインストールされている
SSHクライアントはサーバを遠隔で操作するための、SCPクライアントは遠隔のサーバにファイル転送するためのツールです。
私はSSHクライアントはTera TermをSCPクライアントは WinSCPを利用しました。
どちらも無料で利用可能ですのでネットで検索すればダウンロードすることができます。
少しハードルが高く感じますが、PC上で動作するアプリをインストールするだけですのでご安心を。ツールの使い方も手順の中で解説します。
※基本はAWSの無料枠でご利用可能です。皆さんのご利用状況(既に無料枠を使い切っているなど)やAWSの価格改定等で料金が発生する可能性がありますので、お試しになる時点でご確認ください。
お試しキットで利用している料金が発生する可能性があるサービス
- コントロールノードのOS:AmazonLinux2 (カスタム) t2.micro
- コントロールノードのEBSルートボリューム
- ターゲットノードのOS:CentOS7.7 t2.micro
- ターゲットのEBSルートボリューム
- ターゲットノードにアタッチするEBSボリュームサイズ(レプリケーション領域):5GB
- NATインスタンスのOS:AmazonLinux(t2.micro)
今回の構成は、データ転送に関しては以下のとおりです。
- インターネットからAWSへのインバウンド通信
- 無料
- AZまたぎの通信
- 有料(0.01 USD/GB)
なぜ非エンジニアの私が簡単にHAクラスタを構築できたのか
LifeKeeperにはお試しキットというものがあります。
お試しキットはAWS上に環境を構築し、HAクラスタソフトウェアのインストールなども自動でできるキットです。
なので、HAクラスタ構築経験ゼロどころかシステム構築について全く経験のない私でも簡単に構築することができました。
お試しキットでは大きく次の2つの工程があります。
- AWS CloudFormationを使ってAWS上にHAクラスタを構成するための環境(AWSリソース)を作成する。
- Ansibleを使って出来上がった環境にHAクラスタソフトウェアLifeKeeperをインストールし設定をする。
いきなりCloudFormation、Ansibleといったキーワードが飛び出しましたがご安心ください。この後で簡単に説明します。ご存じの方は読み飛ばしてください。
AWS CloudFormationとは
AWS CloudFormationとは、AWSリソース(サーバ(EC2)やネットワーク(VPC)など)をテンプレート(雛形)化し自動構築するサービスです。
テンプレートを利用すれば、手作業より早く、設定ミスも無くなり誰が何度やっても同じものができ上がるというワケです。
AWSにはウェブブラウザでリソースを操作するAWSマネジメントコンソールというのがありますが、手動でやる場合はそこでリソースひとつずつ作成していく事になります。
お試しキットでは、AWS CloudFormation のテンプレートも合わせて配布するので、皆さんはAWSマネジメントコンソールからポチポチ環境を構築していく必要がないのです。
Ansibleとは
Ansibleとは 構成管理ツールの一つです。機器の構成(IPアドレス、ホスト名など)をPlaybookと呼ばれるファイルに記述しておきそれをテンプレートとして利用すると機器の構成を自動で構築することができます。
AWS CloudFormationと同じく、設定ミスも無くなり誰が何度やっても同じものができ上がるというワケです。
HAクラスタをAWS上に自動構築、まずは体感してみよう
CloudFormationやAnsibleがない場合、HAクラスタを構築するためにはまずは次のような手順を手動で行う必要があります。
- AWSのマネジメントコンソールから必要なリソースを手動で起動
- 各AWSリソースの設定を手動で行う←このあたりで入力ミス等が発生の可能性あり!
- LifeKeeperを稼働系、待機系にインストールする
- LifeKeeperの設定をする←GUI(画面から操作)でできます。
という具合にHAクラスタの構築は少し面倒なうえに設定する際に入力ミスなどの落とし穴が潜んでいるんです。
というか非エンジニアの私にはそれを手動でやり切ることは難しすぎます。
でもLifeKeeperお試しキットを使えば、ほぼ自動でHAクラスタが構築可能なんです。
お試しキット利用手順
ざっくり行ってしまうと以下の様な流れになります。
お試しキットを入手
↓
CloudFormationでAWSの環境を作る
↓
AnsibleでLifeKeeperのインストールや設定
↓
フェールオーバーでの切り替え確認!
それでは実際の手順を紹介していきます。
まずはお試しキットに申し込む※現在は提供をおこなっておりません
- まずは申し込み。申し込みページの「評価版より手軽に。「LifeKeeperお試しキット」」の「ご注意事項」をご覧になり「お試しキットを使ってみる」ボタンよりお申し込みください。
- 申し込みが完了するとお申し込み完了のメールが届きます。
- ライセンス情報がメールで届く。このメールに記載されているダウンロード用リンクからお試しキットを入手します。
- Zipファイルの中に「デモ環境作成の手引き」というPDFが入っていますので、そちらを見ながら進めていきます。
事前準備
それでは手順書の「1.3本ドキュメントの内容について」に記載のあるファイルを操作するPCに準備しておきます。
- 「cloudformation_2ENIs.yaml」はお試しキットのZipファイルの中に入っています。
- セットアップファイル群「lk_deployment_v1.zip」もお試しキットのZipファイルの中に入っています。
- 評価ライセンス「evalkeys-60day.txt」は、「ダウンロードリンク準備完了のお知らせ」というメールに添付されていますのでPC上に保存しておきます。
- EC2のキーペア
キーペアとはHAクラスタの自動構築を行うためのコントロールノード(EC2)※難しい言い方になっていますが、サーバだと思ってください。
SSHで接続してコマンドを入力しAnsibleのPlaybookを実行したりします。のでSSHで接続する為に必要になる鍵ファイルの事です。
キーペア作成手順
- AWSマネジメントコンソールにログイン
- 「サービス」からEC2を選択
- EC2ダッシュボードから「キーペア」を選択
- 画面右上の「キーペアを作成」をクリック
- 適当に名前を付けてキーペアを作成します。Tera Termではpemを利用します。
- 作成されるとファイルがダウンロードされるのでPC上で保管します。
AWSリソースの作成
いよいよAWS CloudFormationでAWSリソースを作成します。
- AWSマネジメントコンソールからCloudFormationを選択します。
- 画面右上の「スタックの作成」ボタンをクリックし、「新しいリソースを使用(標準)」をクリック
- スタックの作成、ステップ1「テンプレートの指定」で「テンプレートファイルのアップロード」を選択します。
- 「テンプレートファイルのアップロード」でお試しキットのZipファイルに入っていた「cloudformation_2ENIs.yaml」を選択して「次へ」をクリックします。
- 一番上の「スタックの名前」に適当な名前を付け次へをクリックします。
- 「パラメータ」のKeyNameには先ほど作成したキーペアのダウンロードしたファイル名(拡張子はいりません)を入力し次へをクリックします。※その他の箇所は変更しなくてOKです。
- 次の「ステップ 3 スタックオプションの設定」はそのまま次へをクリックします。
- 画面の下段にある「AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。」にチェックを入れ、「スタックの作成」をクリックすれば完了!
CloudFormationで上の図のようなAWSリソースが出来上がりました。
この後は、図中の「コントロールノード」にSSHで接続してAnsibleを実行してLifeKeepeのインストールやセットアップを行います。
スタック作成のつまづきポイント
CloudFormationでスタック作成時にエラーが出てOh No!となる時があります。
大丈夫です。私が先にトラップに掛かっておきましたので、その内容を共有します。
つまづきポイント1
「状況の理由」のところにThe image id XXXXXX does not exist と言った感じのメッセージが出ていたら画面右上のリージョン選択のところが「東京」になっている事を確認してください。この時は「オハイオ」になっていてエラーが出てしまいました。
つまづきポイント2
「状況の理由」のところに In order to use this AWS Marketplace product you need to accept terms and subscribe.と言った感じのメッセージが出ていたら To do so please visit XXXXXXXXXX のリンク先に行ってサブスクライブしてください。
↓マーケットプレイスでサブスクライブ
セキュリティグループでSSH接続を許可する
セキュリティ上デフォルトではSSHで接続することが出来なくなっていますのでセキュリティーグループでインバウンドルールにSSH接続を追加します。
CloudFormationで「lkcli-servers」というセキュリティグループができているはずです。
- 「インバウンドルールを編集」をクリックします。
- 「タイプ」でSSHを選択して「ルールを保存」をクリックします。
- これでSSHで「コントロールノード」に接続することができるはずです。
ついに!SSHでEC2(コントロールノード)に接続する
準備のところで取得したSSHクライアントを起動して下さい。私はTera Termを利用します。
さっそくTera Termを起動すると、真っ黒で恐ろしそうな窓が出て来ました。
トンネルを抜ければそこにはEC2が。。。コントロールノードに接続するための情報をTera Termに教えてあげます。
まずはAWSマネジメントコンソールでその情報を確認しましょう。
- EC2ダッシュボードで実行中のインスタンスをクリックしてください。
- Nameのところでコントロールノードを探します。コントロールノードはCloudFormationの「スタック名」+「Server」となっているハズです。
私はCloudFormationのスタック名を「LK-TRIALKIT-DEMO」にしたので「LK-TRIALKIT-DEMO Server」です。
- Host:パブリック IPv4 DNSをコピーして設定します。 ec2-X-XXX-X-XXX.ap-northeast-1.compute.amazonaws.com
という感じでXXXにはパブリックIPv4アドレスが入っているハズです。 - TCP port#:22
- Service:SSH
これで設定は完了です。
いざ「OK」をクリック!
こんなメッセージが表示されますが、Add this machine and・・・にチェックを付けて「Continue」をクリックします。
すると・・・まだ接続完了させてくれません。
どちらさん?と聞かれるので
- User name:ec2-user
- Authentication methods:Use RSA/DAS・・・・を選択します。
- Private key file:事前準備のキーペア作成で作った「xxxx.pem」ファイルを選択します。
最後にOKをクリックします。
!!コントロールノードに接続できました。
HAクラスタソフト(LifeKeeper)のセットアップ
事前準備
LifeKeeperをセットアップするためにまずはコントロールノードに「lk_deployment_v1.zip」と「ターゲットにアクセスするためのSSHシークレットキー」と「evalkeys-60day.txt(評価ライセンスキー)」を転送しなければいけません。
転送はSCPで行います。
私はWinSCPを利用しました。
まずはWinSCPを起動して接続先の情報を入力します。
- 転送プロトコル:SFTP
- ホスト名:SSHで入力したコントロールノード(EC2)のホスト名
- ポート番号:22
- ユーザ名:ec2-user
- パスワード:空欄でOK
次に設定をクリックし、左のツリーメニューで「SSH」>「認証」をクリックして「認証条件」の「・・・」をクリックします。
すると秘密鍵を選択するダイアログが出て来ますので、SSHクライアントで利用したシークレットキーを選択して下さい。
WinSCPでは拡張子が「ppk」の鍵ファイルを使いますが、まだありませんので、次のダイアログが出て来ますので「OK」を選択して鍵を作成しておきます。
鍵が出来上がればそのファイルが選択されていますので、「OK」をクリックします。
最初の画面に戻りますので、下の「ログイン」をクリックすればこんな感じでコントロールノードにアクセスできます。
画面右側赤枠のエリアがコントロールノードのディレクトリです。
ここに「lk_deployment_v1.zip」と「ターゲットにアクセスするためのSSHシークレットキー(.pem)」と「evalkeys-60day.txt(評価ライセンスキー)」をドラッグアンドドロップすれば転送できます。
セットアップ
準備が出来たところで、いよいよLifeKeeperのセットアップに入っていきます。
こちらは手順書の通りコマンドを入力して行くだけなので簡単ですので注意点を書いておきます。
注意点1:手順書にあるコマンドの「$ 」はコピーしない!
私はお恥ずかしながら最初、
$ $ unzip ~/lk_deployment_v1.zip
と書いて「そんなコマンドありません」みたいなエラーがでて、???何で?って時間を無駄にしていました。
注意点2:コマンドをコピペする場合は一旦メモ帳などにコピペしたものをコピペする。
文字によってはPDFから直接コピペするとエラーになることがありました。
面倒ですが、一度メモ帳にコピペした文字列をSSHクライアントにコピペするのをお勧めします。
次のポイントです。手順書ではリージョン以外の項目はデフォルトで構いませんと書いています。
デフォルト=初期値=何もせずエンターキーを押す。という意味です。
リテラシーの低い私には少し難しい言葉です。
つまり、「aws configure」とタイプし、次の「AWS Access Key ID [None]:」と表示がでたらそのままエンター、次もそのまま、「Default region name [None]:」の時だけ「ap-northeast-1」と入力します。
次の手順16もつまずきポイントです。
改行や「¥」マークは不要です。
ルートテーブルIDは手順書に調べ方が書いてありますが、画像がないので載せておきますね。
手順17の青枠も改行無しで入力して実行です。
ここまでやればターゲットノードにLifeKeeperがインストールされているところまで完了です。
知らない間にHAクラスタソフトLifeKeeperのインストールまで終わってるってことですね!
手順18ではパスワードの設定を行いますが、ここでのポイントはLK001とLK002のrootユーザのパスワードは同じにしておくってことです。
LifeKeeperのGUIを起動する
手順書によるとLifeKeeperのGUIを利用するにはXmingなどXサーバなるものが起動しているのが前提とのこと。
素直にXmingをインストールすることにしました。
Xming-6-9-0-31-setup.exe
Xming-fonts-7-7-0-10-setup.exe
をダウンロードして順番にインストールしました。
Tera Termの方も設定が必要のようなので設定しました。
Setting > SSH Forwarding… > X Forwarding にチェックを付けます。
設定が反映されるにはTera Termを再接続する必要があるので、一度終了して、Tera Termを立ち上げ直して接続します。
XLaunchからアプリを起動しておきましょう。
全てデフォルトの選択で次へをクリックすれば問題ないと思います。
Multiple windowsで次へをクリック > Start no clientを選択して次へをクリック > Clipboardにチェックが入った状態で次へをクリック > 完了をクリック
タスクバーのところにXming serverのアイコンがあると思います。
これで、手順書に書いてあるGUIクライアント起動の前提条件はクリアです。
では手順書通りコマンドを入力してLifeKeeperを立ち上げましょう。
うまくいくとこんな画面が立ち上がってきます。
- Login:root
- Passward:自身で設定されたパスワードを入力
OKを押すと・・・
ハロー LifeKeeper!って事でLifeKeeperがインストールされた2台のサーバが確認出来ました。
LK001が稼働系、LK002がスタンバイになっています。
クラスタ環境の作成
手順書の ansible-playbook playbook.yml を実行するとDataKeeperのリソース作成が終わるまでしばらく時間が掛かりますので、何も起きてないように見えますが、数分間待ちます。
SSHクライアントの画面で$の横にカーソルが点滅して入力受付状態になっていればOKです。
フェールオーバさせてみよう
さぁクラスタ環境ができあがりました。
実際にフェールオーバさせてLK001(アクティブ)のリソースがLK002(スタンバイ)に切り替わることを確認してみましょう。
まずはLifeKeeperのGUIでツリーを展開します。
LK001のリソースがActive、LK002のリソースがStanByであることが確認できます。
この状態でLK001にSSHで接続し、「reboot -fni」と入力して実行します。
「reboot -fni」は強制再起動するためのコマンドです。
つまり、強制的に稼働しているLK001をダウンさせてLK002がActive(稼働系)に切り替わることを確認します。
では早速。
SSHでLK001に接続します。もう慣れてきましたね。
まずは、コントロールノードにSSHで接続しましょう。
それから、「ssh LK001」と入力しエンター。これでLK001に入ることができました。
「sudo su -」と入力しエンター、最後に「reboot -fni」と入力しエンターを押します。
「Rebooting」と表示されればLK001のサーバーは再起動していますので、フェールオーバが発生しLK002がActive(稼働系)として動き出すはずです。
LK002のGUIからLK001が「Unknown」になります。
因みに「Unknown」は対向ノード(LK002から見るとLK001)の状態を確認できないときに表示されるステータスです。今回は意図的に、LK001を強制再起動しているため、一時的に「Unknown」と表示されるのは正常な状態です。
問題発生!という事ですかさずLK002がActive(稼働系)に切り替わります。
LK001は再度立ち上がりますが、LK002がActive(稼働系)のままです。
おぉついにフェールオーバまで体験できた!!
非エンジニアの私でも出来てしまうくらい簡単ですので是非LifeKeeperお試しキットでHAクラスタの構築やフェールオーバを体験してみてください。
※現在はLifeKeeperお試しキットの提供は終了しております。評価版の提供は引き続きおこなっておりますので、ぜひご利用ください。