deployment基本元素

一个deployment是虚拟机与disks的集合,一个deployment被分割成小的逻辑单元称作deployment jobs。

Deployment Jobs

它是一个集群操作员定义的逻辑单元。代表一个一直运行的服务或者短暂的任务。在deployment manifest中定义。可配置运行多个job副本。一个job有多个实例。 每个job需要软件--releases。操作员定义一个job需要指定是什么release,或者多个releases组成这个job。比如redis server job使用redis-release(包含redis server 软件)

# Associates redis release with this deployment
releases:
- {name: redis, version: 12}

jobs:
- name: redis-master
  instances: 1

  # Associates redis-master with redis release
  templates:
  - {name: redis-server, release: redis}

  resource_pool: redis-servers
  networks:
  - name: default

Resource Pools

一个用指定stemcell创建的VMs的集合。每个job实例运行在一个单独的VM上。所以一个job属于一个确定的资源池。llows the operator to specify VM size, instance type, and other IaaS-specific characteristics that are used when creating VMs

resource_pools:
- name: redis-servers
  network: default

  # Association with Ubuntu Trusty stemcell for AWS
  stemcell:
    name: bosh-aws-xen-ubuntu-trusty-go_agent
    version: 2765

  # IaaS specific properties
  cloud_properties:
    instance_type: m1.medium

Compilation

大部分VMs属于指定资源池。Director也会为release compilatin 创建workers。

resource_pools:
- name: redis-servers
  network: default

  # Association with Ubuntu Trusty stemcell for AWS
  stemcell:
    name: bosh-aws-xen-ubuntu-trusty-go_agent
    version: 2765

  # IaaS specific properties
  cloud_properties:
    instance_type: m1.medium

Persistent Disks

不管job实例的VM有没有被删除,持久化数据一直存在。只要job实例被创建。如给redis-slave分配10G的内存。

jobs:
- name: redis-slave
  instances: 2
  templates:
  - {name: redis-server, release: redis}

  # Associated 10GB disk
  persistent_disk: 10_240

  resource_pool: redis-servers
  networks:
  - name: default

Networks

一个deployment job至少引用一个网络。BOSH决定怎样寻找和选择IP。有三种类型的网络:manual,dynamic和vip。 manual:需要用户指定一个或更多的子网,BOSH决定怎样去分配IP给每个任务。 dynamic:BOSH让IaaS去分配IP。 vip:BOSH允许用户分配IP给VMs。

networks:
- name: default
  type: manual

  subnets:
  - range:    10.10.0.0/24
    gateway:  10.10.0.1
    dns:      [10.10.0.2]
    reserved: [10.10.0.2-10.10.0.10]

    # IaaS specific properties
    cloud_properties:
      subnet: subnet-9be6c3f7

Deployment manifest事例

name: my-redis-deployment

director_uuid: cf8dc1fc-9c42-4ffc-96f1-fbad983a6ce6

releases:
- {name: redis, version: 12}

networks:
- name: default
  type: manual
  subnets:
  - range:    10.10.0.0/24
    gateway:  10.10.0.1
    dns:      [10.10.0.2]
    reserved: [10.10.0.2-10.10.0.10]
    cloud_properties: {subnet: subnet-9be6c3f7}

resource_pools:
- name: redis-servers
  network: default
  stemcell:
    name: bosh-aws-xen-ubuntu-trusty-go_agent
    version: 2708
  cloud_properties:
    instance_type: m1.small
    availability_zone: us-east-1c

compilation:
  workers: 2
  network: default
  cloud_properties:
    instance_type: m1.small
    availability_zone: us-east-1c

update:
  canaries: 1
  max_in_flight: 10
  update_watch_time: 1000-30000
  canary_watch_time: 1000-30000

jobs:
- name: redis-master
  instances: 1
  templates:
  - {name: redis-server, release: redis}
  persistent_disk: 10_240
  resource_pool: redis-servers
  networks:
  - name: default

- name: redis-slave
  instances: 2
  templates:
  - {name: redis-server, release: redis}
  persistent_disk: 10_240
  resource_pool: redis-servers
  networks:
  - name: default

results matching ""

    No results matching ""