SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

StackStorm入門

StackStormで始める運用自動化 ~応用編~

StackStorm入門(2)

セカンダリノードの構築

 続いて、セカンダリノードの構築を行います。

 基本編のStackStormのインストールで解説した方法でVagrantからセカンダリノードを作成し、StackStormをインストールします。その際Vagrantfileに設定するプライベートネットワークのIPアドレスを、プライマリノードに設定したものと違う値を設定してください。ここでは以下のとおりVagrantfileを修正して、セカンダリノードを作成します。

$ diff Vagrantfile.orig Vagrantfile
--- Vagrantfile.orig    2016-11-16 19:06:55.000000000 +0900
+++ Vagrantfile 2016-12-05 16:49:56.000000000 +0900
@@ -27,6 +27,8 @@
   # create a private network, which allows host-only access to the machine
   # using a specific ip.
   # config.vm.network "private_network", ip: "192.168.33.10"
+  config.vm.hostname = "st2-secondary"
+  config.vm.network "private_network", ip: "192.168.0.101"
 
   # create a public network, which generally matched to bridged network.
   # bridged networks make the machine appear as another physical device on
@@ -50,6 +52,10 @@
   #   # customize the amount of memory on the vm:
   #   vb.memory = "1024"
   # end
+  config.vm.provider "virtualbox" do |vb|
+    vb.cpus = 2
+    vb.memory = "2048"
+  end
   #
   # view the documentation for the provider you are using for more
   # information on available options.
$ vagrant up
$ vagrant ssh

 セカンダリノードが立ち上がったら、作成したノードでStackStormをインストールします。

vagrant@st2-secondary:~$ curl -sSL https://stackstorm.com/packages/install.sh | bash -s -- --user=st2admin --password=password

RabbitMQクラスタ設定

 プライマリノードで実行した時と同じように、セカンダリノードでも/etc/hostsの修正、およびRabbitMQのErlang Cookieの再設定を行います。

vagrant@st2-secondary:~$ sudo bash -c 'cat <<EOS >> /etc/hosts
192.168.0.100     st2-node
192.168.0.101     st2-secondary
EOS
'
vagrant@st2-secondary:~$ sudo service rabbitmq-server stop
vagrant@st2-secondary:~$ sudo bash -c 'echo stackstorm-mq-cluster > /var/lib/rabbitmq/.erlang.cookie'
vagrant@st2-secondary:~$ sudo service rabbitmq-server start

 2つのノードで同じCookieの値を持つRabbitMQノードを起動させたところで、クラスタ設定を行います。クラスタ設定を行うことで、クラスタのノード間で、メッセージキューを除くすべての管理・設定情報が共有されるようになります。クラスタ設定はどちらか一方のノードでのみ行えば良いです。ここではセカンダリノードで以下のコマンドを実行し、プライマリノードとクラスタを組みます。

vagrant@st2-secondary:~$ sudo rabbitmqctl stop_app
vagrant@st2-secondary:~$ sudo rabbitmqctl join_cluster rabbit@st2-node
vagrant@st2-secondary:~$ sudo rabbitmqctl start_app

 続いてRabbitMQに外部からのアクセス用のユーザを追加します。これまでは、デフォルトで作成されるguestアカウントでログインしていましたが、guestアカウントはローカルホストからしかアクセスできないため、ここで別アカウントst2を作成し、アクセス権限の付与を行います。

 すでにクラスタ設定を行っているので、どちらか一方のノードで作成・設定作業をすれば、もう一方のノードにも同じ設定が反映されます。

vagrant@st2-secondary:~$ sudo rabbitmqctl add_user st2 passwd
vagrant@st2-secondary:~$ sudo rabbitmqctl set_permissions st2 ".*" ".*" ".*"

NFSの設定

 続いてプライマリノードのコンテンツディレクトリをNFSでマウントし、実行環境および静的データをプライマリノードと共有します。/etc/fstabを以下のとおり修正し、それぞれのマウントポイントで指定したディレクトリをマウントをします。

--- etc/fstab.orig	2016-11-28 09:55:20.319586592 +0000
+++ /etc/fstab	2016-11-28 09:56:58.639589330 +0000
@@ -1 +1,4 @@
 LABEL=cloudimg-rootfs	/	 ext4	defaults	0 0
+
+192.168.0.100:/opt/stackstorm/packs /opt/stackstorm/packs nfs defaults 0 0
+192.168.0.100:/opt/stackstorm/virtualenvs /opt/stackstorm/virtualenvs nfs defaults 0 0
vagrant@st2-secondary:~$ sudo mount /opt/stackstorm/packs
vagrant@st2-secondary:~$ sudo mount /opt/stackstorm/virtualenvs

次のページ
StackStorm設定ファイルの修正

この記事は参考になりましたか?

StackStorm入門連載記事一覧
この記事の著者

大山 裕泰(株式会社DMM.comラボ)(オオヤマ ヒロヤス)

DMM.com ラボ所属ソフトウェアエンジニア。アリエル・ネットワーク株式会社、グリー株式会社を経て現在に至る。最近は主にインフラ基盤の構築、運用、機能開発を行う。共著書に「次世代ネットワーク制御技術 OpenFlow入門」がある。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9885 2017/01/06 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー