Elasticsearch 集群安裝部署

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
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 今年夏天,我在柬埔寨見到了最好的時光。現在的我趴在書桌前,想寫一些AIESEC海外志愿者的用戶體驗以及在柬埔寨需要...
    Dorothy丸子閱讀 319評論 0 0
  • 今天是你的生日,我的寶貝 清晨東方升起一抹朝霞 為你注入了生命的鮮活 朝霞在天上人間掠過 我們祝福你的生日,我的寶...
    大小倆珍珠閱讀 279評論 2 0
  • 他小時候總會幻想關于自己的未來,好像他是可以站在諾貝爾的獎臺上發言,可以和科學家一起搞研究可以和明星一起同臺飆...
    會唱歌的小吉他閱讀 558評論 0 0