docker 容器使用 ipvlan 网络
centos7-升级至4.* 内核
openstack-nova-虚拟机创建流程以及源码分析(一)
openstack 虚机创建流程以及源码分析(一)
基于openstack stein
虚机创建流程图
上图是虚拟机创建流程的整体流程,可以看到整体虚拟机创建流程一次经过了API、Conductor、Scheduler、Placement、Compute等主要服务。
下表列出了每个步骤中实例的状态:
Status | Task | Power state | Steps |
---|---|---|---|
Build | scheduling | None | 3-12 |
Build | networking | None | 22-24 |
Build | block_device_mapping | None | 25-27 |
Build | spawing | None | 28 |
Active | none | Running |
openstack-placement-常用命令
openstack-记一次虚机创建失败问题
d
背景
某天,突然openstack无法创建虚拟机,MQ消息大量堆积
现象
- nova-conductor报大量数据库超时
1 | [SQL: UPDATE services SET updated_at=%(updated_at)s, report_count=%(report_count)s, last_seen_up=%(last_seen_up)s WHERE services.id = %(services_id)s] |
2.
openstack-neutron-常用网络命令
**创建默认vxlan网络 **
1 | #neutron net-create vpc1 |
**创建子网 **
1 | #neutron subnet-create vpc1-subnet 192.168.0.0/24 |
openstack-nova-虚拟机热迁移过程源码刨析
热迁移主要包括三个阶段:
- pre_live_migration 阶段:热迁移前的准备阶段,主要在目的计算节点上提前准备虚拟机资源,包括网络资源,例如:建立虚拟机的网卡,然后将网卡加入 OvS br-int 网桥。如果该阶段失败,会有回滚操作。
- 内存迁移阶段:该阶段完全虚拟机虚拟内存数据的迁移,如果虚拟机的系统盘在计算节点本地,那么系统盘数据也会在此时进行迁移。如果该阶段失败,会有回滚操作,回滚流程和 pre_live_migration 阶段一致。
- post_live_migration 阶段:热迁移完成后资源清理阶段,源计算节点主要是断开源计算节点上虚拟机的卷连接、清理源计算节点虚拟机的网卡资源;目的节点主要是调用 neutronclient,更新 Port Host 属性为目的计算节点。(NOTE:该阶段无需回滚流程,因为虚拟机实际上已经成功迁移,再回滚没有意义)
go-实用方法-判断字符串为uuid类型
go 遇到需要判断字符串是否为uuid 类型,函数如下
1 | func IsValidUUID(uuid string) bool { |
go-etcd clientv3 包冲突问题
golang 当中操作 etcd 必须 go get go.etcd.io/etcd/clientv3
但是会报错如下:
github.com/coreos/etcd/clientv3/balancer/picker
F:\Go\pkg\mod\github.com\coreos\etcd@v3.3.22+incompatible\clientv3\balancer\picker\err.go:37:44: undefined: balancer.PickOptions
F:\Go\pkg\mod\github.com\coreos\etcd@v3.3.22+incompatible\clientv3\balancer\picker\roundrobin_balanced.go:55:54: undefined: balancer.PickOptions
github.com/coreos/etcd/clientv3/balancer/resolver/endpoint
F:\Go\pkg\mod\github.com\coreos\etcd@v3.3.22+incompatible\clientv3\balancer\resolver\endpoint\endpoint.go:114:78: undefined: resolver.BuildOption
F:\Go\pkg\mod\github.com\coreos\etcd@v3.3.22+incompatible\clientv3\balancer\resolver\endpoint\endpoint.go:182:31: undefined: resolver.ResolveNowOption
大概是说原因是 google.golang.org/grpc 1.26 后的版本是不支持 clientv3 的。