ElasticSearch-0.19.9 部署

起初下的是 0.18.7 版本,但是在使用 service wrapper 的时候,出现这样的错误,应该是个 bug,升级到 0.19.9 就没问题了。

# wget https://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-0.19.9.tar.gz
# tar zxvf elasticsearch-0.19.9.tar.gz
# mv elasticsearch-0.19.9 elasticsearch
# rm elasticsearch*.tar.gz

# curl -L http://github.com/elasticsearch/elasticsearch-servicewrapper/tarball/master | tar -xz
# mv *servicewrapper*/service elasticsearch/bin/
# rm -Rf *servicewrapper*                

编辑 elasticsearch/config/elasticsearch.yml 文件,给 cluster 一个名字,这可以阻止该 cluster 跟该网段的其他 ElasticSearch cluster 通信:
cluster.name: graylog2

默认情况下,ElasticSearch 监听 0.0.0.0,对于 HTTP 的流量走 [9200-9300] 端口,对于 node-to-node 的通信走 [9300-9400] 端口,端口是一个范围,这意味着如果某个端口被占用,可以自动切换到下一个端口:
network.bind_host: 192.168.0.1

接下来需要配置 elasticsearch/bin/service/elasticsearch.conf:
修改 ES_HOME, ES_MIN_MEM, ES_MAX_MEM 这三个参数,分别代表 es 的 home 路径,分给 es 的 min/max 内存。

为了安全起见,以 elasticsearch 这个用户来运行 ElasticSearch:
# export ES_HOME=/opt/elasticsearch
# useradd -d $ES_HOME -s /bin/sh elasticsearch
# vi $ES_HOME/bin/service/elasticsearch

RUN_AS_USER=elasticsearch
LOCKDIR=$ES_HOME/lock

# mkdir $ES_HOME/lock
# chown -R elasticsearch $ES_HOME

# vim /etc/security/limits.conf
elasticsearch     soft    nofile    32000

# $ES_HOME/bin/service/elasticsearch install
# /etc/init.d/elasticsearch start

或者通过 console 来 debug:
# /etc/init.d/elasticsearch console

当然,也可以不通过 wrapper 来启动,-f 表示 foreground,而什么参数都不加或者 -p 表示在背景执行:
# ./elasticsearch/bin/elasticsearch -f

# ./elasticsearch/bin/elasticsearch -p pidfile
# kill `cat pidfile`

如果使用 wrapper 的方式,会多开一个 32000 端口。

检测:
$ curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

ref:
http://www.elasticsearch.org/tutorials/2011/02/22/running-elasticsearch-as-a-non-root-user.html