hacks/IaaS/Wakame

2011年03月31日

[Wakame] Wakame-vdcの開発効率を向上させるスクリプト vdc.sh

このエントリーをはてなブックマークに追加

開発し辛さを少しでも解消したくて

OpenStackコンピュートのnovaには、nova.shと言うスクリプトがある。これは、novaを手軽に起動停止する目的のスクリプト。novaの起動停止だけでなく、データを初期化もしてくれる。各コンポーネントがscreenのwindowで起動し、ログが出力されている。是非、これをWakame-vdcに入れたくなった。

そして作ったのが、vdc.sh

▼検証環境

  • Ubuntu 10.04.2 Server LTS
  • Wakame-vdc 10.11

▼使い方

wakame-vdcをcloneし、プロジェクトの最上位ディレクトリで実行する事が前提。

$ git clone git@github.com:axsh/wakame-vdc.git
$ git clone git://gist.github.com/895965.git gist-895965
$ mv -i gist-895965/vdc.sh wakame-vdc/.
$ cd wakame-vdc
$ chmod +x ./vdc.sh
$ ./vdc.sh

vdc.shを実行すると、screenが起動し、コンポーネントの数だけwindowが作成され、それぞれのwindowではコンポーネントが実行される仕掛け。

開発時はinitctlでコンポーネントを起動停止するのが面倒で仕方が無い。コンポーネントを起動しては、tailでログを常時表示、そして停止。これを何度も繰り返す。一方、foregroundで実行すればログが表示され、停止するだけで済む。どちらにしても、コンポーネント毎にscreen windowを作成している訳だ。だったらscreenを起動し、コンポーネント分のscreen windowを作成して、コンポーネントを実行してしまえば良い。明らかに作業効率は向上する。vdc.shは、この単純作業を一撃で済ませてくれる。また、事前にデータを初期化するので、開発時は特に重宝する。

あと書き

良いものがあれば、どんどん取り込んで行かない理由がない。




半袖 at 21:15|PermalinkComments(0)TrackBack(0)

2010年08月12日

[Wakame][Ubuntu][AWS][EC2] wakame-fuel環境構築済みAMIを作った

このエントリーをはてなブックマークに追加

wakame-fuel環境構築スクリプト用のリポジトリを作ったをAMI化

wakame-fuel環境構築スクリプトを実行した状態になっている。

▼AWS情報

  • us-east-1
  • ami-b2bc56db
  • wakame-fuel-ami-us/wakame-fuel-0.5.1_ubuntu-10.04_20100811.01.manifest.xml

▼wakame-fuel情報

  • wakame-0.5.1インストール済み
  • wakameユーザー追加済み
  • プロジェクトディレクトリ /home/wakame/wakame.proj/ 作成済み

管理対象が無い

やはり、これもまたwakame-fuelが入っているだけで意味が無いに等しい。
ApacheやNginx、MySQLなどは未インストールなのだから。

普段からwakame-fuel環境構築慣れしている自分には意味がある。
wakame-fuelだけ入った環境をすぐに調達出来て嬉しい場合、それが大半であるのだから。

さあ、この課題をどう解決する?続きは次回へ。




半袖 at 10:50|PermalinkComments(0)TrackBack(0)

2010年08月04日

[Wakame][CentOS] wakame-vdc環境構築スクリプト用のリポジトリを作った

このエントリーをはてなブックマークに追加

簡単に言えば、先日作ったwakame-fuel-builderのwakame-vdc版だ

作ったキッカケはwakame-fuelと同等

  • やるべき作業が何か、明確になった
  • そして、毎回同じ作業が面倒臭い
  • 作業者による作業ムラを無くす

wakame-fuelはgemパッケージ化されている事が手伝い、環境構築は楽な部類だ。
それと対照的なのがwakame-vdcの環境構築だ。

ひたすら手順通りにコマンドを実行し続ける、マンパワー重視による物だった。
何度か作業をしている自分自身が一番面倒である事を知っている。

とにかく、駄目な状況を、どうにかしたかった。

使用例

▼検証環境

  • Windows 7 Professional, 32-bit
  • VMware Workstation 7.1.0 build-261024
  • CentOS-5.5 i386

ひとまず、wakame-fuel環境のみ構築

▼Git未使用

$ cd /tmp

