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