Linux安装elasticsearch6.6.2版本

CentOS6系统服务器安装elasticsearch6.6.2版本

1.简介

Elasticsearch是一种基于Lucene,针对海量数据提供快速复杂查询的索引工具。大约在2012年出现,它天生支持分布式存储与查询,基于restful接口。

1.1ES与Solr的区别

ES Solr
接口 提供rest风格 提供类似webservice
分布式 天生支持分布式 4.X以后支持分布式
数据格式 json xml和json

1.2Rest简介

全称:Representational State Transfer

一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

Rest操作分为以下五种

对象 描述
GET 获取当前对象状态
PUT 改变对象状态
POST 创建对象
DELETE 删除对象
HEAD 获取头信息

1.3ES内置的REST接口

URL 说明
/index/_search 搜索指定索引下的数据
/_aliases 获取或操作索引的别名
/index/ 查询指定索引的详细信息
/index/type 创建或操作类型
/index/_mapping 创建或操作mapping
/index/_settings 创建或操作设置(number_of_shards是不可更改的)
/index/_open 打开指定被关闭的索引
/index/_close 关闭指定索引
/index/_refresh 刷新索引(使新加内容对搜索可见,不保证数据被写入磁盘)
/index/_flush 刷新索引(会触发lucene提交)

1.4ES与关系型数据库对比

ES 数据库
index(索引库) database(数据库)
type(类型) table(表)
document(文档) row(行)
field(字段) column(列)

2.安装JDK

参见Set Up Elasticsearch,安装Elasticsearch6.6.2版本至少需要jdk1.8版本

Java (JVM) Version

Elasticsearch is built using Java, and requires at least Java 8 in order to run. Only Oracle’s Java and the OpenJDK are supported. The same JVM version should be used on all Elasticsearch nodes and clients.

We recommend installing Java version 1.8.0_131 or a later version in the Java 8 release series. We recommend using a supported LTS version of Java. Elasticsearch will refuse to start if a known-bad version of Java is used.

The version of Java that Elasticsearch will use can be configured by setting the JAVA_HOMEenvironment variable.

参见Linux下安装JDK

3.安装Elasticsearch

3.1下载解压

进入Elastic Past Releases,产品选择Elasticsearch,选择对应的版本,此处选择6.6.2
下载elasticsearch对应版本
下载后上传到Linux服务器上
或者直接在Linux服务器上下载

[solang@solang ~]$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz

解压到用户主目录app文件夹下

[solang@solang ~]$ tar -zxvf elasticsearch-6.6.2.tar.gz -C ~/app

3.2配置elastic

[solang@solang ~]$ cd app/elasticsearch-6.6.2/conf/
[solang@solang ~]$ vi elasticsearch.yml
network.host: 192.168.86.206
#
# Set a custom port for HTTP:
#
http.port: 9200

将network.host和http.port前面的注释去掉,host改成服务器IP,这样可以让其它客户端机器连接

4.启动elastic

注:elasticsearch不能以root用户启动。

[solang@solang ~]$ cd app/elasticsearch-6.6.2/bin/
[solang@solang bin]$ sh elasticsearch
[2019-06-15T14:17:24,732][INFO ][o.e.b.BootstrapChecks    ] [mXYTvku] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [4] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max number of threads [1024] for user [solang] 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

启动时出现4个错误,一个个解决

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

修改/etc/security/limits.conf文件,添加或修改如下行:

[root@solang ~]# vi /etc/security/limits.conf 
*               hard    nofile          65536
*               soft    nofile          65536

②[2]: max number of threads [1024] for user [solang] is too low, increase to at least [4096]

先看Linux操作系统内核版本,通过uname -a查看内核版本,因为2.6版本的内核默认在/etc/security/limits.d/90-nproc.conf,其里面的配置会覆盖/etc/security/limits.conf的配置。

或者直接修改/etc/security/limits.d/90-nproc.conf文件将1024修改为4096。

注:以下修改重启服务器才能生效。

[root@solang ~]# uname -a
Linux solang 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

## 注释掉 * soft nproc 1024
[root@solang bin]# vi /etc/security/limits.d/90-nproc.conf
#*          soft    nproc     1024

## 修改limits.conf,新增配置
[root@solang bin]# vi /etc/security/limits.conf
*               soft    nproc           4096

不重启服务器修改,直接在当前操作用户

[solang@solang bin]$ ulimit -u
1024
[solang@solang bin]$ ulimit -u 4096
[solang@solang bin]$ ulimit -u
4096

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

临时设置:sudo sysctl -w vm.max_map_count=262144

永久设置:
修改/etc/sysctl.conf 文件,添加"vm.max_map_count = 262144"设置,执行sysctl -p /etc/sysctl.conf使配置立即生效。

[root@solang ~]# vi /etc/sysctl.conf 
vm.max_map_count = 262144

