sqlalchemy 连接参数
1 | # 'pool_timeout' is the maximum number of seconds to wait when retrieving a |
如上所知如下:
应用程序最大db并发量 = pool_size + max_overflow
池子中的空闲conn 最大生存时间 1800s,超过的将被回收重建,此时client会和db主动断连
应用程序如果超过30s未从池子中取出可用conn,程序将触发exception
sqlalchemy 连接参数
1 | # 'pool_timeout' is the maximum number of seconds to wait when retrieving a |
如上所知如下:
应用程序最大db并发量 = pool_size + max_overflow
池子中的空闲conn 最大生存时间 1800s,超过的将被回收重建,此时client会和db主动断连
应用程序如果超过30s未从池子中取出可用conn,程序将触发exception
api收到重启请求后, _action_reboot 调用 compute_api 进行reboot
1 | nova.api.openstack.compute.servers.ServersController |
软重启和硬重启,将请求通过rpc 传给了nova compute
上文分析nova挂载云盘过程中,提到调用cinder initialize_connection, 返回volume 的连接信息,比如rbd ceph 的connection info, 同时在 _parse_connection_options 中基于volume type 添加cinder io qos 信息
1 | cinder.volume.manager.VolumeManager.initialize_connection |
1 | def _parse_connection_options(self, context, volume, conn_info): |
connection info 返回给了nova,nova侧使用即可,至于attachment 只是数据库里面变更一下记录而已。
nova 侧虚机需要挂载云盘,包括创建时挂载系统盘以及普通数据盘
代码在 nova\compute]manager.py, nova 获取volume信息,并发起attach请求,最终调用cinder api发起了attach请求。
1 | nova.compute.manager.ComputeManager._attach_volume: |
上文中,volume创建经scheduler 已经rpc cast 传给了 volume.
(1) cinder\volume\manager.py
VolumeManager.create_volume 函数对创建请求进行响应,并调用cinder.volume.flows.api.get_flow来创建。。
OnFailureReschedulerTask 当scheduer失败时重试,ExtractVolumeSpecTask 获取volume创建spec内容,NotifyVolumeActionTask 通知volume 创建动作,最终开始干活 CreateVolumeFromSpecTask 创建volume,以及 CreateVolumeOnFinishTask 通知volume创建完成。
上文中,volume创建经api已经rpc cast 传给了 scheduler.
(1) cinder\scheduler\manager.py
SchedulerManager.create_volume 函数对创建请求进行响应,并调用cinder.scheduler.flows.api.get_flow来创建。。
1 | cinder.scheduler.manager.SchedulerManager.create_volume |
1 | 显示主机已有网桥以及端口port信息,以及vxlan隧道信息 |
1 | 输出交换机信息,输出交换机上的网卡以及端口port信息 |
1 | 显示所有datapath基本信息 |
1 | 查询虚机mac fa:16:3e:ac:21:48 到 虚机 fa:16:3e:b0:bf:cc的流表trace路径 |
1 | 1. 查询虚机test01 (tapa6df2bfb-e5)的 port id以及mac |
Open vSwitch 是一个开源的虚拟交换机实现。广泛应用在云计算行业,为网络管理员提供虚拟云主机之间和之内的流量可见性与可控性。Open vSwitch 旨在用虚拟化方案解决网络问题,与控制器软件一起实现分布式的虚拟交换技术。这意味着,交换机和控制器软件能够在多个服务器之间创建集群网络配置,从而不需要在每一台云主机和物理主机上单独配置网络。这个交换机还支持 VLAN 中继,通过 NetFlow、sFlow 和 RSPAN 实现可见性,通过 OpenFlow 协议进行管理。它还有其他一些特性:严格流量控制,它由 OpenFlow 交换协议实现;远程管理功能,它能通过网络策略实现更多控制。
在虚拟交换机的 Flow 控制器或管理工具方面,OvS 需要借助第三方控制器或管理工具实现复杂的转发策略。例如 OvS 支持 OpenFlow 协议,我们就可以使用任何支持 OpenFlow 协议的控制器来对 OvS 进行远程管理。但这并不意味着 OvS 必须要有一个控制器才能工作。在不连接外部控制器情况下,OvS 自身可以依靠 MAC 地址学习实现二层数据包转发功能,就像 Linux Bridge。
前面调度完主机后开始rpc通知计算节点启动
1 | #nova/conductor/manager.py # |
1 | def build_and_run_instance(self, ctxt, instance, host, image, request_spec, |
自此消息cast 传给了compute 节点