创建provider网络
controller节点
创建一个provider 网络,网络类型为 external
对于 provider 网络来说,实例通过 2 层(桥接网络)连接到提供商网 络。
参数说明:--share: 允许所有项目都可以使用该网络;--external: 类型为连通外部的虚拟网络;--provider-physical-network: 指定网络的提供者为provider,由ml2_conf.ini文件的flflat_networks定义;--provider-network-type flat: 映射到主机的网卡ens34,由linuxbridge_agent.ini文件的physical_interface_mappings定义;
source admin-openrc
openstack network create --share --external \
--provider-physical-network provider \
--provider-network-type flat provider
查看网络
openstack network list
为 provider 网络指定子网的范围(该 provider 网络包括一个 DHCP 服务器为实例提供IP 地址)
参数说明:--network: 指定网络名称;--allocation-pool: 指定分配的地址池,start设定起始地址,end设置结束地址;--dns-nameserver: 指定域名服务器,可以用8.8.4.4(google), 223.5.5.5(阿里云)等;--gateway: 指定网关,设定宿主机的网络网关;--subnet-range: 指定子网范围;
openstack subnet create --network provider \
--allocation-pool start=192.168.0.150,end=192.168.0.160
\
--dns-nameserver 223.5.5.5 --gateway 192.168.0.254 \
--subnet-range 192.168.0.0/24 provider
这个根据自己的ip网段来设置,网关也是根据自己的来设置
查看网络
openstack network list
创建VM实例规格flavor
创建一个名为m1.nano的flflavor参数说明:--id: 规格ID;--vcpus: cpu数量;--ram: 内存大小,单位Mb;--disk: 磁盘空间大小,单位Gb;
openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
配置密钥
openstack 支持用户使用公钥认证的方式创建实例,而不是传统的密码认证。 在启动实例之前,必须向计算服务添加公钥。
#切换到普通用户(以普通租户身份创建实例)
source demo-openrc
#生成密钥
ssh-keygen -q -N ""
Enter file in which to save the key (/root/.ssh/id_rsa): [回车]
#创建密钥到openstack中,并指定密钥名称mykey
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
添加安全组规则
在安全组规则中默认拒绝远程访问实例,所以需要放行安全组规则,允许ICMP(ping)和 SSH 访问
查看安全组
source demo-openrc
openstack security group list
添加icmp规则
openstack security group rule create --proto icmp default
查看安全组规则
openstack security group rule list
provider网络启动实例
要启动实例,至少必须指定 flflavor 、 glance 名称、网络、安全组 (ID) 、密钥和实例名称。
#切换到普通用户
source demo-openrc
#查看实例可用的规则
openstack flavor list
#查看实例可用的安全组
openstack security group list
#查看实例可用的镜像
openstack image list
#查看实例可用的网络
openstack network list
创建实例
参数说明:--flavor: 指定实例使用的规则;--image: 指定虚拟机使用的镜像文件;--nic: 指定虚拟网卡使用的网络,net-id=网络ID;--security-group: 指定虚拟机使用的安全组;--key-name: 指定虚拟机使用的秘钥对名称;
提示:net-id=网络ID,要指定为openstack network list查出来的 ID
source demo-openrc
openstack server create --flavor m1.nano --image cirros \
--nic net-id=75e80634-9703-4297-adc8-36c442511464 --
security-group default \
--key-name mykey provider-instance
openstack server create --flavor m1.nano --image cirros \
--nic net-id=01f538b6-b217-432c-a025-d9732c1eb167 --
security-group default \
--key-name mykey provider-instance
查看实例
openstack server list
提示:如果创建失败,查看相关日志信息:controller 节点 nova-api 日志: grep -i ERROR /var/log/nova/nova-api.logcompute 节点 nova-compute 日志: grep -i ERROR /var/log/nova/nova-compute.log
在计算节点查看实例
compute节点
virsh list
访问实例
此时的实例默认无法访问,应为该实例的网段地址我们并没有在物理节点配置过对应的网关,所以先按照官方提供的方案,先获取虚拟机的VNC 地址
controller节点
查看实例 VNC 地址
openstack console url show provider-instance
通过浏览器访问
提示:如果在 windows 没有配置 controller 的域名解析,可以把地址栏中的controller 换成 IP 地址
http://192.168.0.50:6080/vnc_auto.html?path=%3Ftoken%3Dbadaed18-b6cf-45d2-b452-5f884bde1a33
查看是实例没有正常创建,卡在 grub 系统引导这里了, 这种情况是因为我使用的vmware 虚机虚拟磁盘格式和驱动程序的问题,导致创建的实例无法正常的启动,我们需要做如下操作
#查看镜像
source admin-openrc
openstack image list
提示: VMware 环境需通过下边命令修改磁盘的类型为 IDE (物理机不需要)
openstack image set \ --property hw_disk_bus=ide \ --property hw_vif_model=e1000 \ 240c1c8a-656a-40cd-9023-2bf4712db89c#将镜像ID替换为查询出来的ID
删除当前实例source demo-openrc openstack server delete provider-instance
重新创建实例#查看网络ID openstack network list #创建实例(提示:net-id=网络ID) source demo-openrc openstack server create --flavor m1.nano --image cirros \ --nic net-id=75e80634-9703-4297-adc8-36c442511464 -- security-group default \ --key-name mykey provider-instance #查看实例 openstack server list
查看实例
openstack server list
查看实例VNC地址
openstack console url show provider-instance
通过浏览器访问:将地址中 controller 名称替换为管理节点的 IPhttp://192.168.0.50:6080/vnc_auto.html?path=%3Ftoken%3De3180067-9304-4d51-b544-61fb031ba9af
根据提示输入用户名和密码就可以进入系统了用户名: cirros密码: gocubsgo测试是否可以 ping 通,是否可以通过 ssh 连接
OpenStack环境搭建完成了,网络可以正常创建,实例也能够正常的创建,这就证明这套私有云平台搭建完成了