openstack搭建-新手教程

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wadelbj/article/details/80841250

.Openstack概述

 

1.云计算简介

 

1.1什么是云计算

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

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

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

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

 

1.2IaaS

• IaaS(Infrastructure as a Service),基础设施即服务

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

• 消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、存储空间、部署的应用

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

 

1.3PaaS

• PaaSPlatform-as-a-Service的缩写,意思是平台即服务

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

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

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

 

1.4SaaS

• SaaSSoftware-as-a-Service(软件即服务)的简称

• 它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务

• 用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务

 

2.Openstack简介

2.1什么是Openstack

• OpenStack是一个由NASA(美国国家航空航天局)Rackspace合作研发并发起的项目

• OpenStack是一套IaaS解决方案

• OpenStack是一个开源的云计算管理平台

• 以Apache许可证为授权

 

2.2Openstack主要组件

• Horizon

– 用于管理Openstack各种服务的、基于web的管理接口

– 通过图形界面实现创建用户、管理网络、启动实例等操作

 

• Keystone

– 为其他服务提供认证和授权的集中身份管理服务

– 也提供了集中的目录服务

– 支持多种身份认证模式,如果密码认证、令牌认证、以及AWS(亚马逊Web服务)登陆

– 为用户和其他服务提供了SSO认证服务

 

• Neutron

– 一种软件定义网络服务

– 用于创建网络、子网、路由器、管理浮动IP地址

– 可以实现虚拟交换机、虚拟路由器

– 可用于在项目中创建VPN

 

• Cinder

– 为虚拟机管理存储卷的服务

– 为运行在Nova中的实例提供永久的块存储

– 可以通过快照进行数据备份

– 经常应用在实例存储环境中,如果数据库文件

 

• Nova

– 在节点上用于管理虚拟机的服务

– Nova是一个分布式的服务,能够与Keystone交互实现认证,与Glance交互实现镜像管理

– Nova被设计成在标准硬件上能够进行水平扩展

– 启动实例时,如果有需要则下载镜像

• Glance

– 扮演虚拟机镜像注册的角色

– 允许用户为直接存储拷贝服务器镜像

– 这些镜像可以用于新建虚拟机的模板

 

2.3Openstack版本

 

2.4Openstack结构图

 

openstack 安装环境准备

1.在物理机

安装配置DNS,能作为转发dns服务器即可

安装配置chrond server

添加一个网桥 vbr1

 

配置两个虚拟机

第一个 安装管理节点最少 8G 内存

       单独添加一块硬盘给 openstack cinder使用 20G

       单独添加一块网卡  使用vbr1

第二个 安装nova节点 最少5G 内存

            单独添加一块网卡  使用vbr1

 

配置 openstack 环境

1、安装一台 CentOS-1708 的虚拟机,最小安装

2、配置 yum 并导入 CentOS-1708 的数字签名公钥

3、禁用 selinux

4、卸载 NetworkManager 服务

5、卸载 firewalld

 

 

 

一、真机:

1、物理机安装配置dns

yum -y install bind-chroot

vim /etc/named.conf

options{

listen-on port 53 { 192.168.1.254; };

//listen-on-v6 port 53 { ::1; }; 

allow-query {any;};

forwarders { 176.19.0.26; };

dnssec-enable no;

dnssec-validation no;

};

systemctl restart named

 

验证

# dig @192.168.1.254 A www.baidu.com (解析成功)

 

2、安装配置时间服务器

vim /etc/chrony.conf

server ntp1.aliyun.com iburst

bindacqaddress 0.0.0.0   (监听所有地址)

allow 0/0  (允许所有客户端同步)  192.168.1.0/24 (允许192.168.1.0网段同步)

systemctl restart chronyd

systemctl enable chronyd

 

验证查看

# chronyc sources -v

^* 176.19.7.250     0   9     0     -     +0ns[   +0ns] +/-    0ns

 

这里是?就是不成功

这是表示同步成功

这是表示备用,有多台同步服务器

 

3、添加一块新网桥

# cd  /etc/libvirt/qemu/networks/

# cp vbr.xml vbr1.xml

# vim /etc/libvirt/qemu/networks/vbr1.xml

<network>

  <name>vbr1</name>

  <bridge name='vbr1' stp='on' delay='0'/>

 <ip address='192.168.2.254' netmask='255.255.255.0'>

   <dhcp>

    <range start='192.168.2.100' end='192.168.2.200'/>

   </dhcp>

  </ip>

</network>

 

vbr.xml类似,改下名字和网段

# virsh net-define vbr1.xml

# virsh net-start vbr1

# virsh net-autostart vbr1

 

4、修改两个虚拟机的配置文件

# cd  /var/lib/libvirt/images/

images]# qemu-img create -b node.qcow2 -f qcow2 node1.img 200G

images]# qemu-img create -b node.qcow2 -f qcow2 node2.img 200G

