ES集群搭建及詳解


1.簡介  

首先引用 Elasticsearch (下文簡稱 ES)官網的一段描述:

Elasticsearch 是一個分布式、RESTful 風格的搜索和數據分析引擎,能夠解決不斷涌現出的各種用例。 作為 Elastic Stack 的核心,它集中存儲您的數據,幫助您發現意料之中以及意料之外的情況。

本文主要介紹 Elasticsearch 集群的搭建。通過在一台服務器上創建 3 個 ES 實例來創建一個建議的 ES 集群。

Elasticsearch/ES

官方的Elasticsearch Reference 提供了不同版本的文檔連接,真是贊!

如果英文的不想看,還提供了中文版的  Elasticsearch 2.x: 權威指南,版本不是最新的,但是了解基本概念也是有幫助的。

Elasticsearch 7.x 包里自包含了 OpenJDK 的包。如果你想要使用你自己配置好的 Java 版本,需要設置 JAVA_HOME 環境變量 —— 參考

官方文檔 Set up Elasticsearch 有各個 OS 的安裝指導,頁面 Installing Elasticsearch 中提供了多種安裝包對應的指導鏈接!

本文選擇綠色安裝包的的方式(tar.gz)安裝。

由於實驗機器有限,可以在同一台機器上模擬出 3 個節點,安裝 ES 集群

2.環境

         1>三台真實服務器:

1.物理cpu數:主板上實際插入的cpu數量,可以數不重復的 physical id 有幾個(physical id)
$ cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
2

2.cpu核數:單塊CPU上面能處理數據的芯片組的數量,如雙核、四核等 (cpu cores)
cat /proc/cpuinfo| grep "cpu cores"| uniq

3.邏輯cpu數:簡單來說,它可使處理器中的1顆內核,如2顆內核那樣在操作系統中發揮作用。
$ cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores       : 8


4.查看cpu信息(型號)
$ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
     32  Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz

5.查看服務器版本號
$ more /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

  

          2>ES版本:elasticsearch-7.9.2-linux-x86_64.tar

          3>kibana版本:kibana-7.9.2-linux-x86_64.tar

              因是實體機器,所以這里的三台機器用1,2,3機器表示

3.ES下載

鏈接:https://pan.baidu.com/s/1K7XGf0ewWeabIcHBHnCGAw 
提取碼:y2my

  

4.ES集群安裝

4.1調整linux系數相關參數設置

注意:

ES最新版本需要jdk11,需要修改環境變量

所有版本不能用root用戶跑ES

     改變其權限

chown 用戶:用戶組 elasticsearch-7.9.2-linux-x86_64.tar.gz

  

 

      防火牆狀態

l   firewall-cmd --state 

 運行則關閉防火牆

# 臨時關閉防火牆

systemctl stop firewalld.service


# 永久關閉防火牆`

systemctl disable firewalld


 

selinux狀態
查看selinux命令

/usr/sbin/sestatus 

臨時關閉

setenforce 0 

永久關閉

vim /etc/selinux/config
將SELINUX=enforcing改為SELINUX=disabled,保存后退出
 
        

 

4.1.1修改最大文件數和鎖內存限制以及用戶最大線程數

打開文件vi /etc/security/limits.d/20-nproc.conf
was soft nproc 20000
*      soft nproc 4096
root soft nproc unlimited



修改完保存即可

 

 同時修改
 vi /etc/security/limits.conf

# End of file
* soft nofile 300000
* hard nofile 300000
* soft nofile 65536
* hard nofile 65536
* hard memlock unlimited
* soft memlock unlimited

  

  

   

       查看修改完結果

# ulimit -a

  

4.1.2更改一個進城能擁有的最大內存區域限制,編輯swappiness禁用交換分區

vi /etc/sysctl.conf

vm.max_map_count=262144

vm.swappiness=1

# sysctl -p

vm.max_map_count = 262144

vm.swappiness = 1

  

4.1.3解壓安裝包

tar -zxvf elasticsearch-7.9.2-linux-x86_64.tar.gz

  

4.1.4進入文件,改其env

vim /data/disk04/es/elasticsearch-7.9.2/bin/elasticsearch-env

在文件第一行加入下面變量

JAVA_HOME="/data/disk04/es/elasticsearch-7.9.2/jdk/"

  

4.1.5修改垃圾回收器需要轉換(不轉換不會報錯,但是會有警告)

vim /data/disk04/es/elasticsearch-7.9.2/config/jvm.options

  改之前

    改之后

 

以 – 開頭的行被視為jvm版本應用的選項
-Xmx2g
以n:-開頭的行被視為依賴數字指明的JVM版本
8:- -Xmx2g
以n-n開始的行是指明要求了JVM的版本
8-13

  

