部署ES + Kibana 到生產環境的筆記

DjangoXiang發表於2019-02-12

目前基於一個ES的應用開發接近完成,需要將App部署到線上進行測試。由於在本地開發是用的Docker,所以切換到線上還需要在Linux(ubuntu16LTS)中在安裝一些必要到應用。為了日後方便,於是便有了這個筆記。

預備工作

因為眾所周知的原因,直接實用原廠資源連結去下載應用程式,速度上面會比較慢,所以預先選擇一個速度較快的國內映象以減輕等待過程的痛苦。

以 ubuntu 16.04LTS 在阿里雲的映象,編輯 /etc/apt/sources.list 檔案,註釋掉原來的內容,更換為以下內容:

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
複製程式碼

儲存後,更新快取 sudo apt update

如果是在已經有的系統中安裝ES,最好現將原系統盤備份。後面安裝過程需要修改一些系統引數,萬一改壞了,還能還原。(備份過程略)

安裝 OpenJDK

java -version
複製程式碼

如果已經有了Java環境,跳過這一步。

sudo apt-get update
sudo apt-get install openjdk-8-jdk
java -version
複製程式碼

下載 ElasticSearch 和 Kibana

以當前最新版本為例:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.0-linux-x86_64.tar.gz

# 解壓
tar -vxsf elasticsearch-6.6.0.tar.gz
tar -vxsf kibana-6.6.0-linux-x86_64.tar.gz

複製程式碼

配置/啟動 ES和KB

在兩個應用在config目錄下,均有同名的yml配置檔案。可以配置諸如:資料庫、日誌路徑,服務繫結地址、埠號等資訊。

如果Es服務的繫結地址是本機內部(127.0.0.1),那麼直接可以啟動了。如果是外部可訪問地址(0.0.0.0),那麼需要修改虛擬記憶體。否則會報告虛擬記憶體過小,並終止程式繼續執行。

ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
複製程式碼

處理方法: 修改/etc/sysctl.conf檔案,加入

vm.max_map_count=262144

不需要重啟,執行:

sysctl -w vm.max_map_count=262144

ES不允許以root的身份去執行,這樣一旦因配置問起造成安全漏洞,會導致整個伺服器的安全隱患。所以,如果當前是root賬戶,需要建立一個別的賬戶以啟動

# 建立組
groupadd elsearch
# 建立使用者
useradd elsearch –g elsearch –p elsticsearch
# ES的許可權修改,記得還要修改資料庫和日誌目錄
chown –R elsearch:elsearch ./ElasticSearch
複製程式碼

在bin目錄下的同名可執行檔案,便是應用程式的啟動檔案。直接以後臺方式執行即可。

最後,將es和kb的啟動命令加入 rc.local 每次隨伺服器重啟而自動啟動服務。

安全建議

除了配置防火牆,將兩者預設埠 9200和5601放行之外,還需要留意的是ES的API可以根據專案的執行環境制定一個合適的策略。當前專案的搜尋都是通過程式內的業務邏輯,呼叫ES的搜尋API進行,並不需要直接對外。所以繫結的9200埠不需要暴露在公網上。

而Kb服務並不是一直需要,只有在剛剛開始執行或者遇到問題的時候才需要。這個時候可以將KB配置為繫結外部IP,但是可以不啟動這個服務。或者防火牆配置可訪問的5601埠的請求IP為本公司網路IP。

相關文章