使用kolla部署stine版本的OpenStack-allinone私有云

一、 OpenStack概述

1、 OpenStack概述
OpenStack是一个NASA美国国家航空航天局和Rackspace合作研収的,以Apache讲可证授权,并且是一个自由软件和开放源代码项目。
Open 是开放,Stack 则是堆砌之意,合起来就是将众多的功能服务堆积起来的集合,让人们通过OpenStack 于计算项目,能够将诸如计算能力、存储、网络和软件等资源抽象成服务,以便让用户可以通过互联网进程来享用,付费的形式也变得因需而定,调整方便,拥有极强的虚拟可扩展性,是公共和私有云的建设不管理软件中的优秀开源项目。

二、 OpenStack的作用

OpenStack是一个于平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。
OpenStack是一个旨在为公共及私有云的建设不管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(简称IaaS)资源的通用前端。
1、 Iaas(Infrastructure as a Service),即基础设施即服务。
消费者通过Internet 可以从完善的计算机基础设施获得服务。这类服务称为基础设施即服务。基于Internet 的服务(如存储和数据库)是 IaaS的一部分。

2、 PaaS是Platform-as-a-Service的缩写,意思是开发平台即服务,把服务器平台作为一种服务提供的商业模式。
例:OpenShift是红帽的于开发即服务(PaaS)。 OpenShift的logo如下:
使用kolla部署stine版本的OpenStack-allinone私有云_第1张图片
OpenShift 是自由和开放源码的于计算平台,它可以使开发能够创建、测试和运行他们的应用程,开发把它们部署到云中。Openshift 广泛支持多种编程语言和框架,如 Java,Ruby 和 PHP 等。另外它还提供了多种集成开发工具如 Eclipse integration,JBoss Developer Studio 和 Jenkins 等。
OpenShift 基于一个开源生态系统为移动应用,数据库服务等,提供支持。
哪些厂商在做 PaaS 平台?

例 2:新浪的 SAE PaaS 于平台,国内:http://www.sinacloud.com/sae.html
使用kolla部署stine版本的OpenStack-allinone私有云_第2张图片

PaaS 的 4大特点:
使用kolla部署stine版本的OpenStack-allinone私有云_第3张图片使用kolla部署stine版本的OpenStack-allinone私有云_第4张图片使用kolla部署stine版本的OpenStack-allinone私有云_第5张图片
使用kolla部署stine版本的OpenStack-allinone私有云_第6张图片

注:Iaas 干了硬件工程师的活 , paas 干了运维的活

3、 SaaS 是 Software-as-a-Service(软件即服务)的简称。
注:有 SaaS 平台, 不需要运维,不需要开发
实战场景: 我要 1 天就做一个腾讯课堂的平台。
像: http://www.edusoho.com/ 就是一个典型的 SaaS 平台
要求:你越来越与业!
总结:
三种于平台架构: IAAS ,PAAS ,SAAS 都是不同的商业模式。
按有者分类:
公有于(Public Cloud)、私有于(Private Cloud)、混合于(Hybrid Cloud)
按照技术厂商分类:
微软云计算解决方案、亚马逊 AWS、OpenStack 等
注:国内于平台使用 opensctack 二次开发比较多。

三、 OpenStack版本命名规则

1、 OpenStack命名方式
版本发布以 A-Z 字母顺序来发布,很好记。
例:
2010 年 10 月 发布‘Austin’
2011 年 2 月 发布‘Bexar’ [地名] [美国] 贝尔;
2011 年 4 月 发布‘Cactus’ [地名] [美国] 卡克特斯;
2011 年 7 月 发布‘Diablo’
2012 年 4 月 发布‘Essex’
2012 年 10 月 发布‘Folsom’
2013 年 4 月 发布‘Grizzly’
2013 年 10 月 发布 Havana
2014 年 4 月 发布‘Icehouse’
使用kolla部署stine版本的OpenStack-allinone私有云_第7张图片

