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查看和關閉防火牆

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