セカンダリノードの構築
続いて、セカンダリノードの構築を行います。
基本編の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
