使用perl脚本调用socat监控haproxy状态
举个栗子
1 | my @items; |
1 | my @items; |
Tacker is an official OpenStack project building a Generic VNF Manager (VNFM) and a NFV Orchestrator (NFVO) to deploy and operate Network Services and Virtual Network Functions (VNFs) on an NFV infrastructure platform like OpenStack. It is based on ETSI MANO Architectural Framework and provides a functional stack to Orchestrate Network Services end-to-end using VNFs.
May 13, 2016
Citrix NetScaler CPX is a container-based application delivery controller that can be provisioned on a Docker host. NetScaler CPX enables customers to leverage Docker engine capabilities and use NetScaler load balancing and traffic management features for container-based applications. You can deploy one or more NetScaler CPX instances as standalone instances on a Docker host.
A NetScaler CPX instance provides throughput of up to 1 Gbps.
Mistral is a workflow service. Most business processes consist of multiple distinct interconnected steps that need to be executed in a particular order in a distributed environment. One can describe such process as a set of tasks and task relations and upload such description to Mistral so that it takes care of state management, correct execution order, parallelism, synchronization and high availability. Mistral also provides flexible task scheduling so that we can run a process according to a specified schedule (i.e. every Sunday at 4.00pm) instead of running it immediately. We call such set of tasks and relations between them a workflow.
这里参考的是lbaasv2的driver,neutron_lbaas.conf中的service_provider即为lbaasv2的driver:service_provider=LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
neutron.conf中的service_plugins表示了lbaasv2的plugin:lbaasv2 = neutron_lbaas.services.loadbalancer.plugin:LoadBalancerPluginv2
接上一篇Openstack Cell简要说明,稍微详细的描述下Openstack cell中的API与RPC流程。
父cell
,总的api
入口,需要启动的openstack
服务为keystone
、neutron
、glance
(glance-api
、glance-registry
)、cinder
(cinder-api
)、nova
(nova-api
、nova-cells
、nova-console
、nova-consoleauth
、nova-novncproxy
);需要启动的第三方服务为rabbit
(rabbitmq-server
)与mysql
(mariadb
)。
子cell
,每一个子cell
相当于一个独立的openstack
环境,担负具体的计算功能。在子cell
内可划分为控制节点与计算节点,控制节点上需要启动的openstack
服务为neutron
(neutron-openvswitch-agent
)、cinder
(cinder-scheduler
、cinder-volume
)、nova
(nova-cells
、nova-conductor
、nova-scheduler
、nova-compute
);控制节点上需要启动的第三方服务为rabbit
(rabbitmq-server
)与mysql(mariadb
);计算节点需要启动的openstack
服务为neutron
(neutron-openvswitch-agent
)、nova
(nova-compute
)。(是否在子cell
的控制节点上启用nova-compute
为可选)
1 | nova-manage cell create --name {子cell名称} --cell_type compute --username {子cell消息服务器用户名} --password {子cell消息服务器密码} --broker_hosts {子cell消息服务器地址,list形式} --hostname {子cell消息服务器地址} --port {子cell 消息服务器端口} --virtual_host {子cell消息服务器虚拟机主机地址} |
1 | nova-manage cell create --name <父cell名称> --cell_type api --username <父cell消息服务器用户名> --password <父cell消息服务器密码> --broker_hosts <父cell消息服务器地址,list形式> --hostname <父cell消息服务器地址> --port <父cell 消息服务器端口> --virtual_host {父cell消息服务器虚拟机主机地址} |
1 | nova-manage cell delete {cell_id} |
当指令下发后,首先进入nova-api
,经过对请求地址解析,参数处理之后,会调用到compute
的api
。非cell
模式,compute
的api
为nova.compute.api.py
;cell
模式下,为nova.compute.cells_api.py
。
nova.compute.cells_api.py
-> nova.cells.rpcapi.py
-> nova.cells.manager.py
-> nova.cells.messaging.py
(以上为父Cell
,主要功能为调度) -> nova.cells.messaging.py
(子Cell
,由此进入到具体的执行操作)
nova.compute.cells_api.py
(父Cell
,调用其中的_cast_to_cells
或_call_to_cells
等方法,直接调用子Cell
上nova.compute.api.py
中的对应函数) -> nova.compute.api.py
(子Cell
)
相当于非Cell
模式中的功能相简便移植到Cell
模式中,只需要在nova.compute.cells_api.py
中增加一个类似跳板的同名函数,并使用_cast_to_cells
或_call_to_cells
等方法将请求转到子Cell
的nova.compute.api.py
中的同名函数。
Cell
模式下,有些函数访问的是自身的数据库且不向其他Cell
的数据库同步数据;有些函数访问父Cell
的数控库且会向其他Cell
的数据库同步数据。原生的cell
并不健全,如aggregate
仅在父Cell
上更新,并不同步数据到子Cell
,而子Cell
只从自己的数据库上查询,导致环境无法创建az
。如遇到非Cell
模式下可正常运行的功能在Cell
模式下失效,可以查看是否存在数据读取的问题。
消息服务器的存活是Cell
非常关心的一件事,在多个子Cell
的环境中,其中一个子Cell
的消息服务器挂了之后,会导致父Cell
异常,需要尽快在父Cell
的配置中删除异常的子Cell
。