2015年6月28日日曜日

【製品情報】VMware vCloud Air上でLifeKeeper/LifeKeeper Single Server Protectionがご利用できるようになりました


VMware vCloud Air上でLifeKeeper/LifeKeeper Single Server Protectionがご利用できるようになりました。

VMware vCloud Airはヴイエムウェア社が提供する、パブリッククラウドであり、ハイブリットクラウドサービスをコンセプトとしています。

vCloud AirCPU、メモリ、ストレージ領域、ネットワーク帯域をまとめてリソースプールと呼び、このリソースプールをお客様にご提供します。 

弊社で行った検証内容を元に、動作検証レポート作成し公開しております。ご興味のある方は、以下のURLよりダウンロードください。



参考情報

VMware vCloud Air


【トピックス】Chef / Vagrant でローカル開発環境に LifeKeeper を手早く構築する (3) – Chef編

こんにちは。小川です。

前回はLifeKeeperの動作に必要なVagrantの設定の紹介をしました。
今回は Chef を使って LifeKeeper 導入の前提となる設定と、保護対象の
Apache HTTP Server
のインストール及び設定を行います。
以下にChefで実施することと構成図を記載します。

 [LifeKeeper]
 ・LifeKeeperインストールに必要な依存パッケージインストール
 ・GNOMEデスクトップ関連パッケージインストール
 ・設定ファイル配置
  - /root/.bash_profile (LifeKeeperの環境変数を設定)
  - /etc/selinux/config (SELinux無効化)
  - /etc/hosts (両ノードの名前解決の設定)
  - /etc/inittab (ランレベル5の設定)
  - /etc/default/LifeKeeper (Broadcast Ping無効化設定)
 ・LifeKeeperインストールメディアISOの配置
 ・LifeKeeperライセンスファイルの配置
 ・OS再起動(SELinuxの設定反映の為。無効化後LifeKeeperをインストール可能。)
  Vagrantから起動したCentOSはデフォルトでiptablesが無効状態のため、
   今回LifeKeeperが使用するポート番号の解放は考慮しないものとします。

 [Apache]
 ・Apacheパッケージインストール
 ・設定ファイルを配置
  - /etc/httpd/conf/httpd.conf (仮想IPアドレスのListen設定, PIDファイル設定)
  - /etc/sysconfig/httpd (PIDファイル設定)
 ・サービス自動起動設定の無効化

 [構成図]


■Chef
の設定
1. Knife 初期化
# knife configure initial
全てデフォルトでEnterを押します。
------------------------------------------------
Where should I put the config file? [C:/Users/username/.chef/knife.rb]

(
省略)
------------------------------------------------

2. knife.rb
を設定
C:/Users/username/.chef/knife.rb
を開き、以下のように設定します。
------------------------------------------------
log_level                :info
cookbook_path    ["cookbooks", "site-cookbooks"]
node_path        "nodes"
role_path        "roles"
local_mode true
------------------------------------------------
上記以外は今回使用しないため削除しています。

 * log_level
 knifeコマンドのログレベルを指定します。infoレベルを指定します。

 * cookbook_path
 クックブックのパスを指定します。
 クックブックのパスについて、Chefでは以下のように区別されてます。

 cookbooks     : コミュニティ版のクックブックを置く場所です。
 site-cookbooks: 自分で作成したクックブックを置く場所です。
                 
今回作成したLifeKeeperApacheのクックブックを置きます。

 * node_path
 Node情報を記述したjsonファイルを置くパスを指定します。nodesディレク
 トリを指定します。ここにLifeKeeper 2ノード分のjsonファイルを作ります。

 * role_path
 ロール情報を記述したファイルを置くパスを指定します。
 rolesディレクトリを指定します。ここにLifeKeeperのロールを作ります。

 * local_mode
 Chefのローカルモードの設定です。
 後述のChef-Zeroを使うため、trueを設定し有効にします。