四、 OpenStack各组件关系

1、 OpenStack核心组件
Keystone(身份认证)
Nova(计算)
Neutron(网络)
Glance(镜像存储)
Cinder(块存储)
Swift(对象存储)
Horizon(web UI 界面)
Ceilometer(计量)
Heat(部署编排)
Trove(数据库)

下面详细说明:
身份认证(Keystone):统一的授权、认证管理。所有组件都依赖亍 Keystone 提供 3A(Account,Authentication, Authorization)服务。
例 1: 3A 认证
1)认证(Authentication),验证用户的身份不可使用的网络服务;
2)授权(Authorization):依据认证结果开放网络服务给用户;
3)计帐(Accounting):记录用户对各种网络服务的用量,并提供给计费系统。整个系统在网络管理不安全问题中十分有效。
比如:宽带收费就是 3A 认证的典型例子:输入帐号密码(认证)-》开 100M 带宽(授权)-》在营业厅(计帐)
计算管理(Nova):Nova 是 OpenStack 于中的计算组织控制器。Nova 自身并没有提供任何虚拟化能力,相反它使用 libvirt API 来不被支持的虚拟技术 Hypervisors 交互。如:kvm、Xen、VMware等虚拟化技术。
Neutron(网络):实现虚拟机的网络资源管理如网络连接、ip 管理、公网映射
镜像管理(Glance): 主要存储和管理系统镜像。 centos 镜像
块存储(Cinder):为虚拟机提供存储空间。 比如硬盘,分区,目前支持LVM、ip-san、fc-san等。
对象存储(Swift):OpenStack Swift 开源项目提供了弹性可伸缩、高可用的分布式对象存储服务,适合存储大规模非结构化数据。通过key/value的斱式实现对文件的存储,现在的云盘就是这样的,和MFS,HDFS类似
注:如果客户需要一个1000T的存储空间,使用Cinder就不行,效率太低。这时就用Swift。
界面(Horizon):安装好后,openstack 的 web 界面控制台 DashBoard
Ceilometer(计量):Ceilometer 是 OpenStack 中的一个子项目,它像一个漏斗一样,能把
OpenStack 内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑。
Heat(部署编排):是一个编排引擎,它可以基于文本文件形式的模板启动多个复合于应用程序(这些文件可以被视为代码)。简单来说,Heat 为 OpenStack 用户提供了一种自动创建于组件(如网络、实例、存储设备等)的方法。
Trove(数据库):为关系型数据库和非关系型数据库引擎提供可扩展的和可靠的于数据库服务,并继续改进其功能齐全、可扩展的开源框架。
使用kolla部署stine版本的OpenStack-allinone私有云_第8张图片
使用kolla部署stine版本的OpenStack-allinone私有云_第9张图片
Openstack的网络模式有5种
Local模式:一般测试时使用,只需一台物理机即可。
GRE模式:隧道模式, VLAN数量没有限制,性能有点问题。
Vlan模式:vlan数量有4096的限制
VXlan模式:vlan数量没有限制,性能比GRE好。
Flat模式:管理员创建租户直接到外网,不需要NAT。
扩展:VXLAN 概述
VXLAN 是由思科和 VMware 提出的。
使用kolla部署stine版本的OpenStack-allinone私有云_第10张图片
LAN 局域网
VLAN 虚拟局域网
VXLAN 虚拟扩展局域网
VXLAN (Virtual Extensible LAN,虚拟扩展局域网) 它是一种在 UDP 中封装 MAC 的简单机制,可以创建跨多个物理 IP 子网的虚拟 2 层子网
比如: 我在北京,你在上海,通过 vxlan 技术,可以让我们在同一个局域网中。 (有点 隧道)
为什么我们需要这种新技术?
现在不只一种标准可以在 IP 中封装 MAC(包括 EtherIP 和 GRE 通道桥接),但是它们都无法做到VLAN 逻辑标记,因此您只能使用最多 4096 个不同的 VLAN。即使可以使用这些标准来分隔逻辑网,您也必须(在负载中)深入分析 MAC 头信息,以查找出虚拟分片 ID。而 VXLAN 通过一个 24 位分片 ID,在一个数据中心内它能部署百万个虚拟网。
而丏,VXLAN 数据包格式很容易在硬件中实现,所以它以后也讲可以更紧密地不物理网络设备集成。
何时需要 VXLAN?
在需要大量逻辑网时,才应该考虑使用 VXLAN。如果只有少量逻辑网,那么就还是应该使用经过时
间考验的技术,如 VLAN。 你的逻辑网不超过 4096 个,都用 VLAN。
openstack 项目相关资源获取
http://www.openstack.org
https://github.com/openstack
http://docs.openstack.org/
http://www.openstack.cn openstack 中文
2、 OpenStack部署方法
 社区手册
