设为首页 收藏本站
查看: 703|回复: 0

[经验分享] Redhat OpenShift架构剖析

[复制链接]

尚未签到

发表于 2018-5-12 10:45:12 | 显示全部楼层 |阅读模式
  参考redHat的官方文章翻译而来:https://openshift.redhat.com/community/wiki/architecture-overview

OpenShift Origin
  Openshift Origin是Openshift的开源版本,可以用来创建、部署以及管理云端的app。根据每个app使用到的服务的类型(数据库、语言环境),Oepnshift会为你提供一个文件系统为你创造运行环境(a template file system layout is provided)。同时也负责DNS服务

Platform Overview

主要有两个部分组成:Broker和Cartridges
DSC0000.png

  • Broker:处理所有外部进来的请求,然后deliver给正确的处理模块。同时处理用户登录、DNS、app状态、app的管理等功能。当然用户会使用CLI、web或者JBoss工具和Broker交互
  • Cartridges:为app运行提供环境。每个Cartridge只能提供一种运行环境,比如Python或者Mysql,不能同时提供好几种。Cartridge分为两种: Framework cartridge和Embedded cartridge,前者是提供web能力的服务,后者是DB、DB web接口这类的服务。一个app显然需要至少一个Framework cartridge
System Resources and Application Containers

这个标题的意思就是系统为App运行提供的容器。这里有两个概念:Gear和Node。
DSC0001.png   



  • Gear:Gear提供了一个给Cartridges运行的容器,里面可以跑若干个Cartridge。为每个Cartridge提供有限的RAM和硬盘空间
  • Node:一个Node中有多个Gear,Node就是一台物理机或者一台虚拟机。因为有些Gear的app没有在run,所以一般Node会超载,就是存放了超过限额的Gear
Applications

这个就不多写了,就是app的命名方式以及一些参数的名称
DSC0002.png   



  • Domian:每个用户只有一个Domain
  • App Name:每个app有一个unique的名字
  • Aliases:可以为一个app提供一个别名,也就是另外一个URL
  • App dependencies:就是app依赖于哪些Catridges
  • App Git Repository:就是用户把代码push上去的地方
Primary user interactions

Simple Application Creation

就是一张创建一个PHP app的图例,还是比较通俗易懂的:
DSC0003.png   


Applciation deployment using Jenkins

可以使用Jenkins这个工具来帮助部署app,也就是通过它和openshift交互,来实现部署。具体细节欠奉:
DSC0004.png   


Horizontal scaling(Beta)

Beta版的。。。目前Openshift就是用HA proxy来实现负载均衡。GIT部署作为end point for the application(个人理解就是真正部署的工具是GIT)。HA proxy的运作方式也很简单:如果有请求,那么把请求转发到正确的Gear即可。然后部署方式是:用户向HA proxy 的gear push代码。那么HA proxy将代码在分别push到每个运行的Gear上面去
DSC0005.png   


Describing an application using descriptors

Openshift使用一个descriptor文件来build app。文件是YAML文件类型,就是yml后缀文件。文件内容包括:name、version、dependencies以及app的架构等信息。Broker可以通过这个文件来创建和修改app,同时为用户提供管理这些文件参数的REST API。
DSC0006.png   

  


App Descriptor

app的描述文件包括以下的属性:

  • Name
  • Version
  • Requires:依赖列表,也就是Cartridge的列表,然后每个Cartridge都会有一个对应的Cartridge Descriptor
  • Cartridge: 似乎和上面的差不多,不清楚了  


  • Component:Smallest piece of a software package which provides some functionality. Users don’t see below this level.
  • Connections:哪两个component需要互相通讯
  • Group Override:就是将不相关的Cartridge放到一个Gear里面去。In essence, embedding them together. These components will scale together.
  • Gear:CPU、内存以及disk的配置

一个sample,就不翻译了  


[plain] view plaincopyprint?

  • Name: myapp
  • Version: 1.0
  • Requires: php-1.0, mysql, mongodb
  • Connections:
  •   - php-1.0, mysql
  •   - php-1.0, mongodb
  • Group override:
  •   - php-1.0, mysql
  

  
Name: myapp
  
Version: 1.0
  
Requires: php-1.0, mysql, mongodb
  
Connections:
  
- php-1.0, mysql
  
- php-1.0, mongodb
  
Group override:
  
- php-1.0, mysql
  
The descriptor above describes an application named “myapp” which depends on php-1.0, mysql and mongodb. Php,Mysql and Php, Mongodb need to communicate with each other. Php and mysql run embedded on the same set of gears while Mongodb runs on its own set of gears

Cartridge Descriptor

有待补充。。。
Logical views

DSC0007.png   


StickShift

StickShift是openshift的核心模块,他提供了运行整个Openshift的功能。每台VM或者物理机都必须安装一个stickshift包。它包括三个部分:

  • Controller:is a Rails Engine (plugin) which includes a REST API, business logic and state management for the PaaS platform. It also includes a set of plugin APIs for DNS management, authentication, data/state storage, and broker-node communications.
  • Node:管理Gear和app
  • Common:顾名思义,上面两个模块的共同调用模块
Proxy ports

Gear将自己内部的某个Cartridge暴露给外部调用,一般为了负载均衡或者供其他Gear调用。由HA proxy提供路由功能,即使是其他node的Gear,也可以访问到。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-459031-1-1.html 上篇帖子: RedHat下利用bonding实现linux服务器网卡绑定 下篇帖子: Redhat 无法使用yum快速安装软件的解决方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表