Docker容器化打造elasticsearch8.18.2集群企業實戰(含kibana+證書認證)

?主機信息

? ? ? ? 主機配置4Core8GB硬盤大于80GB

主機名IP地址角色
10-0-17-12310.0.17.123es-node1
10-0-17-15810.0.17.158es-node2
kibana-15610.0.17.156kibana

一、環境準備

1. 安裝 Docker

這里就不介紹如何安裝docker了,本文docker版本為20+

2. 主機名與網絡與內核配置

在三臺主機的 /etc/hosts 中添加:

10.0.17.123   10-0-17-123
10.0.17.158   10-0-17-158
10.0.17.156   kibana-156

在三臺主機的/etc/sysctl.conf 添加

net.ipv4.ip_forward = 1
vm.max_map_count=262144

在 /etc/security/limits.conf 添加

* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096

最后執行 sysctl -p?生效。

3.?目錄結構(在每臺 ES 主機上都創建)

useradd elasticsearch
mkdir -p /opt/es/{data,config,certs}
chown -R elasticsearch:elasticsearch /opt/es

在 Kibana 主機上創建:

mkdir -p /opt/kibana/{config,certs}
chown -R elasticsearch:elasticsearch /opt/kibana

二、生成 CA 和節點/Kibana 證書

推薦在一臺臨時主機(或任一 ES 節點)上統一生成并分發證書。

1.?生成 CA

docker run --rm -v /opt/es/certs:/certs \docker.elastic.co/elasticsearch/elasticsearch:8.18.2 \elasticsearch-certutil ca --pem --out /certs/elastic-stack-ca.zip
# 解壓
unzip /opt/es/certs/elastic-stack-ca.zip -d /opt/es/certs

2.?生成 ES 節點證書

/opt/es/certs/instances.yml 中寫入:

instances:- name: "10-0-17-123"ip: ["10.0.17.123"]dns: ["10-0-17-123"]- name: "10-0-17-158"ip: ["10.0.17.158"]dns: ["10-0-17-158"]

然后執行:

docker run --rm -v /opt/es/certs:/certs \docker.elastic.co/elasticsearch/elasticsearch:8.18.2 \elasticsearch-certutil cert --in /certs/instances.yml \--ca-cert /certs/ca/ca.crt --ca-key /certs/ca/ca.key \--pem --out /certs/es-nodes.zip

解壓:?

unzip /opt/es/certs/es-nodes.zip -d /opt/es/certs

3.?生成 Kibana 客戶端證書

mkdir /opt/kibana/chown -R elasticsearch:elasticsearch /opt/kibana/docker run --rm -v /opt/kibana/certs:/certs -v /opt/es/certs/ca:/ca \docker.elastic.co/elasticsearch/elasticsearch:8.18.2 \elasticsearch-certutil cert --name kibana --dns kibana-node --ip 10.0.0.156 \--ca-cert /ca/ca.crt --ca-key /ca/ca.key \--pem --out /certs/kibana.zip
# 解壓
unzip /opt/kibana/certs/kibana.zip -d /opt/kibana/certs

說明:生成后,將 /opt/es/certs 下所有文件(ca.crtca.key、各節點證書和私鑰)分發到兩臺 ES 主機的 /opt/es/certs;將 Kibana 證書和 CA 證書拷貝到 Kibana 主機的 /opt/kibana/certs

三、配置 Elasticsearch

1.?編輯 /opt/es/config/elasticsearch.yml

在兩臺 ES 主機(10.0.0.123、10.0.0.158)上,編輯 /opt/es/config/elasticsearch.yml

[root@10-0-17-123 ~]# cat /opt/es/config/elasticsearch.yml 
cluster.name: es-cluster
node.name: ${HOSTNAME}
network.host: 0.0.0.0node.roles: [ "master", "data", "ingest" ]discovery.seed_hosts:- "10.0.17.123"- "10.0.17.158"
cluster.initial_master_nodes:- "10-0-17-123"- "10-0-17-158"xpack.security.enabled: truexpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.key:          certs/10-0-17-123/10-0-17-123.key
xpack.security.transport.ssl.certificate:  certs/10-0-17-123/10-0-17-123.crt
xpack.security.transport.ssl.certificate_authorities: [ "certs/ca/ca.crt" ]xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.key:              certs/10-0-17-123/10-0-17-123.key
xpack.security.http.ssl.certificate:      certs/10-0-17-123/10-0-17-123.crt
xpack.security.http.ssl.certificate_authorities: [ "certs/ca/ca.crt" ]

