Openstack使用实验(1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jsut_rick/article/details/86613434

什么是云计算

基于互联网的相关服务的增加、使用和交付模式

这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务)

这些资源能够被 快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互

通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源

IaaSInfrastructure as a Service),即基础设施即服务 ——云主机

提供给消费者服务是对所有计算基础设施的利用,包括处理CPU、内存、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序 。消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、存储空间,部署的应用

IaaS通常分为三种用法:公有云、私有云和混合云

PaaSPlatform-as-a-Service),意思是平台即服务——主件、中间件,如Docker

云计算时代相应的服务器平台 或者开发环境作为服务进行提供就成为了PaaS

PaaS运营商所需提供的服务,不仅仅是单纯的基础平台,而且包括针对该平台的技术支持服务,甚至针对该平台而进行的应用系统开发、优化等服务

简单的说,PaaS平台就是指云环境中的应用基础设施服务,也可以说是中间件即服务

SaaSSoftware-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内补全之前输入过的文字
  1. 检查语法
[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
  1. 导入公钥、安装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    //安装额外软件包
  1. 安装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文件即可

猜你喜欢

转载自blog.csdn.net/jsut_rick/article/details/86613434