在Linux环境下安装部署ElasticSearch过程整理


2018年04月27日 15:39:55 阅读数:83

搜索引擎入门


准备一个Linux系统

我这里在虚拟机上装了一个 CentOS-7-x86_64-Minimal-1708.iso

net-tools安装

由于此版本的系统在ifconfig无法执行,所以安装net-tools
yum install net-tools

关闭防火墙firewall

  1. systemctl stop firewalld.service #停止firewall
  2. systemctl disable firewalld.service #禁止firewall开机启动
  3. firewall-cmd –state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

JDK 8 安装

yum -y list java*
yum -y install java-1.8.0-openjdk*

ElasticSearch 下载

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz

安装部署

将下载完的压缩包放到Linux文件夹中,然后执行启动
[root@localhost bin]# ./elasticsearch

启动过程中的错误解决

异常1

OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
[2018-04-27T11:08:42,374][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] 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:125) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.4.jar:6.2.4]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:105) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:172) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.4.jar:6.2.4]
    ... 6 more

解决1

看报错信息就是内存大小问题导致的,所以配置/elasticsearch-6.2.4/config/jvm.options
加上
8:-XX:ParallelGCThreads=2

异常2

[o.e.b.ElasticsearchUncaughtExceptionHandler] [] 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:125) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.4.jar:6.2.4]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:105) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:172) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.4.jar:6.2.4]
    ... 6 more

解决2

Elasticsearch 服务默认无法 用root账户启动,新开一个用户
#添加用户yyf
adduser yyf
#修改yyf用户的密码
passwd yyf
#授予权限 chown –R用户名 文件夹名 
chown -R yyf  /opt/elas/*   
#用yyf账户登录再次启动
[root@localhost /]# su yyf
#到elasticsearch目录的bin下,
[yyf@localhost bin]$ ./elasticsearch

异常3

ERROR: [4] bootstrap checks failed
[1]: initial heap size [16777216] not equal to maximum heap size [257949696]; this can cause resize pauses and prevents mlockall from locking the entire heap
[2]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[3]: max number of threads [3818] for user [yyf] is too low, increase to at least [4096]
[4]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决3

[1]: 配置/elasticsearch-6.2.4/config/jvm.options JVM heap size
-Xms500m
-Xmx500m
[2]: 每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量同[3]一起设置
[3]: 最大线程个数太低。修改配置文件/etc/security/limits.conf 
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

[4]: (1)是以为操作系统的vm.max_map_count参数设置太小导致的,请使用root用户登录系统,执行以下命令: 
sysctl -w vm.max_map_count=262144 
并用以下命令查看是否修改成功 
sysctl -a | grep "vm.max_map_count"
如果能正常输出262144,则说明修改成功
(2)或者切换到root用户修改配置sysctl.conf
vi /etc/sysctl.conf 
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p

查看服务是否成功

访问:http://192.168.176.128:9200/?pretty (换上自己的ip地址)
返回结果如下

{
   "name": "node-2",
   "cluster_name": "my-application",
   "cluster_uuid": "uOfUA9QfScqn2Jnri-UIhA",
   "version": {
       "number": "6.2.4",
       "build_hash": "ccec39f",
       "build_date": "2018-04-12T20:37:28.497551Z",
       "build_snapshot": false,
       "lucene_version": "7.2.1",
       "minimum_wire_compatibility_version": "5.6.0",
       "minimum_index_compatibility_version": "5.0.0"
   },
   "tagline": "You Know, for Search"
}

博客搜索

扫一扫看博客

加载中...