1 前言

今天我们为一位朋友搭建一套OpenStack云平台。



我们使用Kolla部署stein版本的OpenStack云平台。

kolla是用于自动化部署OpenStack的一个项目,它基于docker和ansible来实现;docker主要负责镜像制作、容器管理。而ansible主要负责环境的部署和管理。

2 实验环境介绍

由于我个人笔记本性能有限,因此本次实验采用all-in-one模式部署,即所有服务都部署在一台主机上。

其实只要all-in-one模式熟练部署,多节点部署上手很快的

2.1 系统准备

2.2 逻辑拓扑图

3 开始部署

3.1 Linux系统环境配置

1)主机网卡配置



2)关闭防火墙、selinux及libvirtd服务

[root@qll251 ~]# systemctl stop firewalld
[root@qll251 ~]# systemctl disable firewalld [root@qll251 ~]# vim /etc/selinux/config
改:SELINUX=enforcing
为:SELINUX=disabled [root@qll251 ~]# systemctl stop libvirtd.service
[root@qll251 ~]# systemctl disable libvirtd.service [root@qll251 ~]# reboot #重启生效

3)安装epel源

yum -y install epel-release

4)CentOS 部分常用软件安装

yum install -y vim net-tools  bash-completion-extras git

小提问:bash-completion-extras这个安装包有什么作用?

5)配置主机名及hosts文件

[root@qll251 ~]# hostname qll251
[root@qll251 ~]# echo "qll251" > /etc/hostname
[root@qll251 ~]# echo "192.168.1.251 qll251" >> /etc/hosts

6)同步时间

[root@qll251 ~]# yum -y install ntp
[root@qll251 ~]# systemctl start ntpd
[root@qll251 ~]# systemctl enable ntpd

7)配置 pip 镜像源,方便快速下载python库

[root@qll251 ~]# mkdir ~/.pip
[root@qll251 ~]# vim ~/.pip/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

3.2 安装基础包和docker服务

1)安装基础包

yum -y install python-devel libffi-devel gcc openssl-devel  python-pip

2)升级pip版本,不然后期安装会有报警

3)安装docker-ce

  • 安装依赖包
yum -y install yum-utils device-mapper-persistent-data lvm2
  • 添加docker-ce yum源文件
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 安装docker-ce
 yum -y install docker-ce
  • 启动docker服务
systemctl start docker
systemctl enable docker

4)指定docker 镜像加速器

[root@qll251 ~]# vim /etc/docker/daemon.json
添加如下内容:
{
"registry-mirrors": ["https://0i6rnnzu.mirror.aliyuncs.com"]
}

该加速器地址是我在阿里云上申请的,大家可直接使用

5)设置docker volume卷挂载方式

[root@qll251 ~]# mkdir /etc/systemd/system/docker.service.d
[root@qll251 ~]# vim /etc/systemd/system/docker.service.d/kolla.conf
# 添加如下内容
[Service]
MountFlags=shared

解释一下:MountFlags=shared,表示当宿主机新增分区时,docker服务无需重启即可识别。添加此参数后期OpenStack中使用cinder存储时,新加磁盘也比较方便

6)重启使配置生效

systemctl daemon-reload
systemctl restart docker
systemctl enable docker

3.3 从github 获取Kolla和Kolla-Ansible

1)安装ansible

yum -y install ansible

2)下载kolla及kolla-ansible代码

git clone https://github.com/openstack/kolla -b stable/stein
git clone https://github.com/openstack/kolla-ansible -b stable/stein
# 如果已有镜像,只执行第二步即可

3)手动安装kolla-ansible

python ~/kolla-ansible/setup.py install

4)安装kolla-ansible需要依赖包


[root@qll251 ~]# pip install -r /root/kolla-ansible/requirements.txt

如果出现此报错,我们强制更新即可;

执行:

[root@qll251 ~]# pip install --ignore-installed PyYAML

5)安装kolla需要依赖包

[root@qll251 ~]# pip install -r /root/kolla/requirements.txt

注意:如果出现类似如下错误:

requests 2.20.0 has requirement idna<2.8,>=2.5, but you'll have idna 2.4 which is incompatible

同样,强制更新requets库即可;

[root@qll251 ~]# pip install --ignore-installed requests

6)拷贝配置文件