$ wget http://github.com/hansode/wakame-vdc-builder/raw/master/centos/5/01_setup-base.sh
$ wget http://github.com/hansode/wakame-vdc-builder/raw/master/centos/5/02_setup-ruby.sh

$ sudo sh ./01_setup-base.sh
$ sudo sh ./02_setup-ruby.sh

▼Git使用

$ cd /tmp

$ git clone git://github.com/hansode/wakame-vdc-builder.git
$ cd wakame-vdc-builder/centos/5/

$ sudo sh ./01_setup-base.sh
$ sudo sh ./02_setup-ruby.sh

10分ほどでwakame-vdc環境構築が完了する。


ベースだけは出来上がる

ベースだけではwakame-vdcを使う意味が無い。

例えば、VMイメージの配置などが必要だ。
今回は、ここに触れずに終わる。




半袖 at 19:05|PermalinkComments(0)TrackBack(0)

2010年08月02日

[Wakame][Ubuntu][AWS][EC2] wakame-fuel環境構築スクリプト用のリポジトリを作った

このエントリーをはてなブックマークに追加

まずはUbuntu-10.04用

作ったキッカケは幾つかある

  • やるべき作業が何か、明確になった
  • そして、毎回同じ作業が面倒臭い
  • 作業者による作業ムラを無くす

使用例

▼検証環境

  • us-east-1
  • ami-2d4aa444
  • ubuntu-images-us/ubuntu-lucid-10.04-i386-server-20100427.1.manifest.xml
  • Ubuntu-10.04 LTS

ひとまず、wakame-fuel環境のみ構築

▼Git未使用

$ cd /tmp

$ wget http://github.com/hansode/wakame-fuel-builder/raw/master/ubuntu/10.04/01_setup-base.sh
$ sudo sh ./01_setup-base.sh

▼Git使用

$ sudo apt-get install git-core
$ cd /tmp

$ git clone git://github.com/hansode/wakame-fuel-builder.git
$ cd wakame-fuel-builder/ubuntu/10.04/
$ sudo ./01_setup-base.sh

5分ほどでwakame-fuel環境構築が完了する。


ベースは出来上がる

ベースだけではwakame-fuelを使う意味が無い。
スケール対象となるシステムが必要だ。

今回は、ここに触れずに終わる。




半袖 at 17:05|PermalinkComments(0)TrackBack(0)

2010年05月07日

[Wakame] wakame-vdc環境を構築しよう

このエントリーをはてなブックマークに追加

wakame-vdcのインストール手順書が存在しない

wakame-vdc』環境構築した事があるのは、この世で2人だけ。

構築手順をまとめたので、ここに紹介する。
今後はrakeで書き直し、手順を単純化する予定。

▼検証環境

  • CentOS-5.4
  • i386
  • VMware Workstation 7

▼対象環境

  • CentOS-5.4がインストールされたばかり

Xen環境構築

▼Xenカーネルをインストール

$ su
# cd /etc/yum.repos.d/
# wget http://www.gitco.de/linux/i386/centos/5/CentOS-GITCO_TESTING.repo
# yum -y install xen
# yum -y erase kernel

▼システム再起動

# reboot

wakame-vdcベース環境構築

▼開発用パッケージインストール

# yum -y install gcc openssl-devel gcc-c++ mysql-server mysql mysql-devel

▼rabbitmq-server

# yum -y install unixODBC tk
# cd /tmp
# wget http://ftp.riken.go.jp/pub/pub/Linux/fedora/epel/5/i386/erlang-R12B-5.8.el5.i386.rpm
# rpm -ivh erlang-R12B-5.8.el5.i386.rpm
# wget http://www.rabbitmq.com/releases/rabbitmq-server/v1.7.0/rabbitmq-server-1.7.0-1.i386.rpm
# rpm -ivh rabbitmq-server-1.7.0-1.i386.rpm

▼git

# cd /tmp
# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# yum -y install git

▼その他、依存パッケージ

# yum -y install sqlite-devel dnsmasq bridge-utils
# yum -y install httpd httpd-devel

▼起動サービス設定

# /sbin/chkconfig rabbitmq-server on
# /sbin/chkconfig httpd  on
# /sbin/chkconfig mysqld on
# /sbin/chkconfig dnsmasq on

▼wakame-vdcをデプロイ

# cd /opt
# git clone git://github.com/axsh/wakame-vdc.git wakame

Rubu環境構築

▼Ruby

