Bootstrap

虚拟机 CentOS 6.5 安装搭建 Elasticsearch 6.2.2

1.安装jre

Elasticsearch(下文用ES简称代替) 的安装搭建环境要求JAVA环境,需要jre1.8以上,所以先从JAVA官网下载jre的rpm包

http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html


下载rpm包后,上传到服务器的 /opt 目录下

服务器上切换到opt 目录下,使用rpm命令安装jre(安装的时候自己补全对应的rpm包的名字),安装完成后使用 命令 java -version 验证java的安装正确性

[root@elk2 ~]# cd /opt
[root@elk2 opt]# rpm -ivh jre-8u161-linux-x64.rpm 
Preparing...                ########################################### [100%]
   1:jre1.8                 ########################################### [100%]
Unpacking JAR files...
	plugin.jar...
	javaws.jar...
	deploy.jar...
	rt.jar...
	jsse.jar...
	charsets.jar...
	localedata.jar...
[root@elk2 opt]# java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

2.安装ES(官网有多种方法,随意选择)

打开ES官网https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html

根据官网的教程下载es的tar包,


下载es的tar包

[root@elk2 opt]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.tar.gz

解压

[root@elk2 opt]#tar -xzf elasticsearch-6.2.2.tar.gz

解压成功后获得ES6.2.2文件夹

[root@elk2 opt]# ll
总用量 90232
drwxr-xr-x. 8 root root     4096 2月  17 03:03 elasticsearch-6.2.2
-rw-r--r--. 1 root root 29049540 2月  28 11:30 elasticsearch-6.2.2.tar.gz
-rw-r--r--. 1 root root 63333908 2月  28 11:30 jre-8u161-linux-x64.rpm

3.创建ES用户

默认ES 6.X 是不允许root用户运行的,否则ES运行的时候会报错,所以我们需要创建新的用户

[root@elk2 opt]# groupadd es
[root@elk2 opt]# useradd es -g es
[root@elk2 opt]# passwd es
更改用户 es 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。

4.修改ES目录权限

修改ES的根目录的权限

[root@elk2 opt]# chown -R es:es elasticsearch-6.2.2

切换当前用户为es , 进入es的目录, 使用命令 

./bin/elasticsearch 就可以将ES 运行起来了

[root@elk2 opt]# su es
[es@elk2 opt]$ cd elasticsearch-6.2.2
[es@elk2 elasticsearch-6.2.2]$ ./bin/elasticsearch

正常的启动信息如下:

可以看到默认9200 9300 端口打开

[2018-02-28T11:56:02,537][INFO ][o.e.n.Node               ] [rAnzmAZ] starting ...
[2018-02-28T11:56:02,717][INFO ][o.e.t.TransportService   ] [rAnzmAZ] publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}
[2018-02-28T11:56:02,736][WARN ][o.e.b.BootstrapChecks    ] [rAnzmAZ] max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2018-02-28T11:56:02,737][WARN ][o.e.b.BootstrapChecks    ] [rAnzmAZ] max number of threads [1024] for user [es] is too low, increase to at least [4096]
[2018-02-28T11:56:02,737][WARN ][o.e.b.BootstrapChecks    ] [rAnzmAZ] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2018-02-28T11:56:02,737][WARN ][o.e.b.BootstrapChecks    ] [rAnzmAZ] system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
[2018-02-28T11:56:05,848][INFO ][o.e.c.s.MasterService    ] [rAnzmAZ] zen-disco-elected-as-master ([0] nodes joined), reason: new_master {rAnzmAZ}{rAnzmAZLR2CCkXXZY1oxAA}{qLtHLrJXRuWme98YA2DxgQ}{127.0.0.1}{127.0.0.1:9300}
[2018-02-28T11:56:05,854][INFO ][o.e.c.s.ClusterApplierService] [rAnzmAZ] new_master {rAnzmAZ}{rAnzmAZLR2CCkXXZY1oxAA}{qLtHLrJXRuWme98YA2DxgQ}{127.0.0.1}{127.0.0.1:9300}, reason: apply cluster state (from master [master {rAnzmAZ}{rAnzmAZLR2CCkXXZY1oxAA}{qLtHLrJXRuWme98YA2DxgQ}{127.0.0.1}{127.0.0.1:9300} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)]])
[2018-02-28T11:56:05,906][INFO ][o.e.h.n.Netty4HttpServerTransport] [rAnzmAZ] publish_address {127.0.0.1:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}
[2018-02-28T11:56:05,906][INFO ][o.e.n.Node               ] [rAnzmAZ] started
[2018-02-28T11:56:05,935][INFO ][o.e.g.GatewayService     ] [rAnzmAZ] recovered [0] indices into cluster_state

