本节创建必要的虚拟网络以支持启动实例。网络选项1包括一个提供者provider(external)网络,一个实例使用它。网络选项2包括一个提供商provider网络,一个实例使用它,一个自助服务(private)网络与一个使用它的实例。本节中的说明使用控制器节点上的命令行界面(CLI)工具。但是,可以按照安装工具的任何主机上的说明进行操作。有关CLI工具的更多信息,请参阅Pike的 OpenStackClient文档。要使用仪表板(dashboard),请参阅仪表板(dashboard)用户文档。
1.1.1.1. 创建虚拟网络
为配置Neutron时选择的网络选项创建虚拟网络。如果选择选项1,只创建提供商网络。如果选择选项2,需创建提供商和自助服务网络。
1.1.1.1.1. 提供商网络
在启动实例之前,必须创建必要的虚拟网络基础架构。对于网络选项1,实例使用通过第2层(桥接/切换)连接到物理网络基础设施的提供商(外部)网络。该网络包括为实例提供IP地址的DHCP服务器。
该admin或其他特权用户必须创建此网络,因为它直接连接到物理网络基础架构。
注意:以下说明和图表使用示例IP地址范围。必须根据特定环境进行调整。
网络选项1:提供商网络 - 概述
网络选项1:提供商网络 - 连接
1.1.1.1.1.1. 创建提供商网络
1、在控制器节点上,输入admin凭据以访问仅管理CLI命令:
$ . admin-openrc
2、创建网络:
$ openstack network create --share --external \
--provider-physical-network provider \
--provider-network-type flat provider
该--share选项允许所有项目使用虚拟网络。
该--external选项将虚拟网络定义为外部网络。如果您想创建一个内部网络,可以改用--internal。默认值为internal。
--provider-physical-network provider 和 --provider-network-type flat使用以下文件中的信息将平面虚拟网络连接到主机接口上的平面(native/untagged)物理网络:
ml2_conf.ini:
[ml2_type_flat]
flat_networks = provider
linuxbridge_agent.ini:
[linux_bridge]
physical_interface_mappings = provider:eth1
3、在网络上创建一个子网:
$ openstack subnet create --network provider \
--allocation-pool start=START_IP_ADDRESS,end=END_IP_ADDRESS \
--dns-nameserver DNS_RESOLVER --gateway PROVIDER_NETWORK_GATEWAY \
--subnet-range PROVIDER_NETWORK_CIDR provider
用PROVIDER_NETWORK_CIDRCIDR表示法替代提供商物理网络上的子网。
替换START_IP_ADDRESS及END_IP_ADDRESS使用要为实例分配的子网内范围的第一个和最后一个IP地址。此范围不得包含任何现有的活动IP地址。
替换DNS_RESOLVER为DNS解析器的IP地址。在大多数情况下,可以使用/etc/resolv.conf主机上的文件中的一个。
替换PROVIDER_NETWORK_GATEWAY为提供商网络上的网关IP地址,通常为“.1”IP地址。
例如:提供商网络在203.0.113.1上使用203.0.113.0/24网关。DHCP服务器将每个实例的IP地址从203.0.113.101分配到203.0.113.250。所有实例使用8.8.4.4作为DNS解析器,运行下面的命令:
$ openstack subnet create --network provider \
--allocation-pool start=203.0.113.101,end=203.0.113.250 \
--dns-nameserver 8.8.4.4 --gateway 203.0.113.1 \
--subnet-range 203.0.113.0/24 provider
1.1.1.1.1. 自服务(self-service)网络
如果选择网络选项2,还可以创建通过NAT连接到物理网络基础架构的自服务(self-service)(私有)网络。该网络包括为实例提供IP地址的DHCP服务器。该网络上的一个实例可以自动访问Internet等外部网络。但是,从互联网这样的外部网络访问该网络上的实例需要一个浮动IP地址。
demo或其他非特权用户可以创建此网络,它仅提供与demo项目中的实例的连接。
警告:必须在自服务网络之前创建提供商(provider)网络。
注意:以下说明和图表使用示例IP地址范围。必须根据您的特定环境进行调整。
网络选项2:自助服务网络 - 概述
网络选项2:自服务网络 - 连接图
1.1.1.1.1.1. 创建自助网络
1、在控制器节点上,输入demo凭据以访问仅限用户的CLI命令:
$ . demo-openrc
2、创建网络:
$ openstack network create selfservice
非特权用户通常不能为此命令提供其他参数。该服务使用以下文件中的信息自动选择参数:
ml2_conf.ini:
[ml2]
tenant_network_types = vxlan
[ml2_type_vxlan]
vni_ranges = 1:1000
3、在网络上创建一个子网:
$ openstack subnet create --network selfservice \
--dns-nameserver DNS_RESOLVER --gateway SELFSERVICE_NETWORK_GATEWAY \
--subnet-range SELFSERVICE_NETWORK_CIDR selfservice
替换DNS_RESOLVER为DNS解析器的IP地址。在大多数情况下,可以使用/etc/resolv.conf主机上的文件中的一个。
替换SELFSERVICE_NETWORK_GATEWAY为要在自助服务网络上使用的网关,通常为“.1”IP地址。
替换SELFSERVICE_NETWORK_CIDR为要在自助服务网络上使用的子网。尽管我们建议使用RFC 1918的网络,您可以使用任意值。
例如:自助网络在172.16.1.1上使用172.16.1.0/24网关。DHCP服务器为每个实例分配一个从172.16.1.2到172.16.1.254的IP地址。所有实例使用8.8.4.4作为DNS解析器。
$ openstack subnet create --network selfservice \
--dns-nameserver 8.8.4.4 --gateway 172.16.1.1 \
--subnet-range 172.16.1.0/24 selfservice
1.1.1.1.1.2.
创建路由器
自助网络使用通常执行双向NAT的虚拟路由器连接到提供商网络。每个路由器包含至少一个自助服务网络和提供商网络上的网关的接口。
提供商网络必须包括router:external使自助路由器能够使用它来连接外部网络(如Internet)的选项。本admin或其他特权用户必须包括网络创建过程中,此选项或以后添加。在这种情况下,router:external通过--external在创建provider网络时使用参数来设置该选项。
1、在控制器节点上,输入demo凭据以访问仅限用户的CLI命令:
$ . demo-openrc
2、创建路由器:
$ openstack router create router
3、在路由器上添加自助网络子网作为接口:
$ neutron router-interface-add router selfservice
4、在路由器上的提供商网络上设置网关:
$ neutron router-gateway-set router provider
1.1.1.1.1.3. 验证操作
在继续操作之前验证操作并修复任何问题。以下步骤使用网络和子网创建示例中的IP地址范围。
1、在控制器节点上,输入admin凭据以访问仅管理CLI命令:
$ . admin-openrc
2、列出网络命名空间。你应该看到一个qrouter命名空间和两个 qdhcp命名空间。
$ ip netns
3、列出路由器上的端口以确定提供商网络上的网关IP地址:
$ neutron router-port-list router
4、从控制器节点或物理提供商网络上的任何主机Ping此IP地址:
$ ping -c 4 203.0.113.102
1.1.1.1. 创建m1.nano 规格
最小默认规格每个实例消耗512 MB内存。对于包含小于4 GB内存的计算节点的环境,建议创建m1.nano每个实例只需要64 MB 的规格。只有使用这种规格与CirrOS图像进行测试。
$ openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
1.1.1.2. 生成一个密钥对
大多数云镜像支持公钥认证,而不是传统的密码认证。在启动实例之前,必须向Compute服务添加公钥。
1、生效demo项目凭证:
$ . demo-openrc
2、生成一个密钥对并添加公钥:
$ ssh-keygen -q -N ""
$ openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
注意:或者,您可以跳过该ssh-keygen命令并使用现有的公钥。
3、验证加密密钥对:
$ openstack keypair list
1.1.1.3. 添加安全组规则
默认情况下,default安全组应用于所有实例,并包括拒绝远程访问实例的防火墙规则。对于像CirrOS这样的Linux映像,建议至少允许ICMP(ping)和安全shell(SSH)。
向default安全组添加规则:
允许ICMP(ping):
$ openstack security group rule create --proto icmp default
允许安全shell(SSH)访问:
$ openstack security group rule create --proto tcp --dst-port 22 default
1.1.1.4. 启动一个实例
如果选择了网络选项1,则只能在提供商网络上启动实例。如果选择了网络选项2,则可以在提供商网络和自助服务网络上启动一个实例。
1.1.1.4.1. 在提供商网络上启动一个实例
1.1.1.4.1.1. 确定实例选项
要启动实例,必须至少指定flavor(规格),镜像名称,网络,安全组,密钥和实例名称。
1、在控制器节点上,输入demo凭据以访问仅限用户的CLI命令:
$ . demo-openrc
2、一个flavor指定一个包含处理器,内存和存储的虚拟资源分配配置文件。列出可用的规格:
$ openstack flavor list
注意:还可以通过ID引用规格。
3、列出可用镜像:
$ openstack image list
此实例使用cirros镜像。
4、列出可用网络:
$ openstack network list
此实例使用provider提供商网络。但是,必须使用ID而不是名称来引用此网络。
注意:如果选择选项2,则输出也应包含 selfservice自助服务网络。
5、列出可用的安全组:
$ openstack security group list
此实例使用default安全组。
1.1.1.4.1.2. 启动实例
1、启动实例:
替换PROVIDER_NET_ID为provider提供商网络的ID 。
注意:如果选择了选项1,并且您的环境仅包含一个网络,则可以省略该--nic选项,因为OpenStack会自动选择唯一可用的网络。
$ openstack server create --flavor m1.nano --image cirros \
--nic net-id=PROVIDER_NET_ID --security-group default \
--key-name mykey provider-instance
2、检查您的实例的状态:
$ openstack server list
状态从改变BUILD到ACTIVE时构建过程成功完成。
1.1.1.4.1.3. 使用虚拟控制台访问实例
1、获取实例的虚拟网络计算(VNC)会话URL,并从Web浏览器访问它:
$ openstack console url show provider-instance
注意:如果您的Web浏览器在无法解析controller主机名,则可以controller使用控制器节点上IP地址。
CirrOS映像包括传统的用户名/密码认证,并在登录提示符下提供这些凭据。登录CirrOS后,建议您使用以下网络连接进行验证ping。
2、验证对提供商物理网关的访问权限:
$ ping -c 4 203.0.113.1
3、验证访问互联网:
$ ping -c 4 openstack.org
1.1.1.4.1.4.
远程访问该实例
1、验证从控制器节点或提供商物理网络上的任何主机到实例的连接:
$ ping -c 4 203.0.113.103
2、使用SSH从控制器节点或提供商物理网络上的任何主机访问您的实例:
$ ssh [email protected]
1.1.1.4.2. 在自助服务网络上启动一个实例
1.1.1.4.2.1. 确定实例选项
要启动实例,必须至少指定flavor,镜像名称,网络,安全组,密钥和实例名称。
1、在控制器节点上,输入demo凭据以访问仅限用户的CLI命令:
$ . demo-openrc
2、一个flavor指定一个包含处理器,内存和存储的虚拟资源分配配置文件。列出可用的flavor:
$ openstack flavor list
3、列出可用镜像:
$ openstack image list
此实例使用cirros镜像。
4、列出可用网络:
$ openstack network list
此实例使用selfservice自助服务网络。但是,您必须使用ID而不是名称来引用此网络。
5、列出可用的安全组:
$ openstack安全组列表
$ openstack security group list
此实例使用default安全组。
6、启动实例:
替换SELFSERVICE_NET_ID为selfservice网络的ID 。
$ openstack server create --flavor m1.nano --image cirros \
--nic net-id=SELFSERVICE_NET_ID --security-group default \
--key-name mykey selfservice-instance
7、检查实例的状态:
$ openstack server list
状态从改变BUILD到ACTIVE时构建过程成功完成。
1.1.1.4.2.2. 使用虚拟控制台访问实例
1、获取 您的实例的虚拟网络计算(VNC)会话URL,并从Web浏览器访问它:
$ openstack console url show selfservice-instance
注意:如果您的Web浏览器在无法解析controller主机名,则可以使用控制器节点IP地址替换。
CirrOS映像包括传统的用户名/密码认证,并在登录提示符下提供这些凭据。登录CirrOS后,建议您使用以下网络连接进行验证ping。
2、验证对自助网关的访问权限:
$ ping -c 4 172.16.1.1
3、验证访问互联网:
$ ping -c 4 openstack.org
1.1.1.4.2.3. 远程访问该实例
1、在提供商虚拟网络上创建一个浮动IP地址:
$ openstack floating ip create provider
2、将浮动IP地址与实例相关联:
$ openstack server add floating ip selfservice-instance 203.0.113.104
3、检查您的浮动IP地址的状态:
$ openstack server list
4、通过控制器节点或提供商物理网络上的任何主机通过浮动IP地址验证与实例的连接:
$ ping -c 4 203.0.113.104
5、使用SSH从控制器节点或提供商物理网络上的任何主机访问您的实例:
$ ssh [email protected]