文章目錄
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_HOME
environment variable.
3.安裝Elasticsearch
3.1下載解壓
進入Elastic Past Releases,產品選擇Elasticsearch,選擇對應的版本,此處選擇6.6.2
下載後上傳到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/
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查看和關閉防火牆