Kolla 概述:
Kolla是OpenStack下用于自动化部署的一个项目,它基于docker和ansible来实现,其中docker主要负责镜像制作和容器管理,ansible主要负责环境的部署和管理。Kolla实际上分为两部分:Kolla部分提供了生产环境级别的镜像,涵盖了OpenStack用到的各个服务;Kolla-ansible部分提供了自动化的部署。最开始这两部分是在一个项目中的(即Kolla),OpenStack从O开头的版本开始被独立开来,这才有了用于构建所有服务镜像的Kolla项目,以及用于执行自动化部署的Kolla-ansible。
环境配置:
服务器最低配置:
2 个网络接口
8GB 主内存
40GB 磁盘空间
Centos 8.2
准备工作:
安装下基本的系统工具;
yum -y install net-tools vim wget bash-completion lrzsz
关闭Slinux和防火墙
setenforce 0
vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld
修改hosts
vim /etc/hosts
192.168.6.35 node1
网卡配置信息
ip地址 | 网卡 | 网络类型 | 说明 |
192.168.6.35 | eno16780032 | 桥接(bridge) | Openstack内部管理网络(management network),Horizon web 界面访问; |
无(不需要配置地址,需要开启网卡) | eno33559296 | 桥接(bridge) | 外部网络(external network),让neutron(Openstack中的网络组件)的br-ex绑定使用,Openstack中的虚拟机是通过该网卡与外网通信。 |
配置阿里云源
yum clean all
yum makecache
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
安装依赖:
yum -y install python-devel libffi-devel gcc openssl-devel git python-pip
配置pip镜像源
mkdir .pip
tee .pip/pip.conf << EOF
> [global]
> index-url=http://mirrors.aliyun.com/pypi/simple/
> [install]
> trusted-host=mirrors.aliyun.com
> EOF
pip install -U pip #升级pip到最新版本 如果报错
部署kolla-ansible
1)部署
pip install ansible #部署ansible 注意:Ansible要大于2.6版本
pip install kolla-ansible #使用pip安装kolla-ansible
2)复制kolla-ansible的相关配置文件
cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/
cp /usr/share/kolla-ansible/ansible/inventory/* /etc/kolla/
[root@node1 ~]# ls /etc/kolla/
all-in-one globals.yml multinode passwords.yml
文件说明:all-in-one是安装单节点OpenStack的ansible自动安装配置文件;multinode是安装多节点OpenStack的ansible自动安装配置文件;globals.yml是OpenStack部署的自定义配置文件;passwords.yml是OpenStack中各个服务的密码文件。
2)编辑kolla-ansible的配置文件,用于自定义安装OpenStack,生成OpenStack各个服务的密码文件,并修改Web页面登录密码。
kolla-genpwd
vim /etc/kolla/passwords.yml
//修改第165行,这是登录Dashboard(web界面控制台)的密码。正常情况下也不能太简单,可以截取一段自动生成的密码
keystone_admin_password: hsh.2019#
编辑/etc/kolla/global.yml自定义OpenStack中的部署事项
vim /etc/kolla/globals.yml
//第14行和第15行,选择下载的基础镜像,5选1
# Valid options are ['centos', 'debian', 'oraclelinux', 'rhel', 'ubuntu']
kolla_base_distro: "centos"
//第17行和第18行,选择的安装方法,2选1。binary二进制安装,source源码安装
# Valid options are [ binary, source ]
kolla_install_type: "source"
//第20行和第21行,选择OpenStack的版本标签,详细请看:https://releases.openstack.org/
# Valid option is Docker repository tag
openstack_release: "stein" //注意版本必须小写,后期下载的OpenStack相关的docker镜像标签也为stein。我是train版本失败,才换成stein
//第23行和第24行,存放配置文件的位置
# Location of configuration overrides
#node_custom_config: "/etc/kolla/config" //默认存放地址
//第31行,OpenStack内部管理网络地址,通过该IP访问OpenStack Web页面进行管理。如果启用了高可用,需要设置为VIP(漂移IP)
kolla_internal_vip_address: "192.168.128.240"
//第87行,OpenStack内部管理网络地址的网卡接口
network_interface: "ens32"
//第105行,OpenStack外部(或公共)网络的网卡接口,可以是vlan模式或flat模式。
//此网卡应该在没有IP地址的情况下处于活动,如果不是,那么OpenStack云平台中的云主机实例将无法访问外部网络。(存在IP时br-ex桥接就不成功)
neutron_external_interface: "ens33"
//第190行,关闭高可用
enable_haproxy: "no"
//第213行,关闭cinder(块存储)
#enable_cinder: "no"
//第443行和第444行,指定nova-compute守护进程使用的虚拟化技术。(kvm好像有点问题,大家可以试试,看看你们能不能过nova下载)
//nova-compute是一个非常重要的守护进程,负责创建和终止虚拟机实例,即管理虚拟机实例的生命周期
# Valid options are [ qemu, kvm, vmware, xenapi ]
nova_compute_virt_type: "qemu" #我选择的是KVM
四、基于kolla-ansible安装OpenStack私有云
配置 /etc/kolla/all-in-one文件
//修改第3行到第19行,将“localhost ansible_connection=local”改为“node1”
//可以使用替换命令":%s/localhost ansible_connection=local/node1/g"
[root@node1 ~]# head -20 /etc/kolla/all-in-one
# These initial groups are the only groups required to be modified. The
# additional groups are for more control of the environment.
[control]
node1
[network]
node1
[compute]
node1
[storage]
node1
[monitoring]
node1
[deployment]
node1
# You can explicitly specify which hosts run each project by updating the
# groups in the sections below. Common services are grouped together.
[chrony-server:children]
haproxy
[chrony:children]
开始部署OpenStack。注意:我在使用阿里云的epel源时,在安装bootstrap-server时会卡在TASK [baremetal : Install yum packages]这一步。而系统安装的epel源只等待了5分钟左右。
//安装bootstrap-servers部署OpenStack所需的依赖包。该包由kolla-ansible提供,包含docker。
kolla-ansible -i /etc/kolla/all-in-one bootstrap-servers
//对当前主机进行预部署(检测),直接看最后的统计即可。如果检测报错,可以查看前面的TASK:[precheck ...]部分,可以快速定位到错误
kolla-ansible -i /etc/kolla/all-in-one prechecks
//查看docker volume卷挂载方式
vim /etc/systemd/system/docker.service.d/kolla.conf
[Service]
MountFlags=shared //添加该行,后期docker宿主机新增分区时,docker服务不用重启,方便主机增加磁盘。
ExecStart=
ExecStart=/usr/bin/dockerd --log-opt max-file=5 --log-opt max-size=50m
//指定docker加速器,阿里云免费的申请一下即可
tee /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": ["https://fxa4g5lx.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
kolla-ansible -i /etc/kolla/all-in-one pull #拉去镜像 需要2-3个小时;
//安装bootstrap-servers部署OpenStack所需的依赖包。该包由kolla-ansible提供,包含docker。
kolla-ansible -i /etc/kolla/all-in-one bootstrap-servers
//对当前主机进行预部署(检测),直接看最后的统计即可。如果检测报错,可以查看前面的TASK:[precheck ...]部分,可以快速定位到错误
kolla-ansible -i /etc/kolla/all-in-one prechecks
//查看docker volume卷挂载方式
vim /etc/systemd/system/docker.service.d/kolla.conf
[Service]
MountFlags=shared //添加该行,后期docker宿主机新增分区时,docker服务不用重启,方便主机增加磁盘。
ExecStart=
ExecStart=/usr/bin/dockerd --log-opt max-file=5 --log-opt max-size=50m
//指定docker加速器,阿里云免费的申请一下即可
tee /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": ["https://fxa4g5lx.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
kolla-ansible -i /etc/kolla/all-in-one pull #拉去镜像 需要2-3个小时;
[root@node1 ~]# docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
kolla/centos-source-nova-compute stein 29a1089c3439 12 days ago 1.86GB
kolla/centos-source-horizon stein 528ec4d61425 12 days ago 1.05GB
kolla/centos-source-nova-ssh stein 0206e811f97b 12 days ago 1.07GB
kolla/centos-source-heat-api stein 15697345e54b 12 days ago 906MB
kolla/centos-source-heat-api-cfn stein d7109464a5ac 12 days ago 906MB
kolla/centos-source-heat-engine stein a53b323f6d89 12 days ago 906MB
kolla/centos-source-nova-consoleauth stein 0218807c7f25 12 days ago 1.04GB
kolla/centos-source-nova-api stein 0821f9feba2e 12 days ago 1.1GB
kolla/centos-source-nova-novncproxy stein a58340553002 12 days ago 1.07GB
kolla/centos-source-placement-api stein eed6f0a74817 12 days ago 932MB
kolla/centos-source-nova-conductor stein 2592000fbc39 12 days ago 1.04GB
kolla/centos-source-nova-scheduler stein 628404562a7d 12 days ago 1.04GB
kolla/centos-source-neutron-server stein a99220d46d30 12 days ago 1.05GB
kolla/centos-source-neutron-l3-agent stein 9b76ae64d561 12 days ago 1.06GB
kolla/centos-source-neutron-metadata-agent stein 813dcf95e9cc 12 days ago 1.02GB
kolla/centos-source-neutron-openvswitch-agent stein fd258779b5c7 12 days ago 1.02GB
kolla/centos-source-neutron-dhcp-agent stein fb5df664eff0 12 days ago 1.02GB
kolla/centos-source-glance-api stein b2ebb8704be4 12 days ago 922MB
kolla/centos-source-keystone-fernet stein 0b8d0abcb18e 12 days ago 932MB
kolla/centos-source-keystone-ssh stein 925d5ac5df29 12 days ago 933MB
kolla/centos-source-keystone stein 3dafc7bd16db 12 days ago 932MB
kolla/centos-source-openvswitch-vswitchd stein c93f857f8cb2 12 days ago 424MB
kolla/centos-source-openvswitch-db-server stein 8bf18465403a 12 days ago 424MB
kolla/centos-source-nova-libvirt stein ff0278b83bfc 12 days ago 1.21GB
kolla/centos-source-kolla-toolbox stein 43a3d49dedf8 12 days ago 698MB
kolla/centos-source-cron stein 9798d8d56c7f 12 days ago 406MB
kolla/centos-source-rabbitmq stein f4004eec41a4 12 days ago 486MB
kolla/centos-source-fluentd stein deac0e6e1726 12 days ago 540MB
kolla/centos-source-chrony stein 3ece76e19e9f 12 days ago 407MB
kolla/centos-source-mariadb stein 1ec2dfae2f33 12 days ago 594MB
kolla/centos-source-memcached stein 46c37f70347c 12 days ago 407MB
部署Openstack
kolla-ansible -i /etc/kolla/all-in-one deploy
//验证部署,并且生成/etc/kolla/admin-openrc.sh
kolla-ansible -i /etc/kolla/all-in-one post-deploy
kolla-ansible -i /etc/kolla/all-in-one post-deploy -vvv #可以打印出详情;
[root@node1 ~]# cat /etc/kolla/admin-openrc.sh
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=hsh.2019# //#web登陆界面的账户密码admin hsh.2019#
export OS_AUTH_URL=http://192.168.6.35:35357/v3
export OS_INTERFACE=internal
export OS_IDENTITY_API_VERSION=3
export OS_REGION_NAME=RegionOne
export OS_AUTH_PLUGIN=password
报错1:拉取镜像失败。
首先重复尝试几次拉取镜像操作。如果还是失败,先检测/etc/kolla/globals.yml中第21行版本号是否正确。在版本号正确的情况下再次拉取镜像还是报错,那么向前退一个版本尝试拉取镜像。(我就是train版本无法使用,退回到stein版本或者使用queens版本)注意清理其他版本的镜像
部署完毕后访问:http://192.168.6.35/
#卸载 清理缓存kolla-ansible destroy ./all-in-one --yes-i-really-really-mean-it
可以清理安装的openstack