# cd /tmp
# wget ftp://core.ring.gr.jp/pub/lang/ruby/1.8/ruby-1.8.7-p249.tar.gz
# tar zxvf ruby-1.8.7-p249.tar.gz
# cd ruby-1.8.7-p249
# ./configure --prefix=/opt/wakame/ruby-187
# make
# make install

▼RubyGems

# cd /tmp
# wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz
# tar zxvf rubygems-1.3.6.tgz
# cd rubygems-1.3.6
# PATH=$PATH:/opt/wakame/ruby-187/bin /opt/wakame/ruby-187/bin/ruby ./setup.rb

▼Gemパッケージ

# /opt/wakame/ruby-187/bin/gem install rake       --version=0.8.7  --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# /opt/wakame/ruby-187/bin/gem install rack       --version=1.1.0  --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# /opt/wakame/ruby-187/bin/gem install bundler    --version=0.9.11 --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# /opt/wakame/ruby-187/bin/gem install fastthread --version=1.0.7  --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# /opt/wakame/ruby-187/bin/gem install passenger  --version=2.2.11 --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin

# /opt/wakame/ruby-187/bin/gem install log4r          --version=1.1.2  --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# /opt/wakame/ruby-187/bin/gem install jeweler        --version=1.4.0  --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# /opt/wakame/ruby-187/bin/gem install ruby-hmac      --version=0.3.2  --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# /opt/wakame/ruby-187/bin/gem install open4          --version=1.0.1  --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# /opt/wakame/ruby-187/bin/gem install amqp           --version=0.6.5  --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# /opt/wakame/ruby-187/bin/gem install daemons        --version=1.0.10 --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# /opt/wakame/ruby-187/bin/gem install sequel         --version=3.7.0  --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# /opt/wakame/ruby-187/bin/gem install sqlite3-ruby   --version=1.2.5  --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# /opt/wakame/ruby-187/bin/gem install activeresource --version=2.3.5  --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# /opt/wakame/ruby-187/bin/gem install thin           --version=1.2.5  --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin

wakame-vdc

▼wakame-vdc用ディレクトリ作成

# mkdir /opt/wakame/image-storage
# mkdir /opt/wakame/var

▼dcmgr-gui

# cd /opt/wakame/dcmgr-gui/public/javascripts/
# wget http://www.extjs.com/deploy/ext-3.2.0.zip
# unzip ext-3.2.0.zip
# ln -s ext-3.2.0 ext-js

▼dcmgr-gui依存gem

# cd /opt/wakame/dcmgr-gui/
# /opt/wakame/ruby-187/bin/bundle install vendor
# /opt/wakame/ruby-187/bin/bundle lock

▼dcmgr依存gem

# cd /opt/wakame/dcmgr/
# /opt/wakame/ruby-187/bin/bundle install vendor
# /opt/wakame/ruby-187/bin/bundle lock

▼hvc

# perl -pi -e "s,/usr/bin/ruby,/opt/wakame/ruby-187/bin/ruby," /opt/wakame/hvc-hva/bin/hvc
# ln -s /opt/wakame/hvc-hva/config/init.d/centos/hvc /etc/init.d/hvc
# /sbin/chkconfig --add hvc
# /sbin/chkconfig hvc on

▼hva

# perl -pi -e "s,/usr/bin/ruby,/opt/wakame/ruby-187/bin/ruby," /opt/wakame/hvc-hva/bin/hva
# ln -s /opt/wakame/hvc-hva/config/init.d/centos/hva /etc/init.d/hva
# /sbin/chkconfig --add hva
# /sbin/chkconfig hva on

▼passenger

# yes | /opt/wakame/ruby-187/bin/passenger-install-apache2-module

▼サンプルdomU

# wget http://dlc.wakame.axsh.jp.s3.amazonaws.com/vdc/10.04/domu/fc8_i386_420mb.img -O /opt/wakame/image-storage/fc8_i386_420mb.img

demo環境用に追加設定

▼/etc/dnsmasq.conf

# wget http://dlc.wakame.axsh.jp.s3.amazonaws.com/vdc/10.04/wakame-vdc-builder/manifest/dnsmasq.conf -O /etc/dnsmasq.conf

▼/etc/sysconfig/network-scripts/ifcfg-newbr0

# wget http://dlc.wakame.axsh.jp.s3.amazonaws.com/vdc/10.04/wakame-vdc-builder/manifest/ifcfg-newbr0 -O /etc/sysconfig/network-scripts/ifcfg-newbr0