可以验证一下服务是否正常

[root@elk2 ~]# curl -i "http://localhost:9200"
HTTP/1.1 200 OK
content-type: application/json; charset=UTF-8
content-length: 436

{
  "name" : "linux-2",
  "cluster_name" : "li-application",
  "cluster_uuid" : "LeGL4ApCTDS-Nj76INkZAg",
  "version" : {
    "number" : "6.2.2",
    "build_hash" : "10b1edd",
    "build_date" : "2018-02-16T19:01:30.685723Z",
    "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"
}



ps 。后台运行ES,可以加入-p 命令 让es在后台运行, -p 参数 记录进程ID为一个文件

$ ./bin/elasticsearch -p /tmp/elasticsearch-pid -d
$ cat /tmp/elasticsearch-pid && echo
15516
$ kill -SIGTERM 15516


5.配置ElasticSearch,让ElasticSearch支持外网访问,加入集群等

修改配置文件elasticsearch.yml

[es@elk2 elasticsearch-6.2.2]$ vim config/elasticsearch.yml

去掉以下注释,修改以下配置(记得配置项名称冒号后面是有一个空格的,若没有空格会报错

cluster.name: li-application #集群名称,可以自行修改
node.name: linux-2 #节点名称,自行修改
network.host: 172.16.1.177 #主机地址,这里写本机IP
http.port: 9200 #端口

修改后,再次启动ES后,会得到以下报错

[es@elk2 elasticsearch-6.2.2]$ ./bin/elasticsearch
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max number of threads [1024] for user [es] is too low, increase to at least [4096]
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[4]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

根据网上的各位大佬的解决办法,逐一去解决,使用root身份,执行以下操作

解决问题【1】【2】

[root@elk2 ~]# vim /etc/security/limits.conf

在文件未添加以下内容(开头es 为用户名)

es soft nofile 65536

es hard nofile 131072

es soft nproc 4096

es hard nproc 4096

解决问题【3】

[root@elk2 ~]# sysctl -w vm.max_map_count=262144   
[root@elk2 ~]# vim /etc/sysctl.conf     #让配置永久生效

在文末添加以下内容

vm.max_map_count=262144

解决问题【4】

Centos6不支持SecComp,而ES6默认bootstrap.system_call_filter为true

[es@elk2 elasticsearch-6.2.2]$ vim config/elasticsearch.yml

禁用:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面: 

取消bootstrap.memory_lock的注释,添加bootstrap.system_call_filter 配置

bootstrap.memory_lock: false 
bootstrap.system_call_filter: false

再次启动es,成功启动

[es@elk2 elasticsearch-6.2.2]$ ./bin/elasticsearch
[2018-02-28T14:16:23,893][INFO ][o.e.t.TransportService   ] [linux-2] publish_address {172.16.1.177:9300}, bound_addresses {172.16.1.177:9300}
[2018-02-28T14:16:23,914][INFO ][o.e.b.BootstrapChecks    ] [linux-2] bound or publishing to a non-loopback address, enforcing bootstrap checks
[2018-02-28T14:16:27,017][INFO ][o.e.c.s.MasterService    ] [linux-2] zen-disco-elected-as-master ([0] nodes joined), reason: new_master {linux-2}{rAnzmAZLR2CCkXXZY1oxAA}{Diisd8m8SiOgBGPC_ET_Fg}{172.16.1.177}{172.16.1.177:9300}
[2018-02-28T14:16:27,031][INFO ][o.e.c.s.ClusterApplierService] [linux-2] new_master {linux-2}{rAnzmAZLR2CCkXXZY1oxAA}{Diisd8m8SiOgBGPC_ET_Fg}{172.16.1.177}{172.16.1.177:9300}, reason: apply cluster state (from master [master {linux-2}{rAnzmAZLR2CCkXXZY1oxAA}{Diisd8m8SiOgBGPC_ET_Fg}{172.16.1.177}{172.16.1.177:9300} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)]])
[2018-02-28T14:16:27,117][INFO ][o.e.h.n.Netty4HttpServerTransport] [linux-2] publish_address {172.16.1.177:9200}, bound_addresses {172.16.1.177:9200}
[2018-02-28T14:16:27,117][INFO ][o.e.n.Node               ] [linux-2] started
[2018-02-28T14:16:27,170][INFO ][o.e.g.GatewayService     ] [linux-2] recovered [0] indices into cluster_state











;