目次
すずけんさんがVagrant+puppet使って、VM起動してElasticsearchのクラスタを組んでる記事を書いているのを見て、試してみたくなりました。 ということで、VagrantとかPuppetなに?くらいの私ですが、クラスタを起動するところまで行ったので、その時のメモを残しておきます。
元記事とか参考
- Vagrant環境にpuppet moduleを利用してさくっとelasticsearchをインストールする
- Vagrant環境にpuppetを利用してさくっとelasticsearchのclusterを作成する
- puppet-elasticsearch
なんとなくの理解
VagrantやPuppetについては、何度か勉強会で話を聞いてはいたのですが、 想像していたレベルだったので良い機会でした。 今のところの認識はこんな感じです。
Vagrant
VMを起動したり、VM周りの設定をあれこれできるツール。 VMのネットワーク設定や、インスタンス名?などを指定できる。
Puppet
起動後のVM(VMとは限らないか。)のゲストOS側の設定周りやアプリのインストールなどを 実行できるツール。
詰まった箇所
すずけんさんのブログを元に作業をしましたが、自分がVagrantやPuppetに疎いため、以下の部分で躓いたので、備忘録のために残しておきました。
その1:Puppetのファイルの場所
search01.vm.local
のVMを設定(というか、elasticsearchのインストール?)するときに、manifests/search.app
とroles/search/manifests/init.pp
ファイルが必要で作成します。
このファイルの配置場所は/vagrant
配下に作成する必要がありました。
ssh search01.vm.local
でVMにログインした場合は/home/vagrant
にログインしており、この場所でファイルを作ってもPuppetがエラーを吐いたためです。
と思ったのですが、あれ?これひょっとしてVagrantfileがあるところにディレクトリとファイル作ると勝手にVMにコピーしてくれるんですか?destroyして、upしたら、ファイルが勝手にコピーされてる。ひょっとして、/vagrant
ってディレクトリはVagrantfileがあるディレクトリを共有してたりするのかな?そのうち、Vagrantについても調べてみようかな。
その2:ネットワーク周り
curl http://192.168.10.114:9200/
をホストOSから実行してみましたがうまく行きませんでした。。。 ネットワーク周りの設定だと思うんですが。 少なくとも「sshによるログイン」「ping」コマンドの応答は返ってきてます。
また、VM内でcurlコマンドを実行したらレスポンスが返ってきました。
なんで?ってツイートしたら各所から「iptables」という単語が飛んできて、 service止めたら大正解でした。まぁ、そうですよね。基本ですよね。。。
ということで、Puppetがよくわかっていませんが、ググって変更してみました。
manifests/search.app
に以下を追加
include iptables
roles/iptables/manifests/init.pp
class iptables {
service { 'iptables':
enable => false,
ensure => stopped,
}
}
iptablesを停止するmanifests?です(良くないことなんですが、よくわかってない)。
ということで、ローカルで1個のVM起動して、elasticsearchにアクセスできることは確認できました。
と、書いてるそばから、元記事が修正されてしまいましたw
クラスタ編(変更点)
クラスタを組むときに、追加でプラグインを入れたのでroles/search/manifests/init.pp
は次のようにしました。
class search {
class { 'elasticsearch':
package_url => 'https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.0.0.RC2.noarch.rpm',
java_install => true,
config => {
'cluster' => {
'name' => 'test-es-cluster'
},
'network.host' => '_eth1:ipv4_',,
'marvel.agent.exporter.es.hosts' => ['192.168.10.114:9200','192.168.10.115:9200']
}
}
elasticsearch::plugin{'elasticsearch/marvel/latest':
module_dir => 'marvel'
}
elasticsearch::plugin{'mobz/elasticsearch-head':
module_dir => 'head'
}
elasticsearch::plugin{'royrusso/elasticsearch-HQ':
module_dir => 'HQ'
}
elasticsearch::plugin{'elasticsearch/elasticsearch-analysis-kuromoji/2.0.0.RC1':
module_dir => 'analysis-kuromoji'
}
elasticsearch::plugin{'info.johtani/elasticsearch-extended-analyze/1.0.0.RC1':
module_dir => 'extended-analyze'
}
elasticsearch::plugin{'polyfractal/elasticsearch-inquisitor':
module_dir => 'inquisitor'
}
}
とりあえず、今日はクラスタ組んでMarvelやプラグインの動作確認でおしまいです。
疑問点
いくつか疑問点が。試してみてもないんでなんとも言えませんが。気が向いたら、調べて追記するかも。
:private_network
はVirtualBox内で完結する(Macから外には影響しない)ネットワークが構築される?たぶん、VagrantというよりはVM、仮想化周りの知識なんだろうけど- どこから再開可能?elasticsearch.ymlの設定を書き換えた場合に、最後のコマンドだけ実行するとちゃんとやりなしてくれたりするのかな?
- VMのディスク増やすのもVagrantでできるんかな?まぁ、できると思うけど。
:forwarded_port
のauto_correctとかわかってない。- JVMをSunのJVMでかつ、7u25に変更したいのだがどうしたものか?(現時点での推奨バージョン)
感想
Vagrantって便利ですね。あれ?って思ったら、destroyして、やり直すのがすごく簡単です。 元記事があるので、なんとなくですが、構成とかどうすればいいかがわかるのは本当に助かりました。 これで、あれこれと検証する環境が簡単に構築できることがわかったので、色々と楽できるかも。ありがとうございます、すずけんさん!
comments powered by Disqus
See Also by Hugo
- Elasticsearch Marvelの紹介と第一印象
- ElasticのWorkplace Searchを触ってみる - その2 - インストールと起動
- Elasticsearch unplugged - 2.0におけるネットワークの変更(日本語訳)
- Elasticsearch server 2nd editionのファーストインプレッション
- 第1回ElasticSearch勉強会を開催しました! #elasticsearchjp