OpenStack实战分享:Kolla多节点部署加Ceph后端
阅读原文时间:2021年04月22日阅读:1

1、环境介绍
一台物理机ESXi系统,一个网口接的物理网络,ESXi上装3台虚拟机分别为kolla-1,kola-2,kola-3,每台虚拟机三个虚拟网卡,三个网口全部接入到esxi的标准交换机VM Network中去,每台服务器有4块盘,sda为系统盘,sdb和sdc为ceph的osd盘,sdd为ceph的journal盘。
ip地址

所有网关指向物理交换机172.16.130.1
172.16.130.0/24为管理网络和数据网络
10.0.0.0/24为ceph osd的同步网络。

2、kolla registry安装及build镜像
多节点的部署是需要本地的docker registry的,再准备一台虚拟机,由于docker.io被墙的原因无法下载image,我们这里采用是用国外的vps先build好镜像然后再拉过来,build镜像的具体操作如下:
(安装newton的一些软件版本要求如下:

a、安装epel源及一些依赖

b、安装docker及配置修改

c、修改/usr/lib/systemd/system/docker.service文件, 添加本地库地址,重启docker服务

d、下载代码到/opt目录

e、进入/opt/kola/,切换newton分支,安装kolla

f、开始build镜像
# kolla-build –b centos –t binary –p default

参数介绍:-b 指定build的镜像系统类型
-t binary为二进制安装 source为源码安装
-p 指定build哪些镜像默认为:chrony,cron,kolla-toolbox,glance,haproxy,heat,heka,horizon,keepalived,keystone,mariadb,memcached,neutron,nova,openvswitch,rabbitmq。
如果不指定-p 可以单独指定build某个,如:nova

g、build完可以看到本地的镜像:

docker images

这里,我们可以把镜像保存下来,比如:

docker save lokolla/centos-binary-haproxy >/opt/centos-binary-haproxy.tar

然后我们再把这个tar包下载到自己的本地,再load back。

docker load

这样,我们的镜像就到本地来了。等所有的镜像都load back然后起本地的registry。

docker run -d -p 4000:5000 –restart=always –name registry registry

最后将本地的imags都push至registry里去:

docker tag 7f5595d85f41 172.16.50.187:4000/wangqi/centos-binary-haproxy:3.0.0 #打标签

docker push 172.16.50.187:4000/wangqi/centos-binary-haproxy #push到本地registry

这样,一个可用的registry就装起来了。

接下来,部署kolla:

3、kolla部署准备
a、配置文件修改
将三台机器都按照上面安装kolla,然后3台互相免密码登录,编辑hosts文件,关闭防火墙和selinux

cp -r /usr/share/kolla/etc_examples/kolla /etc/

kolla-genpwd #自动填充密码文件 /etc/kolla/passwords.yml,这个文件里面的密码都可以指定,如

keystone_admin的密码,可以改为自定义

修改/etc/kolla/globals.yml文件:

编辑multinode文件,这个文件在/usr/share/kolla/ansible/inventory/可以找到模板, 如下 定义节点的角色:

b、ceph准备
在3台虚拟机的节点上,除去系统盘还有有其它3块硬盘,sdb、sdc、sdd
这里我们将sdb和sdc做为osd节点,sdd为日志节点。Kolla对ceph的osd及日志盘的识别是通过卷标来实现的,
如osd的卷标为KOLLA_CEPH_OSD_BOOTSTRAP,
journal的卷标为KOLLA_CEPH_OSD_BOOTSTRAP_J

格式化所有osd的磁盘,这里我们用ansible统一执行:

ansible -i multinode all -m shell -a ‘parted /dev/sdb -s – mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1’

ansible -i multinode all -m shell -a ‘parted /dev/sdc -s – mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1’

格式所有journal的盘

ansible -i multinode all -m shell -a ‘parted /dev/sdd -s – mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_J 1 -1’

新建/etc/kolla/config/ceph.conf,指定ceph的一些参数,如副本数:
1.[global]
2.osd pool default size = 1
3.osd pool default min size = 1

4、开始安装
先检查有无错误:

kolla-ansible -i multinode prechecks

没有报错直接进行安装:

kolla-ansible -i multinode deploy

直至安装完成
生成rc文件(生成的文件在/etc/kolla/下面):

kolla-ansible -i multinode post-deploy

5、一般操作
a、日志的查看
kolla 3.0版本也就是newton版本的日志是通过heka来管理的,查询所有服务器的日志可以进入到这个容器里去:

docker exec -it heka bash

或者也可以通过docker inspect查看heka容器在主机上的具体路径

docker inspect heka

查看到与主机对应的路径为/var/lib/docker/volumes/kolla_logs/_data/

两种方法都可以

注意:在kolla4.0版本也就是Ocata版本里日志改为用fluentd来收集,为了与后面的kolla-kubernetes相兼容。

b、openstack 服务配置的修改,举例修改nova的virt_type为qemu
新建/etc/kolla/config/nova.conf
1.[libvirt]
2.virt_type=qemu

然后执行:

kolla-ansible -i multinode reconfigure

最终命令执行完,配置修改完毕。

注意。ESXi的虚拟机端口组要把混杂模式和伪传输打开,不然后br-ex的网络出不去

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器