http://docs.openstack.org
 RDO
https://www.rdoproject.org(http://openstack.redhat.com)
 RedHat Enterprise Linux OpenStack Platform (E210 考试)
http://www.redhat.com/en/technologies/linux-platforms/openstack-platfo
rm
 Mirantis(Fuel)
https://www.mirantis.com
 高级定制
Puppet、Chef
 kolla 基于 docker+ansible 安装 openstack ,把 openstack 每个组件做成 docker 实例

五、 kolla概述和OpenStack所有节点Linux系统初始化配置

kolla 是 openstack 下面用亍自动化部署的一个项目,它基于 docker 和 ansible 来实现,docker主要负责镜像制作,容器管理。而 ansible 主要负责环境的部署和管理。
Kolla 实际上是分为两大块的,一部分,Kolla 提供了生产环境级别的镜像,涵盖了 Openstack 用到的各个服务,另一部分是自动化的部署,也就是上面说的 ansible 部分。最开始两个部分是在一个项目中的(也就是 Kolla),从 O 版本开始将两个部分独立开来,Kolla 项目用来构建所有服务的镜像,Kolla-ansible 用来执行自劢化部署。

1、 Linux系统环境配置
1) 硬件环境
需要一台全新高配的 VMware 虚拟机。 安装好 centos7.5 系统。
内存:12G, 硬盘:200G (swap 分区 4G,boot 200M,剩下都给根分区) ,CPU 开启虚拟化支持 , 双网卡都是桥接模式

2) 关闭selinux和防火墙
[root@xuegod120 ~]# vim /etc/selinux/config
SELINUX=disabled
[root@xuegod120 ~]# reboot #如果原来的系统开着 selinux,那么需要重启,才能关闭 selinux

[root@xuegod120 ~]# systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld

3) 安装epel源
[root@xuegod120 yum.repos.d]# yum -y install epel-release
[root@xuegod120 ~]# cd /etc/yum.repos.d/
[root@xuegod120 yum.repos.d]# ls
back CentOS-Base.repo epel.repo
[root@xuegod120 yum.repos.d]# mv back/* ./ #将系统所有的官方源移动到yum目录下
[root@xuegod120 yum.repos.d]# ls
back CentOS-Debuginfo.repo CentOS-Sources.repo epel-testing.repo
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo epel.repo
[root@xuegod120 ~]# yum clean all
[root@xuegod120 ~]# yum makecache

4) 修改主机名和配置hosts文件
[root@xuegod120 ~]# hostname
xuegod120.com
[root@xuegod120 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.120 xuegod120.com xuegod120 #增加这行内容

2、 配置网卡信息
在xuegod120上添加一个新的网卡,类型是bridge模式
使用kolla部署stine版本的OpenStack-allinone私有云_第11张图片
注:如果在服务器直接安装,两块网卡的 IP,同一个网段或者不同网段都可以的

生成ens38的配置文件,并修改内容
TYPE=“Ethernet”
BOOTPROTO=“none”
NAME=“ens38”
DEVICE=“ens38”
ONBOOT=“yes”
使用kolla部署stine版本的OpenStack-allinone私有云_第12张图片

3、 安装基础包和docker服务
1) 安装基础包
[root@xuegod120 ~]# yum -y install python-devel libffi-devel gcc openssl-devel gitpython-pip
2) 配置pip镜像源
[root@xuegod120 ~]# tee /root/.pip/pip.conf << eof

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
eof

