ElasticSearch在Linux上的部署以及常见问题解决方案

本文详细介绍了如何在64位Ubuntu-14.04.6系统上部署Elasticsearch 6.4.0,包括创建用户esuser,解压安装文件,调整文件权限,配置Elasticsearch及Linux内核参数,以及解决启动过程中可能遇到的问题,如最大文件数限制、线程创建限制、虚拟内存大小等。

准备环境

操作系统:64位Ubuntu-14.04.6
ElasticScarch版本:6.4.0
JDK:1.8

开始环境的搭建

添加普通用户账号:
由于Elasticsearch可以接收用户输入的脚本并且执行,为了系统安全考虑,不允许root账号启动,所以需要使用普通账户启动项目,或者给Elasticsearch单独创建一个用户来运行Elasticsearch。使用命令,添加一个用户叫es,然后设置密码。

adduser esuser
passwd esuser
然后设置你的用户密码

用户创建好之后,切换到esuser用户。

解压Elasticscarch6.4.0:

下载好elasticsearch-6.4.0.tar.gz之后,复制到esuser用户目录下,并解压Elasticscarch6.4.0:

命令:tar -zxvf elasticsearch-6.4.0.tar.gz

如果当前登录用户是root账户,需要把Elasticscarch6.4.0文件夹的所有者和访问权限赋予esuser,否则使用esuser启动时会提示权限不够。可通过如下命令配置:

进入elasticsearch-6.4.0目录的上一级,将elasticsearch-6.4.0目录下的所有文件权限赋予esuser用户。

chown -R esuser elasticsearch-6.4.0
chmod -R 755 elasticsearch-6.4.0

介绍一下Elasticscarch目录的结构:

目录名称作用与用途
bin用于运行Elasticsearch和管理一些应用的脚本
config配置文件专用目录
libElasticsearch使用的库
modules加载的模板列表(内置插件)
plugins自定义插件目录(例如,放置中文分词插件ik)
data数据存储目录(启动后会自动生成该目录)
logs日志存放目录(启动后会自动生成该目录)

配置Elasticsearch:

注意事项:在Elasticsearch配置中需要注意两项的配置,一种是Elasticsearch本身的配置,
另外还需要修改Linux的一些内核参数。

进入Elasticsearch的config配置文件目录,有如下配置文件:

配置文件名称作用与用途
elasticsearch.ymlElasticsearch核心的配置文件
jvm.optionsJVM的参数配置文件
log4j2.properties日志的配置文件

编辑elasticsearch.yml文件

命令:vim elasticsearch.yml

常见部分配置项,单机器部署的话,可以都不用配置,elasticsearch会有默认配置:

参数名称参数作用与用途
cluster.name集群名称,elasticsearch会通过相同名称组成一个集群(建议名称复杂些,防止跟其他集群重名)
node.name节点名称(可以不用设置,默认即可)
node.attr.rack属性(可以不用设置,默认即可)
node.master是否主节点(不设置默认是true)
node.data是否数据节点(不设置默认是true)
path.data数据存放目录(node.data设为rue生效,不设置默认会在elasticsearch目录下创建data目录存放数据。可设置多个存储路径,逗号分割)
path.logs日志存放目录(不设置默认会在elasticsearch目录下创建logs目录存放日志)
bootstrap.memory_lockes启动时是否锁内存(避免报错,一般都设置成true)
network.host对外发布的ip地址(默认为127.0.0.1,集群时需要设置为自己的主机通讯IP)
http.port对外发布的端口(不设置默认是9200)
transport.tcp.port内部节点之间通信端口(不设置默认是9300)
discovery.zen.ping.unicast.hosts

参与选举master的其他节点ip和内部节点通信端口,采用zen方式对外单播,组建集群的IP。

(例:["192.168.0.88:9300","192.168.0.89:9300"])

discovery.zen.minimum_master_nodes最小主节点数(防止脑裂参数,一般设置公式:所有node节点数 /2 +1)
indices.query.bool.max_clause_count 最大搜索条件数目(为防止生产环境误输入过多查询参数影响性能,一般需要限制,比如3000)
node.max_local_storage_nodes本机最大运行存储节点数
index.store.type不同的文件系统有不同的存储类型:

simplefs:并发性能较差,多线程会出现瓶颈。

niofs:可以多个线程并发地读同一个文件。当索引需要持久化最好使用niofs。

mmapfs:将映射的文件加载到虚拟地址空间。在使用该类型之前,请确定是否有足够的虚拟内存。

默认情况下,Elasticsearch将根据操作环境选择最佳实现(有时未必是业务最佳,需调整

启动elasticsearch:

进入到elasticsearch-6.4.0/bin目录下,启动项目。

./elasticsearch

启动遇到的常见问题:

1、每个进程最大同时打开文件数太小

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

可通过下面2个命令查看当前数量

ulimit -Hn
ulimit -Sn

解决方案:切到root 用户下,修改 /etc/security/limits.conf,在文件的末尾添加下面的参数值(*号表示针对所有用户):

* soft nofile 65536
* hard nofile 65536

用户退出后重新登录生效。

2、无法创建本地线程问题,用户最大可创建线程数太小

max number of threads [3818] for user [es] is too low, increase to at least [4096]

最大线程个数太低,可通过命令查看:

ulimit -Hu
ulimit -Su

解决方案:需要修改配置文件/etc/security/limits.conf(和问题1是一个文件)增加配置,用户退出后重新登录生效

*soft nproc 4096
*hard nproc 4096

3、最大虚拟内存太小,需要修改系统变量的最大值。

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方案:切换到root用户,修改配置sysctl.conf,增加配置值: vm.max_map_count=262144

$ vim /etc/sysctl.conf
vm.max_map_count=262144

执行命令:sysctl -p,可以立即生效。

4、无法创建本地线程问题,用户最大可创建线程数太小

max number of threads [1024] for user [es] likely too low, increase to at least [2048]

解决方案:切换到root用户,修改配置文件: /etc/security/limits.d/90-nproc.conf:

* soft nproc 2048

5、权限不够

bash: ./elasticsearch:权限不够

如果已经执行了chmod -R 755 elasticsearch-6.4.0,需要进入elasticsearch-6.4.0/bin目录下,右键elasticsearch文件,勾选:允许作为程序执行文件。然后重新启动。

6、JVM虚拟机内存不足

JavaHotSpot(TM) 64-Bit Server VM warning: INFO: error='Cannotallocate memory' (errno=12)

因为elasticsearch默认占用内存2g,虚拟机分配的JVM内存不足。

解决方案:进入修改elasticsearch-6.4.0/config/jvm.options,可以修改为1g或者512M,根据本机情况设置。

-Xms512M
-Xmx512M

验证启动

浏览器输入:http://localhost:9200/,出现如下类似界面,就表示启动成功:

{
  "name" : "node-1",
  "cluster_name" : "es",
  "cluster_uuid" : "02fx6rYHRz6v0AGMJDB2MA",
  "version" : {
    "number" : "6.4.0",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" : "595516e",
    "build_date" : "2018-08-17T23:18:47.308994Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

如果没有什么问题的话,可以使用后台启动:

$ ./bin/elasticsearch -d
$ ss -tnlp |grep 9200

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值