13、启动一个实例

13.1、创建虚拟网络

本次选择私有网络,但是需要先创建provider网络

provider网络是222.222.222.0/24

预分配给虚拟机的IP地址是192.168.111.0/24

13.1.1、创建provider网络

13.1.1.1、在控制节点上,加载 admin 凭证来获取管理员能执行的命令访问权限:

$ . admin-openrc


13.1.1.2、创建网络:

$ neutron net-create --shared --provider:physical_network provider --provider:network_type flat provider

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例


13.1.1.3、在网络上创建一个子网

$ neutron subnet-create --name provider \

  --allocation-pool start=222.222.222.10,end=222.222.222.100 \

  --dns-nameserver 222.222.222.2 --gateway 222.222.222.2  provider 222.222.222.0/24

Openstack Mitaka安装手顺(13)启动一个实例_openstack_02


************************************分割线************************************

第一次写dhcp地址范围,开始地址是192.168.111.1,这个是网关啊,怎么可能执行成功呢,于是报错如下图所示:

Openstack Mitaka安装手顺(13)启动一个实例_openstack_03


另外第一次做的时候没有弄清楚provider网络的概念,直接给内网192.168.111.0网段了。

其实应该是222.222.222.0这个网段,这是可以连接外网的网段!

************************************分割线************************************


13.1.2、创建自服务网络

如果你选择网络选项2,你还可以创建一个私有网络通过NAT连接到物理网络设施。这个网络包括一个DHCP服务器为实例分配IP地址。

在这个网络上的实例可以自动连接到外部网络如互联网。不过,从互联网这样的外部网络访问实例需要配置 :浮动IP。

