本文阿里云应该也同样适用。
一、 安装ElasticSearch
1. 安装JDK1.8
可参考 Linux安装JDK 。
2. ElasticSearch官网下载软件gz包,并解压,这里选 MACOS/LINUX 版本。
# 一般将软件包放在 /usr/local/src 路径
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.0.tar.gz -O /usr/local/src
# 解压缩
cd /usr/local/src
tar -xvf elasticsearch-6.7.0.tar.gz
# 将解压后文件夹移到 /usr/local 路径下
mv elasticsearch-6.7.0 /usr/local
3. 运行
可以看到下面的运行日志,报错 can not run elasticsearch as root 不能用root用户运行elasticsearch。
[root@VM_0_2_centos ~]# cd /usr/local/elasticsearch-6.7.0/bin
[root@VM_0_2_centos bin]# ./elasticsearch
[2019-04-01T15:08:38,350][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [unknown] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-6.7.0.jar:6.7.0]
...... 后面省略
那么,接下来创建一个用户用来运行elasticsearch
# root 用户操作
# 创建一个用户组
groupadd elasticsearch
# 创建一个用户 (在elasticsearch组下)
useradd es -g elasticsearch
# 给 elasticsearch 文件夹 授予 es 用户的访问权限 和 组权限
# -R 递归整个文件夹
chown -R es:elasticsearch /usr/local/elasticsearch-6.7.0
然后切到es用户(su - es)再运行,即可。
访问: http://ip地址:9200
二、出现的问题
1. 内存溢出问题
由于 elasticsearch 的默认 jvm 内存配置(配置文件 elasticsearch-6.7.0/config/jvm.options) 为 -Xms1g -Xmx1g 配置,但测试使用的服务器只有1g内存,因此调整配置为128m内存就可以解决了。
2. 启动失败的问题
ERROR: [2] bootstrap checks failed
[1]: max number of threads [3884] for user [es] is too low, increase to at least [4096]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
问题[1]:
增加es用户的最大线程数:
# /etc/security/limits.d/20-nproc.conf 文件修改
# 增加 * soft nproc 4096
# 增加 * hard nproc 4096
vim /etc/security/limits.d/20-nproc.conf
# 20-nproc.conf 会覆盖 /etc/security/limits.conf 的内容
# 所以,只要改20-nproc.conf(名称可能不一样?待验证)就可以。
问题[2]:
增加虚拟内存
# /etc/sysctl.d/99-sysctl.conf 文件修改
# 增加 vm.max_map_count=262144
vim /etc/sysctl.d/99-sysctl.conf
# 99-sysctl.conf 文件会覆盖掉 /etc/sysctl.conf 内容
# 所以 只要改 99-sysctl.conf 就可以了
# 使其生效
sysctl -p
3. 如何绑定腾讯云外网
# elasticsearch-6.7.0/config/elasticsearch.yml 配置文件
# 这里绑定 0.0.0.0即可
network.host: 0.0.0.0
# 如果这里写腾讯云服务器的外网ip,则会有端口绑定失败问题
外网访问,要设置 腾讯云安全组
入站规则指定9200端口,实例一定要指定。下面有2个规则,上面的规则是为了保证正常端口的正常访问(如sftp等)。下面的是开发9200入站端口。
直接指定外网端口会绑定失败问题:
[2019-04-01T14:22:04,242][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [av4_g7-] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: BindTransportException[Failed to bind to [9300-9400]]; nested: BindException[Cannot assign requested address];
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-6.7.0.jar:6.7.0]
......