4.1.6修改 yml文件(以下標明機器與節點只是例子,不應用本次實驗)

vi  /data/disk04/es/elasticsearch-7.9.2/config/elasticsearch.yml

******集群名**********
#集群的名字,每個節點的擁有同一個名字才能認為是同一個集群
#cluster.name: my-application
cluster.name: es-cluster

*****節點名字**********
#節點的名字,保證唯一,每個節點不同,需要修改
#node.name: node-1
node.name: node-1(第一個節點)
node.name: node-2 (第二個節點文件)
node.name: node-3(第三個節點文件)

******自帶屬性 ********
#自定義的屬性,這是官方文檔中自帶的

# Add custom attributes to the node:
  node.attr.rack: r1

*********網絡****** ***
#設置成 本機 或 0.0.0.0即可

http.cors.enabled: true
http.cors.allow-origin: "*"
http.port: 9200
transport.tcp.port: 9300

******日志數據存放 *********
(目錄需要有普通用戶的權限)
#根據自己的習慣配置data文件夾
#path.data: /path/to/data
 path.data: /app/elasticsearch-7.9.2/data
# Path to log files:

#path.logs: /path/to/logs
 path.logs: /app/elasticsearch-7.9.2/logs/logs
*******內存 **************
#開啟啟動es時鎖定內存
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
 bootstrap.memory_lock: true

***********初始列表**********
第一個節點
discovery.seed_hosts: ["10.135.139.11:9200", "10.135.139.12:9200", "10.135.139.13:9200"]
 cluster.initial_master_nodes: ["es-bd1701"]
 client.transport.ping_timeout: 60s
第二個節點
discovery.seed_hosts: ["10.135.139.11:9200", "10.135.139.12:9200", "10.135.139.13:9200"]
 cluster.initial_master_nodes: ["es-bd1702"]
 client.transport.ping_timeout: 60s
第三個節點
discovery.seed_hosts: ["10.135.139.11:9200", "10.135.139.12:9200", "10.135.139.13:9200"]
 cluster.initial_master_nodes: ["es-bd1703"]
 client.transport.ping_timeout: 60s
**********跨第三方插件訪問 *************

http.cors.enabled: true
http.cors.allow-origin: "*"

  

例如本次實驗的第一個節點

cluster.name: qqd-es-cluster
node.name: 節點名
path.data: /data/disk04/es/es_data
path.logs: /data/disk04/es/es_logs
node.master: true
network.host:節點IP
node.data: true
http.port: 9200
transport.tcp.port: 9300
transport.tcp.compress: true
node.attr.rack: r1
transport.profiles.default.port: 9300
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["IP1:節點1", "IP2:節點2", "IP3:節點3"]
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
cluster.initial_master_nodes: ["節點1", "節點2", "節點3"]
gateway.recover_after_nodes: 3
http.cors.enabled: true
http.cors.allow-origin: "*"

  

4.1.7配置/etc/hosts

節點1ip  節點1名稱
節點2ip  節點2名稱
節點3ip  節點3名稱

  

4.1.8配置環境變量

vim /etc/profile 
#es環境變量
export ES_HOME=/data/disk04/es/elasticsearch-7.9.2
export PASH=$ES_HOME/bin:$PATH

source /etc/profile

  

4.1.8修改jvm(最好不要超過機器內存的一半或者32以下)

vi /data/disk04/es/elasticsearch-7.9.2/config/jvm.options



-Xms31g
-Xmx31g

  

4.1.8啟動es集群(可能會需要點時間)

/data/disk04/es/elasticsearch-7.9.2/bin/elasticsearch

 

4.1.9查看es集群(*號為主節點)

 

http://ip:9200/_cat/nodes?pretty

 

 

 

4.1.10查看es節點

http://ip:9200/_cat/nodes?pretty

  

 

 

集群的狀態(status):red紅表示集群不可用,有故障。yellow黃表示集群不可靠但可用,一般單節點時就是此狀態。green正常狀態,表示集群一切正常。
節點數(node.total):節點數,這里是3,表示該集群有三個節點。
數據節點數(node.data):存儲數據的節點數,這里是3。數據節點在Elasticsearch概念介紹有。
分片數(shards : 表示我們把數據分成多少塊存儲。
主分片數(pri):primary shards,實際上是分片數的兩倍,因為有一個副本,如果有兩個副本,這里的數量應該是分片數的三倍,這個會跟后面的索引分片數對應起來,這里只是個總數。
激活的分片百分比(active_shards_percent):這里可以理解為加載的數據分片數,只有加載所有的分片數,集群才算正常啟動,在啟動的過程中,如果我們不斷刷新這個頁面,我們會發現這個百分比會不斷加大。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM