Openstack使用实验(1)
什么是云计算基于互联网的相关服务的增加、使用和交付模式这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务)这些资源能够被 快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源IaaS(Infrastructure as a Service),即基础设施...
什么是云计算
基于互联网的相关服务的增加、使用和交付模式
这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务)
这些资源能够被 快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互
通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源
IaaS(Infrastructure as a Service),即基础设施即服务 ——云主机
提供给消费者服务是对所有计算基础设施的利用,包括处理CPU、内存、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序 。消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、存储空间,部署的应用
IaaS通常分为三种用法:公有云、私有云和混合云
PaaS(Platform-as-a-Service),意思是平台即服务——主件、中间件,如Docker
云计算时代相应的服务器平台 或者开发环境作为服务进行提供就成为了PaaS
PaaS运营商所需提供的服务,不仅仅是单纯的基础平台,而且包括针对该平台的技术支持服务,甚至针对该平台而进行的应用系统开发、优化等服务
简单的说,PaaS平台就是指云环境中的应用基础设施服务,也可以说是中间件即服务
SaaS(Software-as-a-Service),软件即服务 ——软件
它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务
用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据 存储,让用户随时随地都可以使用其定购的软件和服务
Openstack是一个由MASA(美国国家航空航天局)和Rackspace合作研发并发起的项目,是一套IaaS解决方案,是一个开源的云计算管理平台,以Apache许可证为授权,使用python编写
Openstack主要组件
Horizon:用于管理 Openstack各种服务的、基于Web的管理接口
通过图形界面实现创建用户、管理网络、启动实例等操作
Keystone:为其他服务提供认证和授权的集中身份管理服务,也提供了集中的目录服务
支持多种身份认证模式,如果密码认证、令牌认证、以及AWS(亚马逊Web服务)登陆
为用户和其他服务提供了SSO(single sign on)认证服务,使用django框架
Neutron:一种软件定义网络服务(SDN),用于创建网络、子网、路由器、管理浮动IP地址
可以实现虚拟交换机、虚拟路由器,可用于在项目中创建VPN
Cinder:云硬盘,为虚拟机管理存储卷的服务,为运行在Nova中的实例提供永久的块存储
可以通过快照进行数据备份,经常应用在实例存储环境中,如数据库文件
Nova:在节点上用于管理虚拟机的服务,它是一个分布式的服务,能够与Keystone交互实现认证,与Glance交互实现镜像管理,启动实例时,如果有需要则下载镜像
Glance:扮演虚拟机镜像注册的角色,允许用户为直接存储拷贝服务器镜像
这些镜像可以用于新建虚拟机的模板
Openstack版本
https://access.redhat.com/documentation/en-us/
Openstack结构图
Keystone: 实现身份认证
SSO: Single Sign On
SDN: 软件定义网络
配置openstack环境
1、新建两台虚拟机
配置基本环境
# cd /var/lib/libvirt/images/
# qemu-img create -f qcow2 -b rh7_template.img rh7_node1.img
配置IP地址
• 配置eth0为公共网络,网络地址192.168.4.0/24
• 配置eth1为隧道接口,网络地址192.168.2.0/24
vh01.tedu.cn 192.168.4.1/24 dns192.168.4.1提供dns和ntp服务
vh02.tedu.cn 192.168.4.2/24 192.168.2.2/24 OPENSTACK服务器,内在4G以上,添加一块20G的额外硬盘
[root@vh02 ~]# yum repolist
//源标识 源名称 状态
!calamari calamari 15
!common common 76
!director director 39
!extra extra 54
2、初始化虚拟机
配置ip地址、主机名、关闭防火墙、关闭selinux
[root@room1pc27 桌面]# clone-auto7
[root@room1pc27 桌面]# virsh start rh7_node1
[root@room1pc27 桌面]# virsh start rh7_node2
[root@room1pc27 桌面]# virsh console rh7_node1
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.1/24 connection.autoconnect yes
nmcli connection up eth0
echo "vh01.tedu.cn" > /etc/hostname
setenforce 0;systemctl stop firewalld;systemctl disable firewalld
# cat /etc/hosts |tail -2
vh01.tedu.cn 192.168.4.1
vh02.tedu.cn 192.168.4.2
[root@room1pc27 桌面]# virsh console rh7_node1 //与rh7_node1类似
3、配置yum源:
将RHEL7光盘作为基础的yum源,将OSP8光盘中所有目录作为openstack的yum源
1. RHEL7光盘内容作为仓库源
2. 因为OSP8光盘中包含多个目录,每个目录都是仓库源,所以使用脚本进行编写
[root@room1pc27 桌面]# mkdir /var/ftp/osp8
[root@room1pc27 桌面]# tail -2 /etc/fstab
/ISO/rhel-server-7.2-x86_64-dvd.iso /var/www/html/rh7dvd iso9660 defaults 0 0
/ISO/RHEL7OSP-8.0-20160421-x86_64.iso /var/ftp/osp8 iso9660 defaults,loop 0 0
[root@room1pc27 桌面]# mount -a
[root@room1pc27 桌面]# df -h /var/ftp/osp8
或OSP8使用脚本创建配置,RHEL7光盘按以前配置
#vim /etc/yum.repos.d/mkrepo.repo
#!/bin/bash
cd /var/ftp/osp8
for folder in *
do
if [ -d $folder ]; then
cat <<EOF >> /tmp/osp8.repo
[$folder]
name=$folder
baseurl=ftp://192.168.4.254/osp8/$folder
enabled=1
gpgcheck=0
EOF
fi
done
[root@room1pc27 桌面]# chmod +x mkrepo.sh
[root@room1pc27 桌面]# ./mkrepo.sh
[root@room1pc27 桌面]# cat /tmp/osp8.repo
[root@room1pc27 桌面]# scp /tmp/osp8.repo 192.168.4.1:/etc/yum.repos.d/
[root@room1pc27 桌面]# ^4.1^4.2 //执行上一条命令,只是将4.1换成4.2后再执行
4、配置dns服务器
• 为了方便实现名称解析,采用泛域名解析的方式
• 将vh01.tedu.cn至vh254.tedu.cn都做好DNS名称解析
• DNS服务器不能与openstack安装在同一台主机上
(1)安装
[root@vh01 ~]# yum install -y bind
(2)主配置文件
[root@vh01 ~]# vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; }; //访问控制列表
[root@vh01 ~]# vim /etc/named.rfc1912.zones 追加以下内容
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
allow-update { none; };
};
(3)区配置文件
[root@vh01 ~]# chmod 640 /var/named/tedu.cn.zone
[root@vh01 ~]# chgrp named /var/named/tedu.cn.zone
[root@vh01 ~]# vim /var/named/tedu.cn.zone
$TTL 86400
@ IN SOA vh01.tedu.cn. root.tedu.cn. (
20171101
3H
15M
1W
1D )
IN NS vh01.tedu.cn. //这里顶头的空白与上一行相同,此处为@
$generate 1-9 vh0$ IN A 192.168.4.$
$generate 10-254 vh$ IN A 192.168.4.$
//SOA有哪些
//ctrl+N,可以在vim内补全之前输入过的文字
- 检查语法
[root@vh01 ~]# named-checkconf /etc/named.conf
[root@vh01 ~]# named-checkconf /etc/named.rfc1912.zones
[root@vh01 ~]# named-checkzone tedu.cn /var/named/tedu.cn.zone
zone tedu.cn/IN: loaded serial 20171101
OK
(5)验证
[root@vh01 ~]# systemctl start named; systemctl enable named
[root@vh01 ~]# nslookup vh01.tedu.cn //查看能否解析
[root@vh01 ~]# nslookup vh09.tedu.cn
[root@vh01 ~]# nslookup vh101.tedu.cn
5 配置NTP服务器
时区:由于同一个时间点上面,整个地球的时间应该都不一样,为了解决这个问题,地球就被分成了24个时区
由于地球被人类以“经纬度”坐标来定位,而经度为零的地点在英国格林威治这个城市所在纵剖面上
地址一圈是360度角,共分24个时区,一个时区15度角
UTC时间
计算时间的时候,最准确的计算应该是使用“原子震荡周期”所计算的物理时钟了(Atomic Clock,即原子钟),这被 定义为标准时间
我们常见的UTC是Coordinated Universal Time(协议标准时间)就是利用这种Atomic Clock为基准所定义出来的正确时间
UTC标准时间是以GMT这个时区为主,本地时间与UTC时间的时差就是本地时间与GMT时间的时差
ntp: 网络时间协议,UDP123
将NTP服务与DNS服务部署在同一台主机上;确认NTP服务器的时区是东八区、确认NTP服务器的时间准确;计划安装openstack的服务器与NTP服务器进行时间校正
(1)安装
[root@vh01 ~]# yum install -y ntp
(2)修改配置文件
[root@vh01 ~]# vim /etc/ntp.conf
//配置192.168.4.0/24的主机可以校时, 但是不能改服务器参数
restrict 192.168.4.0 mask 255.255.255.0 nomodify
把4行server开头的配置注释,改为以下
#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
//ctrl+v,上下选择,#,Esc
server 127.127.1.0 iburst
fudge 127.127.1.0 stratum 3 //设置此NTP服务器的层级(三层)
(3)启动并测试
[root@vh01 ~]# systemctl enable ntpd; systemctl start ntpd
[root@vh01 ~]# netstat -ulnp | grep :123
[root@vh01 ~]# date
[root@vh02 ~]# ntpdate 192.168.4.1 在客户端上测试校准时间
[root@vh02 ~]# date
配置Openstack
(1)关闭NetworkManager服务
[root@vh01 ~]# systemctl stop NetworkManager;systemctl disable NetworkManager
[root@vh02 ~]# systemctl stop NetworkManager;systemctl disable NetworkManager
(2)配置卷组。Openstack为虚拟机提供的云硬盘,本质上是本地的逻辑卷,逻辑卷名为cinder-volumes的卷组
[root@vh02 ~]# pvcreate /dev/vdb
[root@vh02 ~]# vgcreate cinder-volumes /dev/vdb
[root@vh02 ~]# vgs
- 导入公钥、安装rpm包
安装Openstack期间,系统将会访问rabbitmq官方站点下载公钥
如果主机没有接入互联网,需要提前下载并导入该公钥
http://mirrors.aliyun.com/
http://mirrors.163.com/
安装Openstack期间,有些软件包所依赖的软件包,并没有在光盘的仓库中提供
这些软件包需提前下载并安装
本地RPM包也可以通过yum进行安装
[root@vh02 ~]# cd openstack/
[root@vh02 openstack]# rpm --import rabbitmq-signing-key-public.asc
[root@vh02 openstack]# yum -y install *.rpm //安装额外软件包
- 安装openstack部署工具packstack
[root@vh02 openstack]# yum -y install openstack-packstack
[root@vh02 openstack]# vim /etc/resolv.conf
nameserver 192.168.4.1
(5)修改应答文件
[root@vh02 openstack]# packstack --gen-answer-file answer.txt
[root@vh02 ~]# vim answer.txt
CONFIG_DEFAULT_PASSWORD=redhat
CONFIG_SWIFT_INSTALL=n
CONFIG_NTP_SERVERS=192.168.4.1
CONFIG_COMPUTE_HOSTS=192.168.4.2
CONFIG_KEYSTONE_ADMIN_USERNAME=admin
CONFIG_KEYSTONE_ADMIN_PW=redhat
CONFIG_CINDER_VOLUMES_CREATE=n
CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.2
CONFIG_NEUTRON_ML2_VNI_RANGES=1001:2000
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex
CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1
CONFIG_PROVISION_DEMO=n
(6)安装openstack
• 如果前期环境准备无误,只要耐心等待安装结束即可
• 根据主机配置不同,安装过程需要20分钟左右或更久
• 如果出现错误,根据屏幕上给出的日志文件进行排错
[root@vh02 openstack]# packstack --answer-file answer.txt
[root@vh02 ~]# ifconfig |more //可查看到生成一张虚拟的网卡
网络配置
1、修改配置文件
# cp /etc/sysconfig/network-scripts/ifcfg-{eth0,br-ex} //复制br-ex模版
配置外部OVS网桥
• 配置br-ex为外部OVS网桥
[root@vh02 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br-ex
DEVICE=br-ex
TYPE=OVSBridge
DEVICETYPE=ovs
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.4.2
PREFIX=24
DNS1=192.168.4.1
• 配置eth0为外部OVS网桥的端口
[root@vh02 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=OVSPort
OVS_BRIDGE=br-ex
DEVICETYPE=ovs
ONBOOT=yes
NAME=eth0
DEVICE=eth0
//重起网络服务后,测试网络连通性
[root@vh02 ~]# ovs-vsctl add-port br-ex eth0
[root@vh02 ~]# systemctl stop NetworkManager;systemctl disable NetworkManager
[root@vh02 ~]# systemctl restart network.service
# firefox http://192.168.4.2 & //账号:admin,密码redhat
Openstack操作基础
Horizon配置
Horizon是一个用以管理、控制OpenStack服务的Web控制面板,也称之为Dashboard仪表盘
• 可以管理实例、 镜像、 创建密匙对,对实例添加卷、操作Swift容器等。 除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例
• 基于python的django web框架进行开发
功能与特点
• 实例管理:创建、 终止实例,查看终端日志,VNC连接,添加卷等
• 访问与安全管理:创建安全群组,管理密匙对,设置浮动IP等
• 偏好设定:对虚拟硬件模板可以进行不同偏好设定
• 镜像管理:编辑或删除镜像
• 用户管理:创建用户等
• 卷管理:创建卷和快照
• 对象存储处理:创建、 删除容器和对象
项目管理
• 项目:一组隔离的资源和对象。 由一组关联的用户进行管理
• 在老的版本里,也用租户(tenant)来表示
• 根据配置的需求,项目对应一个组织、 一个公司或是一个使用客户等
• 项目中可以有多个用户,项目中的用户可以在该项目创建、 管理虚资资源
• 具有admin角色的用户可以创建项目
• 项目相关信息保存到MariaDB中
• 缺省情况下,packstack安装的openstack中有两个独立的项目
– admin:为admin账户创建的项目
– services:与安装的各个服务相关联
在Horizon中管理项目
• 通过Horizon可以进行项目的创建和删除
命令行接口基础
• 初始化环境变量
[root@vh02 ~]# source ~/keystonerc_admin
[root@vh02 ~(keystone_admin)]# env | grep OS
HOSTNAME=vh02.tedu.cn
OS_REGION_NAME=RegionOne
OS_PASSWORD=redhat
OS_AUTH_URL=hTp://192.168.4.2:5000/v2.0
OS_USERNAME=admin
OS_TENANT_NAME=admin
• 使用帮助
[root@vh02 ~(keystone_admin)]# openstack help
通过命令行管理项目
• 创建名为myproject项目
[root@vh02 ~(keystone_admin)]# openstack project create myproject
• 列出所有项目
[root@vh02 ~(keystone_admin)]# openstack project list
• 查看myproject详细信息
[root@vh02 ~(keystone_admin)]# openstack project show myproject
• 禁用与激活项目
[root@vh02 ~(keystone_admin)]# openstack project set --disable
myproject
[root@vh02 ~(keystone_admin)]# openstack project set --enable
myproject
• 查看项目配额
[root@vh02 ~(keystone_admin)]# nova quota-show --tenant myproject
• 更新可用vcpu数目为30
[root@vh02 ~(keystone_admin)]# nova quota-update --cores 30
myproject
• 删除myproject
[root@vh02 ~(keystone_admin)]# openstack project delete myproject
总结和答疑
无法生成应答文件
问题现象
• 通过packstack生成应答文件时,命令无法成功执行,提示name resolution error
故障分析及排除
• 原因分析
– Name resolution error提示的是名称解析错误
• 解决办法
– 验证待安装openstack的服务器是否可以正常做域名解析,将域名解析故障排除即可
无法使用命令行
问题现象
• 通过命令管理项目时,出现以下错误
[root@vh02 ~]# openstack project show
Missing parameter(s):
Set a username with --os-username, OS_USERNAME, or auth.username
Set an authenqcaqon URL, with --os-auth-url, OS_AUTH_URL or
auth.auth_url
Set a scope, such as a project or domain, set a project scope with --osproject-name, OS_PROJECT_NAME or auth.project_name, set a
domain scope with --os-domain-name, OS_DOMAIN_NAME or
auth.domain_name
故障分析及排除
• 原因分析
– 执行命令时,必须具有相关的权限
– 权限通过环境变量设置
• 解决办法
– 初始化管理员目录下的keystonerc_admin文件即可
更多推荐
所有评论(0)