?在158機器也就是另外一臺ES機器上面只需要將certs的主機名和文件的123替換為158即可,注意,這一步不能出錯。

2.?ES服務的目錄結構?

這是我自己ES服務的目錄結構?

[root@10-0-17-123 ~]# tree /opt/es/
/opt/es/
├── certs
│?? ├── 10-0-17-123
│?? │?? ├── 10-0-17-123.crt
│?? │?? └── 10-0-17-123.key
│?? ├── 10-0-17-158
│?? │?? ├── 10-0-17-158.crt
│?? │?? └── 10-0-17-158.key
│?? ├── ca
│?? │?? ├── ca.crt
│?? │?? └── ca.key
│?? └── instances.yml
├── config
│?? └── elasticsearch.yml

?四、使用 Docker CLI 啟動 ES 容器

docker run -d \--name es-158 \--network host \-e ES_JAVA_OPTS="-Xms6g -Xmx6g" \-e ELASTIC_PASSWORD="Novacao666" \-v /opt/es/data:/usr/share/elasticsearch/data \-v /opt/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro \-v /opt/es/certs:/usr/share/elasticsearch/config/certs:ro \elasticsearch:8.18.2

在另外一臺ES服務啟動命令是一樣的,唯一變化的地方是容器的name。可以自定義,但最好兩個ES服務name不要一樣。

提示

  • ELASTIC_PASSWORD:設置內置 elastic 用戶密碼,用于 Kibana 認證。

  • 確保宿主機有足夠的內存,并按需調整 ES_JAVA_OPTS

?最好不要低于1GB,如有報錯那最好就是2GB以上。

五、配置與啟動 Kibana

在 10.0.17.156 主機上,編輯 /opt/kibana/config/kibana.yml:?

[root@kibana-156 ~]# cat /opt/kibana/config/kibana.yml 
server.name: kibana-node
server.host: "0.0.0.0"elasticsearch.hosts:- "https://10.0.17.123:9200"- "https://10.0.17.158:9200"# TLS 證書驗證配置
elasticsearch.ssl.certificateAuthorities:- "/usr/share/kibana/config/certs/ca.crt"elasticsearch.ssl.certificate: "/usr/share/kibana/config/certs/kibana.crt"
elasticsearch.ssl.key: "/usr/share/kibana/config/certs/kibana.key"# 校驗證書和主機名
elasticsearch.ssl.verificationMode: full

這里直接使用ES生成的CA證書認證,所有就不用使用ES的用戶和密碼認證啦~

1. kibana的目錄結構

[root@kibana-156 ~]# tree /opt/kibana/
/opt/kibana/
├── certs
│?? ├── ca.crt
│?? ├── kibana.crt
│?? └── kibana.key
└── config└── kibana.yml2 directories, 4 files

?2. 啟動kibana

docker run -d \--name kibana \--network host \-v /opt/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml:rw \-v /opt/kibana/certs:/usr/share/kibana/config/certs:ro \kibana:8.18.2

六、驗證與后續

1. 驗證集群健康

[root@10-0-17-123 config]# curl -k -u elastic:string@1307 https://10.0.17.123:9200/_cat/nodes
10.0.17.158 19 61 4 0.35 0.39 0.20 dim * 10-0-17-158
10.0.17.123 15 75 8 0.84 0.57 0.42 dim - 10-0-17-123
[root@10-0-17-123 config]# curl -k https://10.0.17.123:9200/_cluster/health?pretty -u elastic:string@1307
{"cluster_name" : "es-cluster","status" : "green","timed_out" : false,"number_of_nodes" : 2,"number_of_data_nodes" : 2,"active_primary_shards" : 3,"active_shards" : 6,"relocating_shards" : 0,"initializing_shards" : 0,"unassigned_shards" : 0,"unassigned_primary_shards" : 0,"delayed_unassigned_shards" : 0,"number_of_pending_tasks" : 0,"number_of_in_flight_fetch" : 0,"task_max_waiting_in_queue_millis" : 0,"active_shards_percent_as_number" : 100.0
}

2. 訪問kibana

瀏覽器打開 https://10.0.17.156:5601,使用 elastickibana_system 用戶登錄。?

3.?持久化與備份

  • 定期備份 /opt/es/data

  • 監控節點資源(CPU、內存、磁盤 I/O)

至此,您已完成基于 Docker CLI 的 Elasticsearch 雙節點集群與 Kibana 的 TLS 安全部署。如有自定義需求(如 X-Pack 高級功能、快照、監控等),可在此基礎上繼續擴展。祝部署順利!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84698.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84698.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84698.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JAVA語言的學習(Day_1)

寫一個項目并運行: 第一步:新建一個.txt文本。右擊點開用Notepad打開,并編輯。 編輯并保存后,可以在文件的查看中,顯示出文件的類型(eg: .txt / .java)。將txt文本的.txt類型改為.java。 之后在下面的截…

JS 原型與原型鏈詳解

JavaScript 原型與原型鏈詳解 文章目錄 JavaScript 原型與原型鏈詳解一、基礎概念類1.1 什么是原型?JavaScript 中如何訪問一個對象的原型?1.2 構造函數、實例對象和原型對象之間的關系是什么?1.3 prototype 和 **proto** 的區別是什么&#…

DEVICENET轉MODBUS TCP網關連接DeviceNet數字遠程IO模塊配置案例

設備與網絡架構,主控設備:支持Modbus TCP協議的PLC(如西門子S7-1200)。網關設備:開疆智能Modbus TCP轉DeviceNet網關KJ-DVCZ-MTCPS(需支持DeviceNet從站功能)。目標設備:DeviceNet數…

Ubuntu下使用PyTurboJPEG加速圖像編解碼

目錄 一、概述 二、安裝PyTurboJPEG 三、測試 一、概述 在計算機視覺領域,圖像編解碼是繞不開的基礎環節。雖然 OpenCV 能解決大部分圖像處理問題,但在性能要求嚴苛的場景下存在短板。本文將介紹基于 libjpeg-turbo 的高效 JPEG 編解碼庫 PyTurboJPE…

MCU、MPU、GPU、Soc、DSP、FPGA、CPLD……它們到底是什么?

MCU、MPU、GPU、Soc、DSP、FPGA、CPLD…… 這些簡稱在各大論壇、會議、發布會中屢見不鮮,看到簡稱,雖然也能說出大概; 但要問具體是什么?用在什么場景?又有什么區別……好像還是差點意思;本篇文章就記錄一…

Django RBAC項目后端實戰 - 03 DRF權限控制實現

項目背景 在上一篇文章中,我們完成了JWT認證系統的集成。本篇文章將實現基于Redis的RBAC權限控制系統,為系統提供細粒度的權限控制。 開發目標 實現基于Redis的權限緩存機制開發DRF權限控制類實現權限管理API配置權限白名單 前置配置 在開始開發權限…

[網頁五子棋][用戶模塊]數據庫設計和配置(MyBatis)、約定前后端交互接口、服務器開發

文章目錄 數據庫數據庫設計配置 MyBatis1. Spring 配置2. 創建實體類3. 創建 Mapper 接口4. 使用 MyBatis 約定前后端交互接口登錄接口注冊接口獲取用戶信息 服務器開發loginregistergetUserInfo完整代碼 數據庫 數據庫設計 完成注冊登錄以及用戶分數管理 使用數據庫來保存上…

Qt/C++學習系列之列表使用記錄

Qt/C學習系列之列表使用記錄 前言列表的初始化界面初始化設置名稱獲取簡單設置 單元格存儲總結 前言 列表的使用主要基于QTableWidget控件,同步使用QTableWidgetItem進行單元格的設置,最后可以使用QAxObject進行單元格的數據讀出將數據進行存儲。接下來…

防火墻通常可以分為哪些類型?

防火墻是目前保護網絡安全的重要設備,能夠通過監控、過濾和控制進出網絡的數據流量,來保護內部網絡不會受到未經授權的IP地址進行訪問和惡意的網絡威脅,設置防火墻能夠幫助企業確保網絡的安全性,同時防火墻也會根據不同的功能來劃…

基于GeoTools的道路相交多個點容差冗余計算實戰

目錄 前言 一、關于道路相交 1、相交四個點 2、點更多的情況 二、基于距離的相交點去重 1、冗余距離計算 2、調用過程 3、去重后的結果 三、總結 前言 在地理信息系統(GIS)領域,道路網絡數據的處理與分析一直是關鍵課題。隨著城市化進…

android:foregroundServiceType詳解

在 Android 中,foregroundServiceType 是用于聲明前臺服務類型的屬性,主要從 Android 10(API 29)開始引入,并在 Android 11(API 30)及更高版本 中進一步細化。以下是所有可用的 foregroundServi…

React+Taro 微信小程序做一個頁面,背景圖需貼手機屏幕最上邊覆蓋展示

話不多說 直接上圖 第一步 import { getSystemInfoSync } from tarojs/taro;第二步 render() {const cardBanner getImageUrlByGlobal(member-merge-bg.png);const { safeArea, statusBarHeight } getSystemInfoSync();const NAV_BAR_HEIGHT 44;const navBarHeight NAV…

從零開始的云計算生活——番外,實戰腳本。

目錄 題目一:系統信息收集腳本 題目二:用戶管理配置腳本 題目三:磁盤空間管理腳本 題目四:網絡配置檢查腳本 題目五:系統日志分析腳本 題目一:系統信息收集腳本 編寫一個腳本名為 collect_system_info…

MySQL基礎知識(DDL、DML)

什么是數據庫? 數據庫:英文為 DataBase,簡稱DB,它是存儲和管理數據的倉庫。 注釋: 單行注釋:-- 注釋內容 或 # 注釋內容(MySQL特有)多行注釋: /* 注釋內容 */ 分類 SQL語句根據其功能被分為…

用volatile修飾數組代表什么意思,Java

文章目錄 volatile 修飾數組引用的含義volatile 對數組元素無效總結 如何讓數組元素也具有 volatile 特性? 當用 volatile 關鍵字修飾一個數組時,它只保證數組引用的可見性和部分原子性,而不保證數組元素的可見性和原子性。 換句話說&#x…

Ubuntu 24.04 LTS 長期支持版發布:對服務器用戶意味著什么?新特性、升級建議與性能影響初探

更多云服務器知識,盡在hostol.com 在服務器運維的廣闊世界里,每一次主流操作系統長期支持(LTS)版本的發布,都無異于一次重要的“時代交替”。它不僅帶來了一系列令人矚目的技術革新,更重要的是&#xff0c…

題目 3241: 藍橋杯2024年第十五屆省賽真題-挖礦

題目 3241: 藍橋杯2024年第十五屆省賽真題-挖礦 時間限制: 3s 內存限制: 512MB 提交: 1267 解決: 224 題目描述 小藍正在數軸上挖礦,數軸上一共有 n 個礦洞,第 i 個礦洞的坐標為 ai 。小藍從 0 出發,每次可以向左或向右移動 1 的距離&#xf…

vue3+ts+vite創建的后臺管理系統筆記

Vue3+ Vite + Element-Plus + TypeScript 從0到1搭建企業級后臺管理系統(前后端開源):參考有來科技學習搭建項目 創建項目bug匯總,知識點src 路徑別名配置和tsconfig.json文件報錯【這個不配置好,會引起其他頁面引用時報錯:見--整合 Pinia】:整合 Pinia 【參考-- src 路徑…

指針01 day13

十三:指針變量 一:數據類型 ? 指針類型---------對應處理的數據是指針 (地址)這種數據 ? 整型類型---------對應處理的數據是整數這種類型 二:定義指針類型的變量 ? 語法: 基類型(1) *(…

基于深度學習的智能文本生成:從模型到應用

前言 隨著人工智能技術的飛速發展,自然語言處理(NLP)領域取得了顯著的進展。其中,智能文本生成技術尤其引人注目。從聊天機器人到內容創作,智能文本生成不僅能夠提高效率,還能創造出令人驚嘆的內容。本文將…