▼/etc/httpd/conf/httpd.conf

# wget http://dlc.wakame.axsh.jp.s3.amazonaws.com/vdc/10.04/wakame-vdc-builder/manifest/httpd.conf -O /etc/httpd/conf/httpd.conf

▼/etc/default/wakame

# wget http://dlc.wakame.axsh.jp.s3.amazonaws.com/vdc/10.04/wakame-vdc-builder/manifest/wakame -O /etc/default/wakame

▼/opt/wakame/dcmgr/web/private/dcmgr.conf

# wget http://dlc.wakame.axsh.jp.s3.amazonaws.com/vdc/10.04/wakame-vdc-builder/manifest/dcmgr.conf -O /opt/wakame/dcmgr/web/private/dcmgr.conf

▼/opt/wakame/dcmgr/web/public/dcmgr.conf

# wget http://dlc.wakame.axsh.jp.s3.amazonaws.com/vdc/10.04/wakame-vdc-builder/manifest/dcmgr.conf -O /opt/wakame/dcmgr/web/public/dcmgr.conf

▼MySQL

# /etc/init.d/mysqld start
# mysqladmin -uroot create wakame_dcmgr

# cd /tmp
# wget http://dlc.wakame.axsh.jp.s3.amazonaws.com/vdc/10.04/wakame-vdc-builder/manifest/wakame_dcmgr.dump.gz
# zcat wakame_dcmgr.dump.gz | mysql -uroot wakame_dcmgr

# echo "grant all PRIVILEGES ON wakame_dcmgr.* to 'wakame_dcmgr'@'localhost' identified by 'passwd';"  | mysql -uroot
# echo "flush privileges;" | mysql -uroot

▼wakameユーザー追加

# /usr/sbin/groupadd wakame
# /usr/sbin/useradd -d /home/wakame -s /bin/bash -g wakame wakame

▼hvc-hvaのtmpディレクトリオーナー変更

# chown -R wakame:wakame /opt/wakame/hvc-hva/tmp/

▼システム再起動

# reboot

管理画面への接続テスト
  • http://IPアドレス/ へアクセス
    • user: test1
    • pass: test1
  • Imageからfc8_i386_420mbを選択してLaunch

インスタンスが起動すれば成功。




半袖 at 17:00|PermalinkComments(0)TrackBack(0)

2010年04月15日

[Wakame][Ruby] [CentOS] RPM非依存のRuby環境構築

このエントリーをはてなブックマークに追加

wakame-vdc』がこっそりgithubにて公開された

wakame-vdcデモ環境構築時に行った作業記録である。

▼検証環境

  • CentOS-5.4(i386)

▼要望:Ruby-1.8.7をインストールしたい

  • 手順は暫定版で良い
  • CentOS-5.4のRubyは、1.8.6
  • 他のパッケージと依存関係を持たせたくない
  • パッケージに依存する場所へインストールしたくない

こんな背景があった上での下記作業記録。

作業内容

▼ディレクトリ構成

  • /opt/wakame/ruby-187

▼Ruby-1.8.7をインストール

# cd /tmp
# wget ftp://core.ring.gr.jp/pub/lang/ruby/1.8/ruby-1.8.7-p249.tar.gz
# tar zxvf ruby-1.8.7-p249.tar.gz
# cd ruby-1.8.7-p249
# ./configure --prefix=/opt/wakame/ruby-187/
# make
# make test
test succeeded
# make install

▼RubyGemsをインストール

# cd /tmp
# wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz
# tar zxvf rubygems-1.3.6.tgz
# cd rubygems-1.3.6
# export PATH=$PATH:/opt/wakame/ruby-187/bin/
# ruby ./setup.rb

▼必要なGEMパッケージをインストール

# export PATH=$PATH:/opt/wakame/ruby-187/bin/
# ruby ./setup.rb
# gem list
# gem install rake --version=0.8.7 --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# gem install rack --version=1.1.0 --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# gem install bundler --version=0.9.11 --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# gem install fastthread --version=1.0.7 --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin
# gem install passenger --version=2.2.11 --no-rdoc --no-ri --bindir /opt/wakame/ruby-187/bin

▼インストール済GEMパッケージ一覧

# gem list
*** LOCAL GEMS ***

bundler (0.9.11)
fastthread (1.0.7)
passenger (2.2.11)
rack (1.1.0)
rake (0.8.7)

