雑文発散

«前の日記(2014-11-19) 最新 次の日記(2014-11-21)» 編集
過去の日記

2014-11-20 [長年日記]

[Vagrant][Chef] Vagrant で複数台の Elasticsearch サーバを立ててみた

Elasticsearch 用のレシピを書いたりしつつ、Vagrantfile で2台分の VM を立てる設定を書いてみた。

apt_repository 'elasticsearch-stable' do
uri 'http://packages.elasticsearch.org/elasticsearch/1.4/debian'
distribution 'stable'
components ['main']
key 'http://packages.elasticsearch.org/GPG-KEY-elasticsearch'
not_if do
File.exists?('/etc/apt/source.list/d/elasticsearch.list')
end
end
%w{openjdk-7-jdk elasticsearch}.each do |pkg|
package pkg do
action :install
end
end
template '/etc/elasticsearch/elasticsearch.yml' do
owner 'root'
group 'root'
mode 0644
notifies :reload, 'service[elasticsearch]'
end
service 'elasticsearch' do
action [:enable, :start]
supports :status => true, :restart => true, :reload => true
end
view raw default.rb hosted with ❤ by GitHub

template の elasticsearch.yml.erb の中身は、パッケージに含まれている設定ファイルから下記の部分をテンプレート化しただけ。

cluster.name: <%= node['elasticsearch']['cluster_name'] %>
node.name: <%= node['elasticsearch']['node_name'] %>

Vagrantfile の中身はこんな感じにしてみた。

これで es1 と es2 という VM ができた。ただ、最初に vagrant up したときに、es2 の途中で動きが止まったように見えて、インストール途中で失敗した様子。

vagrant ssh でのログインはできたので、VM の中身を見てみたら、Elasticsearch のパッケージインストールはできていなかった。もう一度 vagrant up してみたら es2 の方へもインストールされ、起動もしてくれた。

まだこれだと Vagrantfile か Chef のレシピに問題があるのかなぁ。。。

この方法だと、es1 と es2 がシリアルに作成され、それぞれが外部サーバから apt-get install しているので、VM のインストールは正直かなり遅い。まぁ、初期インストールが済んでしまえば、次からはそれほど時間もかからないので、こういうものなのかな。

100台の VM を立ち上げる!とかの世界であれば、別のソリューションを考えたほうが良さそうなのは分かった。

あと、この設定だけだと、Elasticsearch がうまくクラスタ化できてない様子。es1 と es2 がそれぞれ master になってしまっている。クラスタ名は同じになっているので、ネットワーク設定がダメなんだな。

今日は時間切れなので明日にでも。

本日のツッコミ(全2件) [ツッコミを入れる]
masutaka (2014-11-25 23:52)

VMに限った話であれば、vagrant cachier pluginは良いかもしれません。<br>http://www.1x1.jp/blog/2014/09/vagrant-cachier-plugin.html<br>2台目からのapt-get installが早くなります。

すずき (2014-12-08 07:46)

おー、なるほど、ありがとうございます!