3. Chef-repo
作成
Chef-repo
を作成するディレクトリに移動し、以下のコマンドを実行します。

 # chef generate repo chef-repo

4.
クックブック作成
今回使用するLifeKeeperApacheのクックブックを手順3.で作成したリポジト
リ上に作成します。

 # knife cookbook create LifeKeeper -o chef-repo\site-cookbooks
 # knife cookbook create Apache -o chef-repo\site-cookbooks

作成したCookbookのリストは以下のコマンドで確認できます。

 # knife cookbook list
 Apache       0.1.0
 LifeKeeper   0.1.0

レシピの準備
1. レシピを作成
1.1. LifeKeeper
chef-repo
site-cookbooks->LifeKeeper->recipes->default.rbを以下のよう
に記述します。

------------------------------------------------
lk_depend_packages = ["bzip2", "iproute", "iputils", "patch", "redhat-lsb"]

lk_depend_packages.each do |depend_package|
  package depend_package do
    action :install
  end
end

execute 'yum groupinstall' do
  command "yum groupinstall -y 'X Window System' 'Desktop' 'Desktop Platform' 'General Purpose Desktop' 'Japanese Support'" 
end

cookbook_file "sps.img" do
  path "/tmp/sps.img"
  source "sps.img"
end

cookbook_file "LKLinux-Core.lic" do
  path "/tmp/LKLinux-Core.lic"
  source "LKLinux-Core.lic"
end

cookbook_file "apache.lic" do
  path "/tmp/apache.lic"
  source "apache.lic"
end

cookbook_file "LifeKeeper" do
  path "/etc/default/LifeKeeper"
  source "LifeKeeper"
  owner "root"
  group "root"
  mode 0644
end

cookbook_file "bash_profile" do
  path "/root/.bash_profile"
  source "bash_profile"
  owner "root"
  group "root"
  mode 0644
end

cookbook_file "hosts" do
  path "/etc/hosts"
  source "hosts"
  owner "root"
  group "root"
  mode 0644
end

cookbook_file "config" do
  path "/etc/selinux/config"
  source "config"
  owner "root"
  group "root"
  mode 0644
end

cookbook_file "inittab" do
  path "/etc/inittab"
  source "inittab"
  owner "root"
  group "root"
  mode 0644
end

execute 'reboot' do
  command "reboot"
end
------------------------------------------------

上記レシピを構成する各Chefのリソースについて説明します。

 * package
 OSパッケージを扱うためのリソースです。
 Chefでは利用プラットフォームに応じたインストールをしてくれます。
 今回CentOSを使用しますので、action:installを指定するとyumでインストー
 ルを行います。

 LifeKeeperのインストールにはRHEL6系の場合bzip2, iproute, iputils,
 patch, redhat-lsbが必要ですので事前に入れておきます。詳細は以下の
 ドキュメントに記載があります。

 SIOS Protection Suite for Linux 8.4.0 テクニカルドキュメンテーション
 -> インストール -> 環境のセットアップ -> Linuxの依存関係
 http://jpdocs.us.sios.com/Linux/8.4.0/LK4L/TechDoc/index.htm

 * execute
 コマンドを実行するリソースです。上から順番に以下のことをしています。
  ・GNOMEデスクトップ関連パッケージをインストール
  ・OS再起動(SELinux設定反映のため)

 * cookbook_file
 クックブックの静的なファイルを任意の場所に配置するリソースです。
 以下のファイルをクックブック内のfilesディレクトリに入れておきます。
  ・インストールメディアのISO
  ・LifeKeeperライセンス
  ・.bash_profile
  ・hostsファイル
  ・SELinux設定ファイル
  ・/etc/default/LifeKeeperファイル

 * owner
 ファイルの所有者を指定します。

 * group
 ファイルの所有グループを指定します。

 * mode
 ファイルのパーミッションを指定します。

1.2. Apache

chef-repo
site-cookbooks->Apache->recipes->default.rbを以下のように記
述します。

------------------------------------------------
package "httpd" do
  action :install
