下面直接給你一份可落地、可複用、偏運維實戰的方案説明,針對 Ubuntu 18.04 安裝 Elasticsearch 6.8(基礎服務),我會按“為什麼 → 怎麼做 → 做完怎麼驗證”的邏輯展開,避免空話。
一、安裝前的關鍵認知(先把坑堵住)⚠️
在 6.8 這個版本段,Elasticsearch 對運行環境要求非常明確,否則不是啓動失敗,就是運行一段時間直接崩。
必要前提説明
| 項目 | 要求 | 原因説明 |
|---|---|---|
| 操作系統 | Ubuntu 18.04 LTS | 內核與 glibc 兼容性穩定 |
| Java 版本 | JDK 8 | ES 6.x 不支持 JDK 11+ |
| 內存 | ≥ 2GB(建議 4GB) | JVM 堆內存最低保障 |
| 文件描述符 | ≥ 65536 | 高併發場景避免句柄耗盡 |
| Swap | 強烈建議關閉 | 防止 JVM 停頓 |
👉 結論一句話:ES 6.8 = JDK8 + 資源約束清晰 + 系統參數到位
二、基礎環境準備(一步一步來)
1️⃣ 安裝並鎖定 JDK 8
apt update
apt install -y openjdk-8-jdk
解釋説明:
openjdk-8-jdk是 Ubuntu 18.04 官方倉庫提供的 穩定版 JDK8- ES 6.8 在 JVM 層大量使用
Unsafe,高版本 JDK 會直接不兼容
驗證 Java 版本:
java -version
期望輸出核心信息應包含:
<span style="color:red">1.8.0</span><span style="color:red">OpenJDK</span>
2️⃣ 調整系統最大文件句柄數
vim /etc/security/limits.conf
追加內容:
* soft nofile 65536
* hard nofile 65536
解釋説明:
- ES 每個 shard、segment、socket 都會消耗 FD
- 這是生產環境必做項,不做遲早出問題
重新登錄或重啓生效。
3️⃣ 關閉 Swap(極其重要)🚫
swapoff -a
並編輯:
vim /etc/fstab
註釋所有 swap 行
為什麼必須關?
- JVM 在 swap 環境下會出現 長時間 Stop-The-World
- ES 官方明確不建議在 swap 環境運行
三、安裝 Elasticsearch 6.8(核心步驟)
1️⃣ 解壓安裝(推薦 tar 包方式)
假設你已經把安裝包放到 /opt:
cd /opt
tar -zxvf elasticsearch-6.8.x.tar.gz
解釋説明:
- tar 包方式 可控性最高
- 避免系統服務層的額外干擾
- 更適合 CDN / 高防 / 運維場景
目錄結構關鍵點:
| 目錄 | 作用 |
|---|---|
| bin/ | 啓動與管理命令 |
| config/ | 核心配置 |
| data/ | 索引數據 |
| logs/ | 運行日誌 |
2️⃣ 修改核心配置 elasticsearch.yml
vim config/elasticsearch.yml
最小可用配置示例:
cluster.name: blueeasy-es
node.name: node-1
path.data: /opt/elasticsearch/data
path.logs: /opt/elasticsearch/logs
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node
逐項解釋(重點):
cluster.name
👉 集羣邏輯隔離標識,不要使用默認值network.host: 0.0.0.0
👉 允許外部訪問(生產環境需結合防火牆)<span style="color:red">discovery.type: single-node</span>
👉 單節點模式的關鍵參數,不加會卡在選主階段
3️⃣ JVM 堆內存配置(不要偷懶)
編輯:
vim config/jvm.options
調整為(示例 4G 機器):
-Xms1g
-Xmx1g
核心原則:
Xms = Xmx(避免動態擴容抖動)- 不超過物理內存 50%
- 留內存給 Page Cache(ES 性能關鍵)
四、啓動與驗證(判斷是否“真成功”)
1️⃣ 啓動 Elasticsearch
cd bin
./elasticsearch -d
解釋説明:
-d表示後台運行- 首次啓動請盯緊 logs
2️⃣ 驗證服務狀態
curl http://127.0.0.1:9200
正常返回應包含:
<span style="color:red">"number" : "6.8"</span>cluster_nametagline
這一步 比 systemctl 成功更重要。
五、運行流程總覽(邏輯圖)
系統初始化
↓
JDK8 就緒
↓
系統參數調整
↓
ES 啓動 JVM
↓
加載 node / cluster
↓
HTTP 9200 服務就緒
六、一句實話(給你踩剎車)
- ES 6.8 不是新版本,但依然是 大量企業存量系統的核心組件
- 環境沒調好,比不用 ES 更危險
- 穩定性 > 功能新穎性
如果你下一步是:
- 多節點集羣
- 配合 Logstash / Filebeat
- 或放在 高防 / CDN 邊緣日誌系統
可以繼續往下拆,我可以直接按你的業務規模給你一套可上線配置。
你這一步,走得是對的路。