[root@qll251 ~]# cd ~/kolla-ansible/
[root@qll251 kolla-ansible]# cp -r ./etc/kolla/* /etc/kolla/
[root@qll251 kolla-ansible]# cp ./ansible/inventory/* /etc/kolla/ #看下我们都拷贝了哪些文件
[root@qll251 ~]# ls /etc/kolla/
all-in-one globals.yml multinode passwords.yml
[root@qll251 ~]#

配置文件解释:

  • all-in-one #安装单节点OpenStack的ansible自动安装配置文件

  • multinode # 安装多节点OpenStack的ansible自动安装配置文件

  • globals.yml # 部署OpenStack的自定义配置文件

  • passwords.yml #存放OpenStack各个服务的密码

6)生成随机密码

[root@qll251 ~]# kolla-genpwd

使用kolla提供的密码生成工具自动生成OpenStack各服务的密码,如果密码不填充,后面的部署环境检查时不会通过的。

7)修改随机密码文件

# 为了方便登录Dashboard,我们将密码修改为123123
[root@qll251 ~]# vim /etc/kolla/passwords.yml
165 keystone_admin_password: 123123

8)修改globals.yml配置文件

[root@qll251 ~]#  vim /etc/kolla/globals.yml
# 指定镜像的系统版本
15 kolla_base_distro: "centos"
# 指定安装方式
18 kolla_install_type: "binary"
# 指定安装stein版本的OpenStack
21 openstack_release: "stein"
# 本次实验采用all-in-one模式,未启用高可用。填写宿主机IP即可
31 kolla_internal_vip_address: "192.168.1.251"
# OpenStack内部管理网络
89 network_interface: "eth0"
# Neutron外网网络
107 neutron_external_interface: "eth1"
# 本次实验采用all-in-one模式,未启用高可用
192 enable_haproxy: "no"

3.4 开始部署OpenStack

1)生成SSH Key,并授信本节点

ssh-keygen
ssh-copy-id root@192.168.1.251

2)配置单节点all-in-one配置文件

[root@qll251 ~]# vim /etc/kolla/all-in-one
# 将文件中所有的localhost替换成qll251
:1,$s/localhost/qll251/ # 去掉文件中所有包含“ansible_connection=local”
:1,$s/ansible_connection=local//

其实如果是单节点部署,这个步骤是可选的。带大家过一遍配置文件吧

3)带有kolla的引导服务器部署依赖关系

[root@qll251 ~]# kolla-ansible -i /etc/kolla/all-in-one bootstrap-servers

执行结果如下:

4)对主机执行预部署检查

[root@qll251 ~]# kolla-ansible -i /etc/kolla/all-in-one prechecks

执行结果如下:

其实如果能走到这一步,后面的实验基本就没啥问题了,加油!

5)拉取OpenStack镜像

[root@qll251 ~]# kolla-ansible -i /etc/kolla/all-in-one  pull

我们看下它在执行什么

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FkBFhzT0-1587031174141)(https://imgkr.cn-bj.ufileos.com/8b766bc2-2152-4ce3-80b8-4f1184854628.png)]

正在下载OpenStack镜像,等等哦

聪明的小伙伴会趁它在自动部署过程中,思考下当命令敲下去以后它都做了哪些操作

6)执行OpenStack部署

kolla-ansible -i /etc/kolla/all-in-one  deploy

7)验证部署

kolla-ansible -i /etc/kolla/all-in-one  post-deploy

执行结果如下,则说明您的OpenStack环境已部署成功!Congratulations!

同时也生成了admin用户的凭证, 即/etc/kolla/admin-openrc.sh文件

我们看下该凭证:

4 登录OpenStack云平台

在浏览器中输入:http://192.168.1.251

用户名:admin

密码:123123

登录密码我们在passwords.ym中指定为123123,在实际生产环境中可不能设置这么简单哦。

到此已完成OpenStack云平台的部署,明天我们再来讨论下OpenStack 云平台基本使用方法及利用OpenStack客户端命令创建一台测试云主机。

最后的话

别看我搭建这么顺利呀,真到你部署了,可能会满屏报错哦。一定要细心,一不留神就会出现如下情况:

当然也不要有心里负担,以上报错基本都是不细心导致的,比如配置文件中多敲了一个空格或者中英符合复用等。要有信心并且细心哦,相信你可以的!

欢迎关注微信公众号『开源Linux』,专注于分享Linux/Unix相关内容,包括Linux运维、Linux系统开发、网络编程、以及虚拟化和云计算等技术干货。后台回复『学习』,送你一套学习Linux的系列书籍,期待与你相遇。

