OpenStack Ocata 安装 0x05 — Launch instances
source link: https://blog.triplez.cn/posts/openstack-ocata-installation-0x05-launch-instances/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
启动实例#
所有操作均在控制节点上完成。
建立虚拟网络#
网络选项一#
实例将通过提供商的第二层网络连接到外部网络。
admin
以及其他特权用户必须建立该类型网络。
网络拓扑图:
网络连接图:
建立网络与子网#
导入 admin
环境变量:
$ .admin-openrc
建立网络:
$ openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider
建立子网:
$ 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
- 将
START_IP_ADDRESS
和END_IP_ADDRESS
替换为需要的IP
段;- 将
DNS_RESOLVER
替换为需要的DNS
服务器IP
地址;- 将
PROVIDER_NETWORK_GATEWAY
替换为目的网关;- 将
PROVIDER_NETWORK_CIDR
替换为目标网络的CIDR
地址,如192.168.1.0/24
。
网络选项二#
实例将通过 DHCP
分配到内部子网段的 IP
地址,并能够通过 NAT
连接外部网络。外部网络主机需要通过浮动 IP
才能够访问到实例。
在建立自服务网络前必须先建立提供商网络(即网络选项一)。
网络拓扑图:
网络连接图:
建立网络与子网#
导入 demo
用户环境变量:
$ . demo-openrc
建立网络:
$ openstack network create selfservice
建立子网:
$ openstack subnet create --network selfservice --dns-nameserver DNS_RESOLVER --gateway SELFSERVICE_NETWORK_GATEWAY --subnet-range SELFSERVICE_NETWORK_CIDR selfservice
- 将
DNS_RESOLVER
替换为需要的DNS
服务器IP
地址;- 将
SELFSERVICE_NETWORK_GATEWAY
替换为目的网关;- 将
SELFSERVICE_NETWORK_CIDR
替换为目的网络的CIDR
地址,如172.16.1.0/24
。
新建路由#
导入 demo
环境变量:
$ . demo-openrc
新建路由:
$ openstack router create router
设置路由#
将自服务网络中的子网接入路由:
$ neutron router-interface-add router selfservice
设置路由网关:
$ neutron router-gateway-set router provider
测试路由#
导入 admin
环境变量:
$ . admin-openrc
查看网络命名空间:
$ ip netns
应该能看到一个
qrouter
命名空间和两个qdhcp
命名空间。
查看网关 IP
:
$ neutron router-port-list router
测试连通性:
$ ping -c 4 GATEWAY_IP
将
GATEWAY_IP
替换成上一步中输出的IP
。
新建虚拟主机类型#
新建 m1.nano
:
$ openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
新建密钥对#
导入 demo
环境变量:
$ . demo-openrc
生成密钥对:
$ ssh-keygen -q -N ""
将公钥添加至密钥对:
$ openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
查看密钥对:
$ openstack keypair list
添加安全组规则#
允许 ICMP
通信:
$ openstack security group rule create --proto icmp default
若不打开可能会
ping
不通虚拟机。
允许 SSH
连接:
$ openstack security group rule create --proto tcp --dst-port 22 default
启动实例#
导入 demo
用户环境变量:
$ . demo-openrc
查看虚拟主机类型:
$ openstack flavor list
查看镜像状态:
$ openstack image list
查看可用网络:
$ openstack network list
查看安全组信息:
$ openstack security group list
启动基于提供商网络(网络选项一)的实例:
$ openstack server create --flavor m1.nano --image IMAGE_NAME --nic net-id=PROVIDER_NET_ID --security-group default --key-name mykey provider-instance
将
IMAGE_NAME
,PROVIDER_NET_ID
更改为需要选用的配置。
启动基于自服务网络(网络选项二)的实例:
$ openstack server create --flavor m1.nano --image IMAGE_NAME --nic net-id=SELFSERVICE_NET_ID --security-group default --key-name mykey selfservice-instance
将
IMAGE_NAME
,SELFSERVICE_NET_ID
更改为需要选用的配置。
实例无法启动: 错误信息:InvalidURL: Failed to parse: http:controller:9292 错误原因:控制节点
/etc/nova/nova.conf
中[glance]
部分的api_servers
的值有误。 解决方案:补全HTTP
协议头,将http:
改写为http://
。
查看实例启动状态:
$ openstack server list
实例启动错误
status:ERROR
: 错误信息:VirtualInterfaceCreateException: Virtual Interface creation failed 错误原因:libvirt
再启动之前会等待neutron
确认插件情况。这使得libvirt
驱动在真正的虚拟机启动之前使用实例事件机制去等待neutron
的VIF
信息。等待超时后,就会报虚拟机启动错误。 解决方案:在计算节点的/etc/nova/nova.conf
的[DEFAULT]
部分中增加:vif_plugging_is_fatal: false vif_plugging_timeout: 0
然后重新启动
openstack-nova-compute
即可。
登录实例#
通过 VNC 登入#
$ openstack console url show INSTANCE_NAME
将
INSTANCE_NAME
替换成自己的实例名称。
通过给出的 URL
登录实例。
通过命令行登入#
查看网络情况:
$ openstack network list
查看虚拟网络中的命名空间:
$ ip netns
通过指定命名空间执行命令登入:
$ ip netns exec NETNS_NAME ssh USER@SERVER_IP_ADDRESS
需要将
NETNS_NAME
,USER
和SERVER_IP_ADDRESS
更换成目标服务器的信息。
验证网络连通性#
$ ping -c 4 GATEWAY_IP
$ ping -c 4 triplez.cn
将
GATEWAY_IP
改为当前加入网络的网关IP
。
CirrOS
启动卡在 further output written to /dev/ttys0 错误信息:further output written to /dev/ttys0 错误原因:无法获取网卡IP
解决方案:在计算节点上运行sudo systemctl restart openstack-compute neutron-linuxbridge-agent
即可。
实例无法联网: 错误信息:获取不到
IP
错误原因:更改了nova-compute
模块后没有重启计算节点上的neutron-linuxbridge-agent
服务。 解决方案:在计算节点上运行sudo systemctl restart openstack-compute neutron-linuxbridge-agent
即可。
实例无法
ping
通域名: 错误信息:ping: bad address ‘triplez.cn’ 错误原因:初始化的DNS
服务不可用。 解决方案:移除原来子网中设置的DNS
服务器,新增8.8.8.8
和9.9.9.9
公共DNS
服务器。
添加浮动 IP#
仅针对自服务网络(网络选项二)。
生成浮动 IP
:
$ openstack floating ip create provider
将生成的浮动 IP
绑定到目标实例 selfservice-instance
上:
$ openstack server add floating ip selfservice-instance FLOATING_IP
将
FLOATING_IP
改为生成的浮动IP
地址。
在控制节点上验证网络连通性:
$ ping -c 4 FLOATING_IP
将
FLOATING_IP
改为生成的浮动IP
地址。
总结#
启动实例是一个比较综合的工作,需要之前安装的四个基础模块的互相配合才能够如我们预期般运行。OpenStack
本是一个解耦的系统,然而我们在部署时,需要将其重新耦合起来。出问题也是很正常的。还是要有耐心对待,仔细写配置文件,出错看日志文件,相信能够解决大多数问题。
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK