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