[譯]NGINX 和 ZooKeeper,動態負載平衡和部署(上)
這篇文章改編自Derek DeJonghe在2015在2015年9月的nginx。conf 上的演講。
目錄
介紹
0:00 引言
2:05 主題
3:03 表演者
3:57 目標
雲端計算和DevOps的概念
5:06 雲和DevOps的概念
5:18 微服務
6:44 微服務的複雜性
7:20 部署更多的服務
7:35 持續部署
8:34 Blue Green
9:33 Blue Green 部署
9:47 Blue Green NGINX部署
10:13 自動縮放
11:24 自動縮放示例
11:33 彈性負載均衡器
13:22 為什麼是NGINX ?
ZooKeeper 和 NGINX
14:19 服務發現
14:28 ZooKeeper
17:12 Znode 示例
17:57 如何工作
18:53 節點端
20:58 NGINX 客戶端
24:05 Upstream Pools
24:08 應用 x 版本
24:43 Upstream Pools虛擬碼
24:55 結果
24:59 請求
25:21 向上遊請求
26:13 請求的虛擬碼
成果
26:45 部署
28:48 部署示例
29:42 成果
30:07 前後執行
30:23 影響
30:35 問題
0:00 引言
歡迎,感謝大家今天來聽我在nginx.conf上的演講。我在這裡講的是動態負載平衡和Nginx和Zookeeper部署。我來告訴你,為什麼你應該投資於你的流量控制器,並談論我在日常工作中建立的核心繫統。
首先,我是誰?我的名字叫Derek DeJonghe。我是雲解決方案架構師和NGINX的愛好者——以至於我的主張已經使NGINX默認了可以在我的組織裡上網衝浪和代理。
我註冊了亞馬遜的網路服務,我為一家名為RightBrain Networks的公司工作。我們是一個高階的諮詢合夥人團隊,為AWS和Azure託管服務提供商。我們幫助企業遷移到AWS上,以至於通過引入CI / CD和基礎設施即程式碼,如基礎設施管理和配置管理,來徹底改變他們的工作流程。
我們通常與SAS系統交易,向世界提供服務,等等。我還為更大的組織提供諮詢服務,也為很多較小的組織執行大量的系統。
2:05 主題
所以今天,我們來講一些主題。我們將簡要介紹一下我們正在做這樣事情的原因。我們將談論我們的表演者是誰、我們的目標是什麼。我們還要講一些基本的雲概念和DevOps.
我們要談論一下我關於動態負載平衡的見解。我們也會解釋一些微服務和自動縮放的分散式體系結構的困難。
我會詳細講解一下發布程式碼的流程,在動態基礎設施上使用的方法,和如何利用NGINX和服務發現影響這些解決方案。
3:03 表演者
所以我的表演者是誰?表演者是你的終端使用者。我們的使用者想要什麼?他們想要零停機,他們不想為新特性或bug修復等待維護模式,他們當然不希望畸形的請求。
我們的其他表演者是開發軟體的團隊。他們想花更少的時間去部署。他們希望部署的時候工作更少。他們想花時間做最擅長的事,並讓產品發展和前進。
3:57 目標
我們的目標是什麼?我們想要自動操作生活指數和程式碼部署。我們要經常更新。我們要消除冗長部署和部署資源的需要。
你們見過一個堆滿零食的戰爭屋嗎?人們連續36個小時坐在那裡。我們需要遠離。
我們要消除資料中心生產能力過剩的需求。我們想要零服務中斷。我們要確保每一個請求被髮送到正確的應用伺服器和正確的版本。我們也希望動態負載平衡,因為在我的世界裡,一切都是建立在雲端的;這是一個問題,我夜以繼日必須解決的問題。
5:06 雲端計算和DevOps的概念
讓我們瞭解一下以下包含的幾個雲和DevOps的概念。
5:18 微服務
隨著驅動器來到雲端,很多公司都在解耦他們的獨立應用程式伺服器,發展微服務。這種觀念使許多不同的分散式服務共同努力,為您的服務或產品提供支援。
微服務允許你在一個非常細粒度的水平上縮放,這樣做可以節省成本,並能讓開發人員更簡潔地完成工作、更有效地推進。雲和微服務在一起就像工程師和咖啡。工程師可能不非得需要他們的咖啡,但有了咖啡,他們的工作會更好一點;這與雲和微服務原理是一樣的。
能夠在細粒度的水平上縮放,也只是說,”好的,我們得到了很多的認證請求;我們需要擴充套件一個應用程式的一部分,而不是在後臺的一些工作,這可能不是在這樣的負載情況下。”
6:44 微服務的複雜性
當你在整體環境中部署的時候,微服務肯定會帶來一點複雜性。讓我們來看一個非常簡單的結構,它可能看起來像一個執行通過的包。我們有一個請求,點選我們的web層,返回到NGINX,到我們的API層,最後是我們的資料。
重要的是要注意我在這個特殊的例子所說的資料是Solr碎片:他們是不可變的,它們是靜態資料,我們有多個碎片。
這樣,我們的包就通過堆疊返回到終端使用者那裡了。
7:20 部署更多的服務
如果我們有另一個服務或十個服務,你會發現這樣會變得多麼的複雜。當你想提供零停機和更高可用性得時候,這樣部署將會更復雜。
7:35 持續部署
持續交付是一個完全自動化的系統。持續交付可以讓你花更少的時間來發布工作,提高你的工作效率,保證版本的可靠性。它能減少你新功能、部落格等上市的時間,並能提高你產品的質量。
它增加你的客戶滿意度,因為你快速修復了那些錯誤,並以更快的速度釋出了那些新功能。我們必須建造作戰室時你不必等待部署時間,這有很多人。它給你更多的時間專注於真正重要的事情——提高你的產品。
8:34 Blue Green
所以這個持續部署、零停機時間等的另一個概念是Blue Green部署。這是如今最受歡迎的一種部署形式。這種部署風格可以無縫地將通訊量導向一個新版本的應用程式的程式碼,它執行在不同基礎設施上。
無論是DNS或者類似的NGINX的代理,這些部署的支點是通訊路由器。這些部署提供零停機時間,如果事情出錯還可以切換回舊版本。這降低了工程團隊的壓力,再次增加了客戶滿意度。零停機這正是我們所要尋找的。
未完,等續... ...