本文主要是介绍项目六 OpenStack虚拟机实例管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
任务一 理解OpenStack计算服务
1.1 •什么是Nova
1.2 •Nova所用的虚拟化技术
1.3 •Nova的系统架构
1.4 •虚拟机实例化流程
(1)用户执行Nova客户端提供的用于创建虚拟机实例的命令。
(2)API组件将请求转换为AMQP消息之后加入消息队列,通过消息队列调用Conductor组件。
(3)Conductor组件从消息队列中接收到虚拟机实例化请求消息后,进行一些准备工作。
(4)Conductor组件通过消息队列通知Scheduler组件选择一个合适的计算节点来创建虚拟机实例。
(5)Conductor组件从Scheduler组件处得到合适的计算节点信息后,通过消息队列通知Compute组件实现虚拟机实例的创建。
1.5 •验证Nova服务
[root@node-a ~]# systemctl status *nova*.service
1.6 •试用计算服务的API
curl -s -H "X-Auth-Token: $OS_TOKEN" http://localhost:8774/
(1)请求一个demo项目作用域的令牌。
(2)导出环境变量OS_TOKEN,将其值设置为上述操作获取的令牌ID。
(3)尝试通过Nova API v2.1获取当前实例列表。
curl -s -H "X-Auth-Token: $OS_TOKEN" http://localhost:8774/v2.1/servers
任务二 创建和管理虚拟机实例
2.1 •nova-api服务
2.2 •nova-scheduler服务
第1阶段:通过指定的过滤器选择满足条件的计算节点。
第2阶段:对过滤之后的主机列表进行权重计算并排序,选择最优的计算节点来创建虚拟机实例。
2.3 •nova-compute服务
nova-compute与Hypervisor一起实现OpenStack对虚拟机实例生命周期的管理。
2.4 •nova-conductor服务
2.5 •Nova计算服务与Placement放置服务
2.6 •镜像和实例的关系
2.7 •命令行的实例创建用法
openstack keypair list #列出可用的密钥对
openstack server create
(--image <镜像> | --volume <卷>)
--flavor <实例类型>
[--security-group <安全组>]
[--key-name <密钥对>]
[--property <服务器属性>]
[--file <目的文件名=源文件名>]
[--user-data <实例注入文件信息>]
[--availability-zone <域名>]
[--block-device-mapping <块设备映射>]
[--nic <net-id=网络ID,v4-fixed-ip=IP地址,v6-fixed-ip=IPv6地址,port-id=端口UUID,auto,none>]
[--network <网络>]
[--port <端口>]
[--hint <键=值>]
[--config-drive <配置驱动器卷>|True]
[--min <创建实例最小数量>]
[--max <创建实例最大数量>]
[--wait]
<实例名>
2.8 •命令行的实例管理用法
(1)获取列表
openstack server list
(2)查看实例详情
openstack server show [--diagnostics] <实例名或ID >
(3)启动实例
openstack server start <实例名或ID> [<实例名或ID > ...]
(4)暂停实例及恢复
openstack server [pause | unpause] <实例名或ID> [<实例名或ID > ...]
(5)挂起实例及恢复
openstack server [suspend | resume] <实例名或ID> [<实例名或ID > ...]
(6)废弃实例及恢复
openstack server [shelve | unshelve]<实例名或ID> [<实例名或ID > ...]
(7)关闭实例
openstack server stop <实例名或ID> [<实例名或ID > ...]
(8)重启实例
openstack server reboot [--hard | --soft] [--wait] <实例名或ID>
(9)调整实例大小
openstack server resize [--flavor <flavor> | --confirm | --revert] [--wait] <实例名或ID>
(10)删除实例
openstack server delete <实例名或ID> [<实例名或ID > ...]
(11)修改实例
openstack server set [--name <新名称>] [--root-password] [--property <键=值>]
[--state <状态>] <实例名或ID>
2.9 •生成密钥对
openstack keypair create --public-key ~/.ssh/id_rsa.pub demo-pub
openstack keypair list
openstack keypair show demo-key
openstack keypair show --public-key demo-key
任务三 注入元数据实现虚拟机实例个性化配置
3.1 •元数据注入
(1)OpenStack创建一个SSH密钥对。
(2)创建虚拟机实例时选择该SSH密钥对。
(3)用户可以用该SSH密钥对的私钥直接登录实例。
3.2 •元数据服务机制
(1)虚拟机实例通过项目网络将元数据请求发送到neutron-ns-metadata-proxy。
(2)neutron-ns-metadata-proxy通过unix domain socket将请求发送给neutron- metadata-agent。
(3)neutron-metadata-agent通过内部管理网络将请求转发给nova-api-metadata。
(4)获取的元数据被原路返回给发出请求的虚拟机实例。
3.3 •配置驱动器机制
3.4 •向虚拟机实例注入用户数据
#cloud-config #cloud-init会读取它开头的数据,这一行一定要写上
chpasswd:
list: |
root:abc123 #设置root密码
fedora:abc123 #设置默认用户fedora的密码
expire: false #密码不过期
ssh_pwauth: true #启用SSH密码登录(默认只能通过SSH密钥登录)
3.5 •验证元数据服务机制
curl http://169.254.169.254/openstack
curl http://169.254.169.254/openstack/latest
curl http://169.254.169.254/openstack/latest/meta_data.json | python -m json.tool
curl http://169.254.169.254/openstack/latest/user_data
3.6 •验证配置驱动器机制
[fedora@fedora-newvm ~]$ su root #切换到root身份操作
Password:
[root@fedora-newvm fedora]# mkdir -p /mnt/config #创建挂载目录
[root@fedora-newvm fedora]# mount /dev/disk/by-label/config-2 /mnt/config #挂载配置驱动器
mount: /mnt/config: WARNING: device write-protected, mounted read-only.
[root@fedora-newvm fedora]# exit #退出root身份操作
exit
/dev/sr0 on /mnt/config type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048)
[root@fedora-newvm fedora]# ls /mnt/config
ec2 openstack
[root@fedora-newvm fedora]# ls /mnt/config/openstack/latest
meta_data.json network_data.json user_data vendor_data2.json vendor_data.json
任务四 增加一个计算节点
4.1 •Nova的物理部署
4.2 •Nova的部署模式
4.3 •准备双节点OpenStack云平台安装环境
192.168.199.31 node-a node-a.localdomain
192.168.199.32 node-b node-b.localdomain
CONFIG_COMPUTE_HOSTS=192.168.199.31,192.168.199.32
CONFIG_PROVISION_DEMO_FLOATRANGE=192.168.199.0/24
CONFIG_KEYSTONE_ADMIN_PW=ABC123456
CONFIG_KEYSTONE_DEMO_PW=ABC123456
[root@node-a ~]# packstack --answer-file=packstack-answers-addnode.txt
…
Installing:
Clean Up [ DONE ]
Discovering ip protocol version [ DONE ]
root@192.168.199.32's password: #提供第2个节点root账户密码
Setting up ssh keys [ DONE ]
Preparing servers [ DONE ]
…
Copying Puppet modules and manifests [ DONE ]
Applying 192.168.199.31_controller.pp
192.168.199.31_controller.pp: [ DONE ]
Applying 192.168.199.31_network.pp
192.168.199.31_network.pp: [ DONE ]
Applying 192.168.199.31_compute.pp
Applying 192.168.199.32_compute.pp #应用第2个计算节点
192.168.199.31_compute.pp: [ DONE ]
192.168.199.32_compute.pp: [ DONE ]
Applying Puppet manifests [ DONE ]
Finalizing [ DONE ]
最后登入仪表盘进行验证
任务五 迁移虚拟机实例
5.1 •什么是实例冷迁移
5.2 •什么是实例热迁移
5.3 •热迁移命令行用法
openstack server migrate
[--live <目的主机>]
[--shared-migration | --block-migration]
[--disk-overcommit | --no-disk-overcommit]
[--wait]
<实例名或ID>
(1)在两个节点上准备SSH密钥对及其配置文件。
[root@node-a ~]# echo -e 'StrictHostKeyChecking no' > /var/lib/nova/.ssh/config
[root@node-a ~]# scp -r /var/lib/nova/.ssh/config node-b:/var/lib/nova/.ssh
(2)在两个节点上分别执行命令使nova用户可以登录。
usermod -s /bin/bash nova
(3)在两个节点上检查确认nova用户可以不用密码登录到对方节点。
(4)以root用户身份在两个节点上重新启动libvirt和计算服务。
systemctl restart libvirtd.service openstack-nova-compute.service
![](https://img-blog.csdnimg.cn/direct/8629779cd93341d69e899e61d1849376.png)
[root@node-a ~(keystone_admin)]# openstack server migrate c76418b1-24ca- 43b0-8d49-70114d8e41e6
[root@node-a ~(keystone_admin)]# openstack server resize confirm c76418b1-24ca-43b0- 8d49-70114d8e41e6
(1)在每个计算节点上的/etc/nova/nova.conf配置文件中设置server_listen和instances_path参数。
(2)确认每个计算节点具有相同的名称解析配置,以便它们能通过主机名互相访问。
(3)启用root用户免密码SSH功能。
① 在第1个节点上将root用户的SSH公钥加入authorized_keys文件。
② 在第1个节点上将authorized_keys文件复制到第2个节点上。
③ 在第2个节点上将root用户的SSH公钥追加到authorized_keys文件中。
④ 在第2个节点上将authorized_keys文件复制回第一个节点上。
(4)如果启用防火墙,则应允许计算节点之间的libvirt通信。
这篇关于项目六 OpenStack虚拟机实例管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!