end

service "httpd" do
  action [ :disable ]
end

template "httpd.conf" do
  path "/etc/httpd/conf/httpd.conf"
  source "httpd.conf.erb"
  owner "root"
  group "root"
  mode 0644
end

cookbook_file "httpd" do
  path "/etc/sysconfig/httpd"
  source "httpd"
  owner "root"
  group "root"
  mode 0644
end
------------------------------------------------

上記レシピを構成する各Chefのリソースについて説明します。

 * package
 保護対象のApacheのパッケージをインストールします。

 * service
 Apacheの起動/停止はLifeKeeperが制御しますので、OS のサービス自動起動
 設定はオフにします。

 * template
 動的に変更するテンプレートファイルを配置します。
 今回はロール機能で/etc/httpd/conf/httpd.confServerName及びPidFile
 ディレクティブを変更します。

 * cookbook_file
 /etc/sysconfig/httpdファイルを配置します。
 LifeKeeper によって Apache が起動された場合、PIDファイルが変わります
 ので(詳細は後述に記載)変更したものを配置します。

2.
必要な設定ファイルの準備

各設定ファイルのベースファイルが手元にない場合は、設定した Vagrantfile
をもとにCentOS1台起動し、scp等で取得しておきます。

2.1. LifeKeeper
2.1.1. .bash_profile
/root/.bash_profile
LifeKeeperで必要な環境変数を設定したものです。
以下に変更箇所を抜粋します。
------------------------------------------------
PATH=$PATH:$HOME/bin:/opt/LifeKeeper/bin
MANPATH=/opt/LifeKeeper/man

export PATH MANPATH
------------------------------------------------

 注意
 Windowsでテキストエディタで開いて保存した場合、CRLF コードで改行が入
 り、Chefで適用した後ユーザーがログインした際にエラーが発生することが
 ありますので注意してください。正常に読み込めるよう UTF-8で保存すると
 良いでしょう。

2.1.2. hosts
今回のクラスタ構成では両ノードの名前解決はDNSサーバーではなく、hosts
行います。両ノードのホスト名を書いたものを用意しておきましょう。
------------------------------------------------
192.168.33.11     lk01
192.168.33.12     lk02
------------------------------------------------

2.1.3. /etc/selinux/config
LifeKeeper
の動作要件として、SELinuxは無効(disabled)が前提条件です。
Vagrantから起動した場合デフォルトSELinux=permissive の設定になってい
ますので、変更する必要があります。以下に変更箇所を抜粋します。
------------------------------------------------
SELINUX=disabled
------------------------------------------------

2.1.4. /etc/inittab
ランレベル5で起動するようにinittabを変更します。
以下に変更箇所を抜粋します。
------------------------------------------------
id:5:initdefault:
------------------------------------------------

2.1.5. /etc/default/LifeKeeper
IP
リソース作成に伴い、Broadcast Pingを無効化します。
以下に変更箇所を抜粋します。
------------------------------------------------
NOBCASTPING=1
------------------------------------------------

2.2. Apache
2.2.1. /etc/httpd/conf/httpd.conf
LifeKeeper
によってApacheが起動された場合、PIDファイル名は以下になります。
以下に変更箇所を抜粋します。
------------------------------------------------
PidFile run/httpd.etc.httpd.pid
------------------------------------------------

2.2.2. /etc/sysconfig/httpd
上記と同様にPIDファイル名を変更します。
------------------------------------------------
PIDFILE=/var/run/httpd.etc.httpd.pid
------------------------------------------------

3. cookbook_file
で指定したファイルの配置
3.1. LifeKeeper
chef-repo
site-cookbooks->LifeKeeper->files->defaultcookbook_file
以下のファイルを置きます。
 ・sps.img
 ・LKLinux-Core.lic
 ・apache.lic
 ・config (/etc/selinux/config)
 ・hosts (/etc/hosts)

