Elasticsearch cluster install
Elasticsearch是一個(gè)基于Lucene的實(shí)時(shí)的分布式搜索和分析引擎猛蔽。
設(shè)計(jì)用于云計(jì)算中黄刚,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定诫尽,可靠禀酱, 快速,安裝使用方便牧嫉〖粮基于RESTful接口。
step 1 download JDK and elasticsearch
jdk1.8.0_131 download
elasticsearch5.6.5 download
聲明:系統(tǒng)版本:主機(jī)windows10酣藻,虛擬機(jī)服務(wù)器centos6.9曹洽,elasticsearch-5.6.5,Vmware10.7
不能使用root用戶(hù)辽剧,需要新建一個(gè)用戶(hù)
step 2 install JDK
解壓配置環(huán)境變量即可使用
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
配置靜態(tài)IP
sudo cd /etc/sysconfig/network-scripts/ifcfg-ens33
sudo vi ifcfg-ens33 # 這個(gè)文件的名稱(chēng)有時(shí)可能不相同 ifcfg-eth0 | ifcfg-ens???
修改如下參數(shù)
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
主機(jī)名中不能使用下劃線(xiàn)(_)送淆。
主機(jī)名不能保護(hù)大寫(xiě)字符
配置本地域名
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
關(guān)閉防火墻
Centos6
sudo service iptables start/stop/status
sudo chkconfig iptables off/--list –永久關(guān)閉防火墻
Centos7
sudo systemctl stop/start/status firewalld.service
sudo systemctl disable firewalld.service –永久關(guān)閉防火墻
關(guān)閉SELinux
查看Selinux的狀態(tài)
/usr/sbin/sestatus –v
SELinux status: enabled
如果SELinux status參數(shù)為enabled即為開(kāi)啟狀態(tài),需要進(jìn)行下面的關(guān)閉操作抖仅。
關(guān)閉SElinux
sudo vim /etc/selinux/config
在文檔中找到SELINUX坊夫,將SELINUX的值設(shè)置為disabled,即:
SELINUX=disabled
在內(nèi)存中關(guān)閉SElinux
setenforce 0
檢查內(nèi)存中狀態(tài)
getenforce
如果日志顯示結(jié)果為disabled或者permissive撤卢,說(shuō)明操作已經(jīng)成功环凿。
創(chuàng)建用戶(hù)
[root@es1 ~]# adduser es
為這個(gè)用戶(hù)初始化密碼,linux會(huì)判斷密碼復(fù)雜度放吩,不過(guò)可以強(qiáng)行忽略:
[root@es1 ~]# passwd es
更改用戶(hù) es 的密碼 智听。
新的 密碼:
無(wú)效的密碼: 密碼未通過(guò)字典檢查 - 過(guò)于簡(jiǎn)單化/系統(tǒng)化
重新輸入新的 密碼:
passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。
為用戶(hù)賦于sudo權(quán)限
在root用戶(hù)
vi /etc/sudoers
添加 : USERNAME ALL=(ALL) ALL
以下配置可以給sudo權(quán)限免密
添加 : 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 (集群名稱(chēng)渡紫,同一集群要一樣)
node.name: hy2u-node-1 (節(jié)點(diǎn)名稱(chēng)到推,同一集群要不一樣)
http.port: 9200 #連接端口
network.host: 192.168.174.113 #默認(rèn)網(wǎng)絡(luò)連接地址,寫(xiě)當(dāng)前主機(jī)的靜態(tài)IP惕澎,這里不能寫(xiě)127.0.0.1
path.data: /opt/elasticsearch-5.6.5/data #數(shù)據(jù)文件存儲(chǔ)路徑
path.logs: /opt/elasticsearch-5.6.5/logs #log文件存儲(chǔ)路徑
discovery.zen.ping.unicast.hosts: ["192.168.174.113","192.168.174.114", "192.168.184.115"]#集群中master節(jié)點(diǎn)的初始列表莉测,可以通過(guò)這些節(jié)點(diǎn)來(lái)自動(dòng)發(fā)現(xiàn)新加入集群的節(jié)點(diǎn)。
bootstrap.system_call_filter: false # 因centos6不支持SecComp而默認(rèn)bootstrap.system_call_filter為true進(jìn)行檢測(cè)唧喉,所以捣卤,要設(shè)置為 false。注:SecComp為secure computing mode簡(jiǎn)寫(xiě)
http.cors.enabled: true #是否支持跨域八孝,默認(rèn)為false
http.cors.allow-origin: "*" #當(dāng)設(shè)置允許跨域董朝,默認(rèn)為*,表示支持所有域名
discovery.zen.minimum_master_nodes: 2 #這個(gè)參數(shù)來(lái)保證集群中的節(jié)點(diǎn)可以知道其它N個(gè)有master資格的節(jié)點(diǎn)。默認(rèn)為1干跛,對(duì)于大的集群來(lái)說(shuō)子姜,可以設(shè)置大一點(diǎn)的值(2-4)
elasticsearch備份位置,路徑要手動(dòng)創(chuàng)建
path.repo: ["/opt/elasticsearch/elasticseaarch-5.6.3/data/backups"]
如果安裝elasticsearch-head插件楼入,需要添加以下選項(xiàng)
http.cors.enabled: true
http.cors.allow-origin: "*"
如果安裝x-pack插件哥捕,我們?nèi)∠腷asic認(rèn)證牧抽,需要添加以下選項(xiàng)
xpack.security.enabled: false
修改jvm內(nèi)存[這個(gè)配置項(xiàng)很重要,在現(xiàn)實(shí)生產(chǎn)中要配的大一些扭弧,但是最大不能超過(guò)32g]
vim config/jvm.options
-Xms2g ---> -Xms512m
-Xmx2g ---> -Xms512m
分發(fā)
將配置好的Elasticsearch安裝介質(zhì)分發(fā)到其他的服務(wù)器上
只需要將elasticsearch.yml配置文件中的相關(guān)參數(shù)修改一下即可
cluster.name: hy2u-elasticsearch (集群名稱(chēng)阎姥,同一集群要一樣)
node.name: hy2u-node-1 (節(jié)點(diǎn)名稱(chēng),同一集群要不一樣)
http.port: 9200 #連接端口 (集群連接端口鸽捻,同一集群要一樣)
network.host: 192.168.174.113 #默認(rèn)網(wǎng)絡(luò)連接地址呼巴,寫(xiě)當(dāng)前主機(jī)的靜態(tài)IP,這里不能寫(xiě)127.0.0.1
啟動(dòng)與關(guān)閉
每一臺(tái)設(shè)備都要單獨(dú)啟動(dòng)
前臺(tái)啟動(dòng)
$ ./elasticsearch
后臺(tái)啟動(dòng) -d為守護(hù)進(jìn)程運(yùn)行
$ ./elasticsearch –d
$ ./elasticsearch & # 使用這種方式他會(huì)打印日志在前臺(tái)
查看elasticsearch 進(jìn)程
$ jps
2369 Elasticsearch
使用kill 命令殺死進(jìn)程
kill -9 2369(pid)
瀏覽器訪問(wèn)
訪問(wèn)單節(jié)點(diǎn):http://192.168.174.113:9200/
step 4 install plugins
install elasticsearch-head
由于5.x版本開(kāi)始御蒲,_site被禁用了衣赶,所以head等有頁(yè)面展示的插件無(wú)法像2.x一樣以嵌入形式運(yùn)行,必須以一個(gè)單獨(dú)的服務(wù)來(lái)運(yùn)行厚满。
去GitHub下載elasticsearch-head源碼 下載node并安裝: head插件本質(zhì)上是一個(gè)NodeJS工程府瞄,需要使用npm來(lái)下載依賴(lài)包并打包(npm可以理解為maven),下載node的地址:https://nodejs.org/en/download/碘箍。 解壓安裝包
xz -d node*.tar.xz
tar -xvf node*.tar
配置環(huán)境變量
sudo vi /etc/profile
export NODE_HOME=/opt/node-*-linux-x64
export PATH=$PATH:$NODE_HOME/bin
刷新環(huán)境變量
source /etc/profile
驗(yàn)證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配置項(xiàng)
vi $ES_HOME/config/elasticsearch.yml
添加以下配置
http.cors.enabled: true
http.cors.allow-origin: "*"
運(yùn)行head插件
cd $HEAD_HOME
npm install
cd head目錄/node_modules/grunt/bin/
./grunt server &
訪問(wèn)head插件
http:/192.168.174.113:9100
默認(rèn)端口是9100遵馆,可以通過(guò)編輯head/Gruntfile.js進(jìn)行修改。
關(guān)閉 netstat -apn|grep 9100
install kibana
解壓kibana到相應(yīng)的目錄
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 (修改以下參數(shù))
server.port: 5601
server.host: "192.168.174.113"
elasticsearch.url: "http://192.168.174.113:9200"
啟動(dòng)kibana
前臺(tái):./opt/elasticsearch/kibana-5.6.3/bin/kibana
后臺(tái):nohup /opt/elasticsearch/kibana-5.6.3/bin/kibana </dev/null &>/dev/null &
install x-pack
下載x-pack安裝包 安裝x-pack之前一定要先安裝kibana
在每一臺(tái)elasticsearch節(jié)點(diǎn)的$ES_HOME下執(zhí)行
在線(xiàn)版:bin/elasticsearch-plugin install x-pack
離線(xiàn)版:bin/elasticsearch-plugin install file:///home/admin/x-pack.zip #file:后邊一定是三個(gè)/少一個(gè)都不行
在安裝kibana的服務(wù)器上的kibana的$KIBANA_HOME下執(zhí)行
在線(xiàn)版:bin/kibana-plugin install x-pack
離線(xiàn)版:bin/kibana-plugin install file:///home/admin/x-pack.zip
在每一臺(tái)elasticsearch節(jié)點(diǎn)的$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)
參考網(wǎng)址:https://github.com/NLPchina/elasticsearch-sql
1丰榴、es的sql插件分為兩部分货邓,一部分是需要放在es目錄/plugins下的,用來(lái)支持sql查詢(xún)四濒;另外一部分類(lèi)似于head插件换况,是一個(gè)NodeJS工程,提供頁(yè)面服務(wù)盗蟆。
2戈二、安裝sql插件及web ui
(1)在es集群中的每個(gè)節(jié)點(diǎn)上執(zhí)行如下操作,(在每個(gè)節(jié)點(diǎn)上安裝sql插件喳资?)
es ./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/5.1.2.0/elasticsearch-sql-5.1.2.0.zip
此命令會(huì)在es目錄/plugins下創(chuàng)建一個(gè)sql目錄觉吭,此時(shí)重啟節(jié)點(diǎn)以便加載sql插件。重啟并使得sql插件成功加載之后仆邓,便可以通過(guò)瀏覽器利用如:
http://localhost:9200/_sql?sql=select * from indexName limit 10
的方式進(jìn)行查詢(xún)鲜滩。同時(shí),sql的API也可以使用了宏赘。
(2)在任意一臺(tái)節(jié)點(diǎn)上安裝sql的web應(yīng)用
①下載es-sql-standalone,地址:https://github.com/NLPchina/elasticsearch-sql/releases/download/5.0.1/es-sql-site-standalone.zip
②安裝并啟動(dòng)web應(yīng)用
es unzip es-sql-site-standalone.zip
es cd es-sql-site-standalone/site-server
es npm install express --save
將es目錄/plugins/sql目錄下的_site目錄覆蓋es-sql-site-standalone目錄下的_site
es node node-server.js &
此時(shí)sql的web應(yīng)用已經(jīng)啟動(dòng)了黎侈,默認(rèn)端口是8080察署,可以通過(guò)編輯es目錄/plugins/sql/es-sql-site/site-server/site_configuration.json進(jìn)行修改。
3峻汉、訪問(wèn)web界面
最新版的sql界面訪問(wèn)時(shí)候有認(rèn)證問(wèn)題存在贴汪,2.x版直接使用的方式行不通脐往。所以在訪問(wèn)頁(yè)面時(shí)需要傳入一個(gè)參數(shù),如:
http://192.168.186.30:8080/?base_uri=192.168.186.30:9200
之所以要加這個(gè)參數(shù)是由于2.x升級(jí)到5.x的一個(gè)bug扳埂,2.x的訪問(wèn)方式是esIP:9200/_plugin/sql业簿。在頁(yè)面執(zhí)行sql查詢(xún)的時(shí)候,IP和端口引用地址欄的阳懂。而現(xiàn)在5.x版本的web頁(yè)面是一個(gè)獨(dú)立的應(yīng)用梅尤,端口不能綁定成9200,但是與es交互的端口依然是訪問(wèn)web頁(yè)面的端口岩调,這就導(dǎo)致無(wú)法與es集群正常通信巷燥。在這里加這個(gè)參數(shù)的目的就是告訴sql的web界面與es通信的IP和端口。
常見(jiàn)的安裝問(wèn)題
can not run elasticsearch as root
解決方法:創(chuàng)建其他非root賬戶(hù)号枕,修改文件夾 文件 所屬用戶(hù) 組
ERROR: bootstrap checks failed
解決方法:修改系統(tǒng)limits.conf文件
# vi /etc/security/limits.conf
添加如下內(nèi)容
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
備注:* 代表Linux所有用戶(hù)名稱(chēng)(比如 hadoop)
啟動(dòng)后缰揪,只有本地可以訪問(wèn)
解決方法:在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內(nèi)存
vim config/jvm.options
-Xms2g ---> -Xms512m
-Xmx2g ---> -Xms512m
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解決方法:設(shè)置最大打開(kāi)文件數(shù)
修改最大文件數(shù)為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
并執(zhí)行命令:
# 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
修改如下內(nèi)容:
* soft nproc 1024
#修改為
* soft nproc 2048