images]# qemu-img create -f qcow2 disk.img 20G

 

# cd /etc/libvirt/qemu/

qemu]# vim node1.xml

(虚拟机能使用的最大内存,可以动态调整)

<memory unit='GB'>9</memory> 

(创建虚拟机使用多少内存)

<currentMemory unit='GB'>9</currentMemory>

 

例如:

<name>node3</name>

<memory unit='GB'>16</memory>

<currentMemory unit='KiB'>2097152</currentMemory>

 

在原有的disk下面添加一部分

<disk type='file' device='disk'>

      <driver name='qemu' type='qcow2'/>

      <source file='/var/lib/libvirt/images/disk.img'/>

      <target dev='vdb' bus='virtio'/>

</disk>

 

在原有的interface下面添加一部分

<interface type='network'>

      <source network='vbr1'/>

      <model type='virtio'/>

</interface>

 

qemu]# vim node2.xml

<memory unit='GB'>6</memory>

<currentMemory unit='GB'>6</currentMemory>

 

在原有的interface下面添加一部分

<interface type='network'>

      <source network='vbr1'/>

      <model type='virtio'/>

</interface>

启动

# virsh

virsh # define node1.xml 

virsh # define node2.xml 

virsh # start node1

virsh # start node2

 

记得console node1 node2,输入密码为b,之前修改的

 

二、虚拟机修改

1、修改IP为静态 

[root@node1 ~]# cd /etc/sysconfig/network-scripts

[root@node1 network-scripts# vim ifcfg-eth0

# Generated by dracut initrd

DEVICE="eth0"

ONBOOT="yes"

IPV6INIT=no

BOOTPROTO=none

TYPE=Ethernet

IPADDR=192.168.1.10

PREFIX=24

GATEWAY=192.168.1.254

[root@node1 network-scripts]# cp  ifcfg-eth0  ifcfg-eth1

network-scripts]# vim ifcfg-eth1

DEVICE="eth1"

ONBOOT="yes"

IPV6INIT=no

BOOTPROTO=none

TYPE=Ethernet

IPADDR=192.168.2.10

PREFIX=24

 

# systemctl restart network

 

node2操作同node1一样,只需将192.168.1.10改为192.168.1.11,192.168.2.10改为192.168.2.11

2、将node1/分区空间扩容

node1上扩容/

df -h /分区只有16G

yum -y install cloud-utils-growpart

growpart /dev/vda 1 先将分区空间扩容 表示全部

xfs_growfs / 扩容文件系统

df -h

node2操作同node1一致

node1 ~]# yum -y install cloud-utils-growpart.noarch

node1 ~]# growpart /dev/vda  1

node1 ~]# lsblk 

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

vda    253:0    0  200G  0 disk 

└─vda1 253:1    0  200G  0 part /

vdb    253:16   0   20G  0 disk 

 

node1 ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/vda1        16G  1.1G   15G   7% /

 

node1 ~]# xfs_growfs /

node1 ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/vda1       200G  1.1G  199G   1% /

 

注意:在使用growpart /dev/vda 1命令时,如果是ssh连接的虚拟机会报错,unexpected output in sfdisk。这是因为物理机的默认语言是中文ssh连接使用的还是物理机的终端,所以修改真机的LANG=en_US.utf-8  就可以了。使用virsh console 连接虚拟机不会出现这个问题,这样连接使用的是虚拟机的终端,虚拟机默认是英文,所以没有问题.或者在 配置文件中进行修改

 

两种解决方法

# vim /usr/bin/growpart  

export LANG=en_US.UTF-8

 

[root@node1 ~]# locale

LANG=en_US.UTF-8

 

3、配置openstack软件包的yum源(两台虚拟机都配置)

在虚拟机导入gpgcheck的公钥

yum -y install lftp lrzsz

lftp 192.168.1.254/centos7/

get RPM-GPG-KEY-CentOS-7

bye

 

rpm --import RPM-GPG-KEY-CentOS-7

将默认的源 gpgcheck改为=1

 

在真机上将两个镜像挂载

RHEL7OSP-10.iso  /var/ftp/openstack 

RHEL7-extras.iso  /var/ftp/openstack-ext 

配置镜像里面的yum

使用脚本配置:

#!/bin/bash

cd /var/ftp/openstack/

for i in `ls -d rhel7*`

do

        cat >> /var/ftp/openstack.repo <<EOF

[$i]

name=$i

baseurl=ftp://192.168.1.254/openstack/$i

enabled=1

gpgcheck=0

 

EOF

done

openstack-extyum源 再追加进入 openstack.repo

将这个repo放入两个虚拟机中

 

4、修改两个虚拟机的主机名,让两个机器相互ping

hostnamectl set-hostname openstack node1

hostnamectl set-hostname nova node2

 

5、初始化openstack的卷存储,卷组名称必须叫cinder-volumes,在openstack上操作

openstack 需要使用块设备,这里要给 openstack 添加一个块设备