干货 | 手把手教你搭建一套OpenStack云平台的更多相关文章

  1. 手把手教你搭建 ELK 实时日志分析平台

    本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kiban ...

  2. 干货|带你体验一次原生OpenStack云平台发放云主机的过程

    一个执着于技术的公众号 1 前言 上一章节我们完成了OpenStack云平台的搭建工作,今天就带大家一起学习下如何发放一台云主机 点击查看:如何搭建一套OpenStack云平台 2 发放OpenSta ...

  3. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...

    原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...

  4. 大数据江湖之即席查询与分析(下篇)--手把手教你搭建即席查询与分析Demo

    上篇小弟分享了几个“即席查询与分析”的典型案例,引起了不少共鸣,好多小伙伴迫不及待地追问我们:说好的“手把手教你搭建即席查询与分析Demo”啥时候能出?说到就得做到,差啥不能差人品,本篇只分享技术干货 ...

  5. 手把手教你搭建Pytest+Allure2.X环境详细教程,生成让你一见钟情的测试报告(非常详细,非常实用)

    简介 宏哥之前在做接口自动化的时候,用的测试报告是HTMLTestRunner,虽说自定义模板后能满足基本诉求,但是仍显得不够档次,高端,大气,遂想用其他优秀的report框架替换之.一次偶然的机会, ...

  6. 手把手教你搭建FastDFS集群(上)

    手把手教你搭建FastDFS集群(上) 本文链接:https://blog.csdn.net/u012453843/article/details/68957209        FastDFS是一个 ...

  7. 周一干货~手把手教你安装 Visual Studio 安卓模拟器

    干货~手把手教你安装 Visual Studio 安卓模拟器 转 http://mini.eastday.com/mobile/171107134734194.html# 今天软妹为大家带来一篇来自M ...

  8. 手把手教你搭建FastDFS集群(下)

    手把手教你搭建FastDFS集群(下) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u0 ...

  9. 手把手教你搭建FastDFS集群(中)

    手把手教你搭建FastDFS集群(中) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u0 ...

随机推荐

  1. 为什么使用 Executor 框架?

    每次执行任务创建线程 new Thread()比较消耗性能,创建一个线程是比较耗时. 耗资源的. 调用 new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制的创建, 线程之间的相互 ...

  2. Formatter和IStandardConversionService的使用方式

    Thymeleaf 1.Formatter接口是当进行请求参数的封装时,会根据Formatter的泛型进行调用Parse方法进行格式化类型 2.IStandardConversionService是T ...

  3. 如何创建spring web 工程

    在项目资源管理器右键,New-Spring Starter Proje 设置一些参数 点击Next,然后勾选两个选项

  4. springboot使用自定义注解和反射实现一个简单的支付

    优点: 未使用if else,就算以后增加支付类型,也不用改动之前代码 只需要新写一个支付类,给添加自定义注解@Pay 首先: 定义自定义注解 Pay 定义 CMBPay ICBCPay 两种支付 根 ...

  5. WzwJDBC 自定义工具类(获取连接,释放资源)

    package wzwUtil;import java.io.IOException;import java.io.InputStream;import java.sql.*;import java. ...

  6. java中如何获得src路径

    代码 解析: 类名.class.get类加载器().getResourceAsStream("文件名"); 案例代码: Demo.class.getClassLoader().ge ...

  7. 6_稳定性_李雅普诺夫_Lyapunov

    李雅普诺夫方法参考  

  8. 可想实现一个自己的简单jQuery库?(九)

    Lesson-8 事件机制 在讲事件机制之前呢,我们有一个很重要的东西要先讲,那就是如何实现事件委托(代理). 只有必须先明白了如何实现一个事件委托,我们才能更好的去实现on和off.在我看来,on和 ...

  9. 介绍一项让 React 可以与 Vue 抗衡的技术

    好吧,我承认我是标题党.React 明明如日中天,把它与 Vue 倒过来,给 Vue 加点东西或可与 React 抗衡.不过,这两年 Vue 干的正是这事,不断加东西,不断优化,按它现有发展速度超越 ...

  10. Exception Handling Considered Harmful

    异常处理被认为存在缺陷 Do, or do not. There is no try. - Yoda, The Empire Strikes Back (George Lucas) by Jason ...