利用kolla部署工具本地仓库部署openstack基础架构:
1.利用docker安装openstack云基础架构:对于openstack安装有很多方法,其中本地计算机二进制包安装和docker安装是最常见的方法,下面介绍docker安装步骤及方法:
2.利用docker在操作系统层面安装,对应用进行解耦,将不同的服务组件或者相同组件不同功能解耦,划分成一个个单一的容器。
3.安装操作系统(本实例里面使用Centos7.0,其他操作系统也可以),同时配置操作系统之间SSH服务信任及免秘钥登陆。
修改/etc/hosts文件,配置IP地址与主机名的对应关系
ssh-keygen 生成秘钥
ssh-copy-id +主机名
4.在操作系统里面安装docker容器(如果要选择不同版本的docker安装,最好修改一下/etc/yum.repos.d/docker.repo源)。
5.docker info查看docker的基本属性。
6.对于openstack的安装,一种是通过kolla部署工具docker在线pull镜像,一种是搭建本地docker register(通过容器微服务架构化)并通过kolla部署工具部署。
7.在这里以第二种方法搭建,docker pull register 拉取基础镜像。
如下添加配置文件提供docker下载镜像速度(加速配置)
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://a5aghnme.mirror.aliyuncs.com"]
}
EOF
8.运行本地仓库容器。
docker run -d -v /opt/registry:/var/lib/registry -p 4000:5000 --restart=always --name registry registry:latest
mkdir /etc/systemd/system/docker.service.d
tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'
[Service]
MountFlags=shared
EOF
注:以前的版本可能是上面的方法更改,对应新版本可以就需要在/lib/systemd/system/docker.service里面直接修改。
wget http://tarballs.openstack.org/kolla/images/centos- binary-registry-ocata.tar.gz
tar zxvf centos-binary-registry-ocata.tar.gz -C /opt/registry/
备注:使用本机4000端口与容器5000端口对应的目的是openstack使用了5000端口,避免与其产生冲突,同时离线下载ocata二进制包并解压放入register目录。
9.修改docker守护进程的默认启动参数。(以前版本是docker daemon 现在版本是dockerd)
10.通过编辑器修改/lib/systemd/system/docker.service
在执行命令ExecStart=***** 后面添加仓库交流参数--insecure-registry=10.10.10.6:4000
执行命令systemctl daemon-reload && systemctl restart docker重启docker服务
11.通过curl http://10.10.10.6:4000/v2/_catalog可以查看与本地仓库的通讯状态。
12.部署kolla安装工具(目前kolla项目被拆分成kolla与kolla-ansible两个子项目)。
git clone http://git.trystack.cn/openstack/kolla-ansible 获取部署工具
cd kolla-ansible && pip install .
执行完后会在当前目录下产生一些配置文件,并通过如下方式将一些配置文件拷贝到其他目录里面:
cp -r etc/kolla /etc/kolla/
cp ansible/inventory/* /home/
如果是在虚拟机里面搭建的服务平台,你需要修改一些如下的配置参数(默认使用的是kvm):
mkdir –p /etc/kolla/config/nova
cat << EOF > /etc/kolla/config/nova/nova-compute.conf
[libvirt]
virt_type=qemu
EOF
13.加密kolla配置文件中的一些密码:
kolla-genpwd
其中修改一下/etc/kolla/passwords.yml文件中的keystone_admin_password: admin不然dashboard密码不知道是多少。
14.修改kolla部署工具在进行部署时候的一些配置信息/etc/kolla/globals.yml
kolla_internal_vip_address: " 10.10.10.254" //访问Dashboard的地址,一个没有使用的地址
docker_registry: " 10.10.10.6:4000" //刚才部署register容器的服务器网卡地址
docker_namespace: "lokolla" //命名空间,这个是要在docker通过pull时的一个对应的命名空间不然会报错找不到
network_interface: "eth0" //IP地址为10.10.10.6
neutron_external_interface: "eth1" //该网卡不配置IP地址
15.在部署的时候需要考虑到是单节点还是多节点部署openstack基础软件:
如果部署的是单节点,需要编辑/usr/share/kolla-ansible/ansible/group_vars/all.yml文件,设置enable_haproxy为no
如果是多节点部署,就需要编辑刚才我们拷贝到/home目录下面的配置文件/home/multinodo,简单配置如下:
[control]
# These hostname must be resolvable from your deployment host
localhost ansible_connection=local
# The above can also be specified as follows:
#control[01:03] ansible_user=kolla
# The network nodes are where your l3-agent and loadbalancers will run
# This can be the same as a host in the control group
[network]
localhost ansible_connection=local
[compute]
slave01
slave02
[monitoring]
localhost ansible_connection=local
16,.实施部署:
单节点部署:kolla-ansible deploy -i /home/all-in-one -vvvv
多节点部署:kolla-ansible deploy -i /home/multinodo -vvvv
单节点卸载:kolla-ansible destroy -i /home/all-in-one --yes-i-really-really-mean-it
多节点卸载:kolla-ansible destroy -i /home/multinodo --yes-i-really-really-mean-it
17.环境变量创建kolla-ansible post-deploy:
通过以上命令产生/etc/kolla/admin-openrc.sh 环境变量文件,最后安装客户端pip install python-openstackclient
最后测试部署环境:
编辑 /usr/share/kolla-ansible/init-runonce文件,改成国内的trystack镜像源下载,速度快(感谢国内TryStack社区做出的贡献,服务大家)。
运行命令
source /etc/kolla/admin-openrc.sh
cd /usr/share/kolla-ansible
./init-runonce
这将自动创建一个镜像、租户网络等。如下,可以查看到自动创建的cirros测试镜像。
至此,我们便通过Kolla和Ansible,部署成功了一个基于Docker容器运行的OpenStack环境。对于Ceph分布式存储、Haproxy高可用性、OpenDaylight SDN软件定义网络等这些功能,Kolla和Ansible都是支持的。
Troubleshoot
通过Kolla和Ansible部署或运行OpenStack环境时,如果出现问题,通常可以使用如下一些方法来排查/解决。
1)查看指定容器(即指定的服务)的输出日志信息。
docker logs container_name
2)进入到fluentd日志收集容器里,查看指定服务的日志。
docker exec -it fluentd bash
接着,cd到/var/log/kolla/SERVICE_NAME目录下。
3)还可以,直接CD到主机的/var/lib/docker/volumes/kolla_logs/_data/目录下,查看指定服务的日志信息。
4)如果在部署时失败,通过日志无法查找到原因,可以使用Ansible的debug模块进行部署代码调试。