安装逻辑卷分区软件 yum -y install lvm2

pvcreate /dev/vdb

vgcreate cinder-volumes /dev/vdb

vgs

 

6、安装openstack依赖的软件包(两个节点都安装)

qemu-kvm

libvirt-client

libvirt-daemon

libvirt-daemon-driver-qemu

python-setuptools

 

安装前再次检查基础环境

1)禁用 selinux (物理机+2台虚拟机)

2)卸载 firewalld (虚拟机)

3)卸载 NetworkManager(虚拟机)

4)配置主机IP地址 (虚拟机两个网段ip地址都互相ping通)

5)配置主机yum客户端

6)创建cinder-volumes的卷组

7)导入公钥

8)安装依赖的软件包

 

7、安装openstack 工具包 openstack-packstackopenstack节点上安装)

yum -y install openstack-packstack

 

8、创建应答文件及修改应答文件

packstack --gen-answer-file answer.ini

vim answer.ini

11   CONFIG_DEFAULT_PASSWORD=Taren1 //配置默认密码

42   CONFIG_SWIFT_INSTALL=n //不使用外界存储

75   CONFIG_NTP_SERVERS=192.168.1.254 //NTP服务器ip地址

98   CONFIG_COMPUTE_HOSTS=192.168.1.10,192.168.1.11 //计算节点的ip地址,同一网段

102  CONFIG_NETWORK_HOSTS=192.168.1.10,192.168.1.11 //网络配置节点的ipdizhi

554  CONFIG_CINDER_VOLUMES_CREATE=n //cinder卷组,不自动创建,自己创

561  CONFIG_CINDER_VOLUMES_SIZE=20G //cinder卷组大小,不能超过自己创建的

840  CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan //两块网卡,配置两种类型

876  CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5 //用于通信的组播地址

910  CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex //网桥映射,把物理网络映射给一个

921  CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0 //绑定一个物理网络eth0:必须是1.10ip

936  CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1 //隧道通信的网卡

1179 CONFIG_PROVISION_DEMO=n //demo测试,改为不测试

 

9、安装openstackpackstack --help | grep answer

openstack节点上安装主程序

[root@openstack ~]# packstack --answer-file=answer.ini

出现 **** Installation completed successfully ******表示安装成功

 

 

*********************************************************************************************

openstack节点上安装主程序的过程中,常见的报错汇总:

1ERROR : Error appeared during Puppet run: 192.168.1.10_controller.pp

   Error: Cannot allocate memory - fork(2)

这是提示不能分配内存,产生的原因是192.168.1.10节点创建时内存分配不足,修改内存为8G以上重新安装

 

2ERROR : Error appeared during Puppet run: 192.168.1.10_controller.pp

   Error: /usr/sbin/ntpdate 192.168.1.254 returned 1 instead of one of [0]

这里是因为物理主机上ntp服务配置不成功,重新查看物理主机chrony.conf的配置

需要注意的是,server的地址一定要正确,allow ip/子网掩码一定要开,因为物理主机要做服务端

 

3ERROR : Error appeared during Puppet run: 192.168.1.10_network.pp

Error: Could not start Service[openvswitch]: Execution of '/usr/bin/systemctl start openvswitch' returned 1: A dependency job for openvswitch.service failed. See 'journalctl -xe' for details.

在使用命令 journalctl -xe | grep -i error,输出的详细信息为

Jun 26 17:34:16 openstack ovs-ctl[18076]: ERROR: This system does not support "SSSE3".

这里的问题是系统的cpu模式不对,产生的原因是虚拟机配置文件xml中删除了cpu mode的部分,导致之后创建虚拟机自动生成的cpu mode与不删除时的模式不一致。

有两种解决方法

1)修改openstack.xmlnova.xml的模板文件

将缺失的cpu mode部分,添加回去(可从其他人拷贝),然后重新创建虚拟机

2)关闭openstacknova节点虚拟机,使用virt-manager图形管理,点开2个虚拟机的小灯泡

修改cpus的配置,点选复制主机CPU配置,重新启动再次安装

 

4ERROR : Failed to run remote script, stdout: Loaded plugins: fastestmirror

  Loading mirror speeds from cached hostfile

  No package puppet available.

  No package hiera available.

这里提示puppet hiera不可用,产生的原因是nova节点上未安装这两个包,在nova节点上安装后再次安装主程序

 

5ERROR : Error appeared during Puppet run: 192.168.1.11_compute.pp

   Error: /Stage[main]/Packstack::Nova::Compute::Libvirt/Exec[virsh-net-destroy-

   default]: Could not evaluate: Could not find command '/usr/bin/virsh'

这是在1.11节点上出现的问题,命令virsh未找到,在nova节点上安装libvirt-client软件包来提供此命令

之后openstack节点上再次安装主程序

 

 

 

 

 

 

 

展开阅读全文

没有更多推荐了,返回首页