[root@solang ~]# sysctl -p /etc/sysctl.conf 
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
vm.max_map_count = 262144

④[4]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

这是因为Centos6不支持SecComp,而ES默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。

在elasticsearch.yml中配置bootstrap.system_call_filter为false

[solang@solang bin]$ vi ../config/elasticsearch.yml
bootstrap.system_call_filter: false

再次启动elasticsearch,启动无错误

[solang@solang bin]$ sh elasticsearch

[2019-06-15T14:51:50,936][INFO ][o.e.x.m.p.l.CppLogMessageHandler] [mXYTvku] [controller/6344] [Main.cc@109] controller (64 bit): Version 6.6.2 (Build 62531230b275d3) Copyright (c) 2019 Elasticsearch BV
[2019-06-15T14:51:52,048][DEBUG][o.e.a.ActionModule       ] [mXYTvku] Using REST wrapper from plugin org.elasticsearch.xpack.security.Security
[2019-06-15T14:51:52,637][INFO ][o.e.d.DiscoveryModule    ] [mXYTvku] using discovery type [zen] and host providers [settings]
[2019-06-15T14:51:54,532][INFO ][o.e.n.Node               ] [mXYTvku] initialized
[2019-06-15T14:51:54,532][INFO ][o.e.n.Node               ] [mXYTvku] starting ...
[2019-06-15T14:51:54,983][INFO ][o.e.t.TransportService   ] [mXYTvku] publish_address {192.168.86.206:9300}, bound_addresses {192.168.86.206:9300}
[2019-06-15T14:51:55,039][INFO ][o.e.b.BootstrapChecks    ] [mXYTvku] bound or publishing to a non-loopback address, enforcing bootstrap checks
[2019-06-15T14:51:58,224][INFO ][o.e.c.s.MasterService    ] [mXYTvku] zen-disco-elected-as-master ([0] nodes joined), reason: new_master {mXYTvku}{mXYTvkurQXCkTfnqLTkbww}{drrnpojgR4elnPdSA3Bu5g}{192.168.86.206}{192.168.86.206:9300}{ml.machine_memory=1028517888, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true}
[2019-06-15T14:51:58,243][INFO ][o.e.c.s.ClusterApplierService] [mXYTvku] new_master {mXYTvku}{mXYTvkurQXCkTfnqLTkbww}{drrnpojgR4elnPdSA3Bu5g}{192.168.86.206}{192.168.86.206:9300}{ml.machine_memory=1028517888, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true}, reason: apply cluster state (from master [master {mXYTvku}{mXYTvkurQXCkTfnqLTkbww}{drrnpojgR4elnPdSA3Bu5g}{192.168.86.206}{192.168.86.206:9300}{ml.machine_memory=1028517888, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)]])
[2019-06-15T14:51:58,356][INFO ][o.e.h.n.Netty4HttpServerTransport] [mXYTvku] publish_address {192.168.86.206:9200}, bound_addresses {192.168.86.206:9200}
[2019-06-15T14:51:58,357][INFO ][o.e.n.Node               ] [mXYTvku] started
[2019-06-15T14:51:58,840][WARN ][o.e.x.s.a.s.m.NativeRoleMappingStore] [mXYTvku] Failed to clear cache for realms [[]]
[2019-06-15T14:51:58,934][INFO ][o.e.l.LicenseService     ] [mXYTvku] license [6f1ac498-7333-46ef-8c75-099e908a7470] mode [basic] - valid
[2019-06-15T14:51:58,956][INFO ][o.e.g.GatewayService     ] [mXYTvku] recovered [0] indices into cluster_state

浏览器访问http://192.168.86.206:9200/
elasticsearch

4.1关闭防火墙

如果在本机浏览器上打不开链接,需要关闭服务器防火墙。

4.1.1CentOS6关闭防火墙

查看防火墙状态

service iptables status

关闭防火墙

service iptables stop

关闭防火墙开机启动

chkconfig iptables off

4.1.2CentOS7关闭防火墙

CentOS7默认使用的是firewall作为防火墙。

查看防火墙状态

firewall-cmd --state

停止firewall

systemctl stop firewalld.service

禁止firewall开机启动

systemctl disable firewalld.service 

4.2配置环境变量

[solang@solang ~]$ vi .bash_profile
 
ES_HOME=/home/solang/app/elasticsearch-6.6.2
PATH=.:$PATH:$ES_HOME/bin
export ES_HOME
export PATH

[solang@solang ~]$ source .bash_profile 

4.3后台启动

[solang@solang bin]$ sh elasticsearch -d
[solang@solang bin]$ jps
6289 Elasticsearch
6679 Jps
[solang@solang bin]$ ps -ef|grep elasticsearch

本文参考:
linux下nproc的作用
https://www.jianshu.com/p/89f8099a6d09
Elasticsearch笔记一之简介与安装
Set Up Elasticsearch
Elastic Past Releases
CentOS7查看和关闭防火墙

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章