Q版 创建实例
前言
本文创建必要的虚拟网络以支持启动实例。一、简介
根据官方文档提供的创建实例的时候提供了两种网络,一种是provider,一种是self-service。
这两种的网络的区别就是,
- provider网络是从外网路由器的地址池中拿出来一部分地址自己来使用,这样就导致外界路由器的地址池变少了,我们创建provider使用的IP地址是不能在放到池子里面的。创建实例的时候分配到的地址就是外网路由器地址池中的地址,这样就可以直接连接外网了。
但是外网的地址池是有限度的,你这里只能是使用一部分,无法满足你创建大量虚机的请求,所以就有了self-service网络。
- self-server网络使用的是自己指定的网段,我们可以自己设置网段、开始地址和结束地址,都是可以自己指定的,IP地址随便划分,没有provider网络那种,需要参考外网路由地址池的范围,但是他是没法连接外网的,
但是我们有provider网络,我们可以指定provider网络为路由通过他来进行外网访问。
二、创建实例
1、创建网络
在启动实例之前,必须创建必要的虚拟网络基础设施。
provider网络
对于provider网络来说,实例使用通过第2层(桥接/切换)连接到物理网络基础设施的提供者(外部)网络。 该网络包括一个DHCP服务器,为实例提供IP地址。 管理员或其他特权用户必须创建此网络,因为它直接连接到物理网络基础设施。
创建provider网络的时候我们需要从外网的地址池中拿出来一部分,所以需要确定外网的地址池范围,从中找一段没有使用的就好,
source admin-openrc
openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider
–share选项允许所有项目使用虚拟网络。
–external选项将虚拟网络定义为外部网络。
默认值是内部的。
-provider-physical-net work provider and -provider-net work-type flat 选项是我们在neutron服务配置文件中制定过的内容
命令模板:
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
用外网DHCP地址池网络地址替换PROVIDER_NETWORK_CIDR。
将START_IP_ADDRESS和END_IP_ADDRESS替换为要为实例分配的子网中范围的第一个和最后一个IP地址。 此范围不能包括任何现有的活动IP地址。
用DNS解析器的IP地址替换DNS_RESOLVER。 在大多数情况下,您可以从主机上的/etc/resolv.conf文件中使用一个。
将PROVIDER_NETWORK_GATEWAY替换为提供者网络上的网关IP地址,通常是.1IP地址。
openstack subnet create --network provider --allocation-pool start=192.168.223.10,end=192.168.223.30 --dns-nameserver 192.168.223.2 --gateway 192.168.223.2 --subnet-range 192.168.223.0/24 provider
self-service网络
如果选择了self-service,你还可以创建一个自助(私有)网络,通过NAT连接到物理网络基础设施。 该网络包括一个DHCP服务器,为实例提供IP地址。 这个网络上的实例可以自动访问外部网络,如Internet。 然而,从外部网络(如互联网)访问这个网络上的实例需要一个浮动的IP地址。 演示或其他非特权用户可以创建此网络,因为它只提供与演示项目中实例的连接。
openstack network create selfservice
命令示例:
openstack subnet create --network selfservice \
--dns-nameserver DNS_RESOLVER --gateway SELFSERVICE_NETWORK_GATEWAY \
--subnet-range SELFSERVICE_NETWORK_CIDR selfservice
用DNS解析器的IP地址替换DNS_RESOLVER。 在大多数情况下,您可以从主机上的/etc/resolv.conf文件中使用一个。
将SELFSERVICE_NETWORK_GATEWAY替换为您想在自助服务网络上使用的网关,通常是.1IP地址。
将SELFSERVICE_NETWORK_CIDR替换为您想在自助服务网络上使用的子网。 您可以使用任意值,
openstack subnet create --network selfservice --dns-nameserver 8.8.4.4 --gateway 172.16.1.1 --subnet-range 172.16.1.0/24 selfservice
创建router
self-service网络使用通常执行双向NAT的虚拟路由器连接到provider网络。 每个路由器包含至少一个self-service网络上的接口和prov网络上的网关。 prov网络必须包括路由器:外部选项,以使self-service路由器能够使用它与Internet等外部网络连接。
管理员或其他特权用户必须在网络创建期间包含此选项或稍后添加它。在这种情况下,路由器:外部选项是通过在创建prov网络时使用-外部参数来设置的。
创建路由器——》在路由器上添加provider网络子网作为接口——》 在路由器上添加provider网络子网作为接口——》 在路由器上的self-service网络上设置网关,
source admin-openrc
openstack router create router
openstack router add subnet router selfservice
openstack router set router --external-gateway provider
检查下网络创建是否正常:
列出网络名称空间。 您应该看到一个qrouter名称空间和两个qdhcp名称空间。
ip netns
列出路由器上的端口,以确定提供者网络上的网关IP地址:
openstack port list --router router
ping -c3 192.168.223.15
在为您的环境创建适当的网络之后,您可以继续准备环境以启动实例。
2、创建flavor
最小的默认flavor每个实例消耗512MB内存。 对于包含小于4GB内存的计算节点的环境,我们建议创建每个实例只需要64MB的m1.nano flavor。 只使用这种flavor与CirrOS图像的测试目的。
openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
3、 生成密钥对
大多数公有云支持公钥认证,而不是传统的密码认证。 在启动实例之前,必须向计算服务添加公钥。
生成密钥对并添加公钥——》 验证密钥对的添加,
ssh-keygen -q -N ""
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
openstack keypair list
4、增加安全组规则
默认情况下,默认安全组适用于所有实例,并包括防火墙规则,这些规则拒绝远程访问实例。 对于像CirrOS这样的Linux图像,我们建议至少允许ICMP(ping)和安全shell(SSH)。
默认安全组添加规则:
- 允许ICMP(ping):
openstack security group rule create --proto icmp default
- 允许安装shell(SSH)访问:
openstack security group rule create --proto tcp --dst-port 22 default
5、启动一个实例
确定实例选项
flavor指定包含处理器、内存和存储的虚拟资源分配配置文件——》 列出可用的安全组——》可用图像列表——》可用网络列表,
source admin-openrc
openstack flavor list
openstack security group list
openstack image list
openstack network list
provider网络启动一个实例
要启动实例,至少必须指定flavor、glance名称、网络、安全组、密钥和实例名称。
openstack server create --flavor m1.nano --image cirros \
--nic net-id=PROVIDER_NET_ID --security-group default \
--key-name mykey provider-instance
用provider网络的ID替换PROVIDER_NET_ID。
source admin-openrc
openstack server create --flavor m1.nano --image cirros --nic net-id=c4481ab2-2067-4e3d-b138-73802de650cb --security-group 539fd7bb-4e17-4b2d-b038-0567ddcd5f08 --key-name mykey provider
到现在为止,你的虚机只要能够成功创建时active状态的,那么你的OpenStack环境中安装的各个服务就是没有问题的,但是我们在controller上ping实例的地址是不同的,这是为什么?
openstack server list
ping 192.168.223.11
我们访问下虚机,看下是什么情况,可以通过dashboard控制台访问也可以通过console的方式访问,
使用虚拟控制台访问实例——》 获取实例的虚拟网络计算(VNC)会话URL,并从Web浏览器访问它:
openstack console url show provider
注意:如果Web浏览器运行在无法解析控制器主机名的主机上,则可以将控制器替换为控制器节点上管理接口的IP地址。
查看是实例没有正常创建,卡在grub系统引导这里了,
这种情况是因为我使用的vmware虚机虚拟磁盘格式和驱动程序的问题,导致创建的实例无法正常的启动,我们需要做如下操作
openstack image list
openstack image set --property hw_disk_bus=ide --property hw_vif_model=e1000 c2243d54-393f-4a5b-9a62-a1f7d7f9958d
openstack server list
openstack server delete 30d2b8b2-8eb6-492f-9047-92337a5b9215
重新创建下实例,
openstack server create --flavor m1.nano --image cirros --nic net-id=c4481ab2-2067-4e3d-b138-73802de650cb --security-group 539fd7bb-4e17-4b2d-b038-0567ddcd5f08 --key-name mykey provider
openstack server list
openstack console url show 65df4618-0e7c-4cc6-a891-2810b0fb27a6
这时候我们通过console访问就可以看到实例正常启动了,根据提示输入用户名和密码就可以进入系统了,
登录进来之后可以看到192.168.223.0/24网段的地址已经配置上来了,ping百度也是可以通的,证明外网是通的,
这时候我们在controller节点上ping分配给实例的地址就可以发现是能够ping通的,
这样我们就可以在controller节点上登录创建的实例了,
ssh cirros@192.168.223.23
self-service网络启动一个实例
要启动实例,至少必须指定flavor、glance名称、网络、安全组、密钥和实例名称。
openstack network list
命令示例:
openstack server create --flavor m1.nano --image cirros \
--nic net-id=SELFSERVICE_NET_ID --security-group default \
--key-name mykey selfservice-instance
将SELFSERVICE_NET_ID替换为self-service网络的ID。
openstack server create --flavor m1.nano --image cirros --nic net-id=266a4294-0b9e-41ec-98be-3f66c5abb186 --security-group 539fd7bb-4e17-4b2d-b038-0567ddcd5f08 --key-name mykey self-service
获取实例的虚拟网络计算(VNC)会话URL,并从Web浏览器访问它:
openstack server list
openstack console url show self-service
用户名:cirros
密码:gocubsgo
我们可以通过之前创建网络的时候,创建的路由在controller上进行访问,
ip netns
ip netns exec qrouter-52f66683-6088-4128-897d-bd8f4c17dd2d ip a
ip netns exec qrouter-52f66683-6088-4128-897d-bd8f4c17dd2d ping -c3 172.16.1.4
ip netns exec qrouter-52f66683-6088-4128-897d-bd8f4c17dd2d ssh cirros@172.16.1.4
我们还可以在provider虚拟网络上创建一个浮动IP地址:
openstack floating ip create provider
openstack server add floating ip self-service 192.168.223.14
openstack server list
ping -c3 192.168.223.14
ssh cirros@192.168.223.14
总结:
到现在为止,OpenStack环境搭建完成了,网络可以正常创建,实例也能够正常的创建,这就证明我们这套简化版的私有云平台搭建完成了,
整个环境的安装还是非常的费劲的,因为是以官方文档为参照来进行的安装,所以在网络服务neutron的时候按照官方文档顺序部署好,在后面创建实例的时候,创建provider网络的实例是划分不到地址的,这就非常尴尬了,然后进行各种百度,参考网上各种前辈的安装过程,终于实现provider网络的正常使用,
还有就是镜像哪里,我下载的是网上的镜像,创建完成后虚机就卡在grub引导哪里了,这就非常不爽,离成功的最后一步了,来了这么一个坎,然后就是上网按照报错进行百度,好歹是找到了,然后顺利的安装。
现在终于是成功了,感觉还是很爽的!!!
最后,你只要按照我的文档安装,保证你可以成功部署好一套简略的OpenStack私有云环境!!!