3.2. Apache
chef-repo
site-cookbooks->Apache->files->defaultcookbook_fileに以下
のファイルを置きます。
 ・httpd.conf (/etc/httpd/conf/httpd.conf)
 ・httpd (/etc/sysconfig/httpd)

4. Node
の設定
4.1. Node
情報の作成
以下のコマンドで各ノード情報を記述するJSONファイルを作成します。
(
記述内容の詳細は後述)

 # knife node create lk-node01 -d
 # knife node create lk-node02 -d

5. role
の設定
5.1. role
情報の作成
chef-repo
ディレクトリに移動し、LifeKeeperのロールを作成します。

 # knife role create LifeKeeper -d

 [補足]
 -d: エディタを開かないオプションです。デフォルトはエディタ指定が必要です。
 注意
 コマンドプロンプトで-eを指定して実行した際に「ERROR: RuntimeError: 
 Please set EDITOR environment variable」のエラーが発生しました。
 エラーメッセージより環境変数を指定して解決できそうですが、-dでエディ
 タを開かず、ファイルを直接開く方法もあります。Cygwinを使っている場合
 は以下のようにviコマンドで作成できます。
 $ /cygdrive/c/Ruby21-x64/bin/knife.bat role create LifeKeeper -e vi

5.2. role
情報の記述
作成したLifeKeeper.jsonファイルに以下のようにLifeKeeperのロールを追加します。
------------------------------------------------
{
  "name": "LifeKeeper",
  "chef_type": "role",
  "json_class": "Chef::Role",
  "default_attributes": { 
    "apache2": {
      "ServerName": "
192.168.33.100:80",
      "PidFile": "run/httpd.etc.httpd.pid"
    }
  },
  "run_list": [
    "recipe[Apache]",
    "recipe[LifeKeeper]"
  ]
}
------------------------------------------------

上記の設定について以下に説明します。

 * chef_type
 ロール設定の場合、roleを設定します。

 * json_class
 ロール設定の場合、Chef::Roleクラスを設定します。

 * default_attributes
 Chef Attributeで定義されていない場合、このロールで定義した属性値が
 使われます。
 今回Apacheの以下を定義します。
  - ServerName: LifeKeeperで作成する仮想IPアドレスを192.168.33.100
         し、ポート80番でListenします。
  - PidFile   : LifeKeeperによって起動されたApachePIDファイルは
         httpd.etc.httpd.pidです。

 * run_list
 このロールを持つノードに適用するレシピのリストを記述します。
 今回はLifeKeeperApacheのレシピを適用します。

 作成したレシピについて
 VagrantfileChefCookbook,レシピ等をリポジトリにまとめて登録してお
 くと別の環境でも使えるので便利です。但し、今回紹介したレシピにライセ
 ンスファイルが含まれていますが、機密情報はパブリックリポジトリに登録
 しないように注意してください。パブリックリポジトリに登録する場合は機
 密情報に関する設定は除外してください。

レシピの適用
1. 仮想マシン起動
Vagrant
を使って仮想マシンを起動します。

仮想マシンを起動した際に各ノードのeth010.0.2.15IPアドレスが自動的に

設定されます。後でeth0の設定を変えることもできますが、ここでは手っ取り

早くVagrantfileにネットワークの設定を追加します(黒太文字)。これでNIC

合計3枚になります。LifeKeeperのコミュニケーションパスは2本が推奨されて

いますので、eth1と新しく追加したeth2NICを使います。


1.1. Vagrantfile
編集
以下のように変更を行います。
------------------------------------------------
Vagrant.configure(2) do |config|
  config.vm.box = "chef/centos-6.6"
  config.ssh.forward_x11 = "true"

  config.vm.define "lk-node01" do |node|
    node.vm.hostname = "lk01"
    node.vm.network "private_network", ip: "192.168.33.11"
    node.vm.network "private_network", ip: "172.16.0.11"
  end

  config.vm.define "lk-node02" do |node|
    node.vm.hostname = "lk02"
    node.vm.network "private_network", ip: "192.168.33.12"
    node.vm.network "private_network", ip: "172.16.0.12"
    end

  config.vm.provider "virtualbox" do |v|
    v.memory = "1024"
    v.gui = "true"
  end
