启动实例
所有操作均在控制节点上完成。
建立虚拟网络
网络选项一
实例将通过提供商的第二层网络连接到外部网络。
admin以及其他特权用户必须建立该类型网络。
网络拓扑图:

网络连接图:

建立网络与子网
导入 admin 环境变量:
| |
建立网络:
| |
建立子网:
| |
- 将
START_IP_ADDRESS和END_IP_ADDRESS替换为需要的IP段;- 将
DNS_RESOLVER替换为需要的DNS服务器IP地址;- 将
PROVIDER_NETWORK_GATEWAY替换为目的网关;- 将
PROVIDER_NETWORK_CIDR替换为目标网络的CIDR地址,如192.168.1.0/24。
网络选项二
实例将通过 DHCP 分配到内部子网段的 IP 地址,并能够通过 NAT 连接外部网络。外部网络主机需要通过浮动 IP 才能够访问到实例。
在建立自服务网络前必须先建立提供商网络(即网络选项一)。
网络拓扑图:

网络连接图:

建立网络与子网
导入 demo 用户环境变量:
| |
建立网络:
| |
建立子网:
| |
- 将
DNS_RESOLVER替换为需要的DNS服务器IP地址;- 将
SELFSERVICE_NETWORK_GATEWAY替换为目的网关;- 将
SELFSERVICE_NETWORK_CIDR替换为目的网络的CIDR地址,如172.16.1.0/24。
新建路由
导入 demo 环境变量:
| |
新建路由:
| |
设置路由
将自服务网络中的子网接入路由:
| |
设置路由网关:
| |
测试路由
导入 admin 环境变量:
| |
查看网络命名空间:
| |
应该能看到一个
qrouter命名空间和两个qdhcp命名空间。
查看网关 IP :
| |
测试连通性:
| |
将
GATEWAY_IP替换成上一步中输出的IP。
新建虚拟主机类型
新建 m1.nano:
| |
新建密钥对
导入 demo 环境变量:
| |
生成密钥对:
| |
将公钥添加至密钥对:
| |
查看密钥对:
| |
添加安全组规则
允许 ICMP 通信:
| |
若不打开可能会
ping不通虚拟机。
允许 SSH 连接:
| |
启动实例
导入 demo 用户环境变量:
| |
查看虚拟主机类型:
| |
查看镜像状态:
| |
查看可用网络:
| |
查看安全组信息:
| |
启动基于提供商网络(网络选项一)的实例:
| |
将
IMAGE_NAME,PROVIDER_NET_ID更改为需要选用的配置。
启动基于自服务网络(网络选项二)的实例:
| |
将
IMAGE_NAME,SELFSERVICE_NET_ID更改为需要选用的配置。
实例无法启动: 错误信息:InvalidURL: Failed to parse: http:controller:9292 错误原因:控制节点
/etc/nova/nova.conf中[glance]部分的api_servers的值有误。 解决方案:补全HTTP协议头,将http:改写为http://。
查看实例启动状态:
| |
实例启动错误
status:ERROR: 错误信息:VirtualInterfaceCreateException: Virtual Interface creation failed 错误原因:libvirt再启动之前会等待neutron确认插件情况。这使得libvirt驱动在真正的虚拟机启动之前使用实例事件机制去等待neutron的VIF信息。等待超时后,就会报虚拟机启动错误。 解决方案:在计算节点的/etc/nova/nova.conf的[DEFAULT]部分中增加:然后重新启动
openstack-nova-compute即可。
登录实例
通过 VNC 登入
| |
将
INSTANCE_NAME替换成自己的实例名称。
通过给出的 URL 登录实例。
通过命令行登入
查看网络情况:
| |
查看虚拟网络中的命名空间:
| |
通过指定命名空间执行命令登入:
| |
需要将
NETNS_NAME,USER和SERVER_IP_ADDRESS更换成目标服务器的信息。
验证网络连通性
将
GATEWAY_IP改为当前加入网络的网关IP。
CirrOS启动卡在 further output written to /dev/ttys0 错误信息:further output written to /dev/ttys0 错误原因:无法获取网卡IP解决方案:在计算节点上运行sudo systemctl restart openstack-compute neutron-linuxbridge-agent即可。
实例无法联网: 错误信息:获取不到
IP错误原因:更改了nova-compute模块后没有重启计算节点上的neutron-linuxbridge-agent服务。 解决方案:在计算节点上运行sudo systemctl restart openstack-compute neutron-linuxbridge-agent即可。
实例无法
ping通域名: 错误信息:ping: bad address ’triplez.cn’ 错误原因:初始化的DNS服务不可用。 解决方案:移除原来子网中设置的DNS服务器,新增8.8.8.8和9.9.9.9公共DNS服务器。
添加浮动 IP
仅针对自服务网络(网络选项二)。
生成浮动 IP:
| |
将生成的浮动 IP 绑定到目标实例 selfservice-instance 上:
| |
将
FLOATING_IP改为生成的浮动IP地址。
在控制节点上验证网络连通性:
| |
将
FLOATING_IP改为生成的浮动IP地址。
总结
启动实例是一个比较综合的工作,需要之前安装的四个基础模块的互相配合才能够如我们预期般运行。OpenStack 本是一个解耦的系统,然而我们在部署时,需要将其重新耦合起来。出问题也是很正常的。还是要有耐心对待,仔细写配置文件,出错看日志文件,相信能够解决大多数问题。
共勉。

本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。