kolla 3.0.3部署openstack newton

kolla是什么?

容器化部署openstack,简而言之就是openstack里面每个组件都是用docker封装好了,对应docker的一个image。

容器化好处是什么?

通过docker,降低openstack升级的难度,使升级对openstack影响最小,一旦升级失败,直接回滚旧的docker image,升级只需要三步:Pull新版本的容器镜像,停止老版本的容器服务,然后启动新版本容器。回滚也不需要重新安装包了,直接启动老版本容器服务就行,非常方便。对比过目前生产环境主流的部署方式,fuel、puppet、ROD, 我个人认为容器化部署将是未来的趋势。kolla底层通过ansoble去启动配置 已经封装好了的docker image。

缺点:

要熟悉kolla,不仅仅是要熟悉openstack那么简单了,还要熟悉docker、和ansiable。

环境
cpu:8核
内存:16G
根分区大小:100G
至少需要2个网络接口(一个管理口,一个外网口)
管理地址 192.168.122.77
haproxy vip:192.168.122.76

安装时注意审查软件版本,我这里是安装newton版对应的是koll 3 ,2月24日发布的ocata版对应的是kolla 4

搭建docker本地镜像库

安装epel源和python-pip

安装docker
curl -sSL https://get.docker.io | bash

查看docker版本,确认docker是否安装成功。

修改docker参数,如果没有修改的话,会造成部署 neutron-dhcp-agent container 和访问APIError/HTTPError

mkdir -p /etc/systemd/system/docker.service.d

vi /etc/systemd/system/docker.service.d/koll.conf

1
2
3
4
5
[Service]
MountFlags=shared
EnvironmentFile=/etc/sysconfig/docker
ExecStart=
ExecStart=/usr/bin/docker daemon $other_args

保存退出
修改/etc/sysconfig/docker参数并添加下面一行,目的是为了配置本地镜像仓库。
other_args="--insecure-registry 192.168.122.77:4000"

重启docker进程
systemctl daemon-reload
systemctl enable docker
systemctl restart docker

制做docker本地镜像仓库

链接:http://pan.baidu.com/s/1gf5LTV9 密码:aysu
下载解压
将已经build好的openstack镜像解压到本地
tar -xvf kolla-image-newton-latest.tgz

加载下载好的docker registry,docker搭建私有镜像仓库使用registry这个软件
docker load < ./registry-server.tar
将镜像文件放到/home/下
docker run -d -p 4000:5000 --restart=always -e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/tmp/registry -v /home/tmp/registry/:/tmp/registry --name registry registry:2

测试是否搭建本地镜像仓库成功
curl -XGET http://127.0.0.1:4000/v2/_catalog #正常情况会输出很多image name。

仓库里面存在的镜像
查看该镜像的tag
curl -XGET http://127.0.0.1:4000/v2/kolla/centos-binary-nova-compute/tags/list

3.0.3是版本号
查看仓库数据

安装ansible
yum install ansible
clone newton分支
git clone -b stable/newton https://github.com/openstack/kolla
cd kolla
cp -r etc/kolla /etc/

安装kolla
pip install kolla

vim /etc/kolla/globals.yml

1
2
3
4
5
6
7
8
openstack_release: "3.0.3" #上面搭建的本地仓库里面curl出来的tag号,写错了的话会导致找不到image。
network_interface: "ens3"
kolla_internal_vip_address: "192.168.123.76"#配置给高可用的vip
neutron_external_interface: "eth0"
docker_registry: "192.168.122.77:4000" #本地仓库地址
docker_namespace: "kolla"

生成密码文件
kolla-genpwd
路径
/etc/kolla/password.yml

执行部署
cd /root/kolla/tools/
./kolla-ansible deploy -i /root/kolla/ansible/inventory/all-in-one
这里需要注意的是,我是部署all-in-one,如果需要部署多节点的用multinode 修改一下里面的hostname
部署完成查看容器

pip install python-openstackclient
pip install python-neutronclient

输入以下命令生成一个环境变量文件
kolla-ansible post-deploy

文件路径为
/etc/kolla/admin-openrc.sh

cp /etc/kolla/admin-openrc.sh /root/

source /root/admin-openrc.sh

查看nova service

查看neutron agent

打开控制台访问


帐户admin,密码通过刚刚生成的admin-openrc.sh获取

执行
cd /usr/share/kolla

./init-runonce #一个测试脚本,自动下载镜像,上传,创建网络,创建路由器……

最后创建虚拟机

需要注意的是如果是在虚拟机中测试kolla需要在宿主机上修改nova-compute的配置文件 为virt_type=qemu不然默认用的是kvm,会造成创建云主机失败。
vim /etc/kolla/nova-compute/nova.conf

重启这个容器。
docker restart nova_compute
创建云主机测试

最后

Docker使用heka来展现收集到的日志信息。这些openstack容器的log都在heka 容器内展现

默认是没有安装cinder和其他一些软件的,如果需要安装在部署时可以修改/etc/kolla/globals.yml

参考链接
http://blog.csdn.net/u011211976/article/details/52085891
http://docs.openstack.org/developer/kolla-ansible/quickstart.html
http://geek.csdn.net/news/detail/60805?utm_source=tuicool&utm_medium=referral