Kolla单节点快速部署OpenStack-pike版本(集成ceph)

Kolla简介:kolla是OpenStack下面用于自动化部署的一个项目,它基于docker和ansible来实现,docker主要负责镜像制作,容器管理;而ansible主要负责环境的部署和管理。

使用kolla可以实现OpenStack的单节点部署,并将所有服务运行在容器中,简化升级步骤,在短时间内可以大量部署,开箱即用,节约大量时间。此次部署依旧是在CentOS7.4上完成,并完成一些系统基本优化,详细优化可以在CentOS 7基础优化教程里看到,此处不再过多介绍。

由于集成了ceph所以建议系统内存不小于10G,不加ceph8G内存差不多够用,由于集成ceph所以需要2块硬盘其中1块给ceph使用。

系统相关修改及介绍:

首先需要更改系统主机名,此处将系统主机名设置为kolla,并在/etc/hosts添加主机名解析:

[[email protected] ~]# hostnamectl set-hostname kolla
[[email protected] ~]# hostname
kolla

cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.5.118 kolla

Kolla部署OpenStack需要系统拥有2张网卡:

[[email protected] ~]# ip a|grep ens
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
inet 172.16.5.118/24 brd 172.16.5.255 scope global ens192
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
inet 172.16.5.119/24 brd 172.16.5.255 scope global ens224

ens192是管理使用,ssh及Horizon访问这张网卡;ens224是让neutron的br-ex绑定使用,提供虚拟机访问外网使用,ens224可以与ens192不在同一网段。

安装kolla需要的基础包:

yum install python-devel libffi-devel gcc openssl-devel git -y

Docker安装:

Kolla是将OpenStack服务运行在容器中,所以必不可少的是安装docker,安装docker前先添加docker的yum源:

tee /etc/yum.repos.d/docker.repo << 'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

P版本的OpenStack使用最新版docker并没有发现什么问题,如果是安装O版本使用docker 1.12.5版本,所以在此处安装最新版docker:

yum -y install docker-engine docker-engine-selinux

修改docker配置:

mkdir /etc/systemd/system/docker.service.d
tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'
[Service]
MountFlags=shared
EOF

重新加载docker配置文件,设置开机自启并启动docker查看运行状态:

systemctl daemon-reload
systemctl enable docker
systemctl restart docker
systemctl status docker

使用命令vim /usr/lib/systemd/system/docker.service配置文件使docker访问私有仓库(此处IP绑定的使ens192的IP):

# ExecStart=/usr/bin/dockerd
ExecStart=/usr/bin/dockerd --insecure-registry 172.16.5.253:4000

重新加载配置文件并重启服务:

systemctl daemon-reload
systemctl restart docker

Ansible安装:

Kolla使用ansible负责环境的部署和管理,所以ansible必不可少:

yum -y install ansible

搭建Registry服务器:

Docker默认的registry使用5000端口,由于和OpenStack的keystone某个服务端口有冲突于是将5000端口改成4000(下面命令执行后需要从国外源下载镜像,所以费时较长):

docker run -d -v /opt/registry:/var/lib/registry -p 4000:5000 --restart=always --name registry registry:2

下载kolla官方P版本OpenStack镜像(官方地址),由于在国内下载官方镜像速度较慢所以使用其他地方从官方复制过来的镜像,下载好后将镜像解压到/opt/registry目录下:

wget http://www.superc.xyz:8080/centos-source-registry-pike.tar.gz
du -sh centos-source-registry-pike.tar.gz
4.2G centos-source-registry-pike.tar.gz
tar zxvf centos-source-registry-pike.tar.gz -C /opt/registry/

Kolla-ansible设置:

下载kolla-ansible的代码:

cd
git clone http://git.trystack.cn/openstack/kolla-ansible -b stable/pike

安装kolla-ansible(CentOS 7基础优化中已经添加豆瓣pip源):

cd kolla-ansible/
pip install . 

将kolla-ansible相关文件复制到/etc/kolla目录下:

mkdir /etc/kolla
cp -r /root/kolla-ansible/etc/kolla/* /etc/kolla/

因为系统是安装在虚拟机里面的,所以需要添加一些配置文件可以在虚拟机里开虚拟机:

mkdir -p /etc/kolla/config/nova
cat << EOF > /etc/kolla/config/nova/nova-compute.conf
[libvirt]
virt_type=qemu
cpu_mode = none
EOF

使用ceph做后端存储(如果不适用ceph此步骤不需要执行):

给sdb打上标签,告知kolla此盘作为ceph存储使用:

parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1

通过命令可以查看磁盘信息,name一栏显示说明已经打上标签:

[[email protected] ~]# parted /dev/sdb print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 275GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End    Size  File system   Name                      Flags
1       1049kB  275GB  275GB               KOLLA_CEPH_OSD_BOOTSTRAP

由于ceph只使用一块磁盘所以需要另添加一些配置,使用命令vim /etc/kolla/config/ceph.conf打开文件并添加配置:

[global]
osd pool default size = 1
osd pool default min size = 1

Kolla安装:

使用命令kolla-genpwd生成OpenStack各项服务的密码后使用命令vim /etc/kolla/passwords.yml修改keystone_admin_password设置合适的Dashboard登录密码:

keystone_admin_password: admin

使用根据个人需求命令vim /etc/kolla/globals.yml编辑kolla配置文件:

kolla_base_distro: "centos"                  #根据自己系统修改
kolla_install_type: "source"                 #根据下载的镜像选择
openstack_release: "5.0.1"                   #下文说明
kolla_internal_vip_address: "172.16.5.200"   #高可用地址可随意设置
docker_registry: "172.16.5.118:4000"         #docker_registry地址
docker_namespace: "lokolla"                  #下文说明
network_interface: "ens192"                  #ens192网卡
neutron_external_interface: "ens224"         #ens224网卡
api_interface: "{{ network_interface }}"     #取消该行注释
#如果添加ceph后端还需开启一下功能
enable_cinder: "yes"                         #开启cinder
enable_ceph: "yes"                           #开启ceph
enable_ceph_rgw: "yes"                       #开启ceph_rgw
enable_ceph_rgw_keystone: "yes"              #开启ceph_rgw_keystone
glance_backend_ceph: "yes"                   #开启backend_ceph
storage_interface: "{{ network_interface }}" #取消该行注释

openstack_releasedocker_namespace信息可以根据下方路径信息查看,并根据自己环境不同据实填写:

cd /opt/registry/docker/registry/v2/repositories/lokolla/centos-source-keepalived/_manifests/tags/5.0.1/

使用命令kolla-ansible deploy执行部署OpenStack,静候一段时间即可安装完成,期间遇到错误可根据提示排错。安装完成后使用命令docker ps -a发现容器均正常运行即可。

使用命令kolla-ansible post-deploy验证部署并生成admin-openrc.sh文件,文件位置为/etc/kolla/admin-openrc.sh。

使用命令pip install python-openstackclient安装OpenStack Client端,以便在命令行下执行操作。

此时在浏览器输入kolla_internal_vip_address配置的IP地址(172.16.5.200)或者ens192 IP地址(172.16.5.118)可打开Dashboard web页面,用户名admin,密码为keystone_admin_password配置的密码,此处密码配置为admin。

《Kolla单节点快速部署OpenStack-pike版本(集成ceph)》

上传镜像及创建网络:

使用命令vim /usr/share/kolla-ansible/init-runonce编辑文件修改网络配置:

IMAGE_URL=http://download.cirros-cloud.net/0.3.5/
IMAGE=cirros-0.3.5-x86_64-disk.img
IMAGE_NAME=cirros
IMAGE_TYPE=linux
EXT_NET_CIDR='172.16.5.0/24'
EXT_NET_RANGE='start=172.16.5.201,end=172.16.5.210'
EXT_NET_GATEWAY='172.16.5.1'

运行admin-openrc.sh脚本后执行/usr/share/kolla-ansible/init-runonce文件上传镜像及创建网络:

source /etc/kolla/admin-openrc.sh
bash /usr/share/kolla-ansible/init-runonce

上述配置文件上传的镜像为qcow2格式,如果使用ceph存储需要上传raw格式镜像并设置从硬盘启动即可加快生成速度。

至此Kolla部署OpenStack结束,其他操作与正常手动部署的OpenStack环境类似。

点赞

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注