Centos 7 搭建ElasticSearch环境
Centos 7 搭建ElasticSearch环境
一、新建用户
elasticsearch不能用root用户启动,会报错!
新建分组develop,新建用户dev,将dev加入develop
# 新建分组
groupadd develop
# 添加用户并加入分组
useradd dev -g develop
# 给用户设置登录密码
passwd dev
二、上传压缩包并解压
从官网下载安装包并上传到/customize/enviroment
路径下
进行解压:
tar -zxvf elasticsearch-6.3.5.tar.gz
进行重命名,将版本号去掉,解压后的目录为
/customize/enviroment/elasticsearch
三、修改配置
我们进入config目录:cd config
需要修改的配置文件有两个:
- jvm.options
Elasticsearch基于Lucene的,而Lucene底层是java实现,因此我们需要配置jvm参数。
编辑jvm.options:
vim jvm.options
默认配置如下:
-Xms1g
-Xmx1g
内存占用太多了,我们调小一些:
-Xms512m
-Xmx512m
elasticsearch.yml
vim elasticsearch.yml
- 修改数据和日志目录:
path.data: /customize/enviroment/elasticsearch/data # 数据目录位置
path.logs: /customize/enviroment/elasticsearch/logs # 日志目录位置
我们把data和logs目录修改指向了elasticsearch的安装目录。但是这两个目录并不存在,因此我们需要创建出来。
进入elasticsearch的根目录,然后创建:
mkdir data
mkdir logs
注:用dev用户创建data和logs两个文件夹。
如果用root用户创建了文件夹,则文件夹的所属为root,启动会报错,这时用chown命令来改变文件夹所属为dev用户和develop组
修改绑定的ip:
network.host: 0.0.0.0 # 绑定到0.0.0.0,允许任何ip来访问
默认只允许本机访问,修改为0.0.0.0后则可以远程访问
目前我们是做的单机安装,如果要做集群,只需要在这个配置文件中添加其它节点信息即可。
elasticsearch.yml的其它可配置信息:
属性名 | 说明 |
---|---|
cluster.name | 配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。 |
node.name | 节点名,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理 |
path.conf | 设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认在/etc/ elasticsearch |
path.data | 设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开 |
path.logs | 设置日志文件的存储路径,默认是es根目录下的logs文件夹 |
path.plugins | 设置插件的存放路径,默认是es根目录下的plugins文件夹 |
bootstrap.memory_lock | 设置为true可以锁住ES使用的内存,避免内存进行swap |
network.host | 设置bind_host和publish_host,设置为0.0.0.0允许外网访问 |
http.port | 设置对外服务的http端口,默认为9200。 |
transport.tcp.port | 集群结点之间通信端口 |
discovery.zen.ping.timeout | 设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些 |
discovery.zen.minimum_master_nodes | 主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2 |
四、运行
进入elasticsearch/bin目录,可以看到下面的执行文件:
然后输入命令:
./elasticsearch
发现报错了,启动失败:
1.3.1.错误1:内核过低
我们使用的是centos6,其linux内核版本为2.6。而Elasticsearch的插件要求至少3.5以上版本。不过没关系,我们禁用这个插件即可。
修改elasticsearch.yml文件,在最下面添加如下配置:
bootstrap.system_call_filter: false
然后重启
注:Centos 7不会出现该问题
1.3.2.错误2:文件权限不足
再次启动,又出错了:
[1]: max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
我们用的是dev用户,而不是root,所以文件权限不足。
首先用root用户登录。
然后修改配置文件:
vim /etc/security/limits.conf
添加下面的内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
1.3.3.错误3:线程数不够
刚才报错中,还有一行:
[1]: max number of threads [1024] for user [dev] is too low, increase to at least [4096]
这是线程数不够。
继续修改配置:
vim /etc/security/limits.d/90-nproc.conf
修改下面的内容:
* soft nproc 1024
改为:
* soft nproc 4096
1.3.4.错误4:进程虚拟内存
[3]: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
vm.max_map_count:限制一个进程可以拥有的VMA(虚拟内存区域)的数量,继续修改配置文件, :
vim /etc/sysctl.conf
添加下面内容:
vm.max_map_count=655360
然后执行命令:
sysctl -p
1.3.5.重启终端窗口
所有错误修改完毕,一定要重启你的 Xshell终端,否则配置无效。
1.3.6.启动
再次启动,终于成功了!
可以看到绑定了两个端口:
- 9300:集群节点间通讯接口
- 9200:客户端访问接口
我们在浏览器中访问:http://ip:9200,返回数据如下:
{
"name" : "D-TGCgf",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "RGPWh8_hTnWC_GoGpbwD4Q",
"version" : {
"number" : "6.5.3",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "159a78a",
"build_date" : "2018-12-06T20:11:28.826501Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
环境搭建成功!
注意事项:
如果第一次不小心用root用户启动了elasticsearch,会失败,并且logs和data中生成的文件有些权限是root的,这时切换为dev用户启动还是会失败。
解决方法:直接删除data和logs文件夹,用dev用户再新建这两个文件夹,再用dev用户启动执行
./elasticsearch
命令- 如果启动时遇到其他关于权限的错误,则检查相关文件(夹)的所有者,必须全部为dev,不能为root
还没有评论,来说两句吧...