Elasticsearch6.x集羣部署

1、準備階段

三臺ubuntu系統機器java

ip 計算機名
192.168.2.132 master
192.168.2.133 slave1
192.168.2.134 slave2

下載:node

jdk-8u201-linux-x64.tar.gz
elasticsearch-6.1.3.tar.gz

2、配置JDK

2.1配置JAVA環境變量

解壓jdk-8u201-linux-x64.tar.gz,並修改文件名,已方便配置環境變量linux

#解壓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、修改系統配置

3.1修改limits.conf

增長鏈接數,否則ES沒法啓動bootstrap

vi /etc/security/limits.conf

添加以下內容
注意:ubuntu系統不能寫*,必須寫root配置,不然不會生效ubuntu

#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沒法啓動vim

vi /etc/sysctl.conf
最後一行增長
vm.max_map_count=655360

運行命令跨域

sysctl -p

使之生效瀏覽器

3.3重啓電腦後,檢查是否生效

ulimit -Sn 查看的是軟限制
ulimit -Hn 查看的是硬限制
ulimit -a 查看完整信息

若是信息都變過來後,能夠繼續,在其餘兩臺電腦上修改上述內容(配置JDK,修改系統環境變量操做)session

4、添加新用戶(三臺機器上都要操做)

ES啓動必須使用非Root用戶啓動,因此咱們須要建立一個新用戶用於啓動cors

groupadd supermap
useradd -m supermap -g supermap -p supermap
passwd supermap

新添加完成後切換到新建立的用戶

su supermap

5、安裝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、常見錯誤

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: /.*/
相關文章
相關標籤/搜索