3) 升级pip
[root@xuegod120 ~]# pip install -U pip #升级pip,不然后期会报警

六、 安装kolla-ansible

1、 安装ansible
[root@xuegod120 ~]# pip install ansible
注:不要使用yum安装ansible,yum安装的ansible和后期kolla中的YAML包冲突

2、 安装koll-ansible
1) 下载kolla-ansible的代码
kolla-ansible 包的作用:用来自劢化部署 openstack 。 kolla-ansible 中包括了使用 ansible 自动安装 openstack 的脚本文件和 PlayBook 的.yml 文件
[root@xuegod120 ~]# pip install kolla-ansible

如果报错:已经安装 PyYAML 3.10,但是我们需要 PyYAML
Found existing installation: PyYAML 3.10
Cannot uninstall ‘PyYAML’. It is a distutils installed project and thus we cannot
accurately determine which files belong to it which would lead to only a partial uninstall.
解决:
[root@xuegod120 ~]# pip install PyYAML --ignore-installed PyYAML #忽略安装的PyYAML,进行安装
[root@xuegod120 ~]# pip install kolla-ansible #安装 kolla-ansible

3、 复制kolla-ansible的相关配置文件
[root@xuegod120 ~]# cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/
[root@xuegod120 ~]# ls /etc/kolla/
globals.yml passwords.yml
[root@xuegod120 ~]# cp /usr/share/kolla-ansible/ansible/inventory/* /etc/kolla/
[root@xuegod120 ~]# ll /etc/kolla/
total 56
-rw-r–r-- 1 root root 9017 Sep 5 22:31 all-in-one
-rw-r–r-- 1 root root 20555 Sep 5 22:30 globals.yml
-rw-r–r-- 1 root root 9491 Sep 5 22:31 multinode
-rw-r–r-- 1 root root 5168 Sep 5 22:30 passwords.yml
注:all-in-one #安装单节点 openstack 的 ansible 自动安装配置文件
multinode #安装多节点 openstack 的 ansible 自动安装配置文件
globals.yml #openstack 部署的自定义配置文件
passwords.yml #openstack 中各个服务的密码

4、 修改虚拟机类型为qemu
注:如果是在虚拟机里装kolla,希望可以在KVM中再启动虚拟机,那么你需要把virt_type=qemu,
默认是 kvm。如果 vmware 开了“虚拟化 Intel VT”功能,就不用写这个了。
[root@xuegod120 kolla-ansible]# mkdir -p /etc/kolla/config/nova
[root@xuegod120 kolla-ansible]# cat << EOF > /etc/kolla/config/nova/nova-compute.conf
[libvirt]
virt_type=qemu
cpu_mode = none
EOF

七、 自定义kolla-ansible安装OpenStack的相关配置文件

1、 自动生成OpenStack各服务的密码文件
[root@xuegod120 ~]# kolla-genpwd
[root@xuegod120 ~]# vim /etc/kolla/passwords.yml
改:165 keystone_admin_password: HsPbEQHxTqmewKYNoRPpIOyQNdEYpHy36OX67TG3
为:165 keystone_admin_password: 123456 #记得冒号后面有空格
注:这是登录 Dashboard,admin 使用的密码,你可以根据自己需要进行修改

