如果你阅读了es进阶-设置篇,那么你应该明白,最好使用rpm进行安装,而不是
tar.gz
或者zip
的方式安装! 这里只是推荐但不强迫。rpm方式安装简单,我们这里讲解通过tar.gz
进行安装!
##环境依赖
- jdk1.8+ 最好是最新的jdk-8u131
- es最好单独占用一台机器
- 建议es节点为3(本教程是两个节点)
##安装 1.首先创建1个文件夹:
# 创建软件的统一存放路径,你可以用你自己的,我会将所有应用都长传到这个目录再安装
mkdir /tools
2.上传elasticsearch到/tools
文件夹
3.解压到/usr/local
cd /tools/
tar zxvf elasticsearch-5.4.1.tar.gz -C /usr/local/
4.创建专用于elasticsearch的用户,并将elasticsearch解压文件夹的owner修改为新创建的用户
# useradd 用户名
useradd ela
cd /usr/local/
# chown修改owner, -R 递归(包含所有子文件),ela.ela 用户名和用户组 也可以写成ela:ela
chown -R ela.ela elasticsearch-5.4.1/
5.通过ela用户启动elasticsearch(测试启动)
su ela
cd elasticsearch-5.4.1/
./bin/elasticsearch
ctrl+c 关闭。
6.更好的启动和关闭方法 启动
# -d后台启动 -p pid 将启动后的pid记录到pid文件中
./bin/elasticsearch -d -p pid
关闭
kill `cat pid`
到这里安装完成,但是必须进行必要的配置才能用于生产环境。
启动问题
1.elasticsearch5期望linux的内核在3.5以上, 否则会报
java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+
with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled in
但是不影响启动! 对于我们升级内核是危险的,如果你一定要升级,确保主机上的所有数据和软件都已经备份,否则可能导致机器不能启动只能重置!
2.如果你先以root启动过elasticsearch,启动失败,然后用ela用户启动,可能会报permission denid
的错误,此时删除log文件,再次启动即可
必须配置
系统设置
先切换到root
su
1.修改/etc/security/limits.conf
vim /etc/security/limits.conf
添加如下配置
# ela是elasticsearch的用户
ela - nofile 65536
ela - nproc 2048
ela - memlock unlimited
注意:此修改在下一次会话生效,因此要断开ssh工具(如xshell),再次连接。
2.修改/etc/sysctl.conf
vim /etc/sysctl.conf
添加如下配置
vm.max_map_count = 655360
然后执行
sysctl -p
3.关闭swap
- 编辑
/etc/fstab
,将所有包含swap的行注释掉,重启后生效 - 我们先通过
sudo swapoff -a
临时关闭swap,虽然只是临时的,但是如果重启,那么上面的修改就会生效。
4.配置jvm的堆大小,设置原则如下
- 默认为2G 可酌情增加
- 不超过真是RAM的50%
- 不超过32G
- xms和xmx相等
cd /usr/local/elasticsearch-5.4.1/
vim config/jvm.options
设置
# 我是虚拟机所以设置的小
-Xms500m
-Xmx500m
elasticsearch配置
1.切换回root用户,创建两个文件夹,并授权给elasticsearch
mkdir /var/lib/elasticsearch /var/log/elasticsearch
chown -R ela.ela /var/lib/elasticsearch/ /var/log/elasticsearch/
2.修改elasticsearch配置文件
cd /usr/local/elasticsearch-5.4.1/
vim config/elasticsearch.yml
配置如下
# ============= =========== Elasticsearch Configuration =========================
# 省略介绍
#
# ---------------------------------- Cluster -----------------------------------
# 集群名称-自行定义
cluster.name: camelot
#
# ------------------------------------ Node ------------------------------------
#节点名称-自行定义,最好是集群名称+(数字或者ip)
node.name: camelot-1
#
# ----------------------------------- Paths ------------------------------------
#数据路径
path.data: /var/lib/elasticsearch
# Path to log files:
#日志路径
path.logs: /var/log/elasticsearch
# ----------------------------------- Memory -----------------------------------
#Centos6不支持SecComp,而ES5.2+默认bootstrap.system_call_filter为true进行检测,会导致检测失败,失败后直接导致ES不能启动。
bootstrap.system_call_filter: false
#
#保证jvm不被交换到硬盘
bootstrap.memory_lock: true
#
# ---------------------------------- Network -----------------------------------
#设置为局域网ip,如果对提供设置为外网ip或0.0.0.0
network.host: 10.6.60.232
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
discovery.zen.ping.unicast.hosts:
- 10.6.60.209
- 10.6.60.232
#此配置保证最少有多少节点投票才能成为主节点,是为了防止脑裂,一般为:集群数量/2+1
discovery.zen.minimum_master_nodes: 1
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#
#gateway.recover_after_nodes: 3
#
# For more information, consult the gateway module documentation.
#
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
生产环境配置完成! 最后注意开放端口:9200和9300!
3.启动:
cd /usr/local/elasticsearch-5.4.1
# -d后台启动 -p pid 将启动后的pid记录到pid文件中
./bin/elasticsearch -d -p pid
关闭
kill `cat pid`
测试
通过kinbana/postman或其他工具访问elasticsearch,我使用postman,测试如下结果即成功!
![](http:// orma7vo6f.bkt.clouddn.com/wiki/ElasticSearch-好文收藏/_image/2017-06-20-14-36-49.jpg)