首先推荐elasticsearch官方文档入口:
https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html
NOTE: 使用的elasticsearch版本为5.0.2.
1.机器环境准备
1.1 java 8
安装jdk8
1.2 内存锁定值
ulimit -a
看一下max locked memory,如果不是unlimited的话:
登录root,vi /etc/security/limits.conf
加上一行 work - memlock unlimited
保存退出
回到之前帐号。ulimit -a
看一下max locked memory,应该是unlimited了。
后面启动elasticsearch后,可以验证一下:
执行
curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
mlockall的值应该是true
elasticsearch-glogse.log日志里应该没有”Unable to lock JVM Memory”
1.3 最大打开文件数量
上面改/etc/security/limits.conf时可以顺便把最大打开文件数量也改了
work - nofile 65536
有异常日志打出,并影响性能。
1.4 vm.max_map_count
登录root,执行sysctl -w vm.max_map_count=262144
即可。
不然会有异常日志打出,并影响性能。
异常日志”seccomp unavailable: requires kernal 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER“
内核版本太旧。不用管。
2.ES集群搭建
以下是一个cluster三个nodes的搭建步骤,每个node在不同的物理机,每个node都master eligible, 都同时是data node和ingest node。
cluser, node定义参考官方文档:
https://www.elastic.co/guide/en/elasticsearch/reference/current/_basic_concepts.html
master eligible, data node, ingest node定义参考官方文档:
https://www.elastic.co/guide/en/elasticsearch/reference/5.0/modules-node.html
每个node上执行以下步骤:
去ES官网下载tar包到机器上并解压:
https://www.elastic.co/downloads/elasticsearch
可把解压目录放进.bash_profile备用:
export ES_HOME=$HOME/elasticsearch
编辑$ES_HOME/config/elasticsearch.yml
:
cluster.name起一个统一的集群名。
node.name本节点的名称,每台机器不同。
path.data: ${ES_HOME}/data
path.logs: ${ES_HOME}/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200 # 用默认值的话可不写
transport.tcp.port: 9300 # 用默认值的话可不写
discovery.zen.ping.unicast.hosts: ["10.205.180.17", "10.205.180.18"] # 列出至少一部分的node
discovery.zen.minimum_master_nodes: 2 # 需要多少个node选举通过才能当上master。一般用node数/2 + 1。node数不能为偶数。
保存退出。
如果.bash_profile之类的地方有jvm堆体积的设置:
export _JAVA_OPTIONS="-Xmx10g"
那么elasticsearch/config/jvm.options 中的Xmx配置需要保持一致。否则服务启动失败。
后台启用服务,并把进程号放在pid文件:
./bin/elasticsearch -d -p pid
三个node都启动后在任一台执行
curl -XGET 'localhost:9200/_cat/health?v&pretty'
可看到三个node都已进入集群
进程退出:
kill cat pid