摘要:我已經(jīng)為你做了這些,并放在上部署到一個(gè)多節(jié)點(diǎn)集群使用工作有兩個(gè)配置文件和。我們需要部署這些容器到多個(gè)主機(jī)上。使用,這會(huì)變得非常容易。我希望這篇文章對(duì)你部署和遷移有用。除了之外,我們還有部署和管理,和的例子。
本文的作者是 Luke Marsden ,本文的原文地是 Deploying and migrating a multi-node ElasticSearch-Logstash-Kibana cluster using Docker
設(shè)置 ELK注:本文沒有全部翻譯,是摘取性翻譯,只翻譯本人認(rèn)為關(guān)鍵的部分。要看全文請(qǐng)看原文
首先,對(duì) ELK 的各種組件和它們所扮演的角色做一個(gè)快速預(yù)覽。
Logstash 接收日志消息和轉(zhuǎn)發(fā)它們到 ElasticSearch
ElasticSearch 在數(shù)據(jù)庫中存儲(chǔ)這些日志消息
Kibana 連接 ElasticSearch 來檢索這些日志數(shù)據(jù)并通過一個(gè) web 接口呈現(xiàn)它們
我們要做的第一件事情就是要把我們的三個(gè)應(yīng)用以及它們的依賴關(guān)系打包進(jìn)獨(dú)立的 Docker。我已經(jīng)為你做了這些,并放在 DockerHub 上:
ElasticSearch
Logstash
Kibana
部署 ELK 到一個(gè)多節(jié)點(diǎn)集群使用 Flocker 工作有兩個(gè)配置文件: application configuration 和 deployment configuration。讓我們首先看下 application configuration 。
application configuration 是一個(gè)非常簡(jiǎn)單的 yaml 文件,它描述了你的應(yīng)用是怎樣由多個(gè)能相互通信的 Docker 容器組成。為此,我們通常把它作 application.yml。如果你對(duì) Docker 的 Fig 工具很熟悉的話,你將立刻認(rèn)識(shí)到和 Flocker 的 application yml 很多相似的地方。
下面是需要啟動(dòng)所有三個(gè)容器的 application.yml,還有端口映射,能讓它們彼此通信,以及在 ElasticSearch 容器中創(chuàng)建一個(gè) Flocker-managed 的 Docker 數(shù)據(jù)卷。
"version": 1 "applications": "elasticsearch": "image": "clusterhq/elasticsearch" "ports": - "internal": 9200 "external": 9200 "volume": "mountpoint": "/var/lib/elasticsearch/" "logstash": "image": "clusterhq/logstash" "ports": - "internal": 5000 "external": 5000 "links": - "local_port": 9200 "remote_port": 9200 "alias": "es" "kibana": "image": "clusterhq/kibana" "ports": - "internal": 8080 "external": 80
讓我們特別值得注意的幾件事:
ElasticSearch 應(yīng)用有一個(gè)卷和掛載點(diǎn)指定,在這個(gè)例子中是 /var/lib/elasticsearch,Flocker 的一大優(yōu)點(diǎn)就是有能力在兩個(gè)主機(jī)之間可以遷移數(shù)據(jù)卷
links 允許容器之間相互交流,甚至當(dāng)它們位于不同的主機(jī)
ports 代理一個(gè) Docker 主機(jī)上的端口("external")到容器中的端口("internal")
部署 ElasticSearch現(xiàn)在我們有我們自己的 ELK stack 鏡像和定義的 application.yml。我們需要部署這些容器到多個(gè)主機(jī)上。我在我們前面提到的第二份配置文件 deployment configuration 中指定我想把我們的容器部署到哪里。
在這個(gè)例子中,我們將部署每個(gè)服務(wù)到它自己的虛擬服務(wù)器。如果你希望這樣做,你實(shí)際上可以使用任何主機(jī)并且步驟在虛擬機(jī)上同樣有效。裸機(jī),或是任何組合。比如,因?yàn)樾阅茉?,你想在裸機(jī)上運(yùn)行 ElasticSearch,但是為降低成本在虛機(jī)上運(yùn)行 Logstash 和 Kibana,這取決于你,F(xiàn)locker 是與底層主機(jī)無關(guān)的。
deployment config 也僅僅是一個(gè) yaml 文件,deployment.yml 通過列出的一個(gè)或多個(gè) IP 地址告訴 Flocker 去哪里部署每個(gè)容器和定義在 application.yml 的應(yīng)用別名。
在這個(gè)例子中,我們部署我們每個(gè)容器到不同的虛機(jī):
"version": 1 "nodes": "172.16.255.250": ["elasticsearch"] "172.16.255.251": ["logstash"] "172.16.255.252": ["kibana"]
當(dāng)我們使用 Flocker 提供的 CLI 工具運(yùn)行 flocker-deploy 命令的時(shí)候,容器將被自動(dòng)部署,做好網(wǎng)絡(luò)和啟動(dòng)我們?cè)诓渴鹋渲弥卸x的服務(wù)器。
alice@mercury:~/flocker-tutorial$ flocker-deploy deployment.yml application.yml alice@mercury:~/flocker-tutorial$從一臺(tái)服務(wù)器把 ElasticSearch 的數(shù)據(jù)遷移到另外一臺(tái)
現(xiàn)在 ElasticSearch 已經(jīng)在集群的多個(gè)節(jié)點(diǎn)部署了。但如果其中一個(gè)你的 ElasticSearch 查詢消耗了你的 m3.large EC2 實(shí)例的 90% 可用內(nèi)存,并且?guī)追昼姾竽悴樵儾怀鰹槭裁?。你不能真的提供緩慢的性能直到你查出性能差勁的根本原因,因此你想?ElasticSearch 遷移到一個(gè)更大內(nèi)存的服務(wù)器,15 GB 內(nèi)存的 m3.xlarge 。
使用 Flocker,這會(huì)變得非常容易。僅僅需要用新的 IP 地址更新你的 deployment.yml,然后重新運(yùn)行 flocker-deploy,你的 ElasticSearch 容器和它的數(shù)據(jù)卷將被自動(dòng)移動(dòng)到新的節(jié)點(diǎn),將已經(jīng)正式去原來節(jié)點(diǎn)的連接自動(dòng)路由到新的節(jié)點(diǎn)。
老的:
"version": 1 "nodes": "172.16.255.250": ["elasticsearch"] "172.16.255.251": ["logstash"] "172.16.255.252": ["kibana"]
新的:
"version": 1 "nodes": "172.16.255.250": [] "172.16.255.251": ["logstash"] "172.16.255.252": ["kibana"] "172.16.255.253": ["elasticsearch"]
這里說明了當(dāng)你重新運(yùn)行 flocker-deploy 從節(jié)點(diǎn)1去遷移 ElasticSearch 到節(jié)點(diǎn)2的時(shí)候發(fā)生了什么:
Flocker 檢查是否你已經(jīng)改變了你的配置
因?yàn)樗雌饋砟愫孟褚呀?jīng)從 172.16.255.250 移動(dòng) ElasticSearch 到 172.16.255.253 了,它初始化一個(gè)遷移
遷移通過推送整個(gè)節(jié)點(diǎn)1的數(shù)據(jù)卷內(nèi)容到節(jié)點(diǎn)2開始。在這個(gè)期間,節(jié)點(diǎn)1依然接受連接,因此你的用戶或其他依賴于那些數(shù)據(jù)的進(jìn)程不會(huì)感受任何連接問題
一旦所有的數(shù)據(jù)被拷貝完,運(yùn)行在節(jié)點(diǎn)1的應(yīng)用被關(guān)閉
數(shù)據(jù)被復(fù)制過來之后的任何對(duì)數(shù)據(jù)卷的改變這時(shí)將被復(fù)制,依賴于你的數(shù)據(jù)庫多繁忙,這可能只是幾百kb 的變化
一旦這些最后的少許改變被復(fù)制過來,F(xiàn)locker 不干涉節(jié)點(diǎn)2的卷
ElasticSearch 在節(jié)點(diǎn)2啟動(dòng)
我們稱這個(gè)方式為 two-phase 推送,因?yàn)閿?shù)據(jù)在兩個(gè)階段遷移。在第一階段,也是時(shí)間最長(zhǎng)的階段,當(dāng)數(shù)據(jù)卷被拷貝過來,數(shù)據(jù)庫繼續(xù)提供連接服務(wù)。它僅僅在第二階段,應(yīng)用程序會(huì)經(jīng)歷停機(jī)。我們正在積極地朝著一個(gè)世界,當(dāng)應(yīng)用運(yùn)行在一個(gè)容器中,它們的數(shù)據(jù)可以在兩臺(tái)機(jī)器之間無縫遷移,甚至整個(gè)數(shù)據(jù)中心在一個(gè)基于虛機(jī)的世界靈活的移動(dòng)。
我希望這篇文章對(duì)你部署和遷移 ELK 有用。如果想獲取更多信息,請(qǐng)移步 follow along with our step-by-step Getting Started guide 來學(xué)習(xí)安裝和使用 Flocker。除了 ElasticSearch 之外,我們還有部署和管理 MongoDB, PostgreSQL 和 MySQL 的例子。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26357.html
摘要:雖然可以使用相同的方式部署應(yīng)用到云端,使用外部負(fù)載均衡器,但動(dòng)態(tài)添加或者減少負(fù)載均衡節(jié)點(diǎn)依舊是痛點(diǎn)。這對(duì)使用外部負(fù)載均衡器幫助巨大。 數(shù)人云今天帶來的本篇文章將分享Docker在應(yīng)用程序生命周期每個(gè)階段中所扮演的角色,以及遷移到Swarm集群時(shí)需要考慮的問題。 利用Docker來開發(fā) Docker讓工作更輕松。如需要一個(gè)部署安裝MySQL數(shù)據(jù)庫,或者安裝Ghost,又或者Redis數(shù)據(jù)...
摘要:對(duì)于應(yīng)用,我們經(jīng)常需要部署多個(gè)實(shí)例用于負(fù)載均衡,在,可以通過服務(wù)非常快速的創(chuàng)建一個(gè)內(nèi)部負(fù)載均衡。這意味著是一個(gè)內(nèi)部負(fù)載均衡器。因此,代表著流量入口和負(fù)載均衡的作用。 什么是Docker Docker不是虛擬機(jī)。 在很多的網(wǎng)絡(luò)教案中喜歡將Docker與虛擬機(jī)進(jìn)行類比,這種類比用于理解Docker的優(yōu)勢(shì)有著不錯(cuò)的作用,因?yàn)镈ocker與虛擬機(jī)有著相同的優(yōu)勢(shì)。但是從技術(shù)而言,虛擬機(jī)技術(shù)則是對(duì)...
摘要:本文將使用容器使用編排快速部署集群,可用于開發(fā)環(huán)境單機(jī)多實(shí)例或生產(chǎn)環(huán)境部署。在集群每一個(gè)節(jié)點(diǎn)上執(zhí)行安裝使用安裝重啟服務(wù)驗(yàn)證分詞默認(rèn)使用分詞器只能處理英文,中文會(huì)被拆分成一個(gè)個(gè)的漢字,沒有語義。 本文將使用Docker容器(使用docker-compose編排)快速部署Elasticsearch 集群,可用于開發(fā)環(huán)境(單機(jī)多實(shí)例)或生產(chǎn)環(huán)境部署。 注意,6.x版本已經(jīng)不能通過 -Epat...
閱讀 3632·2023-04-25 23:32
閱讀 2047·2019-08-30 15:55
閱讀 2660·2019-08-30 15:52
閱讀 3118·2019-08-30 10:54
閱讀 846·2019-08-29 16:16
閱讀 656·2019-08-29 15:09
閱讀 3661·2019-08-26 14:05
閱讀 1640·2019-08-26 13:22