参考官网:点击
使用OpenStack计算服务来托管和管理云计算系统。OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现。OpenStack计算组件请求OpenStack Identity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。
OpenStack计算服务由下列组件所构成:
nova-network
服务的多主机模式下使用。nova-compute
服务:nova-scheduler
服务:nova-conductor
模块:nova-compute
服务与数据库之间。它排除了由nova-compute
服务对云数据库的直接访问。nova-conductor模块可以水平扩展。但是,不要将它部署在运行nova-compute
服务的主机节点上。nova-cert
模块:euca-bundle-image
生成证书。nova
客户端:RabbitMQ
__ , 以及如Zero MQ
__等AMQP消息队列。接下来将描述如何在控制节点上安装和配置 Compute 服务,即 nova。安装和配置 Compute 服务前,必须创建数据库服务的凭据以及 API endpoints。为了创建数据库,必须完成这些步骤。
用数据库连接客户端以 root 用户连接到数据库服务器;
创建 nova_api 和 nova 数据库;
对数据库进行正确的授权。
要创建服务证书,完成这些步骤:
创建 nova 用户:
给 nova 用户添加 admin 角色;
创建 nova 服务实体
创建 Compute 服务 API 端点(public),这一组件的端口为8774
创建 Compute 服务 API 端点(内部)
创建 Compute 服务 API 端点(admin)
安装软件包
编辑/etc/nova/nova.conf
文件
在[DEFAULT]
部分,只启用计算和元数据API
在[api_database]
和[database]
部分,配置数据库的连接:
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问
指定消息队列的主机、连接的用户名和密码
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问(keystone)
在 [DEFAULT 部分,配置my_ip
来使用控制节点的管理接口的IP 地址(eth0的地址);
使用 Networking 服务
在[vnc]
部分,配置VNC代理使用控制节点的管理接口IP地址
在 [glance] 区域,配置镜像服务 API 的位置
在 [oslo_concurrency] 部分,配置锁路径
同步Compute 数据库,忽略输出中任何不推荐使用的信息。
启动 Compute 服务并将其设置为随系统启动
列出服务
rhel7.6虚拟机,至少2G的内存;
双网卡 eth0: 172.25.36.6 访问Horizon使用,eth1:激活但不分配ip,neutron使用,云主机访问外网用;
禁用selinux和firewalld;
虚拟机的cpu需要支持kvm虚拟化,CPU 设为直通模式( host-passthrough 是为了虚拟机里支持 kvm 硬件虚拟化)
修改server6的主机名,作为计算节点
进行域名解析
网卡配置文件如下
激活eth1网卡
安装时间同步服务
使用Chrony简单配置服务器之间的时间同步
同步宿主机的时间
启动并自启chrony服务;
查看是否成功
配置yum源
升级包
接下来描述如何在计算节点上安装并配置计算服务;
安装软件包(计算节点来启动云主机,不需要连接数据库(为了安全))
编辑/etc/nova/nova.conf
文件
在[DEFAULT]
和 [oslo_messaging_rabbit]部分,配置RabbitMQ
消息队列的连接
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问
在 [DEFAULT] 部分,配置 my_ip 选项;
使用 Networking 服务:
在[vnc]
部分,启用并配置远程控制台访问(监听所有接口);
服务器组件监听所有的 IP 地址,而代理组件仅仅监听计算节点管理网络接口的 IP 地址;
基本的 URL ,可以使用 web 浏览器访问位于该计算节点上实例的远程控制台的位置。
在 [glance] 区域,配置镜像服务 API 的位置
在 [oslo_concurrency] 部分,配置锁路径
使用如下命令,查看计算节点是否支持虚拟机的硬件加速:
$ egrep -c ‘(vmx|svm)’ /proc/cpuinfo
如果这个命令返回了 one or greater 的值,那么该计算节点支持硬件加速且不需要额外的配置;
如果这个命令返回了 zero 值,那么该计算节点不支持硬件加速。必须配置 libvirt 来使用 QEMU 去代替 KVM
在 /etc/nova/nova.conf 文件的 [libvirt] 区域做出如下的编辑:
启动计算服务及其依赖,并将其配置为随系统自动启动
列出服务组件,以验证是否成功启动并注册了每个进程;
前三个组件在控制节点(server5),最后一个组件在计算节点(server6)
OpenStack Networking(neutron),允许创建、插入接口设备,这些设备由其他的OpenStack服务管理。插件式的实现可以容纳不同的网络设备和软件,为OpenStack架构与部署提供了灵活性。
它包含下列组件:
OpenStack网络主要和OpenStack计算交互,以提供网络连接到它的实例。
在配置OpenStack网络(neutron)服务之前,必须为其创建一个数据库,服务凭证和API端点,完成下面的步骤以创建数据库。
用数据库连接客户端以 root 用户连接到数据库服务器;
创建neutron
数据库;
对neutron
数据库授予合适的访问权限;
要创建服务证书,完成这些步骤:
创建neutron
用户
添加admin
角色到neutron
用户;
创建neutron
服务实体
创建neutron
服务实体(public),这一组件的端口为9696
创建neutron
服务实体(内部)
创建neutron
服务实体(admin)
我们首先使用公共网络架构来部署网络服务。
安装组件
Networking 服务器组件的配置包括数据库、认证机制、消息队列、拓扑变化通知和插件。
编辑/etc/neutron/neutron.conf
文件
在 [database] 部分,配置数据库访问
在[DEFAULT]
部分,启用ML2插件并禁用其他插件
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列的连接
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问
在[DEFAULT]
和[nova]
部分,配置网络服务来通知计算节点的网络拓扑变化
在 [oslo_concurrency] 部分,配置锁路径
接下来配置 Modular Layer 2 (ML2) 插件,ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施。
编辑/etc/neutron/plugins/ml2/ml2_conf.ini
文件
在[ml2]
部分,启用flat和VLAN网络
禁用私有网络,启用Linuxbridge机制,启用端口安全扩展驱动
在[ml2_type_flat]
部分,配置公共虚拟网络为flat网络
在 [securitygroup]
部分,启用 ipset 增加安全组规则的高效性
接下来,配置Linuxbridge代理,Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini
文件
在[linux_bridge]
部分,将公共虚拟网络和公共物理网络接口对应起来(虚拟主机使用eth1桥接进行通信)
在[vxlan]
部分,禁止VXLAN覆盖网络
在 [securitygroup]
部分,启用安全组并配置 Linuxbridge iptables firewall driver:
接下来配置DHCP代理(这个组件用来给云主机分配ip);
编辑/etc/neutron/dhcp_agent.ini
文件
在[DEFAULT]
部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
接下来配置元数据代理,The :term:metadata agent
负责提供配置信息,例如:访问实例的凭证。
编辑/etc/neutron/metadata_agent.ini
文件
在[DEFAULT]
部分,配置元数据主机以及共享密码
为计算节点配置网络服务,编辑/etc/nova/nova.conf
文件
在[neutron]
部分,配置访问参数,启用元数据代理并设置密码
网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
。如果超链接不存在,使用下面的命令创建它;
同步数据库
重启计算API 服务;
当系统启动时,启动 Networking 服务并配置它启动(三个代理);
对于两种网络选项。
安装组件
编辑/etc/neutron/neutron.conf
文件
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列的连接
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问(keystone认证)
[oslo_concurrency] 部分,配置锁路径
配置Linuxbridge代理,Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini
文件
在[linux_bridge]
部分,将公共虚拟网络和公共物理网络接口对应起来(计算节点上的eth1接口作为云主机的通信)
在[vxlan]
部分,禁止VXLAN覆盖网络
在 [securitygroup]
部分,启用安全组并配置 Linuxbridge iptables firewall driver:
接下来为计算节点配置网络服务。
编辑/etc/nova/nova.conf
文件
在[neutron]
部分,配置访问参数
重启计算服务(由于更改了配置文件);
启动Linuxbridge代理并配置它开机自启动:
列出加载的扩展来验证neutron-server
进程是否正常启动
使用公共网络,列出代理以验证启动 neutron 代理是否成功(可以看到控制节点启用了三个代理,计算节点启用了一个代理)
点击提供者网络
创建网络(名为provider);
–shared
选项允许所有项目使用虚拟网络
在网络上创建一个子网(名为provider)
openstack自带的flavor其实就是云主机的类型
创建m1.nano规格的主机,默认的最小规格的主机需要512 MB内存。对于环境中计算节点内存不足4 GB的,推荐创建只需要64 MB的m1.nano
规格的主机。若单纯为了测试的目的,应该使用m1.nano
规格的主机来加载CirrOS镜像;
注意:id不能冲突,1个虚拟化cpu,64M内存,一个磁盘,名为m1.nano
生成一个键值对:大部分云镜像支持公共密钥认证而不是传统的密码认证。在启动实例前,必须添加一个公共密钥到计算服务。
首先导入demo
的凭证(切到普通用户操作);
生成和添加秘钥对(将公钥上传到openstack)
验证公钥的添加
增加安全组规则:默认情况下,
default
安全组适用于所有实例并且包括拒绝远程访问实例的防火墙规则。对诸如CirrOS这样的Linux镜像,应该至少允许ICMP (ping) 和安全shell(SSH)规则。
添加规则到 default 安全组:首先允许 ICMP (ping)
其次允许安全 shell (SSH) 的访问
启动一台实例,必须至少指定一个类型、镜像名称、网络、安全组、密钥和实例名称。
列出可用类型(可以看到m1.nano);
列出可用镜像;
列出可用网络;
列出可用的安全组(default 安全组)
由于我们的镜像版本太高,因此云主机启动有问题。接下来将镜像删除,重新下载源镜像
选择0.3.4版本镜像
使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它
确认镜像的上传并验证属性
列出可用网络
列出可用类型
启动实例(云主机名为provider-instance)
检查实例的状态;
使用虚拟控制台访问实例:获取 Virtual Network Computing (VNC) 会话URL并从web浏览器访问它:
宿主机进行解析
此时,网页访问上面的URL,去访问云主机
使用cirros登陆,密码为cubswin:);
可以看到云主机成功搭建,分到的ip如下
但此时不能上网
真机打开转发功能
此时云主机可以上网(云主机与虚拟机桥接)
top查看:top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况
计算节点安装如下包(云主机其实就是一个虚拟机)
可以看到计算节点上的云主机的相应信息(云主机的网络接口为eth1)
测试:控制节点远程连接云主机