0 寫在前面
本文介紹,在云服務器上安裝Elaticsearch8 + Kibana8,并進行外網(wǎng)訪問配置的全過程缭嫡。主要介紹:
- 購買、連接抬闷、部署云服務器
- 部署妇蛀、配置Elaticsearch,進行連通測試
- 部署笤成、配置Elaticsearch评架,進行連通測試
其中,重點介紹不關閉ES8后自帶的xpack.security.enabled: true
配置炕泳,即使用https訪問ES資源的配置方法纵诞。
配置
項 | 版本 |
---|---|
服務器類型 | 騰訊云輕量應用服務器,CPU 2核 - 內(nèi)存 2GB - 系統(tǒng)盤 40GB |
操作系統(tǒng)版本 | Ubuntu Server 20.04 LTS 64bit |
Elaticsearch | 版本8.2.3, build_type為tar(官網(wǎng)下載的壓縮包) |
Kibana | 版本8.2.3, build_type為tar(官網(wǎng)下載的壓縮包) |
其他有用工具 | postman(相對于curl指令培遵,我更習慣使用postman) vscode(記錄操作步驟浙芙、編寫請求) putty(遠程連接服務器) |
說明:
- 其他有用工具不影響安裝,個人使用習慣而已籽腕。
- 查閱問題時嗡呼,請注意各項的版本。例如皇耗,由于我使用壓縮包部署南窗,所以不需要配置JDK等內(nèi)容,而也因此郎楼。如果需要的話万伤,各項系統(tǒng)變量都需要手動錄入。
主要參考書籍為:
趙建亭. 《Elasticsearch權威指南》 清華大學出版社
注意此書基于ES7呜袁,部分配置內(nèi)容和ES8有所出入敌买,供參考。
碎碎念
不得不說傅寡,使用云服務器放妈,不同于我之前在本地安裝北救。當時在本地上荐操,從下載完成,到我使用Kibana的dev tool珍策,用時不超過30分鐘托启。因為ES本身封裝的已經(jīng)很好了,努力在做開箱即用的配置攘宙。
我原以為云服務器就是操作稍微麻煩屯耸,就是沒想到有如此多大大小小的坑拐迁。
期間,還要在充斥著無意義重復轉載疗绣、內(nèi)容農(nóng)場线召、低能SEO,像垃圾堆一樣的中文資料中查找有關信息多矮,真是一個富有挑戰(zhàn)性的缓淹,又惡心又有趣的體驗。
希望我這篇文章能讓閣下在垃圾堆里面少翻點塔逃。感謝網(wǎng)絡上各位網(wǎng)友的無私分享讯壶,給我很大幫助。
1 購買
挑個合適的套餐即可湾盗,只要符合自身需求就行伏蚊。這臺服務器主要在云服務器運行ES系統(tǒng),監(jiān)控有關數(shù)據(jù)格粪,向我發(fā)送信息躏吊,最基礎配置已經(jīng)滿足我的需要。
系統(tǒng)方面匀借,我選用的系統(tǒng)是ubuntu颜阐,主要用起來比較熟。win server 2012 R2我工作時用過吓肋,當時沒給我留下好的印象凳怨,所以不使用。
價格方面是鬼,最基礎也意味著最便宜肤舞。最便宜的服務器,新客的基礎款輕量應用服務器60-70元一年均蜜,別的活動可能更低李剖。
2 服務器配置、連接
2.1 配置登錄
我比較習慣使用putty工具囤耳,只需要重置密碼后篙顺,使用SSH登錄即可。注意你的公網(wǎng)ip和內(nèi)網(wǎng)ip都顯示在控制臺中充择,遠程電腦登錄時候使用公網(wǎng)ip德玫。
主要步驟
- 使用控制臺,服務器關機
- 點擊遠程登錄中的重置密碼椎麦,小本本記好密碼宰僧,重置完成后開機
- 使用重制后的密碼使用putty登錄
- 成功標志為:能使用putty交互命令
注意
- 我一直使用非root用戶登錄。使用root用戶雖然方便一些观挎,但在工作中是十分危險的琴儿。
- 啟動ES不可以使用root用戶段化。
2.2 配置可視化桌面
我需要登錄服務器,使用瀏覽器進行某些可視化內(nèi)容造成,所以要安裝桌面显熏,主要參照騰訊云文檔:
(不得不說,有個官方文檔還是很好的)
主要步驟
- 服務器安裝gnome桌面及有關依賴的全家桶
- 服務器安裝tightvncserver晒屎,并配置文件
- 使用控制臺遠程登錄中的VNC登錄
- 成功標志為:能看到GNOME桌面
注意
- 我沒有使用下載的VNC Viewer客戶端佃延,而是直接使用了騰訊云服務器管理的控制臺VNC登錄。因為我的電腦上夷磕,VNC客戶端似乎有網(wǎng)絡配置的問題履肃,我每次鏈接的時候都提示超時。使用網(wǎng)頁端就正常坐桩,可以進去看到GNOME桌面尺棋。
- 注意使用gnome對內(nèi)存影響還是比較大的,尤其對于輕量服務器更是大的負擔绵跷。所以我需要在不用時膘螟,關閉GNOME桌面。
如何關閉桌面服務
運行以下命令并重啟
sudo systemctl set-default multi-user
運行完后碾局,在控制臺中重啟服務器荆残。
2.3 配置防火墻
我沒有弄明白騰訊云防火墻與ubuntu防火墻的關系。似乎ubuntu上防火墻默認不開啟净当,只需要在騰訊云控制臺開啟有關端口即可内斯。
由于ES、Kibana的默認端口為5601和9200像啼,公網(wǎng)訪問炫掐,需要手動放行领追。
主要步驟
- 進入控制臺的防火墻界面
- 添加規(guī)則
- 端口號填寫
5601,9200
垛贤,其余選項默認雌团,確定保存規(guī)則即可
3 安裝ES并公網(wǎng)訪問
請注意,本文重點介紹不關閉ES8自帶的xpack.security.enabled: true
配置僧诚,即使用https訪問ES資源的配置方法遮婶。如果關閉自帶此配置,有可能會簡便很多湖笨。
如果只需要看配置SSL部分旗扑,請直接轉3.2 具體配置一節(jié)
3.1 下載安裝
- 下載解壓包
訪問Elasticreach官網(wǎng)下載即可。注意目前(2022年8月20日)赶么,最新版是8.3.3肩豁,而我下載的版本是8.2.3脊串,要去以往發(fā)行版下載辫呻。類型選擇LINUX X86_64
我沒有使用常用的apt
方式安裝清钥,因為騰訊云服務器的Ubuntu已經(jīng)配置騰訊云軟件源鏡像(訪問下載速度很快),但我不會如何下載我想要的版本放闺。
下載完成后祟昭,使用unzip
解壓縮包就可使用了。
- 配置
配置以下幾個東西怖侦,具體方式可以后看3.2 具體配置一節(jié):
- 公網(wǎng)訪問篡悟。即修改Elasticsearch.yml文件的networkhost :0.0.0.0 以增加公網(wǎng)訪問
- JVM內(nèi)存分配。即修改configs/jvm.options參數(shù)
- 更改一個進程能擁有的最大內(nèi)存區(qū)域限制匾寝。即修改/etc/sysctl.conf文件
- Kibana訪問搬葬。即修改Elasticsearch.yml文件,增加http.cors的跨域訪問配置
- 重新生成CA和證書
前三項配置完艳悔,就可以服務器啟動服務急凰,服務器和公網(wǎng)訪問ES服務了,后兩項主要是針對Kibana的配置猜年。
3.2 具體配置
絕大多數(shù)ES有關的配置抡锈,配置都發(fā)生在ES解壓后的文件夾下。以下提到的bin/和config/乔外,都是Elasticsearch下的文件夾床三。進行配置時,應停止ES服務杨幼。ES服務運行時撇簿,不會實時加載配置。(除了安全配置信息)
3.2.1 公網(wǎng)訪問
切換到config文件夾
cd config/
編輯配置文件elasticsearch.yml
vi elasticsearch.yml
找到默認注釋的networkhost差购,增加配置項并保存
networkhost :0.0.0.0
3.2.2 JVM內(nèi)存分配
(此步驟針對內(nèi)存較小的服務器补疑。如果服務器內(nèi)存滿足JVM默認配置,沒發(fā)生3.5節(jié)常見問題1歹撒,是不必配置的)
切換到config文件夾
cd config/
編輯配置文件jvm.options
vi jvm.options
修改以下參數(shù)并保存莲组。
原來的兩個參數(shù):
-Xms4g
-Xmx4g
改后的參數(shù)
-Xms512M
-Xmx512M
3.2.3 內(nèi)存區(qū)域限制
(這個內(nèi)存區(qū)域限制,是ubuntu系統(tǒng)的限制)
運行命令
sudo sysctl -w vm.max_map_count=262144
切換到etc/下的文件暖夭,查看是否有此修改
sudo vi /etc/sysctl.conf
以下內(nèi)容有的話不用處理锹杈,沒有的話增加配置
vm.max_map_count=262144
3.2.4 Kibana訪問
切換到config文件夾
cd config/
編輯配置文件elasticsearch.yml
vi elasticsearch.yml
增加如下配置并保存
http.cors.enabled: true
http.cors.allow-origin: "*"
3.2.5 重新生成CA和證書
這個配置對于Kibana很重要,過程比較長迈着,耐心去做竭望。生成的CA、證書對裕菠、密鑰等都可以反復生成咬清,覆蓋之前的配置,多進行嘗試就會成功。
建議有條件的直接去看官方文檔旧烧,我會基于官方文檔進行我的操作記錄:
官方文檔:生成CA影钉、P12證書并配置
官方文檔:生成PEM證書并配置
這位網(wǎng)友寫的簡略些,但也可以做參考:
云服務器 Centos7 部署 Elasticsearch 8.0 + Kibana 8.0 指南
以下是正式步驟:
Ⅰ 生成CA
切換到bin/下掘剪,運行:
/elasticsearch-certutil ca
注意:
- 輸入完命令后進入交互模式平委,CA是可以自己命名的。建議重命名夺谁,和原本的CA區(qū)分廉赔。
- 生成的CA文件在文件夾根目錄(bin/的上一級),后面配置時要用到匾鸥。
- 雖然空密碼也可以蜡塌,但是建議使用密碼.
Ⅱ 生成P12文件
切換到bin/下,運行:
/elasticsearch-certutil cert --ca elastic-stack-ca.p12
注意:
- 此步的
elastic-stack-ca.p12
是默認輸出P12文件的名稱勿负,可以修改成自己需要輸出的文件名稱岗照,不加.p12
也是沒問題的。 - 生成的P12文件在ES文件夾config/目錄笆环,后面配置elasticsearch.yml要用到攒至。
- 雖然空密碼也可以,但是建議使用密碼.
Ⅲ 修改ES安全配置
切換到config文件夾
cd config/
編輯配置文件elasticsearch.yml
vi elasticsearch.yml
注意修改配置文件的以下節(jié):
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: {P12文件}
truststore.path: {P12文件}
注意:
- 如果你沒有像我重新命名生成的p12文件躁劣,保持原樣即可迫吐。因為默認名稱生成的P12文件覆蓋掉了原來的文件。
Ⅳ 刷新密鑰
切換到bin/下账忘,運行:
./elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
會提示原來已經(jīng)有密鑰志膀,覆蓋即可。
Ⅴ 生成https證書壓縮包
這一步驟的目標是生成一個包含ES鳖擒、Kibana各自證書的壓縮包elasticsearch-ssl-http.zip
溉浙。
以下步驟是我根據(jù)自身情況,在此基礎上做了部分修改蒋荚。如果情況與我不同戳稽,要以官方文檔為準。
官方文檔:生成PEM證書并配置
我的場景:沒有域名期升、負載均衡等服務器惊奇,ES為單節(jié)點的集群。公網(wǎng)訪問時播赁,直接以http + ip方式訪問Kibana服務颂郎。Kibana以https方式訪問ES資源。
step1. 切換到bin/下容为,運行:
./elasticsearch-certutil http
然后一步一步來乓序,以下是官網(wǎng)的一個例子寺酪,我補充了我配置的內(nèi)容:
- When asked if you want to generate a CSR, enter n.
是否生成CSR,輸入n - When asked if you want to use an existing CA, enter y.
是否使用已有CA替劈,輸入y - Enter the path to your CA. This is the absolute path to the elastic-stack-ca.p12 file that you generated for your cluster.
CA文件的絕對路徑寄雀。官網(wǎng)的這個提示輸入P12文件路徑似乎有問題,我輸入第Ⅰ步中CA的CA文件路徑才正常抬纸。
/home/ubuntu/ESStack/elasticsearch-8.2.3/{CA名稱}
- Enter the password for your CA.
第Ⅰ步中CA的密碼。 - Enter an expiration value for your certificate. You can enter the validity period in years, months, or days. For example, enter 90D for 90 days.
默認生效時間5年耿戚,回車即可 - When asked if you want to generate one certificate per node, enter y.
輸入y
Each certificate will have its own private key, and will be issued for a specific hostname or IP address.
When prompted, enter the name of the first node in your cluster. Use the same node name that you used when generating node certificates.
輸入節(jié)點名稱湿故,跟生成CA時用的節(jié)點應該是一致的。我沒有修改節(jié)點名稱膜蛔,那么默認節(jié)點名稱是 node-1 - Enter all hostnames used to connect to your first node. These hostnames will be added as DNS names in the Subject Alternative Name (SAN) field in your certificate.
List every hostname and variant used to connect to your cluster over HTTPS.
我沒有主機坛猪、域名的問題,直接回車 - Enter the IP addresses that clients can use to connect to your node.
注意此步很重要皂股。我輸入了服務器的公網(wǎng)ip + 內(nèi)網(wǎng)ip墅茉,是可行的 - Repeat these steps for each additional node in your cluster.
它會確認以上信息是否輸入正確,不正確的話重來一次呜呐。還會詢問是否再生成額外的證書就斤,拒絕即可。
以上步驟完成蘑辑,會自動在文件夾根目錄(bin/
的上一級)生成壓縮包elasticsearch-ssl-http.zip
洋机。其包含兩個文件夾,里面的結構如下:
/elasticsearch
|_ README.txt
|_ http.p12
|_ sample-elasticsearch.yml
/kibana
|_ README.txt
|_ elasticsearch-ca.pem
|_ sample-kibana.yml
step2. 將此壓縮包解壓縮洋魂,把http.p12
文件移動到config/certs
下绷旗,覆蓋原文件
注:如果你需要改到別的位置,修改elasticsearch.yml的此節(jié):
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
step3. 切換到bin/
副砍,運行以刷新密鑰:
./elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
注意和第Ⅳ步的命令不同
Ⅵ 配置Kibana的安全配置
此步驟是針對于Kibana來配置的衔肢,不需要配置Kibana的話可以跳過。放在3.2下豁翎,只是為了操作流暢角骤。
以上所有bin/
和config/
都是elasticsearch-8.2.3
文件夾下的。
以下所有bin/
和config/
都是kibana-8.2.3
文件夾下的心剥。
step1. 修改kibana.yml
的配置启搂,主要修改或者增加:
- elasticsearch.hosts
這個默認是http訪問,要變成https刘陶,并加上公網(wǎng)ip(大括號不用輸入)
elasticsearch.hosts: ["https://{云服務器公網(wǎng)ip}:9200"]
- 用戶名/密碼
這個配置有多種選擇胳赌,似乎token也可以,我選擇了用戶名/密碼的方式匙隔。注意用戶不可以使用elastic
用戶疑苫,推薦使用kibana_system
用戶。如果不清楚kibana_system
的密碼,就去重置捍掺。
重置方式:切到ES的bin/下撼短,運行:
./elasticsearch-reset-password -u kibana_system
然后用獲取到的用戶名/密碼進行配置
elasticsearch.username: "kibana_system"
elasticsearch.password: {重置后的密鑰}
- elasticsearch.ssl.certificateAuthorities
這步就是用第Ⅴ步得到的Kibana文件夾里面的pem文件進行配置。
/kibana
|_ README.txt
|_ elasticsearch-ca.pem
|_ sample-kibana.yml
配置前挺勿,要把elasticsearch-ca.pem放置到合適的路徑曲横。我放置在了config/
下。
我這里有點問題不瓶,如果像sample-kibana.yml
使用相對路徑禾嫉,會在Kibana啟動時無法讀取。因此蚊丐,我使用絕對路徑熙参,配置如下:
elasticsearch.ssl.certificateAuthorities: ["/home/ubuntu/ESStack/kibana-8.2.3/config/elasticsearch-ca.pem"]
3.3 連通測試
cd到bin/下,運行./elasticsearch
即可啟動ES服務
連通ES:方式一 curl命令
使用curl命令(大括號不用輸入)
curl -k -i -XGET "https://{云服務器公網(wǎng)ip}:9200" --user {用戶名稱}:{用戶密碼}
返回HTTP/200即連通成功麦备。
(順帶一提孽椰,我至今沒搞懂win10上powershell怎么使用curl,只能用cmd凛篙,也是夠神必的黍匾。)
連通ES:方式二 postman
- 新建HTTP request,使用GET呛梆,url輸入(大括號不用輸入):
https://{云服務器公網(wǎng)ip}:9200
- 進入Authorization膀捷,選取Basic Auth,右側Username和Password輸入用戶名稱削彬、用戶密碼
- 點擊Send全庸,Body部分正確返回內(nèi)容即成功
3.4 常用操作
重置ES用戶密碼
切到ES的bin/下,運行:
./elasticsearch-reset-password -u elastic
這樣重置了elastic
這個用戶的密碼融痛,其他用戶同理壶笼。
撤銷解壓操作
解壓縮可能出現(xiàn)忘記輸入解壓輸出路徑的情況。解壓ES壓縮包和解壓http密鑰對都有可能出問題雁刷。只需要運行以下命令:
zipinfo -1 ./{zip文件名稱}| xargs rm -rf
關閉ES進程
出于各種原因覆劈,可能存在putty斷開連接但是ES進程仍舊繼續(xù)的情況。若需要手動結束的話沛励,需要:
找到pid
ps -ef | grep elastic
結束進程(大括號不用輸入)
kill -9 {pid}
3.5 常見問題
問題:進程會自動killed责语,且不打印日志
原因:原因是內(nèi)存太低,JVM受不鳥了目派。3.2.2節(jié)已有配置方案坤候。需要去configs/jvm.options
里面修改以下兩個參數(shù):
-Xms4g
-Xmx4g
我改成了
-Xms512M
-Xmx512M
問題:ES無法啟動,日志提示內(nèi)存問題企蹭,具體如下:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
原因是系統(tǒng)默認的進程內(nèi)存區(qū)限制不滿足ES要求白筹,要手動更改智末,3.2.3節(jié)已有配置方案。
要在服務器執(zhí)行:
sudo sysctl -w vm.max_map_count=262144
執(zhí)行后徒河,并修改/etc/sysctl.conf文件系馆,末尾添加或者修改
vm.max_map_count=262144
注意,執(zhí)行完sudo命令之后顽照,一般已經(jīng)有此配置了由蘑,不必重復配置。
4 安裝Kibana并公網(wǎng)訪問
4.1 下載安裝
- 下載解壓包
訪問Elasticreach官網(wǎng)下載即可代兵。注意目前(2022年8月20日)尼酿,最新版是8.3.3,而我下載的版本是8.2.3奢人,要去以往發(fā)行版下載谓媒。類型選擇LINUX X86_64
我沒有使用常用的apt
方式安裝淆院,因為騰訊云服務器的Ubuntu已經(jīng)配置騰訊云軟件源鏡像(訪問下載速度很快)何乎,但我不會如何下載我想要的版本。
下載完成后土辩,使用unzip
解壓縮包就可使用了支救。
- 配置
配置以下幾個東西,具體方式可以后看4.2 具體配置一節(jié):
- Kibana的公網(wǎng)訪問拷淘。即修改Kibana.yml文件各墨,增加server.host: "0.0.0.0"
- 重新生成CA和證書
4.2 具體配置
4.2.1 公網(wǎng)訪問
切換到config文件夾
cd config/
編輯配置文件kibana.yml
vi kibana.yml
找到默認注釋的server.host,增加配置項并保存
server.host: "0.0.0.0"
4.2.2 重新生成CA和證書
和3.2.5配置
沒有任何區(qū)別启涯。涉及Kibana部分贬堵,就是3.2.5配置
的Ⅵ 配置Kibana的安全配置部分
4.3 連通測試
cd到bin/下,運行./kibana
即可啟動Kibana服務
連通Kibana:瀏覽器
在本地瀏覽器訪問以下URL(大括號不用輸入)
http://{云服務器公網(wǎng)ip}:5601/login?next=%2F
能看到登錄界面结洼,能登錄到Kibana連通成功黎做。登陸時可以使用elastic
用戶
4.4 常見問題
- kibana無法啟動,運行時提示
[error]Unable to retrieve version information……self signed certificates
需要配置kibana.yml和elasticsearch.yml的SSL松忍,可以看3.2.5配置
- 重新生成Kibana令牌
在第一次啟動ES時蒸殿,ES會顯示elastic用戶的密碼和有效期為30分鐘的,Kibana的令牌鸣峭。令牌的作用是:
如果你沒有像我這樣配置宏所,而是選擇直接以默認配置方式啟動ES、Kibana的話摊溶,啟動完Kibana會提示你用瀏覽器訪問指定地址爬骤,輸入令牌,完成ES和Kibana的綁定莫换。
如果某些原因導致令牌失效盖腕,以下方式重新生成令牌:
切換到ES文件夾的bin/
下
cd /bin
運行命令
./elasticsearch-create-enrollment-token -s kibana