OpenStack实战分享:Kolla多节点部署加Ceph后端


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的网络出不去

出处:http://www.99cloud.net/html/2017/jiuzhouyuanchuang_0317/302.html

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页