Elasticsearch cluster install
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的地址:https://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)
參考網址:https://github.com/NLPchina/elasticsearch-sql
1、es的sql插件分為兩部分,一部分是需要放在es目錄/plugins下的,用來支持sql查詢;另外一部分類似于head插件,是一個NodeJS工程,提供頁面服務。
2、安裝sql插件及web ui
(1)在es集群中的每個節點上執行如下操作,(在每個節點上安裝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
此命令會在es目錄/plugins下創建一個sql目錄,此時重啟節點以便加載sql插件。重啟并使得sql插件成功加載之后,便可以通過瀏覽器利用如:
http://localhost:9200/_sql?sql=select * from indexName limit 10
的方式進行查詢。同時,sql的API也可以使用了。
(2)在任意一臺節點上安裝sql的web應用
①下載es-sql-standalone,地址:https://github.com/NLPchina/elasticsearch-sql/releases/download/5.0.1/es-sql-site-standalone.zip
②安裝并啟動web應用
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 &
此時sql的web應用已經啟動了,默認端口是8080,可以通過編輯es目錄/plugins/sql/es-sql-site/site-server/site_configuration.json進行修改。
3、訪問web界面
最新版的sql界面訪問時候有認證問題存在,2.x版直接使用的方式行不通。所以在訪問頁面時需要傳入一個參數,如:
http://192.168.186.30:8080/?base_uri=192.168.186.30:9200
之所以要加這個參數是由于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