Kolla-ansible部署OpenStack Train实践
- 前言
- 系统环境设置
- 安装pip和docker
- 安装ansible
- 安装kolla-ansible
- 配置文件修改
- 执行部署
- 登录openstack
- 写在最后
- 部署过程中遇到的问题总结
前言
最近为了把几台国产化服务器利用起来,通过手动部署,大部分组件部署完成后发现neutron运行异常,linuxbridge无法自动创建网桥,排查了很久没有结果。无奈之下只能重装系统,重新来过。但是手动部署太费时间了,于是想通过devstack和packstack来部署,部署的时候还是重重的报错,而且很多配置都不可控。后来想想随着容器技术的应用越来越广泛,还是觉得研究使用docker部署方式,同时也可以借此机会再深入学习下docker。
花费了几天时间琢磨了下Kolla-ansible,以官方文档为主,但是官方文档还是有很多未提及的点,导致部署一直进行不下去。结合网上的各路大神的博客进行了反复验证,在虚拟机上测试成功后,开始在物理机上进行部署。最终成功部署完成。通过部署深入了解到kolla部署的配置原理。
系统环境设置
部署前最好能够熟悉下ansible和docker的相关技术及操作。本次部署的环境使用python2和docekr最新版本。官方文档部署的分了python虚拟环境和不同linux发行版本的操作命令,要自己看,不用重复执行,否则可能会把部署环境搞乱了。
1、安装一些基础的包
yum install python-devel libffi-devel gcc openssl-devel libselinux-python git wget
2、关闭系统安全设置
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭网络管理组件
systemctl stop NetworkManager
systemctl disable NetworkManager
#关闭selinux
setenforce 0
vi /etc/selinux/config(修改为disabled)
安装pip和docker
1、pip是python的包管理器,ansible是基于python开发的,因此需要安装pip,安装相应的python包,默认系统都不带pip。
#下载pip
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py --no-check-certificate
#安装pip
python get-pip.py
#更新其他包
pip install -U setuptools
2、安装docker,docker是本次部署的关键,因此需要安装docker。
#添加软件仓库
yum -y install yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache
#安装docker-ce不是docker
yum -y install docker-ce
#启动服务
systemctl enable docker
systemctl start docker
#修改docker镜像的源,也可以可以登录阿里云去申请加速域名。
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
systemctl daemon-reload
service docker restart
安装ansible
kolla-ansible部署是需要使用ansible,它是一款自动化的工具,是基于python开发。因此ansible是必须部署。
#获取epel的yum文件,否则ansible可能找不到包
yum install epel-release -y
#安装ansible
yum install ansible
安装kolla-ansible
#试过很多次都要先安装这个报告
pip install pbr
#开始安装kolla-ansible,要带上--ignore-installed PyYAML,否则可能会报错
pip install kolla-ansible --ignore-installed PyYAML
#创建kolla的文件夹,后续部署的时候很多openstack的配置文件都会在这
mkdir -p /etc/kolla
chown $USER:$USER /etc/kolla
#复制ansible的部署配置文件
cp /usr/share/kolla-ansible/ansible/inventory/* .
#负责gloable.yml和password.yml到目录
cp -r /usr/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
配置文件修改
1、生成password.yml的密码,所有openstack组件的密码自动创建,后续组件都会使用此密码文件
kolla-genpwd
2、修改ansible的配置文件,不清楚具体作用,但是都是必做的。
vi /etc/ansible/ansible.cfg
[defaults]
host_key_checking=False
pipelining=True
forks=100
3、global.yml设置
#设置基于的发行版本
kolla_base_distro: "centos"
#设置使用的包类型
kolla_install_type: "binary"
#设置需要部署的openstack版本
openstack_release: "train"
openstack_tag_suffix: ""
#设置高可用的HA虚拟IP,如果不用HA可以直接设置控制节点的管理ip
kolla_internal_vip_address: "XXXX"
#设置管理网络网卡
network_interface: "eth0"
#设置业务网络网卡
neutron_external_interface: "eth1"
#设置虚拟交换机类型
neutron_plugin_agent: "linuxbridge"
#开启cinder功能
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"
4、cinder的配置准备,官方文档未说明的点,需要提前创建好cinder使用的vgs
pvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb
执行部署
所有的部署完成后下面就是开始进行部署,这里涉及到2个配置文件要进行设置。安装kolla-ansible的时候复制过2个文件里面分别是all-in-one和multinode,部署有2中模式,如果是all-in-one就不用修改这个all-in-one的文件,如果是多节点部署,请编辑multinode文件。
文件配置比较简单,主要是配置下需要部署节点的ssh登陆的账号密码即可。部署的时候ansible会进行ssh到节点进行自动化容器部署。
[control]
# 设置控制节点的登陆方式,可以设置ip或者域名
10.10.16.11 ansible_user=root ansible_password=rootpassword ansible_become=true
[network]
#网络节点的
10.10.16.11 ansible_user=root ansible_password=rootpassword ansible_become=true
[compute]
#计算节点
10.10.16.11 ansible_user=root ansible_password=rootpassword ansible_become=true
10.10.16.12 ansible_user=root ansible_password=rootpassword ansible_become=true
[monitoring]
#监控节点,默认和控制节点放一起
10.10.16.11 ansible_user=root ansible_password=rootpassword ansible_become=true
[storage]
#存储节点
10.10.16.11 ansible_user=root ansible_password=rootpassword ansible_become=true
10.10.16.12 ansible_user=root ansible_password=rootpassword ansible_become=true
[deployment]
localhost ansible_connection=local
.
开始进行部署,执行命令需要在ansible的all-in-one和multinode的文件所在目录执行,否则命令要修改下路径。
#检查依赖关系
kolla-ansible -i ./multinode bootstrap-servers
#检查环境配置
kolla-ansible -i ./multinode prechecks
#拉去openstack镜像
kolla-ansible -i ./multinode pull
#部署
kolla-ansible -i ./multinode deploy
#生成环境变量文件,openstack命令行客户端使用
kolla-ansible post-deploy
登录openstack
使用控制节点的ip或在vip地址登录。密码可以在password.yml
写在最后
通过kolla-ansible的部署的确非常的方便,而且成功率比较高,对环境的要求也在降低,便捷性在不断提升。现在很多商业化的openstack版本基本上都在采用容器化的方式部署组件。但是其中还是有很多的参数还没琢磨透传,后续再慢慢研究。
部署过程中遇到的问题总结
1、docker版本检查不通过。
虽然检查没过,但是执行多节点部署的时候没有影响,研究了好久这个报错,发现在虚拟机环境不存在这个问题,而且安装网络说法python中docker的模块也是最新的,卸载了python-docker-py的包。
TASK [prechecks : Checking docker SDK version] *****************************************************
fatal: [localhost]: FAILED! => {“changed”: false, “cmd”: [“/usr/bin/python”, “-c”, “import docker; print(docker.version)”], “delta”: “0:00:00.014275”, “end”: “2022-05-05 10:26:25.698022”, “failed_when_result”: true, “msg”: “non-zero return code”, “rc”: 1, “start”: “2022-05-05 10:26:25.683747”, “stderr”: “Traceback (most recent call last):\n File “”, line 1, in \nImportError: No module named docker”, “stderr_lines”: [“Traceback (most recent call last):”, " File “”, line 1, in ", “ImportError: No module named docker”], “stdout”: “”, “stdout_lines”: []}
2、有兄弟反馈安装过程中ha配置检查不过去,原因是未启用haproxy的也需要把配置文件的enable_haproxy设置为no,并取消注释。因为默认是开启状态。