2、 编辑/etc/kola/globals.yml自定义OpenStack中部署事项
[root@xuegod120 ~]# vim /etc/kolla/globals.yml
改:15 #kolla_base_distro: “centos” #选择下载的镜像为基于 centos 版本的镜像
为: kolla_base_distro: “centos”
改:18 #kolla_install_type: “binary” #去了前面的#号,使用 yum 安装二进制包安装,源码安装,
指的是使用 git clone 源码安装
为:18 kolla_install_type: “binary”
改:21 #openstack_release: “”
为:openstack_release: " stein" #指定安装 stein 版本的 openstack,后期下载的 openstack
相关的 docker 镜像的 tag 标记也都为 stein。 注:stein 这个单词必须全部小写。
23 # Location of configuration overrides
24 #node_custom_config: “/etc/kolla/config” #配置文件的位置
改:31 kolla_internal_vip_address: "192.168.1.120“
为:31 kolla_internal_vip_address: "192.168.1.120 我们没有启用高可用,所以这里的 IP 可
以和 ens33 一样,也可以独立写一个和 ens33 同网段的 IP。这一项的作用是:指定 openstack 内部管理地址,以后就通过这个 IP 地址访问 openstack web 界面,管理私于。
注:如果配置了高可用,这里要使用一个没被占用的 IP。这个 IP 是搭建 HA 高可用的浮劢 IP。 此 IP将由 keepalived 管理以提供高可用性,应设置为和 network_interface ens33 同一个网段的地址。
改:85 #network_interface: “eth0”
为: network_interface: “ens33” # Kolla-Ansible 需要设置一些网络选项。 我们需要设置
OpenStack 使用的网络接口。设置的第一个接口是“network_interface”。 这是 openstack 内部多个管理类型网络的默认接口。
改:103 #neutron_external_interface: “eth1”
为:103 neutron_external_interface: “ens38” #所需的第二个接口与用于 Neutron 外部(或
公共)网络,可以是 vlan 或 flat,取决于网络的创建方式。 此接口应在没有 IP 地址的情况下处于活动如果不是,openstack 云平台中的云主机实例将无法访问外部网络。 只要网卡启动着,就可以了,不要给IP,有 IP 时 br-ex 桥接就不成功了。
改:188 #enable_haproxy: “yes”
为:188 enable_haproxy: “no” #去了前面的#号,改 yes 为 no。关闭高可用
211 #enable_cinder: “yes” #使用stein版本部署OpenStack保持默认yes,如果关闭,后面再创建云主机的时候回启动实例失败。如果使用rocky版本,这里就需要设置为no。

3、 于kolla-ansible安装OpenStack私有云
1)生成sshkey并授信本节点
[root@xuegod120 ~]# ssh-keygen
[root@xuegod120 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

2) 配置单节点清单文件(目前只有一个节点)
[root@xuegod120 ~]# vim /etc/kolla/all-in-one #把 localhost 替换成 xuegod120
:1, s / l o c a l h o s t / x u e g o d 120. c o m / : 1 , s/localhost/xuegod120.com/ :1, s/localhost/xuegod120.com/:1,s/ansible_connection=local//
注:将以下组件,都安装到 xuegod120 这台机器上:改第 1 行到 19 行中。
[control]
xuegod120.cn
[network]
xuegod120.cn
[compute]
xuegod120.cn
[storage]
xuegod120.cn
。。。
[deployment]
xuegod120.cn

4、 开始部署OpenStack
1) 通过安装bootstrap-servers把部署OpenStack所需要的依赖包都安装好
Kolla-Ansible 提供了一个将以正确版本安装所有必需服务的剧本 bootstrap-servers。所以我们先安装 bootstrap-servers 把安装 openstack 所依赖的软件包都先提前安装好。包括 docker 服务。
[root@xuegod120 ~]# kolla-ansible -i /etc/kolla/all-in-one bootstrap-servers

2) 对主机进行预部署检查
[root@xuegod120 ~]# kolla-ansible -i /etc/kolla/all-in-one prechecks

