這里將搭建擁有3個節點的集群。
<br/>
步驟如下:
**1. 準備好三臺Linux機器,其中一臺已完成【Linux單機安裝】**
我這里已經準備好三臺Linux機器,其中hadoop101已經完成【Linux單機安裝】。

**2. 在每個節點上配置hostname和域名映射**
```shell
--節點1
# vim /etc/hostname
hadoop101
--節點2
# vim /etc/hostname
hadoop102
--節點3
# vim /etc/hostname
hadoop103
--3個節點都做如下域名映射
# vim /etc/hosts
192.168.1.18 hadoop101
192.168.1.19 hadoop102
192.168.1.20 hadoop103
--3個節點都執行下面命名重啟網絡
# service network restart
```
**2. 將hadoop101安裝好的es環境分發到其他機器上**
```shell
# scp -r /opt/install/es/ root@hadoop102:/opt/install/
# scp /etc/security/limits.conf root@hadoop102:/etc/security/limits.conf
# scp /etc/security/limits.d/20-nproc.conf root@hadoop102:/etc/security/limits.d/20-nproc.conf
# scp /etc/sysctl.conf root@hadoop102:/etc/sysctl.conf
# scp -r /opt/install/es/ root@hadoop103:/opt/install/
# scp /etc/security/limits.conf root@hadoop103:/etc/security/limits.conf
# scp /etc/security/limits.d/20-nproc.conf root@hadoop103:/etc/security/limits.d/20-nproc.conf
# scp /etc/sysctl.conf root@hadoop103:/etc/sysctl.conf
```
**3. 在每個節點上都創建一個非root用戶**
因為安全性問題,Elasticsearch不允許在root用戶下運行,需要創建一個非root用戶。
```shell
--新增es用戶
# useradd es
--為es用戶設置密碼
# passwd es
--將es文件夾所有者設置為es用戶
# chown -R es:es /opt/install/es/
```
**4. 修改每個節點的`${ES}/config/elasticsearch.yml`配置文件**
```shell
-------------下面的配置每個節點不能相同-------------
--當前節點的ip
network.host: hadoop101
--當前節點的名稱,我定義hadoop101節點為node-1、hadoop102節點為node-2、hadoop103節點為node-3
node.name: node-1
-------------下面的配置每個節點都相同-------------
--集群名稱
cluster.name: es-cluster
--是否給予選擇主節點的權利
node.master: true
node.data: true
--head 插件需要這打開這兩個配置
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
--es數據存儲位置
path.data: /opt/install/es/data
--日志存儲位置
path.logs: /opt/install/es/logs
http.port: 9200
--es7.x 之后新增的配置,初始化一個新的集群時需要此配置來選舉 master
cluster.initial_master_nodes: ["node-1"]
--es7.x 之后新增的配置,節點發現
discovery.seed_hosts: ["hadoop101:9300","hadoop102:9300","hadoop103:9300"]
gateway.recover_after_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
transport.tcp.compress: true
--集群內同時啟動的數據任務個數,默認是 2 個
cluster.routing.allocation.cluster_concurrent_rebalance: 16
--添加或刪除節點及負載均衡時并發恢復的線程個數,默認 4 個
cluster.routing.allocation.node_concurrent_recoveries: 16
--初始化數據恢復時,并發恢復線程的個數,默認 4 個
cluster.routing.allocation.node_initial_primaries_recoveries: 16
```
**5. 刪除每個節點 %ES_HOME%/data/ 目錄下的所有文件**
```shell
# rm -rf data/*
```
**6. 測試集群是否搭建成功**
```shell
--分別啟動3個節點的es
# su es
$ bin/elasticsearch
```
訪問 http://192.168.1.18:9200/_cat/nodes ,看到如下3個節點信息則集群搭建成功!

- Elasticsearch是什么
- 全文搜索引擎
- Elasticsearch與Solr
- 數據結構
- 安裝Elasticsearch
- Linux單機安裝
- Windows單機安裝
- 安裝Kibana
- Linux安裝
- Windows安裝
- es基本語句
- 索引操作
- 文檔操作
- 映射操作
- 高級查詢
- es-JavaAPI
- maven依賴
- 索引操作
- 文檔操作
- 高級查詢
- es集群搭建
- Linux集群搭建
- Windows集群搭建
- 核心概念
- 索引(Index)
- 類型(Type)
- 文檔(Document)
- 字段(Field)
- 映射(Mapping)
- 分片(Shards)
- 副本(Replicas)
- 分配(Allocation)
- 系統架構
- 分布式集群
- 單節點集群
- 故障轉移
- 水平擴容
- 應對故障
- 路由計算
- 分片控制
- 寫流程
- 讀流程
- 更新流程
- 多文檔操作流程
- 分片原理
- 倒排索引
- 文檔搜索
- 動態更新索引
- 近實時搜索
- 持久化變更
- 段合并
- 文檔分析
- 內置分析器
- 分析器使用場景
- 測試分析器
- 指定分析器
- 自定義分析器
- 文檔處理
- 文檔沖突
- 樂觀并發控制
- 外部系統版本控制
- es優化
- 硬件選擇
- 分片策略
- 合理設置分片數
- 推遲分片分配
- 路由選擇
- 寫入速度優化
- 批量數據提交
- 優化存儲設備
- 合理使用合并
- 減少Refresh的次數
- 加大Flush設置
- 減少副本的數量
- 內存設置
- 重要配置
- es常見問題
- 為什么要使用Elasticsearch
- master選舉流程
- 集群腦裂問題
- 索引文檔流程
- 更新和刪除文檔流程
- 搜索流程
- ES部署在Linux時的優化方法
- GC方面ES需要注意的點
- ES對大數據量的聚合實現
- 并發時保證讀寫一致性
- 字典樹
- ES的倒排索引
- Spring Data Elasticsearch
- 環境搭建
- 索引操作
- 文檔操作