一、准備階段
三台ubuntu系統機器
| ip | 計算機名 |
|---|---|
| 192.168.2.132 | master |
| 192.168.2.133 | slave1 |
| 192.168.2.134 | slave2 |
下載:
jdk-8u201-linux-x64.tar.gz
elasticsearch-6.1.3.tar.gz
二、配置JDK
2.1配置JAVA環境變量
解壓jdk-8u201-linux-x64.tar.gz,並修改文件名,已方便配置環境變量
#解壓JDK安裝包
tar -zxvf jdk-8u201-linux-x64.tar.gz
#修改文件夾名稱
mv jdk1.8.0_201 jdk
#寫入系統環境變量中
vi /etc/profile
export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH
#讓系統環境變量生效
source /etc/profile
2.2檢測JDK是否生效
java -version
三、修改系統配置
3.1修改limits.conf
增加連接數,不然ES無法啟動
vi /etc/security/limits.conf
添加如下內容
注意:ubuntu系統不能寫*,必須寫root配置,否則不會生效
#Ubuntu系統
root soft nofile 65536
root hard nofile 131072
root soft nproc 65536
root hard nproc 524288
root soft memlock unlimited
root hard memlock unlimited
supermap soft memlock unlimited
supermap hard memlock unlimited
#----------------------------------------------
#其他系統
* soft nofile 65536
* hard nofile 131072
* soft nproc 65536
* hard nproc 524288
* soft memlock unlimited
* hard memlock unlimited
3.2修改sysctl.conf
增加連接數,不然ES無法啟動
vi /etc/sysctl.conf
最后一行增加
vm.max_map_count=655360
運行命令
sysctl -p
使之生效
3.3重啟電腦后,檢查是否生效
ulimit -Sn 查看的是軟限制
ulimit -Hn 查看的是硬限制
ulimit -a 查看完整信息
如果信息都變過來后,可以繼續,在其他兩台電腦上修改上述內容(配置JDK,修改系統環境變量操作)
四、添加新用戶(三台機器上都要操作)
ES啟動必須使用非Root用戶啟動,所以我們需要創建一個新用戶用於啟動
groupadd supermap
useradd -m supermap -g supermap -p supermap
passwd supermap
新添加完成后切換到新創建的用戶
su supermap
五、安裝ES
5.1 將ES壓縮包放到/home/supermap 目錄下並解壓ES安裝包,(三台機器上都要操作)
tar -zxvf elasticsearch-6.1.3.tar.gz
並創建存儲ES的數據目錄和日志目錄
mkdir /home/supermap/elasticsearch-6.1.3/data
mkdir /home/supermap/elasticsearch-6.1.3/logs
5.2 修改ES配置文件 (下文只保留所需內容)
vi /home/supermap/elasticsearch-6.1.3/config/elasticsearch.yml
# ---------------------------------- Cluster -----------------------------------
cluster.name : my-cluster
# ------------------------------------ Node ------------------------------------
node.name : node-1
# ----------------------------------- Paths ------------------------------------
path.data: /home/supermap/elasticsearch-6.1.3/data
path.logs: /home/supermap/elasticsearch-6.1.3/logs
# ----------------------------------- Memory -----------------------------------
bootstrap.memory_lock: true
# ---------------------------------- Network -----------------------------------
network.host: 192.168.2.132
http.port: 9200
node.master: true
node.data: true
# --------------------------------- Discovery ----------------------------------
discovery.zen.ping.unicast.hosts: ["192.168.2.132", "192.168.2.133","192.168.2.134"]
discovery.zen.minimum_master_nodes: 2
# ---------------------------------- Gateway -----------------------------------
gateway.recover_after_nodes: 3
其他節點(其他兩台機器)slave1和slave2可復制上述內容,並修改其他幾個關鍵信息,其他同上述master一致。
node.name: node-2
node.master: true
node.data: true
network.host: 192.168.2.133
node.name: node-3
node.master: false
node.data: true
network.host: 192.168.2.134
5.3 啟動ES集群
運行三個節點順序無關,但是必須得用普通用戶啟動。
cd /home/supermap/elasticsearch-6.1.3/bin
./elasticsearch
或者后台方式運行,如果以后台方式運行,將來查看進程命令:ps aux | grep elasticsearch
./elasticsearch -d
5.4 訪問ES
可以使用IP地址加9200端口進行訪問
當其他機器集群啟動起來后,可以使用2種方法查看集群的健康度
方法一:curl 'http://IP:9200/_cat/health?v'
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1573459172 15:59:32 my-cluster green 3 3 0 0 0 0 0 0 - 100.0%
方法二:瀏覽器訪問http://IP:9200/_cat/health?v
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1573459526 16:05:26 my-cluster green 3 3 0 0 0 0 0 0 - 100.0%
六、常見錯誤
6.1 uncaught exception in thread [main] org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
不能以root用戶啟動
6.2 ERROR: bootstrap checks failed memory locking requested for elasticsearch process but memory is not locked
內存鎖定失敗,切換到root用戶,修改limits.conf配置文件,vim /etc/security/limits.conf
添加* soft memlock unlimited / * hard memlock unlimited
(ubutnu需要寫root soft memlock unlimited / root hard memlock unlimited)
臨時取消:ulimit -l unlimited
6.3 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
最大虛擬內存太小,切換到root用戶下,修改配置文件sysctl.conf
sudo vim /etc/sysctl.conf
添加下面配置: vm.max_map_count=655360
並執行命令: sysctl -p
6.4 max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
按照上述所說的准備里修改limits.conf配置文件, 修改之后查詢,ulimit -a
如果沒有變化,需要修改/etc/pam.d/su,將session required pam_limits.so
注釋打開,保存,重啟就會生效
臨時修改,ulimit -n 65536
ulimit -Sn 查看的是軟限制
ulimit -Hn 查看的是硬限制
ulimit -a 查看完整信息
6.5 java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled in
內核太低的緣故,可以升級linux內核(可忽略)
6.6 ERROR: bootstrap checks failed system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
修改elasticsearch-6.1.3/config/elasticsearch.yml ,增加
bootstrap.system_call_filter: false
6.7跨域訪問問題
修改config\elasticsearch.yml,新增加如下配置,重啟ES即可
http.cors.enabled: true
http.cors.allow-origin: /.*/
(轉發請注明出處:http://www.cnblogs.com/zhangyongli2011/ 如發現有錯,請留言,謝謝)