end
------------------------------------------------

1.2. Vagrant
起動
vagrant
コマンドを実行し、起動します。

 # vagrant up

1.3.
各サーバーに接続確認

 # ssh vagrant@192.168.33.11
 パスワードはデフォルトvagrantです。
  また、rootユーザーのパスワードも同じです。適宜適切なものに変更して
  ください。

2.
レシピの適用
2.1. Node
情報にノードに適用するロールを追加
下記knifeコマンドでノードに適用するロールを設定します。

 # knife node run_list add lk-node01 "role[LifeKeeper]"
 # knife node run_list add lk-node02 "role[LifeKeeper]"

以下のようにrun_listLifeKeeperroleが追記されます。

[lk-node01.json]
------------------------------------------------
{
  "name": "lk-node01",
  "run_list": [
    "role[LifeKeeper]"
  ]
}
------------------------------------------------

[lk-node01.json]
------------------------------------------------
{
  "name": "lk-node02",
  "run_list": [
    "role[LifeKeeper]"
  ]
}
------------------------------------------------

上記の設定について説明します。

 * name
 Nodeの名前を指定します。

 * run_list
 適用するレシピやロールのリストです。
 今回両ノードのLifeKeeperで同じ設定を適用しますので、ロールを作成し
 LifeKeeerにレシピを適用します。

2.2. Chef Client
のインストール及びロール/レシピ適用
下記knifeコマンドを実行し、ノードに Chef Client のインストールとロール
の適用を行います。

 # knife zero bootstrap 192.168.33.11 -x vagrant -r "role[LifeKeeper]" --sudo
 # knife zero bootstrap 192.168.33.12 -x vagrant -r "role[LifeKeeper]" --sudo

 [補足]
 * bootstrap
 Knifeコマンドをローカルモードで実行し、Chef-repoの情報をもとにクライ
 アント端末(Windows 8)Chef Zeroサーバーが起動します。そして、レシピ
 を適用するノード (192.168.33.11) SSH接続を行い、Chef Clientをイン
 ストールします。
 本記事執筆時点ではchef-12.3.0-1.el6.x86_64.rpmがインストールされます。
 その後、Chef ClientChef Zeroサーバー側のChef-repoの情報をもとに
 レシピをノードに適用していきます。

 本記事で活用させて頂いているKnife-Zeroの動作については、開発者の
  sawanoboly様のブログに記載がありますので、詳細は以下をご覧ください。
  http://qiita.com/sawanoboly/items/218a7b03ddec6be45e34

 * -x
 サーバーのログインユーザーを指定します。
 今回vagrantユーザーでログインします。
 パスワードはデフォルトvagrantです。

 * -r
 run_listを指定します。適用するレシピ、ロールを指定します。
 今回はLifeKeeperロールを指定したので、LifeKeeperApacheのレシピが適
 用されます。

 * --sudo
 管理者権限で実行します。

上記コマンドの実行が終わったら、各ノードにログインし、想定通りの状態に
なっているか確認しましょう。

ここまででLifeKeeper導入の前提となる設定が完了しました。次にLifeKeeper
のセットアップと設定をします。

■LifeKeeper
インストールと設定
1. LifeKeeperセットアップスクリプト実行
インストールメディアISOをマウントし、LifeKeeperセットアップスクリプト
を実行します。

 # mount -t iso9660 -o loop /tmp/sps.img /mnt
 # /mnt/setup

ここで聞かれる選択肢は全てデフォルトを選択します。最後にインストールす
Recovery Kitの選択画面が表示されますので、Apacheを選択します。

2.
ライセンスファイルインストール
lkkeyins
コマンドを実行しCoreと、Apache Recovery Kit のライセンスをイン
ストールします。

 # lkkeyins /tmp/LKLinux-Core.lic
 # lkkeyins /tmp/apache.lic

