kolla部署openstack ocata版.docx
- 文档编号:4956017
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:68
- 大小:595.95KB
kolla部署openstack ocata版.docx
《kolla部署openstack ocata版.docx》由会员分享,可在线阅读,更多相关《kolla部署openstack ocata版.docx(68页珍藏版)》请在冰豆网上搜索。
kolla部署openstackocata版
Kolla容器化部署OpenstackOcata
2017年5月
一、kolla介绍
Kolla,就是把OpenStack放到Docker里,部署OpenStack的一个工具。
这其实也是目前为止,唯一一个没有厂商背景的部署工具
1.红帽的Tripleo,RDO,使用puppet,部署在CentOS红帽系列
2.Ubuntu的Juju,使用自己的配置管理工具,Juju,go语言开发,部署Ubuntu系统,
3.Suse的Crowbar,使用Chef来部署,Suse企业版本
4.Rackspace的OpenStack-ansible,通过LXC或者部署到物理机器上,利用ansible来管理,目前支持Ubuntu和CentOS
5.Mirantis的Fuel,利用puppet,部署到Ubuntu操作系统上
6.HPE的helion,使用ansible,部署在Debian8
7.TCPCloud搞的Salt,部署OpenStack。
我没玩过,我的理解应该是在Ubuntu的系统上。
上面七个工具,基本可以囊括所有的OpenStack部署项目,每个都要他的好处,也是有他的不足的。
他们的一个共同特点,基本都是单一厂商主导。
2017年,算是Kolla发展最猛的一年,一个没有厂商主导的部署工具,目前已经具备投入到生产使用。
Kolla目前支持的操作系统
1.CentOS和红帽系列
2.Ubuntu16.04
3.Oraclelinux
我们自己也给客户做过很变态的测试,在Suse的企业版本上,跑一个CentOS的Docker镜像的OpenStack,完全没任何压力,并且还是多节点。
Kolla解决了一个困惑OpenStack长期的问题,升级,upgrade。
通过Docker,可以很优雅的解决到OpenStack的升级的问题,现在已经可以实现业务跑着,进行升级。
这次OpenStackChinaDay,用kolla演示升级和集群掉电后,自动修复。
把OpenStack做到可以让用户自己升级,这背后的故事,其实真的不少。
很多朋友对Docker不熟悉,以为把OpenStack放到Docker里,虚拟机也是跑在Docker里。
其实这是误解。
Kolla仅仅是吧OpenStack各个服务的进程,放到Docker里而已。
以前的vm怎么运行,现在还是怎么运行,没做任何的改变。
1.1Kolla架构
∙Kolla,主要是负责Docker的镜像制作
∙kolla-Ansible负责容器的配置管理
∙Kolla-Kubernetes,也是负责容器的配置管理
kolla的Docker镜像制作,非常有意思,支持红帽的rpm包,Ubuntu和Debian的Deb包,还能支持源码的方式。
理论上你源码制作的镜像,是可以跑在所有的支持容器的操作系统。
你可以选择ansible来做容器的管理,也可以选择Kubernetes来管理。
目前ansible已经比较完善,Kubernetes还在积极开发中,估计怎么都还需要1年后,才能真正投入使用。
目前阶段,Kolla还没有安装操作系统的功能。
社区的初步考虑是把ironic放到一个容器里,通过这个容器来安装操作系统。
上面图片还可以增强一下,包括下面组件,也都实现了容器化
1.libvirt
2.qemu
3.OVS和linuxbridge
4.Ceph
5.HAproxy,Keeplived
6.MariaDB
7.ELK(Heka)
8.MongoDB
9.rabbitmq
1.2Kolla解决的问题
过去,无论是OpenStack创业公司,还是企业尝试OpenStack,在安装和部署,都花费和消耗大量的精力。
这其实也是影响OpenStack推广的一个重要障碍。
如何才能让大家从安装部署中解脱出来呢?
如何才能让大家把精力放到如何用好OpenStack上呢?
用好OpenStack,才能真正体现出OpenStack的价值。
采用Kolla来部署OpenStack,装好系统后,你大概只需要10分钟的时间,就可以搭建完成fullfeature的功能OpenStack。
各种社区的最佳实践,高可用,都集成在上面。
而且全都是运维人员都明白的python语言。
容器化后的OpenStack,让人感觉真的像积木一样,你需要什么,就拿过来放上去就可以。
这样说可能大家比较容易接受,Kolla让以前很多OpenStack的部署,安装,升级的问题,解决起来更加优雅。
上周见一位朋友谈起OpenStack升级,总结的很好,所谓升级就是把以前的删掉,再装新的版本。
如果你是采用包的安装,例如rdo,那你就慢慢熬夜搞定吧,对于容器来说,做到这点就太简单了,非常优雅。
对于部署,已经没有安装的过程,你只需要把相应的容器放到相应的位置,配置管理推送过去就可以。
对于升级,你只需要做一个容器的替换就可以实现升级,只需要集中精力去处理数据库的问题就可以。
buildimage的过程,其实可以官方提供,大家直接使用就可以。
在ocata版中kolla-ansible已经可以生产部署使用,因此本文采用kolla-anbile方式;kolla-kubernetes方式暂时仍处于实验性质,且文档很少,本文不做介绍。
1.3部署流程介绍
规划
节点的规划和容器的分布由inventory控制,/usr/share/kolla/ansible/inventory目录下的all-in-one和multinode,如果你想单节点部署,你需要指定all-in-one,如果是多节点部署,你需要指定multinode。
你可以根据实际需求修改all-in-one或multinode。
配置
变量的配置
关于部署的很多变量存放在/usr/share/kolla/ansible/group_vars/all.yml(这里面的变量有一部份与/etc/kolla/globals.yml里面的配置冲突,这些冲突的配置项以globals.yml里面的配置为准),使用这些变量值来替换playbook里面的对应的变量,控制playbook的最终结果。
这些playbook主要分为4类default代表默认的一些配置,meta代表依赖于哪个playbook,task代表具体的部署任务,template代表模板,主要包含容器的配置文件,以及容器启动时的一些初始化操作,主要是拷贝配置文件和启动该容器对应的服务
节点的配置
各个角色节点安装好操作系统后,必须要安装docker以及添加配置,修改hostname,网卡配置,如果这里出现问题,下一步的检测会报错。
值得注意的是,像将存储后端改成ceph,会对存储节点的磁盘进行些配置,但是检测貌似没有关于这方面的任务,如果采用kolla部署,肯定需要对检测的playbook进行完善。
注:
这些操作我是手动执行的,然而kolla在3.0.0及以上的版本提供了deploy-bifrost,deploy-servers两个命令行参数来分别启用一个bifrost的容器和通过bifrost来对节点进行自动化的配置。
至于效果怎么样,我没试过。
检测
kolla提供了一个检测命令,可以对各个角色节点进行一些检测,主要是包版本检测:
docker-py,Ansible;端口检测:
所有容器配置的监听端口是否已经被占用;服务检测:
这里检测的就比较杂了,比如libvirt是否在运行,如果运行就会报错,比如Docker版本是否满足要求等等,你可以查看/usr/share/kolla/ansible/roles/prechecks/tasks下面的playbook,知道所有的检测项。
当检测出错时,你就需要根据出错的信息,对某些角色的节点进行些修改配置。
检测通过,下面的部署不一定成功,但检测没通过,下面的部署是肯定失败的。
部署
如果上面的步骤没问题,只需执行kolla-ansible的相关命令就可以自动完成部署并启动相关容器以及容器里面对应的服务
清理
在某些情况下,可能需要对环境中的容器,镜像,甚至节点上的所有关于kolla的配置,进行清理,可以使用kolla-ansibledestory的子命令对环境清理
扩展
kolla增加节点理论上很简单,只需要两步,一是修改对应的inventory,二是对待添加节点做好部署前的准备工作。
由于资源的关系,并未做过相关的测试
修改配置
修改某个容器:
通过修改对应节点/etc/kolla/目录下对应的服务的配置文件,然后重启对应的容器,就可以修改相关配置
修改多个容器:
通过修改部署节点上/usr/share/kolla/ansible/roles相关目录下配置文件的模板和/etc/kolla/globals.yml,以及/usr/share/kolla/ansible/group_vars/all.yml,然后执行kolla-ansible的子命令reconfigure,可以修改相关容器的配置。
注意:
这种方式会将所有容器的配置重新覆盖一次,所有容器都会重启一次
环境升级
可以通过修改/etc/kolla/global.yml里面openstack-release的参数,然后执行kolla-ansibleupgrade的子命令升级环境.
注意:
1.如果在虚拟环境(virt_type:
qemu)升级libvirt,可能会失败.
2.libvirt的升级还需要进一步验证。
附加
1.docker容器的健康检测
2.docker重新部署单个服务
比如:
当我们对一个容器的镜像进行修改后,需要替换掉旧的容器,由于容器只有一个,不可能因此重新更新整个环境。
二、部署规划
2.1主机规划
主机名称
IP
备注
master1
134.64.15.192
0penstack控制节点,计算节点,ceph节点,kolla部署节点,keepalive节点
Master2
134.64.15.193
0penstack控制节点,计算节点,ceph节点,keepalive节点
Master3
134.64.15.194
0penstack控制节点,计算节点,ceph节点
compute1
134.64.15.195
待迁移完成后加入
compute2
134.64.15.196
待迁移完成后加入
harbor
134.64.15.166
基于Web的容器镜像仓库
134.64.14.34
Yum镜像仓库
注:
不能同时重启两个keepalive节点,master1和master2,否则浮动ip会在两个节点同时拉起影响使用
2.2网卡规划
网卡名称
用途
enp130s0f0
管理网络,ceph网络
enp130s0f1
neutron_external_interface外部接口,对应物理交换机端口设为trunk,,虚机通过此网卡与dcn网通信
2.3磁盘规划
磁盘名称
大小
类型
用途
备注
/dev/sdb
4000G
sata
Cephsatapool
Sata盘标记为KOLLA_CEPH_OSD_BOOTSTRAP;ssd盘标记为KOLLA_CEPH_OSD_CACHE_BOOTSTRAP
/dev/sdc
4000G
sata
Cephsatapool
/dev/sdd
4000G
sata
Cephsatapool
/dev/sde
4000G
Sata
Cephsatapool
/dev/sdf
4000G
Sata
Cephsatapool
/dev/sdi
4000G
Sata
Cephsatapool
/dev/sdh
4000G
Sata
Cephsatapool
/dev/sdg
4000G
Sata
Cephsatapool
/dev/sdj
479G
ssd
Cephssdpool
/dev/sdk
479G
ssd
Cephssdpool
2.4软件版本及下载地址
软件或安装包名称
版本
下载地址
备注
在自己笔记本上安装wget工具,在powershell中下载如下安装包
centos7epel源
wget-S-c-r-np-L
Centos7updates源
wget-S-c-r-np-L
Centos7extra源
wget-S-c-r-np-L
Centos7源
centos7.3
wget-S-c-r-np-L
以下安装包通过http点击或迅雷方式下载
docker
1.12.6
使用docker官方版本,只下载其中1.12.6版本;一定不能使用centos提供的docker版本
Pythonjinja2
2.8
https:
//pypi.python.org/pypi/Jinja2/2.8#downloads
下载后上传至openstack部署管理主机上手工安装,命令:
pipinstallxxx
harbor离线安装包
1.1.0
Web管理界面镜像仓库
docker-compose
1.7
迅雷下载
openstack组件kolla镜像
ocata
http:
//tarballs.openstack.org/kolla/images/centos-binary-registry-ocata.tar.gz
迅雷下载
以下包yum源中已包含,不用另外下载
python-docker
1.9
centos7extra源自带
ansible
2.2.x
centos7epel源自带
python-pip
8.1.2
Centos7epel源自带
以下安装包通过gitclone方式下载(笔记本开虚拟机并联网)
kolla
http:
//tarballs.openstack.org/kolla/kolla-stable-ocata.tar.gz
手工编译镜像需下载此包,我们使用官方已经编译好的镜像,此步可选
kolla-ansible
ocata
gitclonehttps:
//git.openstack.org/openstack/kolla-ansible-bstable/ocata
下载后上传到openstack部署管理主机上手工安装,安装命令pythonsetup.pyinstall
Kolla-ansible依赖包
#python包管理工具
gitclone
#安装pip2pi工具
cdpip2pi
pythonsetup.pyinstall
#创建目录py_package,将kolla-ansible两个目录中的文件
test-requirements.txt
requirements.txt
#拷贝至python-package目录,执行命令下载安装软件所需的python包
pip2tgz.-r/root/kolla-ansible/requirements.txt
pip2tgz.-r/root/kolla-ansible/test-requirements.txt
#注意安装pip2pi工具后才有pip2tgz命令
python-openstackclient
cdpy_package
pip2tgz.python-openstackclient
python-neutronclient
cdpy_package
pip2tgz.python-neutronclient
Dockerregistry镜像
不低于2.4
dockerhub
dockersearchxxx
dockerpullxxx
dockersave-oxxx.tarxxx
若使用harbor镜像仓库,则此项可选
三、部署saltstack
安装自动化运维工具,提高工作效率,避免出错和遗留
3.1Master节点
登录134.64.15.192主机执行以下命令
1.安装salt-master包
yum-yinstallsalt-master
1.检查配置文件:
cat/etc/salt/master|grep-v^#|awkNF
interface:
134.64.15.192
file_roots:
base:
-/srv/salt/
pillar_roots:
base:
-/srv/pillar/
3.Master节点同时也配置成minion节点
cat/etc/salt/minion|grep-v^#|awkNF
master:
134.64.15.192
2.启动服务并设置开机启动
systemctlenablesalt-master
systemctlrestartsalt-master
systemctlenablesalt-minion
systemctlrestartsalt-minion
3.2Minion节点
在134.64.15.193/194执行以下命令
1.
yum-yinstallsalt-minion
2.配置
cat/etc/salt/minion|grep-v^#|awkNF
master:
134.64.15.192
3.启动服务
systemctlenablesalt-minion
systemctlrestartsalt-minion
3.3接受saltminion客户端
salt-key–L查看客户端key列表
salt-key–A接受所有的key
salt'master*'test.ping
简单测试是否配置成功
若有报错,请查看/var/log/salt目录中的master或minion日志
四、操作系统环境准备
1.在14.34上搭建本地yum源
过程略,有centos73,ceph,epelnew,centos-extra,updates四个源
[root@master1yum.repos.d]#cat*.repo
[centos73]
name=centos73
baseurl=http:
//134.64.14.34/centos73
gpgcheck=0
enable=1
[epelnew]
name=epelnew
baseurl=http:
//134.64.14.34/epelnew
gpgcheck=0
enable=1
[centos-extra]
name=centos-extra
baseurl=http:
//134.64.14.34/centos-extra
gpgcheck=0
enable=1
[updates]
name=updates
baseurl=http:
//134.64.14.34/updates
gpgcheck=0
enable=1
2.在14.34上搭建本地pip源(kolla-ansible的依赖包)
将package包上传至14.34/images/目录,制作本地pip源
cd/images/
dir2pipython_package/
cd/var/www/html
ln-s/image/python_package/simplesimple
3.所有节点配置pip客户端
客户端主机配置pip.conf文件
cdhome目录
mkdir.pip
cd.pip
vipip.conf
[global]
index-url=http:
//134.64.14.34/simple
4.所有节点配置/etc/hosts
[root@master1yum.repos.d]#cat/etc/hosts
127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4
134.64.15.192master1
134.64.15.193master2
134.64.15.194master3
134.64.15.166harbor
5.所有节点配置root用户ssh无密码登录
ssh-keygen-trsa
ssh-copy-idroot@master1
ssh-copy-idroot@master2
ssh-copy-idroot@master3
6.所有节点关闭防火墙
salt"*"cmd.run"systemctlstopfirewalld"
salt"*"cmd.run"systemctldisablefirewalld"
7.所有节点关闭selinux并重启
[root@master1yum.repos.d]#cat/etc/selinux/config|grep-v^#|awkNF
SELINUX=disabled
SELINUXTYPE=targeted
8.所有节点关闭NetworkManager
salt“*”cmd.run“systemctlstopNetworkManager”
salt“*”cmd.run“systemctldisableNetworkManager”
9.所有节点关闭libvirted
salt“*”cmd.run“systemctlstoplibvirtd.service”
salt“*”cmd.run“systemctldisablelibvirtd.service”
10.所有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- kolla部署openstack ocata版 kolla 部署 openstack ocata