この後、wakame-vdcの環境が構築されて行く。




半袖 at 20:55|PermalinkComments(1)TrackBack(0)

2009年10月22日

[Wakame]Wakameの開発にご協力くださる方を探しています

このエントリーをはてなブックマークに追加

■急募:"Wakame 1.0"開発協力者!

株式会社あくしゅでは"Wakame 1.0"の開発者を募集しています!
Wakameは次世代データセンターには欠かせないクラウドコントローラとして、今後大幅に機能拡張していきます。
Rubyでミドルウェアを開発してみたいという意欲あふれる方は是非お問い合わせください。

■仕事内容

  1. "Wakame 1.0"の使用目的を拡大するために、ミドルウェア部分の機能拡張を実施
  2. "Wakame 1.0"を使いやすくするために、GUIの追加開発を実施
  3. "Wakame 1.0"を分かりやすくするために、ドキュメントの整備を実施
上記の内、得意なもの1つ以上をお願いすることになります。

■募集要項

  • 下記(A)(B)(C)の知識・技術セットをいずれかお持ちの方
    1. Ruby, 現在のWakame, メッセージング, 並列処理, Xenなどのハイパーバイザの知識
    2. JavaScript, XHTML, Ruby on Rails, http通信(REST), ユーザビリティ, 画面設計の知識
    3. HTML, ドキュメンテーション
  • システムの設計が得意で、オブジェクト指向を理解している方
  • 人とのコミュニケーションが好きな明るい方
  • 期間:2009年11月初旬〜2010年3月下旬

■条件

応募期限は10/26(月)までです。
それ以降10/30(金)までに一度仕事内容や関わり方をミーティング形式でご相談させていただきましてその後、弊社基準で判断してからお見積もりをお願いします。

■一言

設立3年目の若い会社です。
来年からは「世界のクラウドソリューションを」をテーマに事業展開していく予定です。
そのために今後は弊社で開発している"Wakame"を機能拡張し、より高度なプロダクトへと躍進させていきます。
あなたもぜひ、この新しいチャンスに乗ってみませんか?

■連絡先

Twitter: @axsh_co_ltd
E-mail: r_at_axsh_dot_net (_at_と_dot_は適宜文字列を置換してください)





半袖 at 14:50|PermalinkComments(0)TrackBack(0)

2009年07月24日

[Wakame] Wakame-0.4.2 Released!!

このエントリーをはてなブックマークに追加

今月はWakame三昧だった


2009/07/24(金)、ようやく0.4.2をリリース出来た。
マイナーバージョンアップにしては盛り沢山。


http://rubyforge.org/frs/shownotes.php?release_id=37164より
== 0.4.2 2009-07-24

* Add Web API for master control. (Note that the API design is not fixed yet)

* Rewrote the CLI to use HTTP instead of old DRb interface.

* Add support for agent less resource.

* Add LockQueue to avoid confliction when multiple actions run.

* Add MySQL_Slave resource.

* Add Elastic IP resource.

* Add Elastic Load Balancer resource.

* Add Nginx resource.

次は0.4.3か0.5.0か。
みんなで使い始めると足りない機能が色々見えて来る。

Wakame」の進化は、まだまだこれからだ。




半袖 at 19:35|PermalinkComments(2)TrackBack(0)

2009年07月02日

[Wakame] gihyo.jp「"Wakame"で始めるクラウドコントロール」

このエントリーをはてなブックマークに追加

"Wakame"で始めるクラウドコントロール」公開中


連載が終わってから告知し忘れたままである事に気づく。
gihyo.jpさんにてwakameの特集が掲載されてます。

自分も執筆に参加。
まさかこんな日が来るとは思ってもみなかった。




半袖 at 09:20|PermalinkComments(0)TrackBack(0)

2009年05月26日

[Wakame] PostgreSQLもスケール対象へ (4/n)

このエントリーをはてなブックマークに追加

[Wakame] PostgreSQLもスケール対象へ (3/n)の続編

予告通り、今回はオンラインリカバリを実行してみる。

  • node1(PostgreSQL)
    • オンラインリカバリ用にnode1の鍵作成
    • オンラインリカバリ用にnode2に鍵登録
    • リカバリスクリプト配置
  • pgpool-II
    • 対象ノードを登録
    • pgpool-IIを再起動
    • node2をノードから外す
    • node2に対してリカバリを実行
    • pgbenchしてみる?

