博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cloud Foundry Job图文详解
阅读量:5825 次
发布时间:2019-06-18

本文共 2685 字,大约阅读时间需要 8 分钟。

Cloud Foundry集群上运行的是一组Job,这些 Job由开发者以release包的形式提供,利用BOSH命令部署到集群节点上。如下图所示:

image

相关概念

  • Release: Bosh定义的一组Job的集合,用来在集群上进行部署。可以简单理解为运行Job所需要的源码、二进制包、安装脚本的压缩包。
  • Job: 运行在Cloud Foundry节点上的应用/进程。
  • Package: job的依赖包

Release源码结构

初始化一个Release项目的命令如下:

bosh init-release --dir e2e-test-release

自动生成如下目录结构:

$ tree ..├── config│   └── blobs.yml├── jobs            # 一组应用或服务的定义,例如:postgres服务├── packages        # 运行Job所需的依赖的描述。这里分两种依赖:源码依赖和二进制依赖├── src             # 存放依赖源代码└── blobs           # 存放依赖二进制

Job

初始化Job的命令如下:

bosh generate-job slb-registration-test

生成Job目录结构如下:

$ tree e2e-test-releasee2e-test-release├── blobs├── config├── jobs│   ├── slb-registration-test│   │   ├── monit                    # monit服务会调用这个脚本,检查应用的健康状态,汇报给BOSH│   │   ├── spec                     # job的描述文件│   │   └── templates│   │        └── run.erb             # 应用启动和停止的脚本├── packages└── src

spec 是job的元信息配置文件,其结构如下:

---name: slb-registration-test        # job名称,写manifest的时候一一对应templates:                         # templates目录下的文件,放置到vm的哪个位置上  run.erb: bin/run                 # 把templates/run.erb复制到vm的/var/vcap/jobs/slb-registration-test/bin/runpackages:                          # 当前job需要依赖哪些package- aliyun_py- aliyun_python_sdk_slbproperties:                        # 定义用户可以在manifest中配置值传给job ctl  access_key:    description: The Alicloud Access Key  secret_key:    description: The Alicloud Access Secret Key

Package

初始化Package命令如下:

bosh generate-package aliyun_py

package目录结构如下:

$ tree packagespackages└── aliyun_py              # 名称    ├── packaging          # 安装脚本    └── spec               # 元信息

spec 是package的元信息配置文件,其结构如下:

---name: aliyun_py             # package名称dependencies:               # 依赖名称- aliyun_python_sdk_slbfiles:                      # 在编译阶段,如何找到源码或者二进制依赖. 源码则在src目录下进行查找,二进制在blobs目录下查找  - action/**/*

Blob

Package依赖的源码是直接放到项目的src目录下的,但是二进制文件体积较大,而且非源码不适合做版本控制,所以二进制文件放到远程BlobStore上。

添加Blob到项目的命令如下:

bosh add-blob ~/Downloads/aliyun-python-sdk-slb-3.2.1.tar.gz sdk_slb/aliyun-python-sdk-slb-3.2.1.tar.gz

在编译阶段,aliyun-python-sdk-slb-3.2.1.tar.gz会放置到blobs/sdk_slb目录下

Create Release

生成release包的命令如下:

bosh create-release --force

manifest

在manifest中定义job信息如下:

instance_groups:  - name: srt    jobs:      - name: slb-registration-test           # 前面定义的job名称        release: e2e-test                     # release名称        properties:                           # job spec中定义的配置,值会传到 job脚本中          access_key: ((access_key))          secret_key: ((secret_key))

划重点

Release意义在于打包、编译、部署、运行Job到CLoud Foundry,利用monit监控和管理应用状态。那么关键所在是Job,Job生命周期如下图:

image

部署的时候,会把release目录下的内容复制到vm的/var/vcap目录下;job的日志会写到/var/vcap/sys/log/JOB_NAME文件中。

image

最后

欢迎PaaS生态上的合作伙伴和开发者参与Cloud Foundry社区的建设,也欢迎大家来阿里云构建企业自己的PaaS平台。任何问题和建议可以。

转载地址:http://qjpdx.baihongyu.com/

你可能感兴趣的文章
韩国国会议员涉嫌投机炒房 检方称已立案调查
查看>>
李娜入选国际网球名人堂 成亚洲第一人
查看>>
为找好心人抚养孩子 浙江一离婚父亲将幼童丢弃公园
查看>>
晚婚晚育 近20年巴西35岁以上孕妇增加65%
查看>>
读书:为了那个美妙的咔哒声
查看>>
我从过去八个月的AI公司面试中学到了什么?
查看>>
jQuery实践小结
查看>>
深入探究Immutable.js的实现机制(一)
查看>>
jsp改造之sitemesh注意事项
查看>>
iOS底层原理总结 - 探寻block的本质(二)
查看>>
智能硬件的时代,嵌入式是否已经日薄西山
查看>>
单点登录(SSO)看这一篇就够了
查看>>
SpringBoot-Shiro使用
查看>>
分布式理论:CAP是三选二吗?
查看>>
iOS 9.0之后NSString encode方法替换
查看>>
解决 ThinkPHP5 无法接收 客户端 Post 传递的 Json 参数
查看>>
ASMFD (ASM Filter Driver) Support on OS Platforms (Certification Matrix). (文档 ID 2034681.1)
查看>>
gitlab 账号注册及修改资料
查看>>
pxssh交换机自动刷限速模板
查看>>
CRM Transaction处理中的权限控制
查看>>