CentOS7部署OpenStack
一、Openstack概述
1.云计算简介
1.1 什么是云计算:本质是 按需使用,按使用付费
- 基于互联网的相关服务的增加、使用和交付模式
- 这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算机资源共享池(资源包括网络,服务,服务器,存储,应用软件)
- 这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互
- 通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源
1.2 IaaS
- Infrastructure as a Service,基础设施即服务,最终提供云主机
- 提供给消费者的服务是对所有计算机基础设施的利用,包括:
- 处理CPU、内存、存储、网络和其他基本的计算机资源,
- 用户能够部署和运行任意软件,包括:操作系统和应用程序。 - 消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、存储空间、部署的应用;
- Iaas通常分为三种用法:公有云的、私有云、混合云、社区云
- 云产品:阿里云、亚马逊(Elastic Compute Cloud)
1.3 PaaS
-
Platform as a Service,平台即服务,提供组件
-
云计算时代相应的服务器平台 或 开发环境作为服务进行提供 就成为了PaaS
-
PaaS运营商所需提供的服务,不仅仅是单纯的基础平台,而是包括针对该平台的技术支持服务,甚至针对该平台而进行的应用系统开发、优化等服务
-
简单说,PaaS平台就是指:云环境中的应用基础设施服务,也可以说是中间件服务
-
云产品:Openshift
1.4 SaaS
-
Software as a Service,软件即服务
-
是通过Internet提供软件模式,厂商将应用软件统一部署在自己的服务器上。客户端可以根据自己的实际需求,通过互联网向厂商定购所需的应用软件服务
-
用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件。软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务
-
云产品:金蝶友商网
2.Openstack简介
2.1 什么是Openstack
-
OpenStack是一个由NASA(美国国家航空航天局,提供nova)和Rackspace(提供swift)合作研发并发起的项目
-
OpenStack是一套IaaS(基础设施即服务)解决方案
-
OpenStack是一个开源的云计算管理平台
-
以Apache许可证为授权
2.2 Openstack主要组件
-
核心组件:网络、计算、存储
-
Horizon(UI模块,web管理门户)
- 用于管理Openstack各种服务的、基于web的管理接口
- 通过图形界面实现创建用户、管理网络、启动实例等操作
-
Keystone(认证管理,身份服务模块)
- 为其他服务提供认证和授权的集中身份管理服务
- 也提供了集中的目录服务
- 支持多种身份认证模式,如密码认证、令牌认证、以及AWS(亚马逊Web服务)登录
- 为用户和其他服务提供了SSO(单一登录)认证服务,如qq、微信授权登陆。
-
Cinder(云硬盘,块存储管理服务模块)
- 为虚拟机管理存储卷的服务
- 为运行在Nova中的实例提供永久的块存储
- 可以通过快照进行数据备份
- 经常应用在实例存储环境中,如数据库文件
-
Glance(镜像管理服务组件)
- 扮演虚拟机镜像注册的角色
- 允许用户为直接存储拷贝服务器镜像
- 这些镜像可以用于新建虚拟机的模板
-
Neutron(网络管理服务组件,实现网络)
- 一种软件定义网络服务
- 用于创建网络、子网、路由器、管理浮动ip地址
- 可以实现虚拟交换机、虚拟路由器
- 可用于在项目中创建VPN
-
Nova(虚拟机管理,计算服务组件)
- openstack核心组件
- 核心服务:实例生命周期的管理(虚拟机),计算资源的管理,对外提供Restful API
- 在节点上用于管理虚拟机的服务
- Nova是一个分布式的服务,能够与Keystone交互实现认证,与Glance交互实现镜像管理
- Nova被设计成在标准硬件上能够进行水平扩展
- 启动实例时,如有需要则下载镜像
-
Swift(网盘,分布式对象存储服务模块)
- openstack核心组件
- 主要功能:高可用分布式对象存储服务
- 特点:无限和扩展没有单点故障
-
Ceilometer(监控服务组件)
- 目标:计量Metering方面,为上层的计费、结算或监控应用提供统一的资源使用数据收集功能
2.3 Openstack版本
2.4 Openstack结构图
二、部署openstack
0.拓扑结构
物理机 192.168.4.1/24 #物理即提供yum源
vh11.tedu.cn 192.168.4.11/24(eth1) #提供环境:DNS解析,NPT时间服务器
vh12.tedu.cn 192.168.4.12/24(eth1) #提供额外硬盘,作为openstack的云硬盘
192.168.2.12/24(eth2) #┗DNS指向192.168.4.11
1.配置环境机(vh11)
1.0 关闭防火墙、selinux
]# systemctl stop firewalld; systemctl disable firewalld
]# setenforce 0
]# sed -i "/^SELINUX=/c SELINUX=disabled" /etc/selinux/config
1.1 配置yum仓库
-
RHEL7-Everything光盘提供了较全面的软件信息
-
RHEL7OSP(OpenStack Platform)每个目录都是一个仓库,需把目录都配置yum源
]# vim mkrepo.sh
#!/bin/bash save_p="/tmp/ftp.repo" cd /var/ftp/osp10 echo "[ftp] name=centos7 baseurl=ftp://192.168.4.1/centos7 enabled=1 gpgcheck=0" > $save_p for folder in * do if [ -d $folder ] && [ $folder != docs ];then cat <<EOF >> $save_p [$folder] name=$folder baseurl=ftp://192.168.4.1/osp10/$folder enabled=1 gpgcheck=0 EOF fi done scp $save_p 192.168.4.11:/etc/yum.repos.d/ scp $save_p 192.168.4.12:/etc/yum.repos.d/ rm -f $save_p
]# chmod +x mkrepo.sh
]# ./mkrepo.sh
]# yum -y install yum-utils
]# yum-config-manager --add-repo http://mirrors.aliyun.com/repo/Centos-7.repo
]# yum -y install epel-release #安装epel源
1.2 设置DNS服务器(vh11)
-
系统环境准备:
- openstack安装时,需要使用外部dns来解析域名,并依靠外部时间服务器来保证所有节点的时间一致;
- 需要创建一个dns服务器,并且为我们的主机提供域名解析; -
DNS服务器不能与openstack安装在同一台主机
]# yum -y install bind #安装bind
]# vim /etc/named.conf #修改主配置文件
:set nu
13 listen-on port 53 { any; }; #ipv4``监听端口和``ip地址,默认只有本地
19 allow-query { any; }; #允许查询的主机范围,默认localhost
]# named-checkconf /etc/named.conf #检查语法错误
]# vim /etc/named.rfc1912.zones #声明要解析的域
zone "tedu.cn" IN { #追加在末尾
type master;
file "tedu.cn.zone";
allow-update { none; };
};
]# vim /var/named/tedu.cn.zone #创建区域配置文件
$TTL 86400 #解析时间
@ IN SOA vh11.tedu.cn. root.tedu.cn. (
20170901 #自定义***,确认主服务器是否有更新
3H #3小时更新一次
15M #前边不能连接的情况下,``15分钟后再试
1W #一直联系不上,则解析``1周的时间
1D ) #缓存周期是``1天
IN NS vh11.tedu.cn.
$generate 1-9 vh0$ IN A 192.168.4.$
$generate 10-254 vh$ IN A 192.168.4.$
# @ 代表本域``(``声明的域)tedu.cn
# SOA 起始授权,声明后边的主机为权威服务器
# NS 名称服务器
# A 将名称解析为``ip地址
# root.tedu.cn. 代表管理员的``email``地址,第一个``.``被翻译为@
# $generate 生成泛域名解析
]# chmod 640 /var/named/tedu.cn.zone #修改权限
]# chgrp named /var/named/tedu.cn.zone #修改所属组
]# systemctl start named
]# systemctl enable named
]# nslookup vh100.tedu.cn #验证
#解析成功
1.3 配置NTP(网络时间协议)服务(vh11)
- 默认端口:UDP123 \
- 时区
- 由于同一时间点,在地球各地的时间都不同,为了解决这个问题,地球被分为24个时区
- 地球以"经纬度"坐标进行定位,经度为0的地点在英国"格林威治"这一城市的纵剖面
- 地球一圈360度角,分为24个时区,每个时区15度角 \- UTC时间
- 标准时间,最准确的计算是"原子震荡周期"所计算的物理时钟(Atomic Clock,也称原子钟);
- UTC,Coordinated Universal Time(协调世界时)就是利用原子钟为基准所定义出来的正确时间;
- UTC标准时间是以GMT时区为主,本地时间与UTC时间的时差就是本地时间与GMT时间的时差;
###### 1.3.1 安装时间同步服务器
]# yum -y install ntp #rhel7前默认使用
]# yum -y install chrony #rhel7后默认使用chrony同步时间
###### 1.3.2 配置NTP服务
]# vim /etc/ntp.conf
restrict 192.168.4.0 mask 255.255.255.0 nomodify #允许同步,禁止修改
#server [0.centos.pool.ntp.org](http://0.centos.pool.ntp.org) iburst #注释默认
#server [1.centos.pool.ntp.org](http://1.centos.pool.ntp.org) iburst
#server [2.centos.pool.ntp.org](http://2.centos.pool.ntp.org) iburst
#server [3.centos.pool.ntp.org](http://3.centos.pool.ntp.org) iburst
server 127.127.1.0 iburst #同步本主机
fudge 127.127.1.0 stratum 3 #设置此NTP服务器的层级
或
]# vim /etc/chrony.conf
pool [asia.pool.ntp.org](http://asia.pool.ntp.org) iburst prefer #添加,设置同步网络时间服务器
bindacqaddress 0.0.0.0
allow 0/0
cmdallow 127.0.0.1
##### 1.3.3 启动时间同步服务器
]# systemctl start ntpd #启动ntp
]# systemctl enable ntpd
或
]# systemctl start chronyd #启动服务
]# systemctl enable chronyd
##### 1.3.4 验证测试
]# netstat -unlp | grep 123
]# ntpdate 192.168.4.11 #在另一台服务器测试校准时间
或
]# vim /etc/chrony.conf
server NTP服务器ip或域名 iburst
]# systemctl restart chronyd
]# netstat -unlp | grep 323
]# chronyc sources -v
2.部署openstack主机(vh12、单机、管理机)
2.1 基础环境准备
##### 2.1.0 内存不足可能会报错(4G内存)
##### 2.1.1 配置ip地址
· 配置eth1为公共网络,网络地址192.168.4.0/24
· 配置eth2为隧道接口,网络地址192.168.2.0/24
· 关闭NetworkManager服务
]# systemctl stop NetworkManager
]# systemctl disable NetworkManager
· 禁用SELinux
· 卸载firewalld
· 域名解析
]# echo "nameserver 192.168.4.11" > /etc/resolv.conf
或
]# nmcli connection modify eth1 ipv4.dns "192.168.4.11"
##### 2.1.2 配置yum客户端
· 将RHEL7光盘作为基础的yum源
· 将RHEL7-extars光盘作为扩展的yum源
· 将RHEL7OSP光盘中所有目录作为yum源
]# yum repolist
##### 2.1.3 配置卷组
· Openstack为虚拟机提供的云硬盘,本质上是本地的逻辑卷
· 逻辑卷创建于名为cinder-volumes的卷组
]# lsblk
]# pvcreate /dev/vdb #创建物理卷
]# vgcreate cinder-volumes /dev/vdb #创建卷组cider-volumes
]# vgs
VG #PV #LV #SN Attr Vsize VFree
cinder-volumes 1 0 0 wz--n- <20.00g <20.00g
· 没有物理卷可以使用loop文件替代
]# losetup loop0 /var/disk.img
]# pvcreate /dev/loop0
]# vgcreate cinder-volumes /dev/loop0
##### 2.1.4 导入公钥(联网则不需要)
· 安装openstack期间,系统会要求**验证
· 若主机没有接入互联网,需要手工导入系统**
· **文件在光盘中提供
]# scp 192.168.4.1:/var/ftp/centos7/RPM-GPG-KEY-CentOS-7 ./
]# rpm --import RPM-GPG-KEY-CentOS-7
##### 2.1.5 安装依赖包
· 安装openstack期间,有些软件所依赖的软件包,并没有在安装过程中安装
· 这些软件包需要提前安装
· 本地RPM包也可以通过yum进行安装
]# #yum -y install conntrack-tools libnetfilter\_cthelper libnetfilter\_cttimeout libnetfilter_queue #已废
]# yum -y install qemu-kvm libvirt-client libvirt-daemon libvirt-daemon-driver-qemu python-setuptools
]# rpm -ivh python-greenlet #在centos的extras源中
2.2.安装Openstack
##### 2.2.1 安装openstack一键部署工具packstack
· 安装packstack
]# yum -y install openstack-packstack
· 生成应答文件(若DNS有误则无法生成)
]# packstack --gen-answer-file answer.ini
· 修改应答文件
]# vim answer.ini
11 CONFIG\_DEFAULT\_PASSWORD=redhat #修改,默认密码
42 CONFIG\_SWIFT\_INSTALL=n #修改,禁用swift(对象存储)模块
75 #CONFIG\_NTP\_SERVERS=192.168.4.11 #修改,NTP服务器地址
98 CONFIG\_COMPUTE\_HOSTS=192.168.4.12 #默认,计算节点的IP地址,多节点用逗号分隔
102 CONFIG\_NETWORK\_HOSTS=192.168.4.12 #默认,vxlan网络的IP地址,多节点用逗号分隔
333 CONFIG\_KEYSTONE\_ADMIN_PW=redhat #修改,生成admin用户的密码
554 CONFIG\_CINDER\_VOLUMES_CREATE=n #修改,已手动创建cinder-volumes卷组,禁用自动
840 CONFIG\_NEUTRON\_ML2\_TYPE\_DRIVERS=flat,vxlan #修改,设置网络支持协议
876 CONFIG\_NEUTRON\_ML2\_VXLAN\_GROUP=239.1.1.2 #修改,设置组播地址
881 CONFIG\_NEUTRON\_ML2\_VNI\_RANGES=1001:2000 #修改,可默认
910 CONFIG\_NEUTRON\_OVS\_BRIDGE\_MAPPINGS=physnet1:br-ex #修改,设置虚拟交换机
921 CONFIG\_NEUTRON\_OVS\_BRIDGE\_IFACES=br-ex:eth1 #修改,虚拟交换机连接的物理网卡
936 CONFIG\_NEUTRON\_OVS\_TUNNEL\_IF=eth2 #修改,设置隧道网络使用的网卡
1179 CONFIG\_PROVISION\_DEMO=n #修改,禁用测试的DEMO
##### 2.2.2 安装Openstack
· 如果前期环境准备无误,只要耐心等待安装结束即可
· 根据主机配置不同,安装过程需要20分钟左右或更久
· 如果出现错误,根据屏幕上给出的日志文件进行排错
]# packstack --answer-file answer.ini
##### 2.2.3 访问web
]# firefox 192.168.4.12/dashboard
#会报错,是horizon软件的一个bug,根据3.1.3修改
3.网络配置OVS
-
网络拓扑
3.1 配置外部OVS(开放的虚拟交换机)网桥
##### 3.1.1 配置br-ex为外部OVS网桥
]# vim /etc/sysconfig/network-scripts/ifcfg-br-ex #自动生成
#PROXY_METHOD=none
#BROWSER_ONLY=no
IPADDR=192.168.4.12 #ip地址
PREFIX=24 #ip子网掩码
#DEFROUTE=yes
#UUID=82c37449-69f4-45ec-8e23-f7b1bdd607d9
ONBOOT=yes #自启动
DEVICE=br-ex #设备硬件名,必须有
NAME=br-ex #设备显示名,可没有
DEVICETYPE=ovs #设备类型ovs
OVSBOOTPROTO=none #OVS协议=静态
TYPE=OVSBridge #网卡类型=开放式虚拟交换机网桥
DNS1=192.168.4.11 #DNS解析服务器地址
##### 3.1.2 配置eth1为外部OVS网桥的端口
]# vim /etc/sysconfig/network-scripts/ifcfg-eth1 #自动生成
DEVICE=eth1
NAME=eth1
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex
ONBOOT=yes
BOOTPROTO=none
3.2 重启网络
]# systemctl start network
3.3 验证OVS配置
]# ovs-vsctl show
]# ip -o addr show
三、Openstack操作基础
1.Horizon配置
1.1 概述
-
Horizon是一个用以管理、控制Openstack服务的Web控制面板,也称之为Dashboard仪表盘
-
可以管理实例、镜像、创建**对,对实例添加卷、操作Swift容器等
-
用户还可以在控制面板中使用终端(console)或VNC直接访问实例
-
基于python的django web框架进行开发
1.2 功能与特点
-
实例管理:(云主机)创建、终止实例,查看终端日志,VNC连接,添加卷等
-
访问与安全管理:创建安全群组,管理**对,设置浮动ip等
-
偏好设定:对虚拟硬件模板可以进行不同偏好设定
-
镜像管理:编辑或删除镜像(光盘镜像、硬盘镜像)
-
用户管理:创建用户等
-
卷管理:创建卷和快照
-
对象存储处理:创建、删除容器和对象
1.3 Horizon
-
Horizon BUG处理
-
安装虽没报错,但默认无法打开Horizon,这是一个软件的配置BUG
]# vim /etc/httpd/conf.d/15-horizon_vhost.conf
ServerAlias localhost
WSGIDaemonProcess apache group=apache processes=3 threads=10 user=apache
WSGIProcessGroup apache
WSGIApplicationGroup %{GLOBAL} #添加此行
- 重新载入配置文件
]# apachectl graceful
- 获取openstack账户信息
]# cat keystonerc_admin
unset OS\_SERVICE\_TOKEN
export OS_USERNAME=admin #用户名
export OS_PASSWORD=redhat #密码
- web管理页面
]# firefox 192.168.4.12
1.4 基本配置
2.项目管理
2.1 基本概念
-
项目:一组隔离的资源和对象。由一组关联的用户进行管理。
-
在老的版本里,也用租户(tenant)来表示;
-
根据配置的需求,项目对应一个组织、一个公司或是一个使用客户等;
-
项目中可以有多个用户,项目中的用户可以在该项目创建、管理虚资资源;
-
具有admin角色的用户可以创建项目;
-
项目相关信息保存到MariaDB中;
-
缺省情况下,packstack安装的openstack中有两个独立的项目:
- admin:为admin账户创建的项目
- service:与安装的各个服务相关联
2.2 在Horizon中管理项目
-
通过Horizon可以进行项目的创建和删除
- 【Identity身份管理】-【Projects项目】-【创建/删除项目】
-
创建项目(Create Project)
- 项目信息*(Project Information)
Name名称*:项目名称- 项目成员(Project Members)
- 项目组(Project Groups)
- 配额*(Quota)
Metadata Items: 元数据条目
VCPUs: VCPU(虚拟内核)数量
Instances: 云主机(实例)数量
Injected Files: 注入的文件
Injected File Content (Bytes): 已注入文件内容(Bytes)
Volumes: 卷(云硬盘)
Volume Snapshots: 卷快照(云硬盘快照)
Total Size of Volumes and Snapshots (GiB): 卷(云硬盘)及快照总大小 (GiB)
RAM (MB): 内存 (MB)
Security Groups: 安全组
Security Group Rules: 安全组规则
Floating IPs: 浮动IP
Networks: 网络
Ports: 端口
Routers: 路由
Subnets: 子网
2.3 命令行接口基础
- 获取认证相关信息
]# cat keystonerc_admin
unset OS\_SERVICE\_TOKEN
export OS_USERNAME=admin #用户名
export OS_PASSWORD=redhat #密码
export OS\_AUTH\_URL=[http://192.168.4.12:5000/v2.0](http://192.168.4.12:5000/v2.0) #认证网址
export PS1='\[\\aaa@qq.com\\h \\W(keystone_admin)\]\\$ ' #认证后的命令行提示符
export OS\_TENANT\_NAME=admin #租户名
export OS\_REGION\_NAME=RegionOne
- 初始化环境变量
]# source ~/keystonerc_admin #source 认证文件路径
(keystone_admin)\]# env | grep OS
- 使用帮助
(keystone_admin)\]# openstack help
2.4 通过命令行管理项目
- 创建项目
(keystone_admin)\]# openstack project create 项目名
- 列出所有项目
(keystone_admin)\]# openstack project list
- 查看项目的详细信息
(keystone_admin)\]# openstack project show 项目名
- 禁用与**项目
(keystone_admin)\]# openstack project set --disable 项目名 #禁用项目
(keystone_admin)\]# openstack project set --enable 项目名 #**项目
- 查看项目配额
(keystone_admin)\]# nova quota-show --tenant 项目名
- 更新项目可用vcpu数目
(keystone_admin)\]# nova quota-updata --core 数目 项目名
- 删除项目
(keystone_admin)\]# openstack project delete 项目名
四、排错
错误1:无法生成应答文件
- 故障现象:通过packstack生成应答文件时,命令无法成功执行
- 故障提示:name resolution error
- 原因分析:名称解析错误
- 解决办法:验证代安装openstack的服务器是否可以正常做域名解析,排除域名解析故障
错误2:无法使用命令行
- 故障现象:通过命令管理项目时,报错
- 原因分析:
- 执行命令时,必须有相关的权限
- 权限通过环境变量设置
- 解决办法:初始化管理员目录下的keystonerc_admin文件即可
##############################################33 [==========]
用户、配额管理
1.用户管理
1.1 基本概念
-
用户在openstack中用于身份认证;
-
管理员用户admin一般在packstack安装过程中创建;
-
其他用户由管理员用户创建,并为其指定可以访问的项目;
-
非管理员用户创建后,保存到MariaDB中;
-
非管理员用户具有以下权限:
- 启动实例
- 创建卷和快照
- 创建镜像
- 分配浮动IP
- 创建网络和路由器
- 创建防火墙及规则、规则策略
- 查看网络拓扑、项目使用概况等
1.2 通过Horizon管理用户
1.2.1 创建项目myproject,保持默认配置
- 【身份管理】-【项目】-【创建项目】-【名称:myproject】
- 【Identity】-【Projects】-【Create Project】-【Name:myproject】
1.2.2 创建user1用户,指定项目为myproject
- 【身份管理】-【用户】-【创建用户】-【用户名】-【密码】-【确认密码】-【主项目:myproject】
- 【Identity】-【Users】-【Create User】-【User Name】-【Password】-【Confirm Password】-【Primary > Project:myproject】
1.3 通过命令行管理用户
- 创建用户,指定密码
(keystone_admin)\]# openstack user create --password 密码 用户名
(keystone_admin)\]# openstack user create --password 123456 user2
- 修改用户密码
(keystone_admin)\]# openstack user set --password 新密码 用户名
(keystone_admin)\]# openstack user set --password redhat user2
- 设置用户的email地址
(keystone_admin)\]# openstack user set --email 邮箱 用户名
(keystone_admin)\]# openstack user set --email [aaa@qq.com](mailto:aaa@qq.com) user2
- 列出所有用户
(keystone_admin)\]# openstack user list
- 查看用户详细信息
(keystone_admin)\]# openstack user show 用户名
(keystone_admin)\]# openstack user show user2
- 禁用用户
(keystone_admin)\]# openstack user set --disable 用户名
(keystone_admin)\]# openstack user set --disable user2
- **用户
(keystone_admin)\]# openstack user set --enable 用户名
(keystone_admin)\]# openstack user set --enable user2
- 添加用户可访问项目与角色
(keystone_admin)\]# openstack role add --user 用户名 --project 项目名 角色
(keystone\_admin)\]# openstack role add --user user2 --project myproject \_member_
- 查看用户在项目中的角色
(keystone_admin)\]# openstack role list --project 项目名 --user 用户名
(keystone_admin)\]# openstack role list --project myproject --user user2
- 在项目中移除用户
(keystone_admin)\]# openstack role remove --project 项目名 --user 用户名 角色
(keystone\_admin)\]# openstack role remove --project myproject --user user2 \_member_
- 删除用户
(keystone_admin)\]# openstack user delete user2
(keystone_admin)\]# openstack user delete 用户名
2.配额管理
2.1 配额基础
-
管理员可以通过配额限制,防止资源过度使用;
-
配额基本项目,限制每个项目可以使用多少资源;
-
这些操作上的功能上的限制,赋予了管理员对每个项目的精准控制;
2.2 资源参数
-
安全组规则:指定每个项目可用的规则数;
-
核心:指定每个项目可用的VCPU核心数;
-
固定IP地址:指定每个项目可用的固定IP数;
-
浮动IP地址:指定每个项目可用的浮动IP数;
-
注入文件大小:指定每个项目内容大小;
-
注入文件路径:指定每个项目注入的文件路径长度;
-
注入文件:指定每个项目允许注入的文件数目;
-
实例:指定每个项目可创建的虚拟机实例数目;
-
秘钥对:指定每个项目可创建的秘钥数;
-
元数据:指定每个项目可用的元数据数目;
-
内存:指定每个项目可用的最大内存;
-
安全组:指定每个项目可创建的安全组数目;
2.3 通过Horizon管理配额
-
创建项目时管理配额
- 【身份管理】-【项目】-【创建项目】-【配额】
- 【Identity】-【Projects】-【Create Project】-【Quota】
-
已有项目管理配额
- 【Identity】-【Projects】-【选定项目】右侧-【Modify Quotas】
- 【身份管理】-【项目】-【选定项目】右侧的下拉菜单-【修改配额】
2.4 通过命令行管理配额
- 列出项目的缺省配额
(keystone_admin)\]# nova quota-defaults
- 列出某项目的配额
(keystone_admin)\]# nova quota-show --tenant 项目名
- 修改浮动IP地址配额(貌似已废弃)
(keystone_admin)\]# nova quota-update --floating-ips 20 myproject
################################################
<div STYLE="page-break-after: always;"></div>
云主机类型管理
1.基本概念
-
云主机类型就是资源的模板;
-
它定义了一台云主机可以使用的资源,如内存大小、磁盘容量和CPU核心数等;
-
Openstack提供了几个默认的云主机类型;
-
管理员还可以自定义云主机类型;
2.云主机类型参数
-
Name: 云主机类型名称;
-
ID: 云主机类型ID,系统自动生成一个UUID;
-
VCPUs: 虚拟CPU数目;
-
RAM(MB): 内存大小;
-
Root Disk(GB):外围(根)磁盘大小。若希望使用本地磁盘,设置为0;
-
Ephemeral Disk (GB):临时磁盘大小,第二个外围磁盘
-
Swap Disk(MB):交换磁盘大小;
3.通过Horizon管理云主机类型
- 【管理员】-【云主机类型】
- 【Admin】-【Flavors】
4.通过命令行CLI管理云主机类型
- 列出所有的云主机类型
(keystone_admin)\]# openstack flavor list
- 创建一个云主机类型
(keystone_admin)\]# openstack flavor create --public 云主机类型名 --id id号 --ram 内存大小 --disk 根磁盘大小 --vcpus 虚拟内存数
(keystone_admin)\]# openstack flavor create --public demo.tiny --id auto --ram 1024 --disk 10 --vcpus 1
- 删除云主机类型
(keystone_admin)\]# openstack flavor delete 云主机类型名
(keystone_admin)\]# openstack flavor delete demo.tiny
################################################
镜像管理
1.镜像基础
1.1 基本概念
-
在红帽Openstack平台中,镜像指的是虚拟磁盘文件,磁盘文件中应该已经安装了可启动的操作系统;
-
镜像管理功能由Glance服务提供;
-
它形成了创建虚拟机实例最底层的块结构;
-
镜像可以由用户上传,也可以通过红帽官方站点下载:
]# firefox https://docs.openstack.org/image-guide/obtain-images.html
1.2 Glance磁盘格式
-
raw:非结构化磁盘镜像管理(预分配,创建多大空间后即刻生成多大空间)
-
vhd:VMware、Xen、Microsoft、VirtualBox等均支持的通用磁盘格式
-
vmdk:另一个通用的磁盘格式(VMware使用较多)
-
vdi:VirtualBox虚拟机和QEMU模拟器支持磁盘格式
-
qcow2:QEMU模拟器支持的磁盘格式。空间自动扩展,并支持写时复制copy-on-write
-
iso:光盘数据内容的归档格式
1.3 镜像服务
-
镜像服务提供了服务器镜像的拷贝、快照功能,可以作为模板快速建立、启动服务器
-
镜像服务维护了镜像的一致性
-
当上传镜像时,容器格式必须指定
-
容器格式指示磁盘文件格式是否包含了虚拟机元数据
1.4 镜像容器格式
-
bare:镜像中没有容器或元数据封装
-
ovf:(工业标准)开源的文加规范,描述一个开源、安全、有效、可拓展的便携式虚拟打包及软件分布格式
-
ova:(工业标准)OVA归档文件
- ovf、ova可以在数据迁移时,转成此格式,在各虚拟机间迁移
-
aki:亚马逊内核镜像
-
ami:亚马逊主机镜像
2.镜像应用(user1非服务管理员)
2.1 通过Horizon管理镜像
· 【管理员】-【镜像】
· 【Admin】-【Images】
2.2 通过命令行CLI管理镜像
- 上传镜像
(keystone_admin)\]# openstack image create --disk-format 镜像格式 --min-disk 最小磁盘(GB) --min-ram 最小内存(MB) --file 镜像路径 镜像名称
(keystone\_admin)\]# openstack image create --disk-format qcow2 --min-disk 10 --min-ram 512 --file /root/small.img small\_rhel6
- 列出镜像
(keystone_admin)\]# openstack image list
- 查看镜像详情
(keystone_admin)\]# openstack image show 镜像名
(keystone\_admin)\]# openstack image show small\_rhel6
- 修改镜像属性
(keystone_admin)\]# openstack image set --public 镜像名 #镜像设置为公有
(keystone\_admin)\]# openstack image set --public small\_rhel6
- 另存镜像到本地
(keystone_admin)\]# openstack image save --file 本地保存路径 下载的镜像名
(keystone\_admin)\]# openstack image save --file /tmp/small\_rhel6.img small_rhel6
- 删除镜像
(keystone_admin)\]# openstack image delete 镜像名
(keystone\_admin)\]# openstack image delete small\_rhel6
################################################
网络管理
1.网络和路由
1.1 Openstack网络工作原理
-
实例被分配到子网中,以实现网络连通性
-
每个项目可以有一到多个子网
-
在红帽的Openstack平台中,Openstack网络服务是缺省的网络选项,Nova网络服务作为备用
-
管理员能够配置丰富的网络,将其他Openstack服务连接到这些网络的接口上
-
每个项目都能拥有多个私有网络,各个项目的私有网络间相互不受干扰
1.2 网络类型
-
项目网络:项目拥有的网络由Neutron提供。网络间采用VLAN隔离
-
外部网络:访问虚拟机实例的流量,通过外部网络进入。实例需要配置浮动IP地址
-
提供商网络:将实例连接到现有网络,实现虚拟机实例与外部系统共享同一二层网络
1.3 通过Horizon创建网络
-
项目网络由租户在自己的项目中创建
- 【项目】-【网络】-【网络】-【创建网络】
- 【Project】-【Network】-【Networks】-【Create Network】
-
通过Horizon设置外部网络
- 外部网络只有管理员有权限设置
--【创建网络】-【网络名称:wan】
--【子网名称:subnet2】-【网络地址:192.168.4.0/24】-【网关IP:192.168.4.11】
--【分配地址池:192.168.4.101,192.168.4.200】
-
配置路由器
- 创建路由
--【项目】-【网络】-【网络拓扑】-【新建路由】-【路由名称:router1】- 内外网通过路由器连接起来
-- 需admin账户登陆指定外部网络
---【管理员】-【网络】-【网络名称:wan】-【动作:编辑网络】-【勾选外部网络】
--【新建路由的右侧】-【设置网关】-【外部网络:wan】- 创建路由接口,与内网相连
-- 点击【新建的路由】-【接口】-【增加接口】-【子网:lan1】-【IP地址:192.168.10.254】
1.6 通过命令行CLI管理网络
- 创建网络
(keystone_admin)\]# openstack network create --project 项目名 --enable 网络名
(keystone_admin)\]# openstack network create \ #openstack 网络 创建
--project myproject \ #--project 项目名
--enable \ #--启动网络
lan2 #创建的网络名
- 创建子网
(keystone_admin)\]# neutron subnet-create --name 子网名 --gateway 网关ip --allocation-pool start=子网池开始ip,end=子网池结束ip --enable-dhcp 网络名 网段 --tenant-id 项目id
(keystone_admin)\]# neutron subnet-create \ #neutron 子网-创建
--name subnet3 \ #--name 子网名
--gateway 192.168.100.1 \ #--gateway 网关地址
--allocation-pool \ #--配置网池
start=192.168.100.101,end=192.168.100.200 \ #start=,end= 子网起始ip
--enable-dhcp \ #--启动-dhcp
lan2 192.168.100.0/24 \ #所属的网络名、网段
--tenant-id ff387162978643f894cdd1c98597160c #--tenant-id 项目id
(keystone_admin)\]# openstack project show 项目名 #查看项目id
- 新建路由器
(keystone_admin)\]# neutron router-create --tenant-id 项目id 路由名
(keystone_admin)\]# neutron router-create --tenant-id ff387162978643f894cdd1c98597160c router2
- 查看网络详情
(keystone_admin)\]# openstack network show 网络名
(keystone_admin)\]# openstack network show lan2
- 删除网络
(keystone_admin)\]# openstack network delete 网络名 #删除网络
(keystone_admin)\]# openstack network delete lan2
(keystone_admin)\]# neutron router-delete 路由名 #删除路由
(keystone_admin)\]# neutron router-delete router2
2.浮动IP地址
2.1 浮动IP地址的作用
-
浮动IP地址用于从外界访问虚拟机实例
-
浮动IP地址只能从现有浮动IP地址池中分配
-
创建外部网络时,浮动IP地址池被定义
-
虚拟机实例启动后,可以为其关联一个浮动IP地址
-
虚拟机实例也可以解除IP地址绑定
-
解除绑定后,再绑定时,不保证绑定原来的IP地址
2.2 在Horizon中管理浮动IP地址
-
【项目】-【计算】-【访问和安全】-【浮动IP】-【分配IP给项目】
-
【Project】-【Compute】-【Access & Security】-【Floating IPs】-【Allocate IP To Project】
2.3 通过命令行CLI管理浮动IP地址
- 分配地址
(keystone_admin)\]# neutron floatingip-create --tenant-id 项目id 外网名
(keystone_admin)\]# neutron floatingip-create --tenant-id ff387162978643f894cdd1c98597160c wan
- 查看浮动地址
(keystone_admin)\]# neutron floatingip-list
###############################################
安全和实例管理
1.安全管理
1.1 安全组
-
安全组用于控制对虚拟机实例的访问
-
安全组在高层定义了哪些网络及哪些协议是被授权可以访问虚拟机实例的
-
每个项目都可以定义自己的安全组
-
项目成员可以编辑默认的安全规则,也可以添加新的安全规则
-
所有的项目都有一个默认的default安全组
1.2 安全组规则
-
安全组规则定义了如何处理网络访问
-
规则基于网络或协议定义
-
每个规则都有出和入两个方向
-
规则也可以指定ip协议版本
-
默认的安全组规则,允许虚拟机实例对外访问,但是阻止所有对虚拟机实例的访问
1.3 创建安全组及规则
-
创建安全组
- 【项目】-【计算】-【访问和安全】-【安全组】-【创建安全组】
--【名称】:安全组名称
- 【Project】-【Compute】-【Access & Security】-【Security Groups】-【Create Security Group】
-
安全组规则定义
- 【项目】-【计算】-【访问和安全】-【安全组】-【选定安全组】右侧-【管理规则】-【添加规则】
- 【Project】-【Compute】-【Access & Security】-【Security Groups】-【选择安全组】右侧-【Manage Rules】-【Add Rule】
-- 【规则】:使用的规则模板
-- 【方向】:应用规则的方向,入口或出口
-- 【打开端口】:使用一个端口或一组端口
-- 【端口】:端口号,范围1~65535
-- 【远程】:允许远程访问的形式,CIDR、安全组
-- 【CIDR】:无类别域间路由标记,例:192.168.0.0/24,2001:db8::/128
-- 【安全组】:应用的安全组
-- 【以太网类型】:IPv4、IPv6
2.实例管理
2.1 云主机实例要求
-
使用m2.tiny云主机类型
-
云主机处于新建的安全组中
-
将云主机接入到内部网络
2.2 在Horizon中创建云主机
-
【项目】-【计算】-【云主机数量/实例】-【创建云主机】
-
【Project】-【Compute】-【Instances】-【Launch Instances】
2.3 关联浮动IP地址
-
远程主机通过访问浮动IP地址来访问云主机
-
【项目】-【计算】-【访问&安全】-【浮动IP】-【选择IP】右侧-【关联】
- 【IP地址:要关联的浮动ip】-【待连接的端口:要关联的云主机】
###############################################
云硬盘
创建云硬盘
- 【项目】-【计算】-【卷/云硬盘】-【创建卷/云硬盘】
使用云硬盘
- 【选择新建的云硬盘】右侧下拉菜单-【管理连接/已挂载的云硬盘】
-- 【连接到云主机】:选择需要使用云硬盘的云主机
###############################################
安装额外计算节点
1.新计算节点主机环境准备
1.1 准备网络
配置两块网卡,与第一台Openstack服务器的两块网卡对应
-
一块网卡用于主机间通信,另一块网卡用于隧道
-
DNS地址指向正确的服务器地址
- eth1 192.168.4.13 # DNS --> 192.168.4.11
- eth2 192.168.2.13
-
停止并禁用NetworkManager
1.2 设置服务
-
主机名:vh13.tedu.cn
-
关闭selinux、防火墙
-
关闭NetworkManager
1.3 准备软件环境
-
配置好yum,能够使用rhel7光盘和Openstack光盘提供的仓库源
-
由于安装过程中有些依赖包没有在yum源中,所以要提前安装
- 拷贝管理节点(vh11)的yum配置文件到本机
-
导入签名信息(秘钥)
2.安装计算节点
2.1 修改应答文件(管理机,vh12)
-
安装额外节点,只需要在第一台Openstack服务器上进行即可
-
修改配置文件
\]# vim answer.ini
CONFIG\_COMPUTE\_HOSTS=192.168.4.12,192.168.4.13 #添加新计算节点主机ip
CONFIG\_NETWORK\_HOSTS=192.168.4.12,192.168.4.13 #
2.2 安装节点(vh11)
- 在第一台节点上执行安装命令
]# packstack --answer-file ~/answer.ini
-
按提示,输入远程主机root密码
-
本机已安装服务,不会被覆盖,只有改动后的选项才需要重新配置
2.3 配置Horizon文件
]# vim /etc/httpd/conf.d/15-horizon_vhost.conf
...
WSGIProcessGroup apache
WSGIApplicationGroup %{GLOBAL} #添加此行
]# apachectl graceful #graceful,优美的
2.4 查看节点状态
]# firefox http://192.168.4.12
-
【Admin】-【System】-【Host Aggregates】
-
【管理员】-【系统】-【主机聚合/主机集合】
#####################################
排错
1.无法配置外部网络
- 问题现象:在Horizon界面中,希望将网络WAN设置为"外部网络",可找不到设置外部网络的入口
- 原因分析:外部网络只有管理员才能设置
- 解决办法:注销当前用户,使用管理员admin设置外部网络
2.云主机无法ping通
- 问题现象:已经为云主机分配了浮动IP地址;可通过ssh连接到云主机;远程ping云主机时却超时
- 原因分析:能够通过ssh通信,证明网络通畅;ping不通需要检查安全配置
- 解决办法:设置安全组规则,允许ICMP协议迚入
转载于:https://my.oschina.net/xinsui1314x/blog/3068629
上一篇: java实现基于JWT的token认证
下一篇: less_入门