准备环境
操作系统: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 | 配置文件专用目录 |
| lib | Elasticsearch使用的库 |
| modules | 加载的模板列表(内置插件) |
| plugins | 自定义插件目录(例如,放置中文分词插件ik) |
| data | 数据存储目录(启动后会自动生成该目录) |
| logs | 日志存放目录(启动后会自动生成该目录) |
配置Elasticsearch:
注意事项:在Elasticsearch配置中需要注意两项的配置,一种是Elasticsearch本身的配置,
另外还需要修改Linux的一些内核参数。
进入Elasticsearch的config配置文件目录,有如下配置文件:
| 配置文件名称 | 作用与用途 |
|---|---|
| elasticsearch.yml | Elasticsearch核心的配置文件 |
| jvm.options | JVM的参数配置文件 |
| 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_lock | es启动时是否锁内存(避免报错,一般都设置成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
本文详细介绍了如何在64位Ubuntu-14.04.6系统上部署Elasticsearch 6.4.0,包括创建用户esuser,解压安装文件,调整文件权限,配置Elasticsearch及Linux内核参数,以及解决启动过程中可能遇到的问题,如最大文件数限制、线程创建限制、虚拟内存大小等。
2537

被折叠的 条评论
为什么被折叠?



