## :-: ES集群的搭建(Linux)
**一、準備elasticsearch**
下載地址https://www.elastic.co/cn/downloads/elasticsearch
elasticsearch-7.5.0-linux-x86\_64.tar.gz
將解壓出來的文件復制三份出來es1、es2、es3,啟動三個節點搭建集群
**二、更新配置文件**
*****
依次打開三個elasticsearch中config目錄下的下elasticsearch.yml配置文件
~~~
vim config/elasticsearch.yml
~~~
節點es1、2、3配置如下
```
#數據目錄設置
path.data: /usr/bnz/es_cluster/es1_data
###日志目錄設置
path.logs: /usr/bnz/es_cluster/es1_log
###本機的IP地址
network.host: 0.0.0.0
#
##本機的IP地址
#network.host: 0.0.0.0
##發布地址
network.publish_host: 127.0.0.1
##服務的端口號(在本地配置多個時,請注意修改為不一樣的端口)
http.port: 9201
##服務發現端口
transport.tcp.port: 9301
##集群發現IP集合
discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
##集群選舉設置
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
##開啟跨域訪問
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "Authorization"
```
```
#數據目錄設置
path.data: /usr/bnz/es_cluster/es1_data
###日志目錄設置
path.logs: /usr/bnz/es_cluster/es1_log
###本機的IP地址
network.host: 0.0.0.0
#
##本機的IP地址
#network.host: 0.0.0.0
##發布地址
network.publish_host: 127.0.0.1
##服務的端口號(在本地配置多個時,請注意修改為不一樣的端口)
http.port: 9202
##服務發現端口
transport.tcp.port: 9302
##集群發現IP集合
discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
##集群選舉設置
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
##開啟跨域訪問
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "Authorization"
```
```
#數據目錄設置
path.data: /usr/bnz/es_cluster/es1_data
###日志目錄設置
path.logs: /usr/bnz/es_cluster/es1_log
###本機的IP地址
network.host: 0.0.0.0
#
##本機的IP地址
#network.host: 0.0.0.0
##發布地址
network.publish_host: 127.0.0.1
##服務的端口號(在本地配置多個時,請注意修改為不一樣的端口)
http.port: 9203
##服務發現端口
transport.tcp.port: 9303
##集群發現IP集合
discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
##集群選舉設置
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
##開啟跨域訪問
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "Authorization"
```
平時用jdk8,但運行es7無法啟動。在elasticsearch7以上的版本中會自帶jdk.需要修改elasticsearch-env配置文件,就可以使用自帶jdk版本,不影響其他java項目。
```
future versions of Elasticsearch will require Java 11;
your Java version from [d:\Program Files\java\jdk1.8.0_91\jre] does not meet this requirement
```
將如下內容
```
if [ ! -z "$JAVA_HOME" ]; then
JAVA="$JAVA_HOME/bin/java"
JAVA_TYPE="JAVA_HOME"
else
if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"
fi
```
修改為
```
if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"
```
然后就可以啟動了。最后又出現如下問題
~~~shell
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and
will likely be removed in a future release.
~~~
將jvm.options的如下內容
```
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
```
修改為
```
-XX:+UseG1GC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
```
**三、elasticsearch不能使用root啟動問題解決**
es5之后的都不能使用添加啟動參數或者修改配置文件等方法啟動了,必須要創建用戶
1、創建用戶:elasticsearch
~~~
[root@iZbp1bb2egi7w0ueys548pZ bin]# adduser elasticsearch
~~~
2、創建用戶密碼,需要輸入兩次
~~~
[root@iZbp1bb2egi7w0ueys548pZ bin]# passwd elasticsearch
~~~
3、將對應的文件夾權限賦給該用戶
~~~
[root@iZbp1bb2egi7w0ueys548pZ local]# chown -R elasticsearch /usr/bnz/es_cluster
~~~
4、切換至elasticsearch用戶
~~~
[root@iZbp1bb2egi7w0ueys548pZ etc]# su elasticsearch
~~~
5、進入啟動目錄啟動 ?使用后臺啟動方式:./elasticsearch -d
~~~
[elasticsearch@vmt10003 bin]$ ./elasticsearch -d
~~~
6、啟動后測試
輸入curl ip:9200,如果返回一個json數據說明啟動成功
**四、啟動集群**
依次啟動三個elasticsearch節點 在/usr/bnz/es\_cluster/es1目錄下執行
```
./bin/elasticsearch
```
依次打開
[http://ip:9201](http://ip:9201)
[http://ip:9202](http://ip:9202)
[http://ip:9203](http://ip:9203)

- 項目介紹
- 項目聲明
- 項目簡介
- 架構設計
- 項目亮點功能介紹
- 技術棧介紹
- 核心功能
- 運行環境
- 項目更新日志
- 文檔更新日志
- F&Q
- 部署教程
- 環境準備
- JDK安裝
- JDK1.8,17共存
- maven
- 分布式緩存Redis
- 單機版
- 集群
- 注冊&配置中心alibaba/nacos
- 介紹
- Nacos安裝
- Nacos配置中心
- Nacos注冊發現
- Nacos生產部署方案
- 服務監控-BootAdmin
- 基本介紹
- 如何使用
- 整合Admin-Ui
- 客戶端配置
- 鏈路追蹤
- 基本介紹
- SkyWalking-1
- Skywalking-1
- 消息隊列
- Kafka
- docker安裝kafka
- Linux集群
- Maven私服
- nexus安裝部署
- nexus使用介紹
- 全文搜索elasticsearch
- windows集群搭建
- docker安裝es
- ElasticHD
- linux集群部署
- 統一日志解決方案
- 日志解決方案設計
- 介紹與相關資料
- ELK安裝部署
- elasticsearch 7.5
- logstash-7.5
- kibana-7.5
- filebeat
- 服務監控-Prometheus
- Prometheus安裝配置
- Prometheus介紹
- grafana
- 持續集成部署CICD
- 自動化部署Jenkins
- 安裝部署win
- 打包發布遠程執行
- 安裝部署linux
- jenkins+gitlab+docker容器化工程自動化部署
- Git
- CICD說明
- 阿里云效
- CentOS_MYSQL安裝
- docker
- 安裝
- Docker安裝Nginx
- Docker部署啟動springboot
- dockerCompose
- harbor
- Docker私有鏡像倉庫
- Portainer
- Docker遠程連接設置
- 打包工程
- 必要啟動模塊
- 核心模塊
- 登錄認證
- 緩存功能
- 日志模塊
- 分布式鎖
- 消息隊列
- 異常處理
- 系統接口
- 參數驗證
- es檢索
- 數據導出
- 系統設計
- 系統總體架構
- 擴展模塊(可選)
- 限流熔斷alibaba/sentinel
- 使用Sentinel實現gateway網關及服務接口限流
- Sentinel使用Nacos存儲規則及同步
- 服務調用Feign
- Feign基本介紹
- 如何使用
- 負載均衡
- 請求超時
- 請求攔截器
- 分布式任務調度
- XXL-JOB
- 分布式事務
- TX-LCN
- Seata
- Seata原理解析
- 數據庫分庫分表
- swagger文檔
- 分布式ID生成器解決方案
- 服務網關CloudGateway
- 基本介紹
- 使用網關
- 路由配置
- 全局過濾器
- 服務認證授權架構設計
- 認證服務流程
- 授權服務流程
- 系統冪等性設計與實踐
- 分布式日志鏈路跟蹤
- 實時搜索系統設計
- 應用性能
- 壓力測試工具
- Apache JMeter介紹和安裝
- ApacheJMeter使用
- JVM
- JVM性能調優
- 常見JVM內存錯誤及解決方案
- JVM 分析工具詳解
- Spring Cloud性能調優
- Linux運維
- Linux 常用命令
- Linux開啟端口