摘要:是宜信公司大數據創新中心開發的開源平臺。為宜信大數據創新中心各個團隊提供了統一的測試和生產環境,簡化了服務的部署與上線流程,也降低了運維人員對系統管理的復雜度。基于容器技術,面向多樣化的技術棧,并且天然隔離系統和應用的依賴。
LAIN是宜信公司大數據創新中心開發的開源PaaS平臺。在金融的場景下,LAIN 是為解放各個團隊和業務線的生產力而設計的一個云平臺。LAIN 為宜信大數據創新中心各個團隊提供了統一的測試和生產環境,簡化了服務的部署與上線流程,也降低了運維人員對系統管理的復雜度。
一、設計理念及解決問題LAIN 規范了一個應用的開發、測試、上線工作流,提供了為應用做的容器編排、權限控制、SDN、流量管理、監控報警、備份、日志等 devops 問題的整體解決方案。
在 LAIN 上,應用是一個基本的概念,某個應用的開發者只需要定義一個 lain.yaml 即可定義應用的編譯和運行方式,對應用代碼侵入性很低。LAIN 基于容器技術,面向多樣化的技術棧,并且天然隔離系統和應用的依賴。
當 LAIN 用戶創建一個應用(服務)時,可以到 LAIN 上注冊該應用,當前的用戶自動成為了該應用的維護者,擁有了進一步操作該應用的權限。構建應用的環境需要 docker 和 lain 命令行工具,為了方便,我們創建了一個 vagrant box 即 lain-box. 在構建應用時,除了工程代碼外,還需要一個 Docker 鏡像作為基礎鏡像,即編譯的環境。如果是二進制的工程,如 golang,則可以在運行時換掉一個底,否則會使用 build 鏡像為 release 鏡像。準備好鏡像和編譯/運行的腳本后,就可以編輯 lain.yaml 了。
具體來說,LAIN 解決了以下四個問題:
1、應用開發之下的devops問題的整體解決方案常見問題
面對用戶的應用級開發僅僅是冰山一角,在此之下有機房、網絡、服務器、系統管理、運維管理、監控、告警、日志等等一系列背后的工作,而這部份的工作可能比應用級開發還要復雜
采用IaaS解決了服務器采購和上架問題,但是依然需要一個強大的devops團隊來負責上述事務,否則基礎設施很容易成為發展瓶頸,且越拖越難解決
上面的這些工作對于每一個產品可能都是同質化但又伴隨著定制,會消耗大量的時間做這些重復的工作
Lain是怎么做的
直接在幾乎裸的IaaS或者服務器上即可構建lain集群,方便地進行在線的擴容縮容等集群底層資源操作
整合了業界沉淀下來的良好的運維整體實踐,提供了冰山下的這一大塊工作的整體解決方案
將紛繁復雜的系統管理和運維管理行為封裝為更簡單易用的工具包,極大簡化大部分的系統工作,降低日常維護的技術門檻和人力需求
將同質化的工作整合在一起,避免重復勞動
開箱即用的各種管理組件,囊括了部署,擴容,監控,告警,日志等方方面面。還有附贈應用,包括mysql,redis的集群服務
2、規范了應用開發的工作流程,并輔以適當的SCM支援常見問題
在個人開發者以及startup組織中,良好的工作流這件事幾乎是不會被提及的,然而在日漸發展的過程中遺留的技術債務卻會越來越多的影響開發部署的效率和質量
設計、開發和部署行為的不規范會引發各種問題
Lain是怎么做的
提供本地開發環境的解決方案
提供本地開發過程的SDK / CLI工具鏈,使得開發和構建過程是嵌入在解決方案中的
隱性的提供了SCM支援,約束了開發者的開發和發布行為
3、提高整體資源利用率,優化冗余資源池常見問題
傳統的按照產品線規劃資源池的情況下,會給各產品預留專屬的資源池以及配備冗余,以便進行災備以及服務突發流量
然而各產品線的資源需求類型不同,冗余類型也不同,無法共通共享,造成眾多的重復冗余,資源利用率比較低
通過服務器資源的冗余,擴容縮容,以及資源遷移的操作比較復雜,時間消耗大,風險高
Lain是怎么做的
通過容器技術的資源隔離和控制,實現多種技術棧多種應用在集群內安全的不相互影響的混合部署,通過統一的資源池進行冗余,有效提高資源利用率
容器技術的運用使得對下資源的使用形成完全統一的形式,擴容縮容以及遷移的成本很低,操作也更簡單。
4、TBD:架構上提供了服務治理的可能性和解決方案 二、特征在應用的層面上,LAIN 還有以下特征:
1、基于配置文件定義應用
在現有的應用上只需要增加一個配置文件lain.yaml即可定義應用在lain集群里的編譯和運行
對應用代碼的侵入性很低
2、SDN網絡安全隔離
使用開源的calico(https://github.com/projectcal...
高效率的應用內網絡互通
應用間網絡默認隔離
顯式聲明應用間的服務互訪
3、基于容器技術支持多樣化的技術棧
使用開源的docker項目構建容器云
擴展封裝Dockerfile,使用自定義的yaml格式進行應用的集群定義
只需符合最簡單的lain cluster runtime interface,可自由選擇base image
容器技術天然的支持隔離系統和應用的依賴
lain SDK / CLI以及可選的ci組件支援代碼版本和鏡像之間的對應關系
編譯時和運行時鏡像均可完全定制和隔離
4、應用在線擴容縮容
使用開源的swarm調度應用部署
深度封裝swarm docker API,自行開發集群控制器(deployd)以及應用控制器(console)
直接支持用戶API調用進行容器實例數擴容,縮容
直接支持用戶API調用進行容器單實例資源的擴容,縮容(CPU,MEM)
5、節點在線擴容縮容
使用開源的ansible(https://github.com/ansible/an...
集群的服務器節點(NODE)兼容同一個C段內的物理服務器,虛擬機,公有云服務器
集群管理工具包支持add NODE 和 remove NODE 指令,快速進行底層資源擴容和縮容
6、服務自動維持和災難恢復
自行開發集群控制器(deployd)
容器實例級別的服務巡檢和維持,自動遷移和服務恢復
基于虛ip自動漂移的入口load balancer HA
高級API支持服務定制遷移
7、內部服務依賴和發現機制
集群支援Service / Resource 機制
集群整體的服務應用
應用私有Service (即 Resource)服務應用
集群支援特別的服務應用類型和資源應用類型
在lain.yaml中顯式聲明使用的Service / Resource
基于DNS的服務發現機制
可編程的service/resource load balancer
默認提供可用的RoundRobin類型的load balancer
8、統一認證
集群自行開發統一認證組件(sso)
支持oauth2的多種認證方式
9、虛ip和負載均衡器統一管理
支援 virtual ip 和 應用 proc 的注冊,應用可注冊 virtual ip 來進行對外服務
基于etcd lock機制的virtual ip 漂移機制,應用 load balancer 可借此實現 HA
10、web load balancer的自動配置
使用開源的nginx和tengine(https://github.com/alibaba/te...
自研的watcher檢測集群應用的整體 runtime 數據,自動為 web 服務生成配置
獲取runtime變化的時間,判斷是否需要進行配置變更
配置變更事件出發配置的渲染
觸發 reload 生效
11、集群體系化的日志收集
使用開源的 heka(https://github.com/mozilla-se...
默認收集應用的stdout / stderr日志收集
支援應用顯式聲明需要收集的落地文件日志
支援應用顯式聲明結構化的監控數據日志
定制檢測web服務load balancer的nginx日志收集和數據統計
12、私有docker registry以及認證機制
使用開源的docker registry封裝私有 registry 應用
集成支援集群的私有統一認證機制
定制支援可選的moosefs存儲后端或者Ceph存儲后端
13、應用配置加密存儲
使用開源的庫封裝的應用私有配置加密存儲組件
集成sso組件實現用戶管理和權限隔離
在應用運行時階段將配置注入
14、本地化開發環境
使用開源的vagrant,免費的centos和virtualbox組織統一的本地化開發環境
甚至支援本地使用上述工具鏈bootstrap出一個lain本地集群
15、應用部署運維API以及相應的CLI客戶端
應用的構建,發布,部署,運維都由集群的各組件提供API
使用lain SDK / CLI再次封裝上述API,給用戶提供良好的操作界面
集成集群的統一認證,進行用戶管理和權限隔離
16、集群管理CLI
使用開源的ansible開發集群管理運維工具包
再次封裝ansible調用為簡單的CLI使得操作更方便,包括增加節點,移除節點,遷移應用,集群健康檢查等。
17、規范化的開發workflow
基于上述組件,以代碼 - 鏡像的一一對應關系進行SCM,對鏡像進行發布管理
使用lain SDK / CLI以及可選的ci組件進行本地開發,構建發布,會很自然的規范開發workflow
工作流運轉的核心單位是鏡像,lain cli封裝了鏡像的生成,更新,推送,部署,運維
18、可選的集群體系化的備份和恢復(backupd + moosefs)
采用開源的moosefs作為分布式存儲后端
支援在lain.yaml中顯式聲明volume備份需求和策略,以及設定備份策略的hooks
支援指定備份恢復
19、可選的集群日志查詢組件(kafka + elasticsearch + kibana)
采用開源的kakfa ,elasticsearch,kibana搭建外部依賴的卡夫卡集群和elasticsearch集群,封裝集群可選組件libana
rebellion集群日志收集組件支援發送所有日志到上述外部依賴kafka
在libana上支援對集群應用日志和web load balancer 日志的條件組合查詢
20、可選的系列預置應用
MySQL的服務(https://github.com/laincloud/...
MySQL的資源
Redis的服務-SM(https://github.com/laincloud/...
三、系統架構 1、物理視圖從物理層面看,每一個 lain 集群是由一個或多個網絡互通的節點(Node)構成的。
每個節點可以被賦予不同的 label ,供容器調度時進行節點選擇使用。
目前的實現中,需要所有節點位于同一個路由器后。
從邏輯層面看,一個 lain 集群是由多個應用組成,應用和應用之間網絡相互隔離(通過SDN技術)。
每一個應用是由多個 Docker 容器組成,每個容器都可能運行在不同的節點上。
應用開發者可以在一個應用中定義多種容器(稱為 proc),每個 proc 可以指定為在集群上運行多份,每份即為一個容器,被稱為 proc instance 。Lain 集群會盡可能保證有指定份數的容器在運行,如果有容器 crash 或者節點 fail 的情況發生,集群會試圖重啟容器或者在節點間遷移容器。
3、系統架構設計圖目標是做成一層一層可以深入的架構圖
總圖
節點
4、工作流程GitHub地址:https://github.com/laincloud
白皮書:https://laincloud.gitbooks.io...
來源:宜信技術學院
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27845.html
摘要:正式上線已經大約兩年,基本已經成熟,為宜信大數據創新中心各個團隊提供了統一的測試和生產環境,簡化了服務的部署與上線流程,也降低了運維人員對系統管理的復雜度。地址白皮書原文發布于高可用架構作者宜信大數據創新中心團隊王超一 一、基于Docker的PaaS平臺LAIN 在金融的場景下,LAIN 是為解放各個團隊和業務線的生產力而設計的一個云平臺。LAIN 正式上線已經大約兩年,基本已經成熟,...
摘要:容器云的背景伴隨著微服務的架構的普及,結合開源的和等微服務框架,宜信內部很多業務線逐漸了從原來的單體架構逐漸轉移到微服務架構。 容器云的背景 伴隨著微服務的架構的普及,結合開源的Dubbo和Spring Cloud等微服務框架,宜信內部很多業務線逐漸了從原來的單體架構逐漸轉移到微服務架構。應用從有狀態到無狀態,具體來說將業務狀態數據如:會話、用戶數據等存儲到中間件中服務中。 showI...
摘要:容器云的背景伴隨著微服務的架構的普及,結合開源的和等微服務框架,宜信內部很多業務線逐漸了從原來的單體架構逐漸轉移到微服務架構。 容器云的背景 伴隨著微服務的架構的普及,結合開源的Dubbo和Spring Cloud等微服務框架,宜信內部很多業務線逐漸了從原來的單體架構逐漸轉移到微服務架構。應用從有狀態到無狀態,具體來說將業務狀態數據如:會話、用戶數據等存儲到中間件中服務中。 showI...
摘要:本屆大會仍然以交流云計算產業的最前沿技術探索和服務端開發運維的最成熟實踐為宗旨,圍繞各講師過去一年內的技術演變和項目實踐進行互動和分享。 showImg(https://segmentfault.com/img/bVsmUZ);ECUG 全稱為 Effective Cloud User Group (實效云計算用戶組),由七牛云 CEO 許式偉于 2007 年發起,集結了一批具有高端視...
閱讀 2565·2021-10-11 10:58
閱讀 1148·2021-09-29 09:34
閱讀 1486·2021-09-26 09:46
閱讀 3830·2021-09-22 15:31
閱讀 730·2019-08-30 15:54
閱讀 1458·2019-08-30 13:20
閱讀 1251·2019-08-30 13:13
閱讀 1486·2019-08-26 13:52