DevStack云主机实例支持外网访问环境搭建实践

时间:2021-09-29 11:11:33

这几天一直在搭建支持外网访问的devstack云主机实例环境,但总是遇到各种各样的细节问题,折腾了一个星期左右,总算搞定。网上关于搭建这种环境的教程很多,但大多细节讲解不够清晰,导致容易掉进坑里,半天爬不出来。因此这里主要总结一下搭建过程中需要注意的关键点,以减少搭建过程中遇到的各种问题,提高搭建成功的概率。

这些关键点总结起来主要包括如下几点:1)安装前的Neutron配置,一旦Neutron配置不正确,就会遇到各种各样的问题,后面的工作都成为无用功;2)安装后的网络创建,这里主要涉及到网络、子网、路由等的创建和配置;3)云主机实例的创建,包括云主机镜像的用户名和密码,云主机的卷大小,云主机的VNC控制台操作等;4)安全组规则,这是最容易被忽视但又最可能导致云主机实例与外网之间无法通信的罪魁祸首。

1. 安装前的Neutron配置

devstack的安装配置都在文件local.conf中制定,对应到neutron主要包括两个点:1)nuetron相关的service都需要正确配置,之前我这边就是因为照抄的模板里少了q-l3服务导致搭建的环境里少了br-ex网桥,就算后面所有的网络创建和云主机创建都正确,也始终无法进行外网访问,后来查看网络配置才发现的这个问题。2)nuetron相关的option选项都需要正确配置,这里主要是网关、网桥、网卡和floating ip等的配置。具体情况直接参看下面的截图:

DevStack云主机实例支持外网访问环境搭建实践


devstack环境部署好后,建议检查一下之前的配置是否正确:

1)通过ifconfig查看br-ex和eth0等是否正常:

DevStack云主机实例支持外网访问环境搭建实践

2)通过ovs-vsctrl检查br-ex和eth0的对应关系是否正常:

DevStack云主机实例支持外网访问环境搭建实践

2.安装后的网络创建

1)安装好devstack后,就可以登录dashboard进行网络创建了,因为网上这方面的教程很多,我这里就不详细列举这个过程了,只说明一下创建完成后的网络拓扑如下图:

DevStack云主机实例支持外网访问环境搭建实践

3.云主机实例的创建

云主机实例的创建在网上也有很多教程,这里同样略过,主要说明几点:

1)云主机所处网络的选择,应选择内网的那个网络,之后private这个网络可以通过路由器与外网通信。

DevStack云主机实例支持外网访问环境搭建实践

2)云主机所处安全组的选择,不要选择default安全组,因为default安全组默认会阻止所有从外网向云主机的通信,这也是我之前从外网一直无法ping通云主机的原因:

DevStack云主机实例支持外网访问环境搭建实践

3)floating ip的分配

注意一定要为云主机分配floating ip,这个floating ip来自之前创建的外部网络,因此可以通过这个floating ip与外网进行通信。具体分配floating ip的方法很简单,实在不懂可以参考下面备注中的链接,分配完floating ip后的云主机实例是这样的:

DevStack云主机实例支持外网访问环境搭建实践

4)云主机其他事项

devstack中的卷大小默认是给的10G,这也会留下一个坑,就是你所有云主机实例只能共用这10G,一旦新创建的云主机分配的空间超过剩下的空间(10G一下子就用完了),这时创建云主机就会报错,而你很可能要用很久才能排查出是这个原因。所以,建议在devsatck的local.conf中修改这个默认值,对应的选项是VOLUME_BACKSING_FILE_SIZE.

另外就是云主机对应的镜像的用户名和密码都是不确定的,所以你创建和云主机之后,很可能就会遇到不知道如何登录进云主机的问题,这里建议参考http://www.chenshake.com/openstack-mirror-and-password/这篇文章里,在创建云主机时添加configuration来设置用户名和密码,以便能顺利登录进云主机。

再就是云主机的VNC控制台界面,操作起来非常卡,常常要等很久,非常影响使用体验和耗费时间,建议开启ssh来替代VNC进行访问,具体的开启ssh在上面那篇文章里也有讲述。

4.安全组规则

安全组规则定义了安全组中的云主机实例与外网之间的允许和拒绝的规则,并且默认的default安全组是禁止所有从外网向云主机的通信请求的,如果不知道这一点,那么你就很容易出现从外网无法ping同云主机的问题,并且百思不得解,让你郁闷一两天。

所以建议你最好自己创建一个新的安全组,并且在创建云主机时选择新的安全组,新的安全组允许所有与外网之间的通信请求,具体如下:

DevStack云主机实例支持外网访问环境搭建实践


备注:

1)关于nuetron简介及dashboard搭建网络的文章,可参考:https://www.ustack.com/blog/neutron_intro/

2)关于nuetron架构和原理的文章,可参考:http://blog.kongfy.com/2015/05/openstack%E7%BD%91%E7%BB%9C%E8%BF%B7%E5%AE%AB%EF%BC%9Aneutron%E4%BB%A5%E5%8F%8Albaas/