3. LifeKeeper
起動

 # lkstart

4. LifeKeeper
起動状態確認
lktest
コマンドを実行し、結果として0が返ってくることを確認します。

 # lktest ; echo $?
F   S UID      PID   PPID  C  CLS PRI  NI SZ    STIME    TIME   CMD
 4 S root     3982  3355  2   TS   39 -20 6214  22:41  00:00:00 lcm
 4 S root     3987  1     0   TS   39 -20 6212  22:41  00:00:00 eventslcm -l
 4 S root     3990  3357  1   TS   39 -20 6214  22:41  00:00:00 ttymonlcm
 4 S root     3994  3358  2   TS   29 -10 8231  22:41  00:00:00 lcd
0

5. LifeKeeper GUI
起動

 # lkGUIapp &

6.
コミュニケーションパスの作成
LifeKeeper GUI
画面より作成します。
今回はeth1eth2IPアドレスでコミュニケーションパスを作成します。

7. LifeKeeper
リソース作成
LifeKeeper GUI
画面よりIPリソースとApacheリソース作成をします。
IPリソース今回192.168.33.100とし、eth1NICを使用します。

リソース作成が完了すると、以下のような状態になります。



以上で LifeKeeper の設定が完了です。LifeKeeperの各設定及びApacheリソー
ス作成に関する詳細は以下のドキュメントに記載がありますのでご参照ください。

 SIOS Protection Suite for Linux 8.4.0 テクニカルドキュメンテーション
 
http://jpdocs.us.sios.com/Linux/8.4.0/LK4L/TechDoc/index.htm
 Apache Recovery Kit 管理ガイド
 
http://jpdocs.us.sios.com/Linux/8.4.0/LK4L/RKPDFs/Content/Resources/pdfs/lkapache.pdf

いかがでしたでしょうか。
LifeKeeper
の動作確認や検証を手元の環境でしたいとき等、毎回 LifeKeeper
の動作要件や前提条件のための設定、保護対象アプリケーションの設定を手動
でするのは手間がかかります。特に前提条件に関する設定は毎回同じ設定です
ので、効率化できる部分と考えます。一度レシピを作ってしまえば後が楽です
し、また、時間をかけずに効率良く作業を進めることは大切なことと思います。

今回の手順は実際の本番環境への適用を想定したものではなく、これが正解と
いう手順ではありませんが、本ブログを通してより多くの方のヒントや手助け
になればと思います。

最後になりますが、現在 LifeKeeper の導入をご検討されているお客様は以下
のフォームから評価版 LifeKeeper の申請ができますので、この機会に是非
ご活用ください。

 LifeKeeper/DataKeeper/LifeKeeper Single Server Protection評価版ダウンロード
 
https://sios.secure.force.com/webform/lkdownloadwebform

また、本ブログでは、LifeKeeper製品以外にOSSが登場しましたが、OSS関連で
何かお困りのことがある場合は、OSSよろず相談室までお気軽にご相談ください。

 サイオスOSSよろず相談室
 
http://www.sios.com/products/oss/yorozu/

以上です。

2015年6月4日木曜日

【製品情報】LifeKeeper for Linux v8.4.1 / Single Server Protection for Linux v8.4.1をリリースいたしました。



6月1日にLifeKeeper for Linux v8.4.1 / Single Server Protection for Linux v8.4.1をリリースしました。
RHEL 7.1PostgreSQL 9.4への対応などが含まれています。

詳細は、以下のURLをご参照ください。

LifeKeeper for Linux v8.4.1 / Single Server Protection for Linux v8.4.1リリースのご案内

LifeKeeper for Linux v8.4.1 Technical Update Information

LifeKeeper Single Server Protection for Linux v8.4.1 Technical Update Information



★LifeKeeperに関する詳細情報はこちらから
http://www.sios.com/products/bcp/lkdk/product/lifekeeper.html