干货 | 手把手教你搭建一套OpenStack云平台
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云平台的更多相关文章
- 手把手教你搭建 ELK 实时日志分析平台
本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kiban ...
- 干货|带你体验一次原生OpenStack云平台发放云主机的过程
一个执着于技术的公众号 1 前言 上一章节我们完成了OpenStack云平台的搭建工作,今天就带大家一起学习下如何发放一台云主机 点击查看:如何搭建一套OpenStack云平台 2 发放OpenSta ...
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...
- 大数据江湖之即席查询与分析(下篇)--手把手教你搭建即席查询与分析Demo
上篇小弟分享了几个“即席查询与分析”的典型案例,引起了不少共鸣,好多小伙伴迫不及待地追问我们:说好的“手把手教你搭建即席查询与分析Demo”啥时候能出?说到就得做到,差啥不能差人品,本篇只分享技术干货 ...
- 手把手教你搭建Pytest+Allure2.X环境详细教程,生成让你一见钟情的测试报告(非常详细,非常实用)
简介 宏哥之前在做接口自动化的时候,用的测试报告是HTMLTestRunner,虽说自定义模板后能满足基本诉求,但是仍显得不够档次,高端,大气,遂想用其他优秀的report框架替换之.一次偶然的机会, ...
- 手把手教你搭建FastDFS集群(上)
手把手教你搭建FastDFS集群(上) 本文链接:https://blog.csdn.net/u012453843/article/details/68957209 FastDFS是一个 ...
- 周一干货~手把手教你安装 Visual Studio 安卓模拟器
干货~手把手教你安装 Visual Studio 安卓模拟器 转 http://mini.eastday.com/mobile/171107134734194.html# 今天软妹为大家带来一篇来自M ...
- 手把手教你搭建FastDFS集群(下)
手把手教你搭建FastDFS集群(下) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u0 ...
- 手把手教你搭建FastDFS集群(中)
手把手教你搭建FastDFS集群(中) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u0 ...
随机推荐
- Java 中 Semaphore 是什么?
Java 中的 Semaphore 是一种新的同步类,它是一个计数信号.从概念上讲,从 概念上讲,信号量维护了一个许可集合.如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可.每 ...
- 解释基于 XML Schema 方式的切面实现?
在这种情况下,切面由常规类以及基于 XML 的配置实现.
- SaltStack项目实战(二)
架构图: 配置思路 (1).系统初始化 Base环境下存放所有系统都要执行的状态,调整内核参数,dns,装zabbix-agent等 (2).功能模块(如:上面的haproxy) 如上面的haprox ...
- Rust 中的数据布局--非正常大小的类型
非正常大小的类型 大多数的时候,我们期望类型在编译时能够有一个静态已知的非零大小,但这并不总是 Rust 的常态. Dynamically Sized Types (DSTs) Rust 支持动态大小 ...
- 【Android Studio】Gradle统一管理版本号引用配置
1.在根目录下的build.gradle文件下添加 ext{ .... } 中的内容 ...... // Define versions in a single place ext { // SDK ...
- 将项目导入eclipse中出现的jsp页面报错
图片摘自百度经验,实在是每次都会忘了步骤,每次都得重新百度,所以索性自己总结到博客中,下次如果还记不住就直接从博客中看.原谅我实在学渣,呜呜~~~~(>_<)~~~~
- zabbix 服务器500错误,解决故障。
ZABBIX 500错误,查看apache错误日志,index.php 32 line.写着语法错误!!! 到路径下打开/var/www/html/zabbix/index.php文件,定位32行,可 ...
- Qt 实现配置 OpenCV 环境,并实现打开图片与调用摄像头
一.说明 所用QT版本:5.9.1 电脑配置:win10,64位系统 调用的是编译好的:OpenCV-MinGW-Build-4.1.0(稍后放链接) 在大学期间,由于项目需求需要用到QT+openc ...
- 新手小白入门C语言第二章:基本语法
1. 语句 C 语言的代码由一行行语句(statement)组成.语句就是程序执行的一个操作命令.C 语言规定,语句必须使用分号结尾,除非有明确规定可以不写分号. 如: int x = 1; 这就是一 ...
- 2021.11.09 P4824 [USACO15FEB]Censoring S与P3121 [USACO15FEB]Censoring G(KMP&&AC自动机)
2021.11.09 P4824 [USACO15FEB]Censoring S与P3121 [USACO15FEB]Censoring G(KMP&&AC自动机) https://w ...