云计算概述
基础是虚拟化、前身是分布式计算
定义
美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互
云的愿景: 使用计算资源使用网络资源向使用自来水一样按需自由有偿
云计算的分类
4 种 部署模型 和 3 种 服务模式
-
私有云。云端资源只给一个单位组织内的用户使用,
这是私有云的核心特征。而云端的所有权、日程管理和操作的主体到底属于谁并没有严格的规定,可能是本单位,也可能是第三方机构,还可能是二者的联合。云端可能位于本单位内部,也可能托管在其他地方。 - 社区云。云端资源专门给固定的几个单位内的用户使用,而这些单位对云端具有相同的诉求(如安全要求、云端使命、规章制度、合规性要求等)。云端的所有权、日常管理的操作的主体可能是本社区内的一个或多个单位,也可能是社区外的第三方机构,还可能是二者的联合。云端可能部署在本地,也可能部署与他处。
- 公有云。云端资源开发给社会公众使用。云端的所有权、日常管理和操作的主体可以是一个商业组织、学术机构、政府部门或者它们其中的几个联合。云端可能部署在本地,也可能部署于其他地方,比如中山市民公共云的云端可能就建在中山,也可能建在深圳。
-
混合云。混合云由两个或两个以上不同类型的云(私有云、社区云、公共云)组成,它们各自独立,但用标准的或专有的技术将它们组合起点,而这些技术能实现云之间的数据和应用程序的平滑流转。由多个相同类型的云组合在一起,混合云属于多云的一种。私有云和公共云构成的混合云是目前最流行的——当私有云资源短暂性需求过大(称为云爆发,Cloud Bursting)时,自动租赁公共云资源来平抑私有云资源的需求峰值。例如,网店在节假日期间点击量巨大,这时就会临时使用公共云资源的应急。
云计算的3种服务模式如下: - 软件即服务(Software as a Service,SaaS)。云服务提供商把IT系通中的应用软件层作为服务租出去,消费者不用自己安装应用软件,直接使用即可,这进一步降低了云服务消费者的技术门槛。微软365
- 平台即服务(Platform as a Service,Paas)。云服务提供商把IT系统中的平台软件层作为服务租出去,消费者自己开发或者安装程序,并运行程序。新浪云
- 基础设施及服务(Infrastructure as a Service,Iaas)。云服务提供商把IT系统的基础设施层作为服务租出去,由消费者自己安装操作系统、中间件、数据库和应用程序。阿里云、腾讯云、AWS
Openstack
Openstack介绍
- OpenStack 是一个美国国家航天局和RackSpace 合作研发的,以Apache 许可证授权,并且是一个自由软件
- OpensStack 是一个云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些工作,可以使用openstack来管理我们一个数据中心大量资源池。它里面包含了很多子项目
- OpenStack 通过一个通过web界面提供资源管理,通过一个仪表盘管理整个数据中心的计算存储资源等
组件说明
核心组件及对应的功能服务
服务 项目名称 描述
Compute (计算服务) Nova 负责实例生命周期的管理,计算资源的单位。对Hypervisor进行屏蔽,支持多种虚拟化技术(红帽默认为KVM),支持横向扩展
Image Service (镜像服务) Glance 提供虚拟机镜像模板的注册与管理,将做好的操作系统拷贝为镜像模板,在创建虚拟机时直接使用,可支持多格式的镜像
Object Storage (对象存储) Swift 为OpenStack提供基于云的弹性存储,支持集群无单点故障
Block Storage (块存储) Cinder 负责为运行实例提供持久的块存储设备,可进行方便的扩展,按需付费,支持多种后端存储,即为云主机提供附加云盘
Networking (网络服务) Neutron 负责虚拟网络的管理,为实例创建网络的拓扑结构。是面向租户的网络管理,可以自己定义自己的网络,各个租户之间互不影响
Dashboard (仪表板) Horizon 提供一个Web管理界面,与OpenStack底层服务进行交互
ldentity Service (认证服务) Keystone 类似于LDAP服务,对用户、租户和角色、服务进行认证与授权,且支持多认证机制
Orchestration (编排) Heat 自动化部署应用,自动化管理应用的整个生命周期,主要用于Paas(平台即服务)
Telemetry (监控) Ceilometer 用于度量、监控和控制数据资源的集中来源,为OpenStack用户提供记账途径
Database Service (数据库服务) Trove 为用户在Openstack的环境提供可扩展和可靠的关系型和非关系型数据库引擎服务,主要用于帮助用户在复杂管理时进行资源的隔离,方便进行自动化管理操作
Data Processing (数据处理) Sahara Sahara项目旨在使用用户能够在Openstack平台上便于创建和管理Hadoop以及其他计算框架集群,实现类似AWS的EMR(Amazon Elastic MapReduce service)服务
安装结构说明
- 操作系统:CentOS7
- OpenStack版本:juno
- 关闭防火墙和SELinux
- Controller Node:1 processor,2GB memory,and 5GB storage
- Network Node:1 processor,512MB memory,and 5GB storage
- Compute Node:1 processor,2GB memory,and 10GB storage
controller | 2核、1.5G内存、1网卡、100G磁盘 |
---|---|
compute | MAX U 、6G内存、2网卡、100G磁盘 |
neutron | 2核、1.5G内存、3网卡、20G磁盘 |
block | 2核、1G内存、1网卡、20G磁盘,100G磁盘 |
环境准备:
修改网络,添加三块仅主机模式网卡,ip配置如下,并关闭他们的dhcp自动分配
按照资源配置情况搭建创建四个虚拟机
系统环境搭建
- 使用serv-u软件配置局域网yum源
- 配置ip地址
这里以neutron节点配置为例,后续三台根据ip地址规划配置即可
#第一块网卡,M
[root@localhost ~]$ vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
HWADDR=00:0C:29:39:D1:AD
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.222.6
NETMASK=255.255.255.0
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=90796e1d-5ede-490f-b491-1872775ca2fe
ONBOOT=yes
#第二块网卡,I
[root@localhost ~]$ vi /etc/sysconfig/network-scripts/ifcfg-eno33554960
HWADDR=00:0C:29:39:D1:B7
TYPE=Ethernet
BOOTPROTO=static
IPADDR=172.16.0.6
NETMASK=255.255.255.0
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno33554960
UUID=749903af-5252-438f-b57b-e465f747805e
ONBOOT=yes
#第三块网卡,E
[root@localhost ~]$ vi /etc/sysconfig/network-scripts/ifcfg-eno50332184
HWADDR=00:0C:29:39:D1:B7
TYPE=Ethernet
BOOTPROTO=static
IPADDR=100.100.100.10
NETMASK=255.255.255.0
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno33554960
UUID=749903af-5252-438f-b57b-e465f747805e
ONBOOT=yes
[root@localhost ~]$ systemctl restart network
- 关闭NetworkManager、防火墙和selinux并设置主机名。
[root@localhost ~]$ systemctl stop NetworkManager && systemctl disable NetworkManager
[root@localhost ~]$ systemctl stop firewalld && systemctl disable firewalld
[root@localhost ~]$ sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
#注意,这里每台主机不一致
[root@localhost ~]$ hostnamectl set-hostname network.nice.com
[root@localhost ~]$ vi /etc/hosts
192.168.222.10 compute.nice.com
192.168.222.6 network.nice.com
192.168.222.5 controller.nice.com
192.168.222.20 block.nice.com
- 配置OpenStack的局域网yum源
[root@localhost ~]$ cd /etc/yum.repos.d/
[root@localhost ~]$ mkdir back && mv * back/
[root@localhost ~]$ vi ftp.repo
[base]
name=base
baseurl=ftp://a:a@192.168.222.1/7/os/x86_64/ #这里的地址为serv-u软件显示的
enabled=1
gpgcheck=0
[updates]
name=updates
baseurl=ftp://a:a@192.168.222.1/7/updates/x86_64/
enabled=1
gpgcheck=0
[extras]
name=extras
baseurl=ftp://a:a@192.168.222.1/7/extras/x86_64/
enabled=1
gpgcheck=0
[epel]
name=epel
baseurl=ftp://a:a@192.168.222.1/7/epel
enabled=1
gpgcheck=0
[rdo]
name=rdo
baseurl=ftp://a:a@192.168.222.1/7/rdo
enabled=1
gpgcheck=0
[root@localhost ~]$ yum clean all && yum makecache
- 安装 OpenStack 预备包
#1、安装 yum-plugin-priorities 包,防止高优先级软件被低优先级软件覆盖
[root@localhost ~]$ yum -y install yum-plugin-priorities
#注意:2、安装 epel 扩展 YUM 源 ,局域网yum源无需操作此步骤
[root@localhost ~]$ yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
#注意:3、安装 OpenStack YUM 源 ,局域网yum源无需操作此步骤
[root@localhost ~]$ yum -y install http://rdo.fedorapeople.org/openstack-juno/rdo-release-juno.rpm
#4、更新操作系统
[root@localhost ~]$ yum upgrade -y
#注意:5、安装 OpenStack-selinux 自动管理 Selinux ,关闭selinux无需此操作
[root@localhost ~]$ yum -y install openstack-selinux
保存快照,作为基础环境。其他三台主机ip地址和主机名不通,其他环境和之前配置保持一致
- 配置时间同步服务器
controller作为ntp server,其它作为ntp客户端
controller节点配置:
[root@localhost ~]$ yum -y install ntp
[root@localhost ~]$ vim /etc/ntp.conf
restrict 192.168.222.0 mask 255.255.255.0 nomodify notrap
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10
[root@localhost ~]$ systemctl start ntpd && systemctl enable ntpd
其它三个节点配置:
[root@localhost ~]$ yum install ntpdate -y
[root@localhost ~]$ ntpdate -u controller.nice.com
#编写计划任务,每一分钟同步时间
[root@localhost ~]$ crontab -e
*/1 * * * * /sbin/ntpdate -u controller.nice.com &> /dev/null
[root@localhost ~]$ systemctl restart crond && systemctl enable crond
- 在controller节点安装数据库
[root@localhost ~]$ yum install -y mariadb mariadb-server MySQL-python vim
#配置数据库文件,只需要在[mysqld]下面添加即可
[root@localhost ~]$ vim /etc/my.cnf
[mysqld]
bind-address = 192.168.222.5
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
#启动数据库并做初始化
[root@localhost ~]$ systemctl start mariadb && systemctl enable mariadb
[root@localhost ~]$ mysql_secure_installation
#密码我输入的是root,然后一路y
- 安装Message server服务,协调操作和状态信息服务。利用RabbitMQ这个开源的消息代理软件
消息队列,可以有效的保障组件之间的沟通,不会出现什么数据损坏的一些故障
常见的消息代理软件:RabbitMQ、Qpid、ZeroMQ
在生产环境中,应该将 mysql集群 和 RabbitMQ的高可用 另外分出来,而不上集中在controller节点中
[root@localhost ~]$ yum -y install rabbitmq-server
[root@localhost ~]$ systemctl start rabbitmq-server
[root@localhost ~]$ systemctl enable rabbitmq-server
#可以修改rabbitmq的用户名和密码,默认都是guest可以通过下列命令修改
[root@localhost ~]$ rabbitmqctl change_password guest new_passwd
Openstack 组件
1)Keyston – 认证服务
组件说明
什么是keystone?
Keystone是OpehStack Identity Service的项目名称,是一个负责身份管理与授权的组件;
主要功能: 实现用户的身份认证
,基于角色的权限管理
,及openstack其他组件的访问地址
和安全策略管理
为什么需要keystone?
Keystone项目的主要目的:是给整个openstack的各个组件(nova, cinder, glance… )提供一个统一的验证方式
Keystone 的功能
- 用户管理(AAA服务,做认证的)
Account 账户
Authentication 身份认证
Authorization 授权 - 服务目录管理(告诉用户到哪里访问服务)
C/S结构,通过http协议,利用API接口—>端点(URL)
认证服务中的关键字
User (用户) :一个人、 系统或服务在OpenStack中的数字表示。已经登录的用户分配令牌环以访问资源。用户可以直接分配给特定的租户,就像隶属于每个组
Credentials (凭证): 用于确认用户身份的数据。例如:用户名和密码,用户名和API key,
或由认证服务提供的身份验证令牌
Authentication (验证) :确认用户 身份的过程
Token (令牌) :一个用于访问OpenStack API和资源的字母数字字符串。一个临牌可以随时撤销,并且持续一段时间有效
Tenant (租户):一个组织或孤立资源的容器。租户和可以组织或隔离认证对象。根据服务运营的要求,一个租户可以映射到客户、账户、组织或项目
Service (服务) :OpenStack服务, 例如计算服务(nova) ,对象存储服务(swift) ,或镜像服务(glance)。它提供了一个或多个端点,供用户访问资源和执行操作
Endpoint(端点): 一个用于访问某个服务的可以通过网络进行访问的地址,通常是一个URL地址
Role (角色): 定制化的包含特定用户权限和特权的权限集合
Keystone Client ( keystone命令行工具) :Keystone的命令行工具。 通过该工具可以创建用户,角色,服务和端点等
名词解释
用户:张三
凭证:身份证
验证:验证身份证
令牌:房卡
租户:宾馆
服务:住宿、餐饮
端点:路径
角色:VIP等级
组件之间的三张图
keystone的安装配置
keystone命令大全
controller节点上安装和配置认证服务
配置先决条件
1、创建认证服务数据库
登录mysql数据库
[root@localhost ~]$ mysql -uroot -p123
创建keystone数据库
MariaDB [(none)]> CREATE DATABASE keystone;
创建keystone数据库用户,使其可以对keystone数据库有完全控制权限
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; #给keystone用户的所有表授权,本地权限localhost,授权为keystone用户,密码是KEYSTONE_DBPASS
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS'; ##给keystone用户的所有表授权,权限为所有ip
2、利用openssl,生成一个随机值作为管理令牌在初始配置(token)
[root@localhost ~]$ openssl rand -hex 10:
d384cbf8eaf060e988ca
安装并配置认证服务组件(keystone的服务包和客户端工具)
[root@localhost ~]$ yum -y install openstack-keystone python-keystoneclient
接着编辑/etc/keystone/keyston.conf文件并作下列修改:
[root@localhost ~]$ vim /etc/keystone/keystone.conf
修改[DEFAULT]小节,定义初始管理令牌
[DEFAULT]
admin_token=d384cbf8eaf060e988ca
修改[database]小节,配置数据库访问
[database]
connection=mysql://keystone:KEYSTONE_DBPASS@controller.nice.com/keystone
数据库类型 数据库用户名 数据库密码 登录地址 连接的数据库名
修改[token]小节,配置UUID提供者和SQL驱动
[token]
provider=keystone.token.providers.uuid.Provider
driver=keystone.token.persistence.backends.sql.Token
(可选)开启详细日志,协助故障排除
[DEFAULT]
verbose=True
常见通用证书的密钥,并限制相关文件的访问权限
[root@localhost ~]$ keystone-manage pki_setup --keystone-user keystone --keystone-group keystone 设置keystone用户,keystone组
[root@localhost ~]$ chown -R keystone:keystone /var/log/keystone #日志存放目录
[root@localhost ~]$ chown -R keystone:keystone /etc/keystone/ssl #密钥存放目录
[root@localhost ~]$ chmod -R o-rwx /etc/keystone/ssl #密钥存放目录将其他人的rwd去掉,这样更安全
初始化keystone数据库
[root@localhost ~]$ su -s /bin/sh -c "keystone-manage db_sync" keystone
[root@localhost ~]$ mysql -uroot -p123 #再登录mysql
use keystone;
show tables;
#如果没有表,则需要重新授权目录!!!!!!!
#5、启动identity服务并设置开机启动
[root@localhost ~]$ systemctl start openstack-keystone.service
[root@localhost ~]$ systemctl enable openstack-keystone.service
安装后的优化配置
默认情况下,服务器会无限存储到期的令牌,在资源有限的情况下会严重影响服务器性能。需要用定时任务,每小时删除过期的令牌
[root@localhost ~]$ (crontab -l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage token_flush>/var/log/keystone/keystone-tokenflush.log 2>&1'>> /var/spool/cron/keystone
创建tenants(租户),(users)用户和(roles)角色
Ⅰ配置管理员令牌
[root@localhost ~]$ export OS_SERVICE_TOKEN=d384cbf8eaf060e988ca
Ⅱ配置端点
[root@localhost ~]$ export OS_SERVICE_ENDPOINT=http://controller.nice.com:35357/v2.0
Ⅲ创建租户用户和角色
1、创建admin租户
2、创建admin用户
3、创建admin角色
[root@controller ~]$ keystone tenant-create --name admin --description "Admin Tenant" #admin租户
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Admin Tenant |
| enabled | True |
| id | 31d523850e094426a734400e585b5abc |
| name | admin |
+-------------+----------------------------------+
您在 /var/spool/mail/root 中有邮件
[root@controller ~]$ keystone user-create --name admin --pass ADMIN_PASS --email 12345@163.com #admin用户
+----------+----------------------------------+
| Property | Value |
+----------+----------------------------------+
| email | 12345@163.com |
| enabled | True |
| id | 715301487afb455ab7eddb6faf372d75 |
| name | admin |
| username | admin |
+----------+----------------------------------+
[root@controller ~]$ keystone role-create --name admin #admin角色
+----------+----------------------------------+
| Property | Value |
+----------+----------------------------------+
| id | c16d5a2784574da6aabd0a1526c77a23 |
| name | admin |
+----------+----------------------------------+
4、添加admin租户和用户到admin角色
[root@localhost ~]$ keystone user-role-add --tenant admin --user admin --role admin
5、创建用于dashboard访问的“_member_”角色(dashboard是B/S访问结构的主体程序,这里拥有member角色就可以访问仪表盘套件)
[root@localhost ~]$ keystone role-create --name _member_
6、添加admin租户和用户到_member_角色(将admin租户、用户链接到_member_角色,则他们都可以访问仪表盘套件)
[root@localhost ~]$ keystone user-role-add --tenant admin --user admin --role _member_
Ⅳ创建一个用于演示的demo租户和用户
1、创建demo租户
[root@localhost ~]$ keystone tenant-create --name demo --description "Demo Tenant"
2、创建的demo用户
[root@localhost ~]$ keystone user-create --name demo --pass DEMO_PASS --email demo@163.com
3、添加demo租户和用户链接到_member_角色(同样能访问仪表盘套件)
[root@localhost ~]$ keystone user-role-add --tenant demo --user demo --role _member_
Ⅴ OpenStack服务业需要一个租户,用户和角色和其他服务进行交互。因此我们创建一个service的租户。任何一个OpenStack服务都要和它关联
[root@localhost ~]$ keystone tenant-create --name service --description "Service Tenant"
创建服务实体和API端点(实体:keystone能够提供服务的名称,API端点:提供这个服务的路径)
#1、在OpenStack环境中,identity服务管理一个服务目录,并使用这个目录在OpenStack环境中定位其他服务。
#为identity服务创建一个服务实体名为keystone,类型为认证,描述为openstack的认证
[root@localhost ~]$ keystone service-create --name keystone --type identity --description "OpenStackIdentity"
#2、OpenStack环境中,identity服务管理目录以及与服务相关API断点。服务使用这个目录来沟通其他服务。
#OpenStack为每个服务提供了三个API端点:admin(管理),internal(内部),public(公共)为identity服务#创建API端点
[root@localhost ~]$ keystone endpoint-create --service-id $(keystone service-list | awk '/ identity / {print $2}') --publicurl http://controller.nice.com:5000/v2.0 --internalurl http://controller.nice.com:5000/v2.0 --adminurl http://controller.nice.com:35357/v2.0 --region regionOne
确认操作
#1、删除OS_SERVICE_TOKEN 和OS_SERVICE_ENDPOINT 临时变量
[root@localhost ~]$ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
#2、使用admin租户和用户请求认证令牌(租户名称、用户名称、密码、URL路径请求token)
[root@localhost ~]$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller.nice.com:35357/v2.0 token-get
#3、以admin租户和用户的身份查看租户列表
[root@localhost ~]$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller.nice.com:35357/v2.0 tenant-list
#4、以admin租户和用户的身份查看用户列表
[root@localhost ~]$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller.nice.com:35357/v2.0 user-list
#5、以admin租户和用户的身份查看角色列表
[root@localhost ~]$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller.nice.com:35357/v2.0 role-list
#6、以demo租户和用户的身份请求认证令牌(这个是允许的)
[root@localhost ~]$ keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS --os-auth-url http://controller.nice.com:35357/v2.0 token-get
#7、以demo租户和用户的身份查看用户列表(这个不允许)
[root@localhost ~]$ keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS --os-auth-url http://controller.nice.com:35357/v2.0 user-list
创建OpenStack客户端环境脚本
为了方便使用上面的环境变量和命令选项,我们为admin和demo租户和用户创建环境脚本。(后面会用到)
- 编辑admin-openrc.sh
[root@localhost ~]$ vim admin-openrc.sh
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller.nice.com:35357/v2.0
- 编辑demo-openrc.sh
[root@localhost ~]$ vim demo-openrc.sh
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller.nice.com:5000/v2.0
加载客户端环境脚本
[root@localhost ~]$ source admin-openrc.sh
2)Glance – 镜像服务
(1)服务功能
- OpenStack镜像服务( glance )使用户能够发现、注册并检索虚拟机镜像( . img文件)
- 它提供了一个REST API接口,使用户可以查询虚拟机镜像元数据和检索一个实际的镜像文件
- 不论是简单的文件系统还是OpenStack对象存储,你都可以通过镜像服务在不同的位置存储虚拟机镜像
- 默认情况下,上传的虚拟机镜像存储路径为
/var/lib/glance/images/
(2)组件说明
- glance-api: 一个用来接收镜像发现、检索和存储的API接口
- glance-registry: 用来存储、处理和检索镜像的元数据。元数据包含对象的大小和类型。glance-registry是一个OpenStack镜像服务使用的内部服务,不要透露给用户。
-
Database: 用于存储镜像的元数据的大小、类型,支持大多数数据库,一般选择
MySQL
或SQLite
- Storage repository for image files: 镜像文件的存储仓库。支持包括普通文件系统在内的各种存储类型。包括对象存储、块设备、HTTP、Amazon S3,但有些存储只支持只读访问
(3)基本概念
Image Identifiers:就是Image URL,格式:< Glance Server Location >/images/ < ID >全局唯一
- Image Status(镜像状态):
Queued: 镜像ID已被保留,镜像还没有上传
Saving: 镜像正在被上传
Active: 镜像可以使用了
Killed: 镜像损坏或者不可用
Deleted: 镜像被删除 - Disk Format(磁盘格式):
Raw: This is unstructured disk image format(二进制存储的方式,类似图片存储。优点后期访问速度块,缺点不支持动态扩容。创建磁盘前期耗时比较大)
Vhd: VMWare、 XEN、Microsoft、 VirtualBox
Vndk: common format
Vdi: VirtualBox、 QEMU emulator
ISO: optical disc
Qcow2: QEMU emulator
Aki: Amazon Kernel Image
Ari: Amazon ramdisk image
Ami: Amazon machine image - Container Format(容器格式)
Bare
Ovf
Aki
Ami
Ari
组件工作流
Glance的安装配置
在controller节点上安装配置Glance服务
(1)配置先决条件
1、创建数据库
以数据库管理员root的身份登录数据库
[root@localhost ~]$ mysql -uroot -p123
2.创建glance数据库
MariaDB [(none)]> CREATE DATABASE glance;
3.创建数据库用户glance,并授予其对glance数据库的管理权限
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
4、启用admin环境脚本
[root@localhost ~]$ source admin-openrc.sh
创建认证服务凭证,完成下列步骤:
a.创建glance用户
[root@localhost ~]$ keystone user-create --name glance --pass GLANCE_PASS
b.将glance用户链接到service租户和admin角色
[root@localhost ~]$ keystone user-role-add --user glance --tenant service --role admin
c.创建glance服务
[root@localhost ~]$ keystone service-create --name glance --type image --description "OpenStackImage Service"
5、为OpenStack镜像服务创建认证服务端点
[root@localhost ~]$ keystone endpoint-create --service-id $(keystone service-list | awk '/ image / {print $2}') --publicurl http://controller.nice.com:9292 --internalurl http://controller.nice.com:9292 --adminurl http://controller.nice.com:9292 --region regionOne
(2)安装并配置镜像服务组件
1、安装软件包
[root@localhost ~]$ yum -y install openstack-glance python-glanceclient
2、编辑/etc/glance/glance-api.conf文件,并完成下列操作
a.修改[database]小节,配置数据库连接:
[root@localhost ~]$ vim /etc/glance/glance-api.conf
[database]
connection=mysql://glance:GLANCE_DBPASS@controller.nice.com/glance
b.修改[keystone_authtoken]和[paste_deploy]小节,配置认证服务访问:
[keystone_authtoken]
auth_uri=http://controller.nice.com:5000/v2.0
identity_uri=http://controller.nice.com:35357
admin_tenant_name=service
admin_user=glance
admin_password=GLANCE_PASS
[paste_deploy]
flavor=keystone
c.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
verbose=True
3、编辑/etc/glance/glance-registry.con文件,并完成下列配置:
[root@localhost ~]$ vim /etc/glance/glance-registry.conf
a.在[database]小节中配置数据库连接:
[database]
connection=mysql://glance:GLANCE_DBPASS@controller.nice.com/glance
b.在[keystone_authtoken]和[paste_deploy]小节中配置认证服务访问
[keystone_authtoken]
auth_uri=http://controller.nice.com:5000/v2.0
identity_uri=http://controller.nice.com:35357
admin_tenant_name=service
admin_user=glance
admin_password=GLANCE_PASS
[paste_deploy]
flavor=keystone
c.在[glance_store]小节中配置本地文件系统存储和镜像文件的存放路径(新建)
[glance_store]
default_store=file
filesystem_store_datadir=/var/lib/glance/images/
d.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
verbose=True
4、初始化镜像服务的数据库
[root@localhost ~]$ su -s /bin/sh -c "glance-manage db_sync" glance
如果glance数据库中数据为空,则可能是/etc/glance/glance-api.conf、 /etc/glance/glance-registry.conf文件的注释未去掉
(3)启动镜像服务并设置开机自动启动:
[root@localhost ~]$ systemctl enable openstack-glance-api.service openstack-glance-registry.service
[root@localhost ~]$ systemctl start openstack-glance-api.service openstack-glance-registry.service
(4)上传镜像
cirros-0.3.3-x86_64-disk.img
#下载lrzsz工具直接在xshell上传文件
[root@localhost ~]$ yum -y install lrzsz
glance image-create相关选项含义:
--name <NAME> 镜像名称。
--file <FILE> 要上传文件及路径。
--disk-format <DISK_FORMAT> 镜像的磁盘格式。可以支持:ami, ari, aki, vhd, vmdk, raw, qcow2, vdi,iso格式。
--container-format <CONTAINER_FORMAT> 镜像容器格式。可以支持:ami, ari, aki, bare, ovf格式。
--is-public {True,False} 镜像是否可以被公共访问。
--progress 显示上传进度。
#上传镜像
[root@localhost ~]$ glance image-create --name "cirros-0.3.3-x86_64" --file cirros-0.3.3-x86_64-disk.img --disk-format qcow2 --container-format bare --is-public True --progress
[=============================>] 100%
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | 133eae9fb1c98f45894a4e60d8736619 |
| container_format | bare |
| created_at | 2022-12-04T02:57:29 |
| deleted | False |
| deleted_at | None |
| disk_format | qcow2 |
| id | 53e9d26f-7fca-4965-87e7-3722d6ed12ce |
| is_public | True |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros-0.3.3-x86_64 |
| owner | 31d523850e094426a734400e585b5abc |
| protected | False |
| size | 13200896 |
| status | active |
| updated_at | 2022-12-04T02:57:29 |
| virtual_size | None |
+------------------+--------------------------------------+
[root@controller ~]$ glance image-list
+--------------------------------------+---------------------+-------------+------------------+----------+--------+
| ID | Name | Disk Format | Container Format | Size | Status |
+--------------------------------------+---------------------+-------------+------------------+----------+--------+
| 53e9d26f-7fca-4965-87e7-3722d6ed12ce | cirros-0.3.3-x86_64 | qcow2 | bare | 13200896 | active |(镜像可用)
+--------------------------------------+---------------------+-------------+------------------+----------+--------+
#删除临时目录
[root@localhost ~]$ rm -f /tmp/images
3)Nova – 计算服务
Nova是什么?
- Openstack是由Rackspace 和NASA 共同开发的云计算平台
- 类似于Amazon EC2和S3的云基础架构服务
- Nova在Openstack 中提供云计算服务(虚拟化管理服务)
- 超过140家企业及18470 为开发者参与开发
组件说明
(1)组件说明-API
- nova-api service 接收并响应终端用户计算API调用。该服务支持OpenStack 计算API,AmazonEC2和特殊的管理特权API(对于整个nova api来说,其实不仅能管理当前的openstack环境,还允许接口接入别的管理平台)
- nova-api-metadata service 接受从实例元数据发来的请求。该服务通常与nova-network服务在安装多主机模式下运行(相当于代理节点,应该安装在每台compute节点上)
(2)组件说明-Core
-
nova-compute service 一个守护进程,
通过虚拟化层API接口创建和终止虚拟机实例
。例如: XenAPI for XenServer/XCP,libvirt for KVM or QEMU,VMwareAPI for Vmware -
nova-scheduler service 从队列中获取虚拟机实例请求,并确认由哪台计算服务运行该虚拟机
(负责负载调度)
- nova-conductor module 协调nova-compute 服务和database 之间的交互数据。避免nova-compute服务直接访问云数据库。不要将该模块部署在nova-compute 运行的节点上(相当于此组件是部署在 nova-compute 与 database 之间,通过代理的方式,两者访问)
(3)组件说明-Networking
-
nova- network worker daemon 类似于nova- compute服务,接受来自队列的网络任务和操控网络。比如这只
网卡桥接或改变iptables规则
-
nova-consoleauth daemon
在控制台代理提供用户授权令牌
- nova- novneproxy daemon 提供了一个通过VNC连接来访问运行的虚拟机实例的代理。支持基于浏览器的novnc客户端
- nova-spicehtml5proxy daemon 提供了-一个通过spice 连接来访问运行的虚拟机实例的代理。支持基于浏览器的HTML5客户端
- nova-xvpnvncproxy daemon 提供了一个通过VNC连接来访问运行的虚拟机实例的代理。支持OpenStack-specific Java 客户端
- nova-cert daemon x509证书
(4)组件说明-other
- nova-objectstore daemon 一个Amazon S3的接口,用于将Amazon S3的镜像注册到OpenStackeuca2ools client 用于兼容于Amazon E2接口的命令行工具
- nova client nova命令行工具
- The queue 在进程之间传递消息的中心。通常使用RabbitMQ
-
SQLdatabase保存云基础设置建立和运行时的状态信息
(5)组件的位置顺序
(2)Nova内部沟通
(3)Nova同其他组件沟通
(4)虚拟机启动流程
Nova的安装配置
请在前面实验的基础上继续做以下操作
controller节点配置
(1)配置先决条件
1、创建数据库,完成下列步骤:
a.使用数据库管理员root登录数据库
[root@localhost ~]$ mysql -uroot -p123
b.创建nova数据库
MariaDB [(none)]> CREATE DATABASE nova;
c.创建数据库用户nova,并授予nova用户对nova数据库的完全控制权限。
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
2、执行admin环境脚本
[root@localhost ~]$ source admin-openrc.sh
3、在认证服务中创建计算服务的认证信息。完成下列步骤:
a.创建nova用户
[root@localhost ~]$ keystone user-create --name nova --pass NOVA_PASS
b.链接nova用户到service租户和admin角色
[root@localhost ~]$ keystone user-role-add --user nova --tenant service --role admin
c.创建nova服务
[root@localhost ~]$ keystone service-create --name nova --type compute --description "OpenStackCompute"
4、创建计算服务端点
[root@localhost ~]$ keystone endpoint-create --service-id $(keystone service-list | awk '/ compute / {print $2}') --publicurl http://controller.nice.com:8774/v2/%\(tenant_id\)s --internalurl http://controller.nice.com:8774/v2/%\(tenant_id\)s --adminurl http://controller.nice.com:8774/v2/%\(tenant_id\)s --region regionOne
(2)安装和配置计算控制组件
1、安装软件包
[root@localhost ~]$ yum install -y openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient
2、编辑/etc/nova/nova.conf文件,完成如下操作:
[root@localhost ~]$ vim /etc/nova/nova.conf
a.编辑[database]小节,配置数据库访问:没找到直接创建
[database]
connection=mysql://nova:NOVA_DBPASS@controller.nice.com/nova
b.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问:
[DEFAULT]
rpc_backend=rabbit
rabbit_host=controller.nice.com
rabbit_password=guest
c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务
[DEFAULT]
auth_strategy=keystone
[keystone_authtoken]
auth_uri=http://controller.nice.com:5000/v2.0 #外部api接口
identity_uri=http://controller.nice.com:35357 #内部api接口
admin_tenant_name=service #指定租户名称
admin_user=nova
admin_password=NOVA_PASS
d.编辑[DEFAULT]小节,配置my_ip选项为controller节点的管理接口ip:
[DEFAULT]
my_ip=192.168.222.5 #管理网络的IP
e.编辑[DEFAULT]小节,配置VNCdialing服务的使用controller节点的管理接口ip:
[DEFAULT]
vncserver_listen=192.168.222.5
vncserver_proxyclient_address=192.168.222.5
f.编辑[glance]小节,配置镜像服务器的位置:
[glance]
host=controller.nice.com
g.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
verbose=True
3、初始化计算数据库
[root@localhost ~]$ su -s /bin/sh -c "nova-manage db sync" nova
(3)启动计算服务并配置开机自动启动
[root@localhost ~]$ systemctl enable openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
[root@localhost ~]$ systemctl start openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
[root@controller ~]$ nova service-list
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
| 1 | nova-consoleauth | controller.nice.com | internal | enabled | up | 2022-12-04T04:38:24.000000 | - |
| 2 | nova-conductor | controller.nice.com | internal | enabled | up | 2022-12-04T04:38:24.000000 | - |
| 3 | nova-scheduler | controller.nice.com | internal | enabled | up | 2022-12-04T04:38:24.000000 | - |
| 4 | nova-cert | controller.nice.com | internal | enabled | up | 2022-12-04T04:38:24.000000 | - |
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
compute节点配置
(1)安装并配置计算虚拟化组件
1、安装软件包
[root@localhost ~]$ yum -y install openstack-nova-compute sysfsutils
2、编辑/etc/nova/nova.conf文件,完成下列步骤:
[root@localhost ~]$ vim /etc/nova/nova.conf
a.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问:
[DEFAULT]
rpc_backend=rabbit
rabbit_host=controller.nice.com
rabbit_password=guest
b.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问:
[DEFAULT]
auth_strategy=keystone
[keystone_authtoken]
auth_uri=http://controller.nice.com:5000/v2.0
identity_uri=http://controller.nice.com:35357
admin_tenant_name=service
admin_user=nova
admin_password=NOVA_PASS
c.编辑[DEFAULT]小节,配置my_ip配置项:
[DEFAULT]
my_ip=192.168.222.10
d.编辑[DEFAULT]小节,开启并配置远程控制台访问
[DEFAULT]
vnc_enabled=True
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=192.168.222.10
novncproxy_base_url=http://controller.nice.com:6080/vnc_auto.html
e.编辑[glance]小节,配置镜像服务器位置
[glance]
host=controller.nice.com
f.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
verbose=True
(2)确认你的计算节点是否支持硬件虚拟化
[root@localhost ~]$ egrep -c '(vmx|svm)' /proc/cpuinfo
#如果返回值>=1,则说明你的计算节点硬件支持虚拟化,无需额外配置。
#如果返回值=0,则活命你的计算节点硬件不支持虚拟化,你必须配置libvirt由使用KVM改为QEMU。
要想在虚拟机再实现虚拟化,需要手动编辑虚拟机设置(需关机进行)
(3)在/etc/nova/nova.conf文件中编辑[libvirt]小节
[root@localhost ~]$ vim /etc/nova/nova.conf
[libvirt]
virt_type=qemu
(4)启动计算服务及依赖服务,并设置他们开机自动启动。
[root@localhost ~]$ systemctl enable libvirtd.service openstack-nova-compute.service
[root@localhost ~]$ systemctl start libvirtd.service openstack-nova-compute.service
(5)再去controller节点上查看是否多出一个compute节点(如果有多个compute节点,可以与上面同样配置,此时下表也会出现多个节点)
[root@controller ~]$ nova service-list
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
| 1 | nova-consoleauth | controller.nice.com | internal | enabled | up | 2022-12-04T05:14:55.000000 | - |
| 2 | nova-conductor | controller.nice.com | internal | enabled | up | 2022-12-04T05:14:55.000000 | - |
| 3 | nova-scheduler | controller.nice.com | internal | enabled | up | 2022-12-04T05:14:55.000000 | - |
| 4 | nova-cert | controller.nice.com | internal | enabled | up | 2022-12-04T05:14:55.000000 | - |
| 5 | nova-compute | compute.nice.com | nova | enabled | up | 2022-12-04T05:14:59.000000 | - |
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
[root@controller ~]$ nova image-list #去查看通过nova去请求镜像,是否成功。也就相当于通过nova去请求当前的镜像列表
+--------------------------------------+---------------------+--------+--------+
| ID | Name | Status | Server |
+--------------------------------------+---------------------+--------+--------+
| 53e9d26f-7fca-4965-87e7-3722d6ed12ce | cirros-0.3.3-x86_64 | ACTIVE | |
+--------------------------------------+---------------------+--------+--------+
4)Neutron – 网络服务
neutron网络介绍
(1)neutron基本概念
- 网络连接服务
- 面向租户API接口,用于创建虚拟网络、路由器、负载均衡、关联网络接口至指定网络和路由
- 通过API接口管理虚拟或物理交换机
- 提供Plugin架构来支持不同的技术平台
- Neutron Private Network——提供固定私网地址
- Neutron Public Network——提供浮动IP地址
(2)neutron关键概念
-
Network
一个L2网络单元
租户可通过Neutron API创建自己的网络 -
Subnet
一段IPV4/IPV6 地址段
为Instance提供私网或公网地址 -
Router
三层路由器
为租户的Instance 提供路由功能 -
Port
虛拟交换机上的端口
管理Instance 的网卡
(3)组件架构
(4)neutron plugin
Open vSwitch
Linux Bridge
- Ciso NX1000
- Nicira NVP
- Ryu
- NEC OpenFlow
- Floodnight
(5)neutron+Nova架构
(6)neutron组件
(7)neutron常见的构建类型
Single FLAT Network
Multi FLAT Network
Mixed FLAT and Private Network
Provider Router with Private Network
Per-tenant Routers with Private Network
Neutron的安装配置
Ⅰ 配置controller节点
(1)创建数据库
a.使用root用户连接mysql数据库
[root@localhost ~]$ mysql -u root -p123
b.创建neutron数据库
MariaDB [(none)]> CREATE DATABASE neutron;
c.创建数据库用户neutron,并授予neutron用户对neutron数据库完全控制权限
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';
(2)执行admin环境变量脚本并在认证服务中创建网络服务的认证信息
[root@localhost ~]$ source admin-openrc.sh
a.创建neutron用户
[root@localhost ~]$ keystone user-create --name neutron --pass NEUTRON_PASS
b.连接neutron用户到serivce租户和admin角色
[root@localhost ~]$ keystone user-role-add --user neutron --tenant service --role admin
c.创建neutron服务
[root@localhost ~]$ keystone service-create --name neutron --type network --description "OpenStackNetworking"
d.创建neutron服务端点
[root@localhost ~]$ keystone endpoint-create \
--service-id $(keystone service-list | awk '/ network / {print $2}') \
--publicurl http://controller.nice.com:9696 \
--adminurl http://controller.nice.com:9696 \
--internalurl http://controller.nice.com:9696 \
--region regionOne
(3)安装网络服务组件并配置
安装neutron相关软件
[root@localhost ~]$ yum install openstack-neutron openstack-neutron-ml2 python-neutronclient which -y
配置网络服务组件
编辑/etc/neutron/neutron.conf文件,并完成下列操作:
[root@localhost ~]$ vim /etc/neutron/neutron.conf
a.编辑[database]小节,配置数据库访问
[database]
connection=mysql://neutron:NEUTRON_DBPASS@controller.nice.com/neutron #需自己添加
b.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问:
[DEFAULT]
rpc_backend=rabbit
rabbit_host=controller.nice.com
rabbit_password=guest
c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问:
[DEFAULT]
auth_strategy=keystone #需自己添加
[keystone_authtoken]
auth_uri=http://controller.nice.com:5000/v2.0 #需自己添加
identity_uri=http://controller.nice.com:35357 #需自己添加
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS
d.编辑[DEFAULT]小节,启用Modular Layer2(ML2)插件,路由服务和重叠IP地址功能:
[DEFAULT]
core_plugin=ml2 #需自己添加
service_plugins=router #需自己添加
allow_overlapping_ips=True #需自己添加
e.编辑[DEFAULT]小节,配置当网络拓扑结构发生变化时通知计算服务:
[DEFAULT]
notify_nova_on_port_status_changes=True #需自己添加
notify_nova_on_port_data_changes=True #需自己添加
nova_url=http://controller.nice.com:8774/v2 #需自己添加
nova_admin_auth_url=http://controller.nice.com:35357/v2.0 #需自己添加
nova_region_name=regionOne #需自己添加
nova_admin_username=nova #需自己添加
nova_admin_password=NOVA_PASS #需自己添加
nova_admin_tenant_id=db285970d1254cef8ea93b87fdf6ac06 #SERVICE_TENANT_ID
#需自己添加
#注:可通过keystone tenant-get service,获取service租户ID。
f.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
verbose=True
(4)配置Modular Layer 2 (ML2) plug-in
编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件,并完成下列操作:
[root@localhost ~]$ vim /etc/neutron/plugins/ml2/ml2_conf.ini
a.编辑[ml2]小节,启用flat和generic routing encapsulation (GRE)网络类型驱动,配置GRE租户网络和OVS驱动机制。
[ml2]
type_drivers=flat,gre
tenant_network_types=gre
mechanism_drivers=openvswitch
b.编辑[ml2_type_gre]小节,配置隧道标识范围:
[ml2_type_gre]
tunnel_id_ranges=1:1000
c.编辑[securitygroup]小节,启用安全组,启用ipset并配置OVS防火墙驱动:
[securitygroup]
enable_security_group=True
enable_ipset=True
firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver #需自己添加
(5)配置计算服务使用Neutron,默认情况下,计算服务使用传统网络,我们需要重新配置。编辑/etc/nova/nova.conf文件,并完成下列操作:
[root@localhost ~]$ vim /etc/nova/nova.conf
a.编辑[DEFAULT]小节,配置API接口和驱动程序:
[DEFAULT]
network_api_class=nova.network.neutronv2.api.API
security_group_api=neutron
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver=nova.virt.firewall.NoopFirewallDriver
b.编辑[neutron]小节,配置访问参数:
[neutron]
url=http://controller.nice.com:9696
auth_strategy=keystone
admin_auth_url=http://controller.nice.com:35357/v2.0
admin_tenant_name=service
admin_username=neutron
admin_password=NEUTRON_PASS
(6)完成配置
1、为ML2插件配置文件创建连接文件。
[root@localhost ~]$ ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
2、初始化数据库
[root@localhost ~]$ su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade juno" neutron
3、重新启动计算服务
[root@localhost ~]$ systemctl restart openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service
4、启动网络服务并配置开机自动启动
[root@localhost ~]$ systemctl enable neutron-server.service && systemctl start neutron-server.service
(7)验证
列出加载的扩展模块,确认成功启动neutron-server进程
[root@controller ~]$ neutron ext-list
+-----------------------+-----------------------------------------------+
| alias | name |
+-----------------------+-----------------------------------------------+
| security-group | security-group |
| l3_agent_scheduler | L3 Agent Scheduler |
| ext-gw-mode | Neutron L3 Configurable external gateway mode |
| binding | Port Binding |
| provider | Provider Network |
| agent | agent |
| quotas | Quota management support |
| dhcp_agent_scheduler | DHCP Agent Scheduler |
| l3-ha | HA Router extension |
| multi-provider | Multi Provider Network |
| external-net | Neutron external network |
| router | Neutron L3 Router |
| allowed-address-pairs | Allowed Address Pairs |
| extraroute | Neutron Extra Route |
| extra_dhcp_opt | Neutron Extra DHCP opts |
| dvr | Distributed Virtual Router |
+-----------------------+-----------------------------------------------+
Ⅱ 配置network(neutron)节点
(1)配置先决条件
编辑/etc/sysctl.conf文件,包含下列参数:
[root@localhost ~]$ vim /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
[root@localhost ~]$ sysctl -p #使更改生效
(2)安装网络组件并配置
[root@localhost ~]$ yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch
配置网络通用组件,网络通用组件配置包含认证机制,消息队列及插件。
编辑/etc/neutron/neutron.conf文件并完成下列操作:
[root@localhost ~]$ vim /etc/neutron/neutron.conf
a.编辑[database]小节,注释任何connection选项。因为network节点不能直接连接数据库。
b.编辑[DEFAULT]小节,配置RabbitMQ消息队列访问
[DEFAULT]
rpc_backend=rabbit
rabbit_host=controller.nice.com
rabbit_password=guest
c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问:
[DEFAULT]
auth_strategy=keystone
[keystone_authtoken]
auth_uri=http://controller.nice.com:5000/v2.0 #需自己添加
identity_uri=http://controller.nice.com:35357 #需自己添加
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS
d.编辑[DEFAULT]小节,启用Modular Layer2(ML2)插件,路由服务和重叠IP地址功能:
[DEFAULT]
core_plugin=ml2
service_plugins=router
allow_overlapping_ips=True
e.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错
[DEFAULT]
verbose=True
(3)配置Modular Layer 2 (ML2) plug-in,ML2插件使用OpenvSwitch(OVS)机制为虚拟机实例提供网络框架
编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件并完成下列操作
[root@localhost ~]$ vim /etc/neutron/plugins/ml2/ml2_conf.ini
a.编辑[ml2]小节,启用flat和generic routing encapsulation (GRE)网络类型驱动,配置GRE租户网络和OVS驱动机制。
[ml2]
type_drivers=flat,gre
tenant_network_types=gre
mechanism_drivers=openvswitch
b.编辑[ml2_type_flat]小节,配置外部网络:
[ml2_type_flat]
flat_networks=external
c.编辑[ml2_type_gre]小节,配置隧道标识范围:
[ml2_type_gre]
tunnel_id_ranges=1:1000
d.编辑[securitygroup]小节,启用安全组,启用ipset并配置OVS防火墙驱动:
[securitygroup]
enable_security_group=True
enable_ipset=True
firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
e.编辑[ovs]小节,配置Open vSwitch(OVS) 代理(需自己添加)
[ovs]
local_ip=172.16.0.6
tunnel_type=gre
enable_tunneling=True
bridge_mappings=external:br-ex
(4)配置Layer-3 (L3) agent
编辑/etc/neutron/l3_agent.ini文件并完成下列配置:
[root@localhost ~]$ vim /etc/neutron/l3_agent.ini
a.编辑[DEFAULT]小节,配置驱动,启用网络命名空间,配置外部网络桥接
[DEFAULT]
interface_driver= neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces=True
external_network_bridge=br-ex
b.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
verbose=True #需自己添加
(5)配置DHCP agent
1、编辑/etc/neutron/dhcp_agent.ini文件并完成下列步骤:
[root@localhost ~]$ vim /etc/neutron/dhcp_agent.ini
a.编辑[DEFAULT]小节,配置驱动和启用命名空间
[DEFAULT]
interface_driver=neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver=neutron.agent.linux.dhcp.Dnsmasq
use_namespaces=True
b.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
debug=True
2、(可选,在VMware虚拟机中可能是必要的!)配置DHCP选项,将MUT改为1454bytes,以改善网络性能。
a.编辑/etc/neutron/dhcp_agent.ini文件,先编辑[DEFAULT]小节,启用dnsmasq配置:
[DEFAULT]
dnsmasq_config_file=/etc/neutron/dnsmasq-neutron.conf
b.创建并编辑/etc/neutron/dnsmasq-neutron.conf文件并完成下列配置:
[root@localhost ~]$ vim /etc/neutron/dnsmasq-neutron.conf
#启用DHCP MTU选项(26)并配置值为1454bytes
dhcp-option-force=26,1454
user=neutron
group=neutron
c.终止任何已经存在的dnsmasq进行,shell中敲下面这个命令
[root@localhost ~]$ pkill dnsmasq
(6)配置metadata agent
1、编辑/etc/neutron/metadata_agent.ini文件并完成下列配置:
[root@localhost ~]$ vim /etc/neutron/metadata_agent.ini
a.编辑[DEFAULT]小节,配置访问参数:
[DEFAULT]
auth_url=http://controller.nice.com:5000/v2.0
auth_region=regionOne
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS
b.编辑[DEFAULT]小节,配置元数据主机:
[DEFAULT]
nova_metadata_ip=controller.nice.com
c.编辑[DEFAULT]小节,配置元数据代理共享机密暗号:
[DEFAULT]
metadata_proxy_shared_secret=METADATA_SECRET
b.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
debug=True
(7)下面需要在controller节点配置
#编辑/etc/nova/nova.conf文件并完成下列配置
[root@localhost ~]$ vim /etc/nova/nova.conf
#编辑[neutron]小节,启用元数据代理并配置机密暗号:
[neutron]
service_metadata_proxy=True
metadata_proxy_shared_secret=METADATA_SECRET
#在controller节点,重新启动computeAPI服务
[root@localhost ~]$ systemctl restart openstack-nova-api.service
(8)回到neutron节点上来,配置Open vSwitch(OVS)服务
1、启动VOS服务并配置开机自动启动:
[root@localhost ~]$ systemctl enable openvswitch.service && systemctl start openvswitch.service
2、添加外部网桥(external birdge)
[root@localhost ~]$ ovs-vsctl add-br br-ex
3、添加一个端口到外部网桥,用于连接外部物理网络
[root@localhost ~]$ ovs-vsctl add-port br-ex eno50332184 #INTERFACE_NAME
#注:将INTERFACE_NAME换成实际连接外部网卡接口名。如:eth2或eno50332208。
(9)完成安装
1.创建网络服务初始化脚本的符号连接
[root@localhost ~]$ ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
[root@localhost ~]$ cp /usr/lib/systemd/system/neutron-openvswitch-agent.service /usr/lib/systemd/system/neutron-openvswitch-agent.service.orig
[root@localhost ~]$ sed -i 's,plugins/openvswitch/ovs_neutron_plugin.ini,plugin.ini,g' /usr/lib/systemd/system/neutron-openvswitch-agent.service
2.启动网络服务并设置开机自动启动
[root@localhost ~]$ systemctl enable neutron-openvswitch-agent.service neutron-l3-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-ovs-cleanup.service
[root@localhost ~]$ systemctl start neutron-openvswitch-agent.service neutron-l3-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-ovs-cleanup.service
(10)验证(在controller节点执行下列命令)
1.执行admin环境变量脚本
[root@localhost ~]$ source admin-openrc.sh
2.列出neutron代理,确认启动neutron agents成功。
[root@localhost ~]$ neutron agent-list
+--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+
| id | agent_type | host | alive | admin_state_up | binary |
+--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+
| 067770b8-60a6-428e-8f52-817435dbf84f | Open vSwitch agent | network.nice.com | :-) | True | neutron-openvswitch-agent |
| 2a5bf715-0fe2-4162-b7a8-6deb26547b09 | DHCP agent | network.nice.com | :-) | True | neutron-dhcp-agent |
| aef71953-de29-407a-94a6-a13b1918aa7e | Metadata agent | network.nice.com | :-) | True | neutron-metadata-agent |
| f949b3ca-b816-48d3-87bd-f96d31b76757 | L3 agent | network.nice.com | :-) | True | neutron-l3-agent |
+--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+
Ⅲ 配置compute节点
(1)配置先决条件
编辑/etc/sysctl.conf文件,使其包含下列参数:
[root@localhost ~]$ vi /etc/sysctl.conf
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
使/etc/sysctl.conf文件中的更改立即生效:
[root@localhost ~]$ sysctl -p
(2)安装网络组件并配置网络通用组件
[root@localhost ~]$ yum -y install openstack-neutron-ml2 openstack-neutron-openvswitch vim
编辑/etc/neutron/neutron.conf文件并完成下列操作:
[root@localhost ~]$ vim /etc/neutron/neutron.conf
a.编辑[database]小节,注释所有connection配置项。因为计算节点不能直接连接数据库。
# connection = mysql://root:pass@127.0.0.1:3306/neutron
b.编辑[DEFAULT]小节,配置RabbitMQ消息代理访问:
[DEFAULT]
rpc_backend=rabbit
rabbit_host=controller.nice.com
rabbit_password=guest
c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问:
[DEFAULT]
auth_strategy=keystone
[keystone_authtoken]
auth_uri=http://controller.nice.com:5000/v2.0 #需自行添加
identity_uri=http://controller.nice.com:35357 #需自行添加
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS
d.编辑[DEFAULT]小节,启用Modular Layer2(ML2)插件,路由服务和重叠ip地址功能:
[DEFAULT]
core_plugin=ml2
service_plugins=router
allow_overlapping_ips=True
e.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
verbose=True
(3)配置Modular Layer 2 (ML2) plug-in
编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件并完成下列操作:
[root@localhost ~]$ vim /etc/neutron/plugins/ml2/ml2_conf.ini
a.编辑[ml2]小节,启用flat和generic routing encapsulation (GRE)网络类型驱动,GRE租户网络和OVS机制驱动:
[ml2]
type_drivers=flat,gre
tenant_network_types=gre
mechanism_drivers=openvswitch
b.编辑[ml2_type_gre]小节,配置隧道标识符(id)范围:
[ml2_type_gre]
tunnel_id_ranges=1:1000
c.编辑[securitygroup]小节,启用安装组,ipset并配置OVS iptables防火墙驱动:
[securitygroup]
enable_security_group=True
enable_ipset=True
firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
d.编辑[ovs]小节,配置Open vSwitch(OVS) agent(需自行添加)
[ovs]
local_ip=172.16.0.10
tunnel_type=gre
enable_tunneling=True
(4)配置Open vSwitch(OVS) service
启动OVS服务并设置开机自动启动:
[root@localhost ~]$ systemctl enable openvswitch.service && systemctl start openvswitch.service
(5)配置计算服务使用网络
编辑/etc/nova/nova.conf文件并完成下列操作:
[root@localhost ~]$ vim /etc/nova/nova.conf
a.编辑[DEFAULT]小节,配置API接口和驱动:
[DEFAULT]
network_api_class=nova.network.neutronv2.api.API
security_group_api=neutron
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver=nova.virt.firewall.NoopFirewallDriver
b.编辑[neutron]小节,配置访问参数:
[neutron]
url=http://controller.nice.com:9696
auth_strategy=keystone
admin_auth_url=http://controller.nice.com:35357/v2.0
admin_tenant_name=service
admin_username=neutron
admin_password=NEUTRON_PASS
(6)完成安装
1、创建网络服务初始化脚本的符号连接
[root@localhost ~]$ ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
[root@localhost ~]$ cp /usr/lib/systemd/system/neutron-openvswitch-agent.service /usr/lib/systemd/system/neutron-openvswitch-agent.service.orig
[root@localhost ~]$ sed -i 's,plugins/openvswitch/ovs_neutron_plugin.ini,plugin.ini,g' /usr/lib/systemd/system/neutron-openvswitch-agent.service
2、重启计算服务:
[root@localhost ~]$ systemctl restart openstack-nova-compute.service
3、启动OVS代理服务并设置开机自动启动:
[root@localhost ~]$ systemctl enable neutron-openvswitch-agent.service && systemctl start neutron-openvswitch-agent.service
(7)验证(在controller节点执行下列命令)
1.执行admin环境变量脚本
[root@localhost ~]$ source admin-openrc.sh
2.列出neutron代理,确认启动neutron agents成功。
[root@localhost ~]$ neutron agent-list
+--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+
| id | agent_type | host | alive | admin_state_up | binary |
+--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+
| 067770b8-60a6-428e-8f52-817435dbf84f | Open vSwitch agent | network.nice.com | :-) | True | neutron-openvswitch-agent |
| 29f63e11-7ac1-42b9-afc0-dcaecaebbff9 | Open vSwitch agent | compute.nice.com | :-) | True | neutron-openvswitch-agent |
| 2a5bf715-0fe2-4162-b7a8-6deb26547b09 | DHCP agent | network.nice.com | :-) | True | neutron-dhcp-agent |
| aef71953-de29-407a-94a6-a13b1918aa7e | Metadata agent | network.nice.com | :-) | True | neutron-metadata-agent |
| f949b3ca-b816-48d3-87bd-f96d31b76757 | L3 agent | network.nice.com | :-) | True | neutron-l3-agent |
+--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+
Ⅳ 配置外部网络(controller执行)
(1)创建一个外部网络(浮动网络)
1、执行admin环境变量脚本
[root@localhost ~]$ source admin-openrc.sh
2、创建网络
[root@localhost ~]$ neutron net-create ext-net --shared --router:external True --provider:physical_network external --provider:network_type flat
(2)创建一个外部网络的子网(公网地址池):例如,外网网段为:100.100.100.0/24,浮动地址范围为:100.100.100.11~100.100.100.240,网关为:100.100.100.10(注意此处的公网地址在真实的环境中,应该是向运营商申请的)
[root@localhost ~]$ neutron subnet-create ext-net --name ext-subnet --allocation-pool start=100.100.100.11,end=100.100.100.240 --disable-dhcp --gateway 100.100.100.10 100.100.100.0/24 #网关100.100.100.10,网段100.100.100.0/24
(3)配置租户网络(在controller节点执行后面的命令),先执行demo环境变量脚本
1、执行demo环境变量脚本
[root@localhost ~]$ source demo-openrc.sh
2、创建租户网络
[root@localhost ~]$ neutron net-create demo-net
(4)创建一个租户网络的子网,例如,租户网的网段为192.168.2.0/24,网关为192.168.2.1(网关通常默认为.1)
[root@localhost ~]$ neutron subnet-create demo-net --name demo-subnet --gateway 192.168.2.1 192.168.2.0/24
(5)在租户网络创建一个路由器,用来连接外部网和租户网
1、创建路由器
[root@localhost ~]$ neutron router-create demo-router
2、附加路由器到demo租户的子网
[root@localhost ~]$ neutron router-interface-add demo-router demo-subnet
3、通过设置网关,使路由器附加到外部网
[root@localhost ~]$ neutron router-gateway-set demo-router ext-net
(6)确认连接
1、查看路由器获取到的IP。
[root@localhost ~]$ neutron router-list
2、在任何一台外部主机上ping路由器获取到的外部地址
查看neutron的外部网络是用的哪块虚拟网卡
修改网卡ip为100.100.100.244
测试:此时我们依靠外部网络就可以ping通租户的路由器
5) Horizon – 仪表盘套件(controller节点配置)
基于B/S架构,进行管理
Horizon的安装步骤:
先决条件
- 安装OpenStack compute(nova)和identity(keystone) servi ce
- 安装Python2.6或2.7,并必须支持Django
- 你的浏览器必须支持HTML5并启用cookies和JavaScript功能
查看Nova服务是否正常运行,Neutron代理端是否正常连接
[root@controller ~]$ nova service-list
ERROR (Forbidden): Policy doesn't allow compute_extension:services to be performed. (HTTP 403) (Request-ID: req-897d0e5e-1fbe-4a31-ba1e-61b59600f2e5)
可能出现的原因是环境变量的问题,所以先运行脚本
[root@controller ~]$ source admin-openrc.sh
[root@controller ~]$ nova service-list
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
| 1 | nova-consoleauth | controller.nice.com | internal | enabled | up | 2022-12-04T12:16:39.000000 | - |
| 2 | nova-conductor | controller.nice.com | internal | enabled | up | 2022-12-04T12:16:39.000000 | - |
| 3 | nova-scheduler | controller.nice.com | internal | enabled | up | 2022-12-04T12:16:40.000000 | - |
| 4 | nova-cert | controller.nice.com | internal | enabled | up | 2022-12-04T12:16:40.000000 | - |
| 5 | nova-compute | compute.nice.com | nova | enabled | up | 2022-12-04T12:16:46.000000 | - |
+----+------------------+---------------------+----------+---------+-------+----------------------------+-----------------+
[root@controller ~]$ neutron agent-list
+--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+
| id | agent_type | host | alive | admin_state_up | binary |
+--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+
| 067770b8-60a6-428e-8f52-817435dbf84f | Open vSwitch agent | network.nice.com | :-) | True | neutron-openvswitch-agent |
| 29f63e11-7ac1-42b9-afc0-dcaecaebbff9 | Open vSwitch agent | compute.nice.com | :-) | True | neutron-openvswitch-agent |
| 2a5bf715-0fe2-4162-b7a8-6deb26547b09 | DHCP agent | network.nice.com | :-) | True | neutron-dhcp-agent |
| aef71953-de29-407a-94a6-a13b1918aa7e | Metadata agent | network.nice.com | :-) | True | neutron-metadata-agent |
| f949b3ca-b816-48d3-87bd-f96d31b76757 | L3 agent | network.nice.com | :-) | True | neutron-l3-agent |
+--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+
接着安装仪表盘套件(controller上安装)
(1)安装仪表板组件
[root@localhost ~]$ yum install openstack-dashboard httpd mod_wsgi memcached python-memcached vim -y
(2)配置仪表板
编辑/etc/openstack-dashboard/local_settings文件并完成下列配置
[root@localhost ~]$ vim /etc/openstack-dashboard/local_settings
a.配置dashboard使用controller节点上的OpenStack服务
OPENSTACK_HOST="controller.nice.com"
b.设置允许来自所有网络的主机访问dashboard
ALLOWED_HOSTS=['controller.nice.com', '*']
c.配置memcached会话存贮服务(将原有CACHES区域注释)
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
d.(可选)配置时区
TIME_ZONE = "Asia/Shanghai"
(3)安装完成后
1、在RHEL或CentOS上,配置SElinux去允许web服务器访问OpenStack服务(如果你没
关SElinux):
[root@localhost ~]$ setsebool-P httpd_can_network_connecton
2.修改相关文件归属,使dashboardCSS可以被加载。
[root@localhost ~]$ chown -R apache:apache /usr/share/openstack-dashboard/static
3.启动web服务和会话保存服务,并设置开机自动启动。
[root@localhost ~]$ systemctl enable httpd.service memcached.service
[root@localhost ~]$ systemctl start httpd.service memcached.service
(4)验证
1、访问dashboard,在浏览器(建议谷歌浏览器)输入:http://controller.nice.com/dashboard
特别注意由于我们没有设置DNS服务器,所以需要修改windows的HOST文件,将controller的IP与对应域名进行绑定
2、使用admin或demo用户登录
账号 admin
密码 ADMIN_PASS
6)Cinder – 块存储
组件说明
- OpenStack块存储服务为云主机提供块存储设备。支持不同后端
(后端指的不同的操作系统)
- The Block Storage API和scheduler服务运行在controller节点
- The volume service运行在一个或多个存储节点
- 存储节点可以通过本地磁盘、SAN/NAS等后端设备为云主机提供卷存储
- cinder-api允许API请求,并路由他们到cinder-volume
- cinder-volume直接与块存储服务交互。处理像cinder-scheduler这样的服务。通过消息队列相互通信。支持多种存储类型
- cinder-scheduler daemon选择最优的存储节点创建卷。类似于novascheduler
- Messagin queue在快存储进程中传递消息
Block Storage(cinder)安装配置(controller节点)
1、创建数据库,并完成下列步骤:
a.以数据库管理员root的身份连接数据库:
[root@localhost ~]$ mysql -uroot -p123
b.创建cinder数据库
MariaDB [(none)]> CREATE DATABASE cinder;
c.创建数据库用户cinder,并授予cinder用户对cinder数据库的完全控制权限:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'CINDER_DBPASS';
d.退出数据库连接
MariaDB [(none)]> exit
2、执行admin环境变量脚本
[root@localhost ~]$ source admin-openrc.sh
3、在认证服务中创建块存储服务认证信息,完成下列步骤:
a.创建cinder用户
[root@localhost ~]$ keystone user-create --name cinder --pass CINDER_PASS
b.链接cinder用户到service租户和admin角色
[root@localhost ~]$ keystone user-role-add --user cinder --tenant service --role admin
c.创建cinder服务(两个版本,volume,volumev2都创建)
[root@localhost ~]$ keystone service-create --name cinder --type volume --description "OpenStackBlock Storage"
[root@localhost ~]$ keystone service-create --name cinderv2 --type volumev2 --description "OpenStackBlock Storage"
d.创建块存储服务端点
[root@localhost ~]$ keystone endpoint-create \
--service-id $(keystone service-list | awk '/ volume / {print $2}') \
--publicurl http://controller.nice.com:8776/v1/%\(tenant_id\)s \
--internalurl http://controller.nice.com:8776/v1/%\(tenant_id\)s \
--adminurl http://controller.nice.com:8776/v1/%\(tenant_id\)s \
--region regionOne
[root@localhost ~]$ keystone endpoint-create \
--service-id $(keystone service-list | awk '/ volumev2 / {print $2}') \
--publicurl http://controller.nice.com:8776/v2/%\(tenant_id\)s \
--internalurl http://controller.nice.com:8776/v2/%\(tenant_id\)s \
--adminurl http://controller.nice.com:8776/v2/%\(tenant_id\)s \
--region regionOne
(2)安装并配置块存储控制组件
1、安装软件包
[root@localhost ~]$ yum -y install openstack-cinder python-cinderclient python-oslo-db vim
2、编辑/etc/cinder/cinder.conf文件并完成下列操作:
[root@localhost ~]$ vim /etc/cinder/cinder.conf
a.编辑[database]小节,配置数据库连接:
[database]
connection=mysql://cinder:CINDER_DBPASS@controller.nice.com/cinder
b.编辑[DEFAULT]小节,配置RabbitMQ消息代理访问:
[DEFAULT]
rpc_backend=rabbit
rabbit_host=controller.nice.com
rabbit_password=guest
c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问:
[DEFAULT]
auth_strategy=keystone
[keystone_authtoken]
auth_uri=http://controller.nice.com:5000/v2.0
identity_uri=http://controller.nice.com:35357
admin_tenant_name=service
admin_user=cinder
admin_password=CINDER_PASS
d.编辑[DEFAULT]小节,配置my_ip选项使用controller节点的控制端口ip:
[DEFAULT]
my_ip=192.168.222.5
e.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
verbose=True
3、初始化块存储服务数据库
[root@localhost ~]$ su -s /bin/sh -c "cinder-manage db sync" cinder
(3)完成安装
启动块存储服务并设置开机自动启动:
[root@localhost ~]$ systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
[root@localhost ~]$ systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
安装并配置block节点
(1)配置先决条件
1、添加一个新的硬盘(如:sdb),并分将全部空间分成一个主分区。
[root@block ~]$ fdisk -l 查看是否添加了硬盘
2、安装LVM软件包(根据自身情况)
[root@localhost ~]$ yum install lvm2 vim
3、启动LVM服务并设置开机自动启动(根据自身情况)
[root@localhost ~]$ systemctl enable lvm2-lvmetad.service
[root@localhost ~]$ systemctl start lvm2-lvmetad.service
4、创建物理卷/dev/sdb
[root@localhost ~]$ pvcreate /dev/sdb
5、创建卷组cinder-volumes(名字不要改):
[root@localhost ~]$ vgcreate cinder-volumes /dev/sdb
6、编辑/etc/lvm/lvm.conf文件,使系统只扫描启用LVM的磁盘。防止识别其他非LVM磁盘对块存储服务造成影响。
编辑devices小节,添加过滤器允许/dev/sdb磁盘,拒绝其他设备。
[root@localhost ~]$ vim /etc/lvm/lvm.conf
devices {
filter = [ "a/sdb/", "r/.*/"]
警告:如果你的系统磁盘使用了LVM,则必须添加系统盘到过滤器中:
filter = [ "a/sda", "a/sdb/", "r/.*/"]
同样,如果conpute节点的系统盘也使用了LVM,则也需要修改/etc/lvm/lvm.conf文件。并添加过滤器。
filter = [ "a/sdb/", "r/.*/"]
(2)安装并配置块存储卷组件
1、安装软件包
[root@localhost ~]$ yum install openstack-cinder targetcli python-oslo-db MySQL-python
2、编辑/etc/cinder/cinder.conf文件并完成下列操作:
[root@localhost ~]$ vim /etc/cinder/cinder.conf
a.编辑[database]小节,配置数据库访问:
[database]
connection=mysql://cinder:CINDER_DBPASS@controller.nice.com/cinder
b.编辑[DEFAULT]小节,配置RabbitMQ消息代理访问:
[DEFAULT]
rpc_backend=rabbit
rabbit_host=controller.nice.com
rabbit_password=guest
c.编辑[DEFAULT]和[keystone_authtoken]小节,配置认证服务访问:
[DEFAULT]
auth_strategy=keystone
[keystone_authtoken]
auth_uri=http://controller.nice.com:5000/v2.0
identity_uri=http://controller.nice.com:35357
admin_tenant_name=service
admin_user=cinder
admin_password=CINDER_PASS
d.编辑[DEFAULT]小节,配置my_ip选项:
[DEFAULT]
my_ip=192.168.222.20
e.编辑[DEFAULT]小节,配置镜像服务器位置:
[DEFAULT]
glance_host=controller.nice.com
f.编辑[DEFAULT]小节,配置块存储服务使用lioadmiSCSI服务
[DEFAULT]
iscsi_helper=lioadm
g.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
verbose=True
(3)完成安装
启动块存储volume服务和iSCSI服务,并设置开机自动启动。
[root@localhost ~]$ systemctl enable openstack-cinder-volume.service target.service
[root@localhost ~]$ systemctl start openstack-cinder-volume.service target.service
(4)验证(在controller节点完成下列操作)
1、执行admin环境变量脚本
[root@localhost ~]$ source admin-openrc.sh
2、列出服务组件确认每个进程启动成功(此处如果volumes状态为down,则有可能出现了block与controller时间不同步导致的)
[root@localhost ~]$ cinder service-list
[root@controller ~]# cinder service-list
+------------------+---------------------+------+---------+-------+----------------------------+-----------------+
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+------------------+---------------------+------+---------+-------+----------------------------+-----------------+
| cinder-scheduler | controller.nice.com | nova | enabled | up | 2022-12-04T13:37:10.000000 | None |
| cinder-volume | block.nice.com | nova | enabled | down | 2022-12-11T16:33:06.000000 | None |
+------------------+---------------------+------+---------+-------+----------------------------+----------------
重新将block与controller进行时间同步
在block上做
[root@block ~]$ ntpdate -u controller.nice.com
4 Dec 21:35:17 ntpdate[2615]: step time server 192.168.222.5 offset -615477.440225 sec
再去controller上
[root@controller ~]$ cinder service-list
+------------------+---------------------+------+---------+-------+----------------------------+-----------------+
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+------------------+---------------------+------+---------+-------+----------------------------+-----------------+
| cinder-scheduler | controller.nice.com | nova | enabled | up | 2022-12-04T13:37:20.000000 | None |
| cinder-volume | block.nice.com | nova | enabled | up | 2022-12-04T13:37:17.000000 | None |
+------------------+---------------------+------+---------+-------+----------------------------+-----------------+
3、执行demo用户环境变量脚本
[root@localhost ~]$ source demo-openrc.sh
4、创建1GB的卷
[root@localhost ~]$ cinder create --display-name demo-volume1 1
5、确认卷已创建并可用
[root@localhost ~]$ cinder list
9)实例构建
创建密钥对
大多数云镜像使用公钥认证,这有别于传统的用户名/密码认证。在启动一个实例之前,你必须使用ssh-keygen命令生成一个密钥对,并将公钥添加到你的OpenStack环境
1、执行demo环境变量脚本
[root@localhost ~]$ source demo-openrc.sh
2、生成密钥对
[root@localhost ~]$ ssh-keygen
3、添加公钥到OpenStack环境
[root@localhost ~]$ nova keypair-add --pub-key ~/.ssh/id_rsa.pub demo-key
4、验证公钥是否添加成功
[root@localhost ~]$ nova keypair-list
启动一个实例
要启动一个实例,你必须最少指定flavor(云主机类型),imagename(镜像名),network(网络),security group(安全组),key(密钥)和instance name(实例名)。
1、flavor用来指定一个虚拟的独立分配的资源。包括cpu,内存和存储。查看可用的flavor:
[root@localhost ~]$ nova flavor-list
2、列出可用的镜像
[root@localhost ~]$ nova image-list
3、列出可用的网络
[root@localhost ~]$ neutron net-list
4、列出可用的安全组
[root@localhost ~]$ nova secgroup-list
5、启动实例
[root@localhost ~]$ nova boot --flavor m1.tiny --image cirros-0.3.3-x86_64 --nic net-id=320b228b-a84c-4a76-a669-4cd232e9c5fa --security-group default --key-name demo-key demo-instance1
6、查看实例状态
[root@localhost ~]$ nova list
通过虚拟控制台访问你的实例
获取用于访问你的实例的Virtual Network Computing (VNC) 会话URL,并通过浏览器访问:
[root@localhost ~]$ nova get-vnc-console demo-instance1 novnc
确保你的客户端能够解析controller节点的FQDN名。
确认能够连接demo-net租户网络的网关
[root@localhost ~]$ ping -c 4 192.168.2.1
确认能够连接ext-net外部网络
[root@localhost ~]$ ping -c 10.0.0.1
远程访问你的实例文章来源:https://www.toymoban.com/news/detail-472596.html
1、添加规则到名为default的安全组:
a.允许ICMP协议(ping):
[root@localhost ~]$ nova secgroup-add-rule default icmp-1 -1 0.0.0.0/0
b.允许ssh协议:
[root@localhost ~]$ nova secgroup-add-rule default tcp22 22 0.0.0.0/0
2、在ext-net外部网络创建一个浮动IP地址:
[root@localhost ~]$ neutron floatingip-create ext-net
3、分配浮动IP地址到你的实例:
[root@localhost ~]$ nova floating-ip-associate demo-instance110.0.0.110
4、检查你的浮动IP地址状态:
[root@localhost ~]$ nova list
5、从任何一个可以和ext-net网络通讯的主机测试连通性
[root@localhost ~]$ ping -c 4 10.0.0.110
6、从任何一个可以和ext-net网络通讯的主机上通过ssh访问实例
[root@localhost ~]$ sshcirros@10.0.0.110
或将私钥文件复制到外部客户端,通过密钥对验证登录
[root@localhost ~]$ ssh-iid_rsacirros@10.0.0.110
为demo-instance添加额外的云硬盘
如果你的环境中包含块存储服务,则你可以为你的实例添加云硬盘。文章来源地址https://www.toymoban.com/news/detail-472596.html
1、执行demo环境变量脚本
[root@localhost ~]$ source demo-openrc.sh
2、列出卷
[root@localhost ~]$ nova volume-list
3、附加demo-volume1卷到demo-instance1实例:
[root@localhost ~]$ nova volume-attach demo-instance1 158bea89-07db-4ac2-8115-66c0d6a4bb48
4、列出卷
[root@localhost ~]$ nova volume-list
5、从任何一个可以和ext-net网络通讯的主机上通过ssh访问实例,并使用fdisk命令确认新存储。
[root@localhost ~]$ ssh cirros@10.0.0.110
[root@localhost ~]$ sudo fdisk -l
到了这里,关于【Opentack项目实战——Keystone、Glance、Nova、Neutron、Horizon、Cinder搭建】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!