作業内容: node1(PostgreSQL)

▼作業が面倒なので、あらかじめUNIXアカウントpostgresになっておく

node1$ sudo su postgres

▼node1の鍵作成

node1$ ssh-keygen -t dsa -N ""
鍵のファイル名を問われるので、デフォルトファイル名で問題なければEnter

▼node2に鍵を登録

node1$ cat /var/lib/postgresql/.ssh/id_dsa.pub | ssh (node2)  "cat >> /var/lib/postgresql/.ssh/authorized_keys"

▼リカバリスクリプト配置

pgpool-IIによるレプリケーションとオンラインリカバリからスクリプトを拝借。

node1$ cd /usr/local/pgsql/data

node1$ chmod +x recovery_1st_stage.sh
node1$ chmod +x recovery_2nd_stage.sh 
node1$ chmod +x pgpool_remote_start 

作業内容: pgpool-II

pgpool-II$ cd /usr/local/pgpool2/etc

pgpool-II$ sudo vi pgpool.conf
listen_addresses = '*'
port = 9999
pcp_port = 9898

# for debian
socket_dir = '/var/run/postgresql'
pcp_socket_dir = '/var/run/postgresql'
backend_socket_dir = '/var/run/postgresql'

# Logging directory
logdir = '/tmp'

# pid file name
pid_file_name = '/var/run/postgresql/pgpool.pid'

# Replication mode
replication_mode = true

# Health check user
health_check_user = 'nobody'

# node1
backend_hostname0 = '192.168.1.123'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/usr/local/pgsql/data'

# node2
backend_hostname1 = '192.168.1.124'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/usr/local/pgsql/data'

recovery_user = 'postgres'

recovery_1st_stage_command = 'recovery_1st_stage.sh'
recovery_2nd_stage_command = 'recovery_2nd_stage.sh'

▼pgpoolを起動

pgpool-II$ sudo -u postgres /usr/local/pgpool2/bin/pgpool -n &

▼pcp_node_infoでノード情報を確認

pgpool-II$ /usr/local/pgpool2/bin/pcp_node_info 100 192.168.1.122 9898 postgres postgres 0
192.168.1.123 5432 1 1073741823.500000
pgpool-II$ /usr/local/pgpool2/bin/pcp_node_info 100 192.168.1.122 9898 postgres postgres 1
192.168.1.124 5432 1 1073741823.500000

pgpoolのノード対象となっている事を確認。

この時、node2のPostgreSQLは停止状態にあるにも関わらず、pcp_node_infoではステータスが「1」となっている。 一度pgpoolへ接続すると状態に変化が現れた。

pgpool-II$ psql -h localhost -p 9999

pgpool-II$ /usr/local/pgpool2/bin/pcp_node_info 100 192.168.1.122 9898 postgres postgres 0
192.168.1.123 5432 2 1073741823.500000
pgpool-II$ /usr/local/pgpool2/bin/pcp_node_info 100 192.168.1.122 9898 postgres postgres 1
192.168.1.124 5432 3 1073741823.500000

ノードの状態がそれぞれ、node1は「2」、node2は「3」となった。

▼node2をクラスタから切り離す

pgpool-II$ /usr/local/pgpool2/bin/pcp_detach_node 100 192.168.1.122 9898 postgres postgres 1

出力が無いので、無事に切り離されたのかが良く分からない。

pgpool-II$ /usr/local/pgpool2/bin/pcp_node_info 100 192.168.1.122 9898 postgres postgres 1
192.168.1.124 5432 3 1073741823.500000

pcp_node_infoで確認してみると、状態は「3」のまま。

▼オンラインリカバリを実行

pgpool-II$ pcp_recovery_node 100 192.168.1.122 9898 postgres postgres 1

メッセージが出力されないので、成功したのか失敗したのかが分かりづらい。

pgpool-II$ ./pcp_node_info 100 192.168.1.122 9898 postgres postgres 1
192.168.1.124 5432 1 1073741823.500000

どうやら成功したようだ。
pgpool-recoveryを使うと簡単にノードを追加出来るね。

今後の予定

  • 図を使ってpgpool-recoveryを使ったオンラインリカバリのまとめ
  • AWS(Amazon EC2, Amazon EBS)を使ってノード増殖検証

関連エントリ






半袖 at 18:00|PermalinkComments(0)TrackBack(0)