3) 查看docker volume卷挂载方式
[root@xuegod120 ~]# cat /etc/systemd/system/docker.service.d/kolla.conf #查看
[Service]
MountFlags=shared
ExecStart=
ExecStart=/usr/bin/dockerd --log-opt max-file=5 --log-opt max-size=50m
注:加上 MountFlags=shared 后,当 docker 宿主机新增分区时,docker 服务不用重启。添加这个参考后,后期在 openstack 中使用 cinder 存储服务时,新加磁盘比较方便。

4) 指定docker镜像加速器
指定阿里云或者其它国内加速器,不然默认是从国外下载docker镜像,很慢,还容易出错
[root@xuegod120 ~]# tee /etc/docker/daemon.json << EOF
{
“registry-mirrors”: [" https://p3rfhvb9.mirror.aliyuncs.com"]
}
EOF
注:如果需要使用自己的本地私有仓库,写成如下:
{
“registry-mirrors”: [“https://e9yneuy4.mirror.aliyuncs.com”]
“insecure-registries”: [“192.168.1.12000”]
}
重启相关服务
[root@xuegod120 ~]# systemctl daemon-reload #只有修改了服务的启动脚本,才需要执
行 daemon-reload。只修改服务的配置文件,是不需要 daemon-reload
[root@xuegod120 ~]# systemctl enable docker && systemctl restart docker &&
systemctl status docker

5) 拉取镜像
[root@xuegod120 kolla]# kolla-ansible -i /etc/kolla/all-in-one pull
查看网络链接:
[root@xuegod120 ~]# netstat -antup | grep 443
tcp 0 385 192.168.1.120580 116.62.81.173:443 ESTABLISHED
42547/dockerd
发现在走的是阿里云的 docker 加速结点,下载的镜像。
使用kolla部署stine版本的OpenStack-allinone私有云_第13张图片
[root@xuegod120 ~]# docker images #查看下载到的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
kolla/centos-binary-cron stein 659fa47c7d43 About an hour ago 455MB
。。。
[root@xuegod120 ~]# docker images | wc -l #整个过程,会下载了 32 个镜像
32

6) 最后进入实际的OpenStack部署
[root@xuegod120 ~]# kolla-ansible -i /etc/kolla/all-in-one deploy #因为咱们前面已经下载的镜像,所以这时启动 docker 实例会快一些。如果前面没有下载镜像,那么这时,还会边下载各种
openstack 相关的镜像边部署 docker 实例。
报错:
在这里插入图片描述
RUNNING HANDLER [common : Initializing toolbox container using normal user] ****
fatal: [xuegod120]: FAILED! => {“changed”: false, “cmd”: [“docker”, “exec”, “-t”,
“kolla_toolbox”, “/usr/bin/ansible”, “–version”], “delta”: “0:00:01.251727”, “end”:
“2018-08-29 22:52:03.283733”, “msg”: “non-zero return code”, “rc”: 126, “start”:
“2018-08-29 22:52:02.032006”, “stderr”: “”, “stderr_lines”: [], “stdout”: "OCI runtime exec
failed: exec failed: container_linux.go:348:
解决:
[root@xuegod120 ~]# kolla-ansible -i /etc/kolla/all-in-one deploy #再运行一下。就自行解
决了
到此安装成功。

7) 验证部署
[root@xuegod120 ~]# kolla-ansible -i /etc/kolla/all-in-one post-deploy
这样就创建 /etc/kolla/admin-openrc.sh 文件
[root@xuegod120 kolla]# ll /etc/kolla/admin-openrc.sh
-rw-r–r-- 1 root root 323 8 月 10 17:58 /etc/kolla/admin-openrc.sh
[root@xuegod120 kolla]# cat admin-openrc.sh #查看 openstack 登录帐号
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123456 #帐号和密码

8) 访问测试
http://192.168.1.120
使用kolla部署stine版本的OpenStack-allinone私有云_第14张图片

你可能感兴趣的:(第四阶段-虚拟化-私有云)