demo 或者其他非管理员用户也可以创建这个网络,因为它只在 `demo``项目中提供对实例的访问。


13.1.2.1、在控制节点上,获得 admin 凭证来获取只有管理员能执行的命令的访问权限:

$ . demo-openrc


13.1.2.2、创建网络

$ neutron net-create testnet

Openstack Mitaka安装手顺(13)启动一个实例_openstack_04    


13.1.2.3、在网络上创建一个子网:

$ neutron subnet-create --name testnet \

--dns-nameserver 222.222.222.2 \

--gateway 192.168.111.1 testnet 192.168.111.0/24

Openstack Mitaka安装手顺(13)启动一个实例_openstack_05


13.1.3、创建路由

13.1.3.1、在控制节点上,加载 admin 凭证来获取管理员能执行的命令访问权限:

$ . admin-openrc


13.1.3.2、添加’ router:external ‘ 到’ provider’ 网络

$ neutron net-update provider --router:external

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_06


13.1.3.3、加载 demo 证书获得用户能执行的命令访问权限:

$ . demo-openrc


13.1.3.4、创建路由:

$ neutron router-create testrouter

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_07


13.1.3.5、给路由器添加一个私网子网的接口:

$ neutron router-interface-add testrouter testnet

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_08


13.1.3.6、给路由器设置公有网络的网关:

$ neutron router-gateway-set testrouter provider

Openstack Mitaka安装手顺(13)启动一个实例_openstack_09


13.1.4、验证操作

13.1.4.1、在控制节点上,加载 admin 凭证来获取管理员能执行的命令访问权限:

$ . admin-openrc


13.1.4.2、列出网络命名空间。你应该可以看到一个’ qrouter ‘命名空间和两个’qdhcp ‘ 命名空间

$ ip netns

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_10


13.1.4.3、列出路由器上的端口来确定公网网关的IP 地址:

$ neutron router-port-list testrouter

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_11


13.1.4.4、从控制节点或任意公共物理网络上的节点Ping这个IP地址:

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_12


13.2、生成一个键值对

大部分云镜像支持公共密钥认证而不是传统的密码认证。在启动实例前,你必须添加一个公共密钥到计算服务。

13.2.1、导入租户``demo``的凭证

$ . demo-openrc


13.2.2、生成和添加秘钥对:

$ ssh-keygen -q -N ""

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_13


$ openstack keypair create --public-key ~/.ssh/id_rsa.pub testkey

Openstack Mitaka安装手顺(13)启动一个实例_openstack_14

注解:另外,你可以跳过执行 ssh-keygen 命令而使用已存在的公钥。


13.2.3、验证公钥的添加:

$ openstack keypair list

Openstack Mitaka安装手顺(13)启动一个实例_openstack_15


13.3、增加安全组规则

添加规则到 default 安全组。


13.3.1、允许 ICMP (ping):

$ openstack security group rule create --proto icmp default

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_16


13.3.2、允许安全 shell (SSH) 的访问:

$ openstack security group rule create --proto tcp --dst-port 22 default

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_17


Openstack Mitaka安装手顺(13)启动一个实例_openstack_18

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_19


13.4、在provider网络上创建实例

(在dashboard上图形界面操作)

Openstack Mitaka安装手顺(13)启动一个实例_openstack_20


Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_21

注解:之前已经在KVM中创建了rhel6.7虚拟机映像并通过dashboard上传,这里就直接选择那个5G的映像源来创建卷。


Openstack Mitaka安装手顺(13)启动一个实例_openstack_22

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_23


Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_24

Openstack Mitaka安装手顺(13)启动一个实例_openstack_25

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_26

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_27

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_28

注解:14是本次生成的实例,12是之前直接使用qcow2文件启动的实例。


打开控制台:

Openstack Mitaka安装手顺(13)启动一个实例_openstack_29


默认分配的是222.222.222.14,那么就给实例配置这个IP地址:

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_30

这里发现一个小问题,使用命令查看网卡配置是eth1网卡,但是配置文件是eth0,不知道是系统问题还是openstack的问题。


直接修改配置文件名称都改为eth1就可以使用了,同时把MAC地址注释掉

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_31


重启network服务查看IP

Openstack Mitaka安装手顺(13)启动一个实例_openstack_32


从本机直接访问14实例

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_33

OK,provider网络创建实例成功!


13.5、在私有网络上创建实例

13.5.1、确定实例选项

启动一台实例,您必须至少指定一个类型、镜像名称、网络、安全组、密钥和实例名称。


13.5.1.1、在控制节点上,获得 admin 凭证来获取只有管理员能执行的命令的访问权限:

$ . demo-openrc


13.5.1.2、一个实例指定了虚拟机资源的大致分配,包括处理器、内存和存储。

列出可用类型:

$ openstack flavor list

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_34

之前已经修改了一个m1.tiny的flavor,接下来就用这个flavor创建实例

注解:您也可以以 ID 引用类型。


13.5.1.3、列出可用镜像:

$ openstack image list

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_35

注解:rhel6.7为dashboard上传的镜像


13.5.1.4、列出可用网络:

$ openstack network list

Openstack Mitaka安装手顺(13)启动一个实例_openstack_36


13.5.1.5、列出可用的安全组:

$ openstack security group list

Openstack Mitaka安装手顺(13)启动一个实例_openstack_37


13.5.1.6、启动实例

$ openstack server create --flavor m1.tiny --image rhel6.7 \

  --nic net-id=e4dfadf6-952d-4c07-889e-3ba8b1077176 --security-group default \

  --key-name testkey test-instance

Openstack Mitaka安装手顺(13)启动一个实例_openstack_38

注解:如果没有创建公钥,命令行中的key-name也可以不写,如下面案例所示:

openstack server create --flavor win.small --image rhel6.8 \

  --nic net-id=d4844e04-0bc6-4616-8df9-4702dc33dcd4 --security-group default test-instance

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_39


13.5.1.7、检查实例的状态:

$ openstack server list

Openstack Mitaka安装手顺(13)启动一个实例_openstack_40


13.5.2、使用虚拟控制台访问实例

13.5.2.1、获取你实例的 Virtual Network Computing (VNC) 会话URL并从web浏览器访问它:

$ openstack console url show test-instance

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_41

http://controller:6080/vnc_auto.html?token=5d28cfec-1f9a-4aa0-83ad-ba7901dfcf52


Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_42

13.5.2.2、验证能否ping通私有网络的网关:

修改IP地址为前面分配的192.168.111.4,修改完毕后就可以ping通私网网关和互联网了:

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_43

Openstack Mitaka安装手顺(13)启动一个实例_openstack_44


Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_45


Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_46

不知道计算节点无法Ping通私网网关是否正常,控制节点是可以Ping通的。

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_47


13.5.3、验证能否远程访问实例

13.5.3.1、在公有网络上创建浮动IP地址池:

$ openstack ip floating create provider

Openstack Mitaka安装手顺(13)启动一个实例_openstack_48

注解:之前使用admin创建过浮动IP,但是和demo无法通用


13.5.3.2、为实例分配浮动IP:

$ openstack ip floating add 222.222.222.13 test-instance

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_49


13.5.3.3、检查这个浮动 IP 地址的状态:

$ openstack server list

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_50


13.5.3.4、验证控制节点或者其他公有网络上的主机通过浮动IP地址ping通实例:

Openstack Mitaka安装手顺(13)启动一个实例_openstack_51

Openstack Mitaka安装手顺(13)启动一个实例_openstack_52


13.5.3.5、在控制节点或其他公有网络上的主机使用 SSH远程访问实例:

(未解决问题:控制节点和计算节点的防火墙配置还是差端口,只要任意一个节点开启防火墙,私网实例就无法Ping通私网网关)

Openstack Mitaka安装手顺(13)启动一个实例_openstack创建实例_53

注解1:实例上只能看到192.168.111.4的IP地址,但是在222网段的主机上可以通过222.222.222.13这个IP地址访问到这台服务器

注解2:demo用户创建的实例可以使用这种方法在222网段的主机上访问实例,实测admin用户创建的实例用这个方法行不通!

            其他用户创建的实例未测试是否可以,但是社区官方文档说明除了admin用户其他用户是可以的这么操作的!

Openstack Mitaka安装手顺(13)启动一个实例_openstack_54

总结:细心点、耐心点按照社区文档完全可以0基础搭建一套两节点的Openstack环境!

OK!2020年3月27日,断断续续一个月所有openstack部署测试全部完成!现在已经有信心部署一个小型化的openstack平台了!