Elasticsearch是一個基於Lucene的實時的分散式搜尋和分析引擎。
設計用於雲端計算中,能夠達到實時搜尋,穩定,可靠, 快速,安裝使用方便。基於RESTful介面。
step 1 download JDK and elasticsearch
jdk1.8.0_131 download
elasticsearch5.6.5 download
宣告:系統版本:主機windows10,虛擬機器伺服器centos6.9,elasticsearch-5.6.5,Vmware10.7
不能使用root使用者,需要新建一個使用者
step 2 install JDK
解壓配置環境變數即可使用
export JAVA_HOME=/opt/jdk1.8.0_131
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
#自JDK1.7之後 CLASSPATH 可以不配置
step 3 system configuration
配置靜態IP
sudo cd /etc/sysconfig/network-scripts/ifcfg-ens33
sudo vi ifcfg-ens33 # 這個檔案的名稱有時可能不相同 ifcfg-eth0 | ifcfg-ens???
修改如下引數
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.174.113
NETMASK=255.255.255.0
GATEWAY=192.168.174.2
sudo service network start/stop/restart
修改HOSTNAME
Centos6
sudo vi /etc/sysconfig/network
HOSTNAME=YOURNEWNAME
sudo hostname YOURNEWNAME
Centos7
sudo hostnamectl set-hostname YOURNEWNAME
sudo hostname YOURNEWNAME
主機名中不能使用下劃線(_)。
主機名不能保護大寫字元
配置本地域名
sudo vi /etc/hosts
ip HOST1 HOST2 …
192.168.186.113 es1 hdfs1 hadoop1 spark1
192.168.186.114 es2 hdfs2 hadoop2 spark2
192.168.186.115 es3 hdfs3 hadoop3 spark3
關閉防火牆
Centos6
sudo service iptables start/stop/status
sudo chkconfig iptables off/--list –永久關閉防火牆
Centos7
sudo systemctl stop/start/status firewalld.service
sudo systemctl disable firewalld.service –永久關閉防火牆
關閉SELinux
檢視Selinux的狀態
/usr/sbin/sestatus –v
SELinux status: enabled
如果SELinux status引數為enabled即為開啟狀態,需要進行下面的關閉操作。
關閉SElinux
sudo vim /etc/selinux/config
在文件中找到SELINUX,將SELINUX的值設定為disabled,即:
SELINUX=disabled
在記憶體中關閉SElinux
setenforce 0
檢查記憶體中狀態
getenforce
如果日誌顯示結果為disabled或者permissive,說明操作已經成功。
建立使用者
[root@es1 ~]# adduser es
為這個使用者初始化密碼,linux會判斷密碼複雜度,不過可以強行忽略:
[root@es1 ~]# passwd es
更改使用者 es 的密碼 。
新的 密碼:
無效的密碼: 密碼未通過字典檢查 - 過於簡單化/系統化
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
為使用者賦於sudo許可權
在root使用者
vi /etc/sudoers
新增 : USERNAME ALL=(ALL) ALL
以下配置可以給sudo許可權免密
新增 : USERNAME ALL=(ALL) NOPASSWD:ALL
step 4 install elasticsearch
解壓縮
$ mkdir -p /opt/elasticsearch
$ tar –zxvf elasticsearch-5.6.5.tar.gz –C /opt/elasticsearch
修改elasticsearch.yml配置檔案
$ vim /opt/elasticsearch/elasticsearch5.6.5/config/elasticsearch.yml
cluster.name: hy2u-elasticsearch (叢集名稱,同一叢集要一樣)
node.name: hy2u-node-1 (節點名稱,同一叢集要不一樣)
http.port: 9200 #連線埠
network.host: 192.168.174.113 #預設網路連線地址,寫當前主機的靜態IP,這裡不能寫127.0.0.1
path.data: /opt/elasticsearch-5.6.5/data #資料檔案儲存路徑
path.logs: /opt/elasticsearch-5.6.5/logs #log檔案儲存路徑
discovery.zen.ping.unicast.hosts: ["192.168.174.113","192.168.174.114", "192.168.184.115"]#叢集中master節點的初始列表,可以通過這些節點來自動發現新加入叢集的節點。
bootstrap.system_call_filter: false # 因centos6不支援SecComp而預設bootstrap.system_call_filter為true進行檢測,所以,要設定為 false。注:SecComp為secure computing mode簡寫
http.cors.enabled: true #是否支援跨域,預設為false
http.cors.allow-origin: "*" #當設定允許跨域,預設為*,表示支援所有域名
discovery.zen.minimum_master_nodes: 2 #這個引數來保證叢集中的節點可以知道其它N個有master資格的節點。預設為1,對於大的叢集來說,可以設定大一點的值(2-4)
elasticsearch備份位置,路徑要手動建立
path.repo: ["/opt/elasticsearch/elasticseaarch-5.6.3/data/backups"]
如果安裝elasticsearch-head外掛,需要新增以下選項
http.cors.enabled: true
http.cors.allow-origin: "*"
如果安裝x-pack外掛,我們取消他的basic認證,需要新增以下選項
xpack.security.enabled: false
修改jvm記憶體[這個配置項很重要,在現實生產中要配的大一些,但是最大不能超過32g]
vim config/jvm.options
-Xms2g ---> -Xms512m
-Xmx2g ---> -Xms512m
分發
將配置好的Elasticsearch安裝介質分發到其他的伺服器上
只需要將elasticsearch.yml配置檔案中的相關引數修改一下即可
cluster.name: hy2u-elasticsearch (叢集名稱,同一叢集要一樣)
node.name: hy2u-node-1 (節點名稱,同一叢集要不一樣)
http.port: 9200 #連線埠 (叢集連線埠,同一叢集要一樣)
network.host: 192.168.174.113 #預設網路連線地址,寫當前主機的靜態IP,這裡不能寫127.0.0.1
啟動與關閉
每一臺裝置都要單獨啟動
前臺啟動
$ ./elasticsearch
後臺啟動 -d為守護程式執行
$ ./elasticsearch –d
$ ./elasticsearch & # 使用這種方式他會列印日誌在前臺
檢視elasticsearch 程式
$ jps
2369 Elasticsearch
使用kill 命令殺死程式
kill -9 2369(pid)
瀏覽器訪問
訪問單節點:http://192.168.174.113:9200/
step 4 install plugins
install elasticsearch-head
由於5.x版本開始,_site被禁用了,所以head等有頁面展示的外掛無法像2.x一樣以嵌入形式執行,必須以一個單獨的服務來執行。
去GitHub下載elasticsearch-head原始碼 下載node並安裝: head外掛本質上是一個NodeJS工程,需要使用npm來下載依賴包並打包(npm可以理解為maven),下載node的地址:nodejs.org/en/download/。 解壓安裝包
xz -d node*.tar.xz
tar -xvf node*.tar
配置環境變數
sudo vi /etc/profile
export NODE_HOME=/opt/node-*-linux-x64
export PATH=$PATH:$NODE_HOME/bin
重新整理環境變數
source /etc/profile
驗證node是否安裝成功
echo $NODE_HOME
node -v
npm -v
編譯head 修改head外掛的配置檔案
$HEAD_HOME/Gruntfile.js
connect: {
server: {
options: {
port: 9100,
hostname: '*',
base: '.',
keepalive: true
}
}
}
$HEAD_HOME/_site/app.js
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.186.30:9200";
新增ES配置項
vi $ES_HOME/config/elasticsearch.yml
新增以下配置
http.cors.enabled: true
http.cors.allow-origin: "*"
執行head外掛
cd $HEAD_HOME
npm install
cd head目錄/node_modules/grunt/bin/
./grunt server &
訪問head外掛
http:/192.168.174.113:9100
預設埠是9100,可以通過編輯head/Gruntfile.js進行修改。
關閉 netstat -apn|grep 9100
install kibana
解壓kibana到相應的目錄
tar -zxvf /opt/elasticsearch/kibana-5.6.3-linux-x86_64.tar.gz -C /opt/elasticsearch
修改配置檔案kibana.yml
vi /opt/elasticsearch/kibana-5.6.3/config/kibana.yml (修改以下引數)
server.port: 5601
server.host: "192.168.174.113"
elasticsearch.url: "http://192.168.174.113:9200"
啟動kibana
前臺:./opt/elasticsearch/kibana-5.6.3/bin/kibana
後臺:nohup /opt/elasticsearch/kibana-5.6.3/bin/kibana </dev/null &>/dev/null &
install x-pack
下載x-pack安裝包 安裝x-pack之前一定要先安裝kibana
在每一臺elasticsearch節點的$ES_HOME下執行
線上版:bin/elasticsearch-plugin install x-pack
離線版:bin/elasticsearch-plugin install file:///home/admin/x-pack.zip #file:後邊一定是三個/少一個都不行
在安裝kibana的伺服器上的kibana的$KIBANA_HOME下執行
線上版:bin/kibana-plugin install x-pack
離線版:bin/kibana-plugin install file:///home/admin/x-pack.zip
在每一臺elasticsearch節點的$ES_HOME/config/elasticsearch.yml檔案中新增以下配置
xpack.security.enabled: false
解除安裝
$ES_HOME/bin/elasticsearch-plugin remove x-pack
$KIBANA_HOME/bin/kibana-plugin remove x-pack
install IK
install elasticsearch-sql
5.x版本sql外掛的安裝和使用(目前支援最高的版本為5.1.2)
參考網址:github.com/NLPchina/elasticsearch-...
1、es的sql外掛分為兩部分,一部分是需要放在es目錄/plugins下的,用來支援sql查詢;另外一部分類似於head外掛,是一個NodeJS工程,提供頁面服務。
2、安裝sql外掛及web ui
(1)在es叢集中的每個節點上執行如下操作,(在每個節點上安裝sql外掛?)
此命令會在es目錄/plugins下建立一個sql目錄,此時重啟節點以便載入sql外掛。重啟並使得sql外掛成功載入之後,便可以通過瀏覽器利用如:
localhost:9200/_sql?sql=select * from indexName limit 10
的方式進行查詢。同時,sql的API也可以使用了。
(2)在任意一臺節點上安裝sql的web應用
①下載es-sql-standalone,地址:github.com/NLPchina/elasticsearch-...
②安裝並啟動web應用
將es目錄/plugins/sql目錄下的_site目錄覆蓋es-sql-site-standalone目錄下的_site
此時sql的web應用已經啟動了,預設埠是8080,可以通過編輯es目錄/plugins/sql/es-sql-site/site-server/site_configuration.json進行修改。
3、訪問web介面
最新版的sql介面訪問時候有認證問題存在,2.x版直接使用的方式行不通。所以在訪問頁面時需要傳入一個引數,如:
192.168.186.30:8080/?base_uri=192.1...
之所以要加這個引數是由於2.x升級到5.x的一個bug,2.x的訪問方式是esIP:9200/_plugin/sql。在頁面執行sql查詢的時候,IP和埠引用位址列的。而現在5.x版本的web頁面是一個獨立的應用,埠不能繫結成9200,但是與es互動的埠依然是訪問web頁面的埠,這就導致無法與es叢集正常通訊。在這裡加這個引數的目的就是告訴sql的web介面與es通訊的IP和埠。
can not run elasticsearch as root
解決方法:建立其他非root賬戶,修改資料夾 檔案 所屬使用者 組
ERROR: bootstrap checks failed
解決方法:修改系統limits.conf檔案
# vi /etc/security/limits.conf
新增如下內容
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
備註:* 代表Linux所有使用者名稱稱(比如 hadoop)
啟動後,只有本地可以訪問
解決方法:在elasticsearch.yml檔案中增加:network.bind_host: 0.0.0.0
ERROR:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(…) failed; error=’Cannot allocate memory’ (errno=12)
解決方法:修改jvm記憶體
vim config/jvm.options
-Xms2g ---> -Xms512m
-Xmx2g ---> -Xms512m
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解決方法:設定最大開啟檔案數
修改最大檔案數為65536
# ulimit -n 65536
檢視是否修改成功
# ulimit -a
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解決方法:修改sysctl.conf
# vi /etc/sysctl.conf
新增下面配置:
vm.max_map_count=655360
並執行命令:
# sysctl -p
max number of threads [1024] for user [lish] likely too low, increase to at least [2048]
解決方法:修改90-nproc.conf
# vi /etc/security/limits.d/90-nproc.conf
修改如下內容:
* soft nproc 1024
#修改為
* soft nproc 2048
本作品採用《CC 協議》,轉載必須註明作者和本文連結