91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

宜信開源|詳解PaaS平臺LAIN的功能和架構

發布時間:2020-07-20 12:54:48 來源:網絡 閱讀:398 作者:宜信技術 欄目:云計算

【技術沙龍002期】數據中臺:宜信敏捷數據中臺建設實踐|宜信技術沙龍 將于5月23日晚8點線上直播,點擊報名

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集群,方便地進行在線的擴容縮容等集群底層資源操作
  • 整合了業界沉淀下來的良好的運維整體實踐,提供了冰山下的這一大塊工作的整體解決方案
  • 將紛繁復雜的系統管理和運維管理行為封裝為更簡單易用的工具包,極大簡化大部分的系統工作,降低日常維護的技術門檻和人力需求
  • 將同質化的工作整合在一起,避免重復勞動
  • 開箱即用的各種管理組件,囊括了部署,擴容,監控,告警,日志等方方面面。還有附贈應用,包括mysqlredis的集群服務

2、規范了應用開發的工作流程,并輔以適當的SCM支援

常見問題

  • 在個人開發者以及startup組織中,良好的工作流這件事幾乎是不會被提及的,然而在日漸發展的過程中遺留的技術債務卻會越來越多的影響開發部署的效率和質量
  • 設計、開發和部署行為的不規范會引發各種問題

Lain是怎么做的

  • 提供本地開發環境的解決方案
  • 提供本地開發過程的SDK / CLI工具鏈,使得開發和構建過程是嵌入在解決方案中的
  • 隱性的提供了SCM支援,約束了開發者的開發和發布行為

3、提高整體資源利用率,優化冗余資源池

常見問題

  • 傳統的按照產品線規劃資源池的情況下,會給各產品預留專屬的資源池以及配備冗余,以便進行災備以及服務突發流量
  • 然而各產品線的資源需求類型不同,冗余類型也不同,無法共通共享,造成眾多的重復冗余,資源利用率比較低
  • 通過服務器資源的冗余,擴容縮容,以及資源遷移的操作比較復雜,時間消耗大,風險高

Lain是怎么做的

  • 通過容器技術的資源隔離和控制,實現多種技術棧多種應用在集群內安全的不相互影響的混合部署,通過統一的資源池進行冗余,有效提高資源利用率
  • 容器技術的運用使得對下資源的使用形成完全統一的形式,擴容縮容以及遷移的成本很低,操作也更簡單。

4、TBD:架構上提供了服務治理的可能性和解決方案

二、特征

在應用的層面上,LAIN 還有以下特征:

1、基于配置文件定義應用

  • 在現有的應用上只需要增加一個配置文件lain.yaml即可定義應用在lain集群里的編譯和運行
  • 對應用代碼的侵入性很低

2、SDN網絡安全隔離

  • 使用開源的calico(https://github.com/projectcalico/calico)項目構建SDN網絡
  • 高效率的應用內網絡互通
  • 應用間網絡默認隔離
  • 顯式聲明應用間的服務互訪

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/ansible)開發集群管理運維工具包
  • 集群的服務器節點(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)
  • 支持oauth3的多種認證方式

9、虛ip和負載均衡器統一管理

  • 支援 virtual ip 和 應用 proc 的注冊,應用可注冊 virtual ip 來進行對外服務
  • 基于etcd lock機制的virtual ip 漂移機制,應用 load balancer 可借此實現 HA

10、web load balancer的自動配置

  • 使用開源的nginx和tengine(https://github.com/alibaba/tengine)封裝web服務的負載均衡器
  • 自研的watcher檢測集群應用的整體 runtime 數據,自動為 web 服務生成配置
    • 獲取runtime變化的時間,判斷是否需要進行配置變更
    • 配置變更事件出發配置的渲染
    • 觸發 reload 生效

11、集群體系化的日志收集

  • 使用開源的 heka(https://github.com/mozilla-services/heka)配合docker的配置以及rsyslog封裝集群整體日志收集
  • 默認收集應用的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,給用戶提供良好的操作界面
  • 集成集群的統一認證,進行用戶管理和權限隔離

宜信開源|詳解PaaS平臺LAIN的功能和架構

16、集群管理CLI

  • 使用開源的ansible開發集群管理運維工具包
  • 再次封裝ansible調用為簡單的CLI使得操作更方便,包括增加節點,移除節點,遷移應用,集群健康檢查等。

17、規范化的開發workflow

  • 基于上述組件,以代碼 - 鏡像的一一對應關系進行SCM,對鏡像進行發布管理
  • 使用lain SDK / CLI以及可選的ci組件進行本地開發,構建發布,會很自然的規范開發workflow
  • 工作流運轉的核心單位是鏡像,lain cli封裝了鏡像的生成,更新,推送,部署,運維
    宜信開源|詳解PaaS平臺LAIN的功能和架構

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-service)
  • MySQL的資源
  • Redis的服務-SM(https://github.com/laincloud/redis-service-sm)

三、系統架構

1、物理視圖

從物理層面看,每一個 lain 集群是由一個或多個網絡互通的節點(Node)構成的。

宜信開源|詳解PaaS平臺LAIN的功能和架構

每個節點可以被賦予不同的 label ,供容器調度時進行節點選擇使用。
目前的實現中,需要所有節點位于同一個路由器后。

2、邏輯視圖

從邏輯層面看,一個 lain 集群是由多個應用組成,應用和應用之間網絡相互隔離(通過SDN技術)。

宜信開源|詳解PaaS平臺LAIN的功能和架構

每一個應用是由多個 Docker 容器組成,每個容器都可能運行在不同的節點上。

宜信開源|詳解PaaS平臺LAIN的功能和架構

應用開發者可以在一個應用中定義多種容器(稱為 proc),每個 proc 可以指定為在集群上運行多份,每份即為一個容器,被稱為 proc instance 。Lain 集群會盡可能保證有指定份數的容器在運行,如果有容器 crash 或者節點 fail 的情況發生,集群會試圖重啟容器或者在節點間遷移容器。

3、系統架構設計圖

目標是做成一層一層可以深入的架構圖

總圖

宜信開源|詳解PaaS平臺LAIN的功能和架構

節點

宜信開源|詳解PaaS平臺LAIN的功能和架構

4、工作流程

宜信開源|詳解PaaS平臺LAIN的功能和架構

GitHub地址:https://github.com/laincloud

白皮書:https://laincloud.gitbooks.io/white-paper/content/

來源宜信技術學院

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐陵市| 烟台市| 油尖旺区| 上蔡县| 砚山县| 江北区| 磴口县| 台湾省| 云龙县| 治县。| 闽侯县| 离岛区| 商河县| 陇西县| 茌平县| 昂仁县| 万载县| 华容县| 台北县| 望都县| 平阴县| 台山市| 岗巴县| 囊谦县| 泊头市| 桦川县| 呼玛县| 阿拉善盟| 锦屏县| 个旧市| 铜梁县| 汨罗市| 连州市| 嘉祥县| 新巴尔虎左旗| 原平市| 大名县| 呼图壁县| 台南县| 施甸县| 永安市|