kolla-ansible部署单节点OpenStack-Pike

kolla-ansible部署单节点OpenStack-Pike

一、准备工作

最小化安装CentOS 7.5,装完后,进行初始化

selinux,防火墙端口无法访问,主机名问题,都是安装的常见错误,一定要细心确认。

 

kolla的安装,要求目标机器是两块网卡:

  1. ens33,设置的IP是:192.168.41.13,之后Horizon访问就是通过这个IP地址;
  2. ens37,不分配IP,这个是让neutron的br-ex 绑定使用,虚拟机是通过这块网卡访问外网。
  3. ens38 选择nat网络,主要用于安装时连接外网下载包等

 

hosts绑定(/etc/hosts)

192.168.41.13  kolla

 

除系统外盘,再添加一块硬盘,用于存在,创建卷。

要启动cinder存储服务,需先添加一块新的硬盘,然后创建pv、vg
pvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb     #vg名取名为 cinder-volumes,这里主要跟 kolla配置文件里vg名一致


只允许vm实例访问块存储卷,对LVM可能出现异常做设置


vi /etc/lvm/lvm.conf 
修改 devices 下面的,有多少块硬盘就写多少块,如果不想使用系统盘,则不写a|sda

devices {
...

filter = [ "a|sda|", "a|sdb|", "r|.*|" ]

重启lvm服务
systemctl restart lvm2-lvmetad.service

 

配置国内pipy源

mkdir ~/.pip

cat << EOF > ~/.pip/pip.conf

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn

EOF

 

安装pip

yum -y install epel-release

yum -y install python-pip

如果pip install 出现问题可以试试命令

pip install setuptools==33.1.1

 

二、安装基础包

 

一定要先启用EPEL的repo源
yum -y install python-devel libffi-devel gcc openssl-devel git python-pip qemu-kvm qemu-img

安装docker
1)下载RPM包
2)安装Docker 1.12.6,创建安装1.12.6比较稳定
yum localinstall -y docker-engine-1.12.6-1.el7.centos.x86_64.rpm docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm

也可以参考官方文档安装:

https://docs.docker.com/engine/installation/linux/centos/

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce #或 yum install docker-ce-1.12.6

 

配置Docker共享挂载
mkdir /etc/systemd/system/docker.service.d 
tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF' 
[Service] 
MountFlags=shared 
EOF

设置访问私有的Docker仓库

公共的:https://hub.docker.com/u/kolla/,但下载比较慢
编辑  vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd --insecure-registry 192.168.41.13:4000
重启服务
systemctl daemon-reload && systemctl enable docker && systemctl restart docker

 

下载kolla官方提供的镜像
wget     原来官方的下载地址http://tarballs.openstack.org/kolla/images/centos-source-registry-pike.tar.gz已经转到到https://hub.docker.com/u/kolla/,4G左右

mkdir -p /data/registry
tar -zxvf  centos-source-registry-pike-5.0.1.tar.gz -C /data/registry
这样就把kolla的docker镜像文件放到Regisitry服务器上。

 

Registry 服务器
默认docker的registry是使用5000端口,对于OpenStack来说,有端口冲突,所以改成4000
docker run -d -v /data/registry:/var/lib/registry -p 4000:5000 --restart=always --name registry registry



测试是否成功:

# curl -k localhost:4000/v2/_catalog
# curl -k localhost:4000/v2/lokolla/centos-source-fluentd/tags/list
{"name":"lokolla/centos-source-fluentd","tags":["5.0.1"]}

Ansible
Kolla项目的Mitaka版本要求ansible版本低于2.0,Newton版本以后的就只支持2.x以上的版本。
yum install -y ansible

三、安装kolla

 

升级pip:
pip install -U pip -i https://pypi.tuna.tsinghua.edu.cn/simple
安装docker模块:pip install docker

 

安装kolla-ansible 
cd /home
git clone -b stable/pike https://github.com/openstack/kolla-ansible.git
cd kolla-ansible
pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple


复制相关文件
cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/ 
cp /usr/share/kolla-ansible/ansible/inventory/* /home/

如果是在虚拟机里再启动虚拟机,那么需要把virt_type=qemu,默认是kvm
mkdir -p /etc/kolla/config/nova 
cat << EOF > /etc/kolla/config/nova/nova-compute.conf 
[libvirt] 
virt_type=qemu 
cpu_mode = none 
EOF

生成密码文件
kolla-genpwd
编辑 vim /etc/kolla/passwords.yml
keystone_admin_password: admin123
这是登录Dashboard,admin使用的密码,根据需要进行修改。

编辑 vim /etc/kolla/globals.yml  文件

kolla_internal_vip_address: "192.168.41.13" //外部访问地址,如果是非HA环境,是控制节点IP 
docker_registry: "192.168.41.13:4000"    //镜像库,用部署节点的镜像库 ,这里与前面配docker服务启动脚本配置的IP一样,如果使用主机名,这里也要使用主机名
docker_namespace: "lokolla"
kolla_install_type: "source"
openstack_release: "5.0.1" 
network_interface: "ens33" //网络接口,默认就这一个接口,这里以ens33作为API网络 
api_interface: "{{ network_interface }}" //用的是ens33 
neutron_external_interface: "ens37" //ens37作为外部网络

enable_cinder: "yes" //启用cinder 
enable_cinder_backend_iscsi: "yes"
enable_cinder_backend_lvm: "yes" //cinder后端用lvm

enable_haproxy: "no" //不启用haproxy
enable_heat: "no"

 

#默认创建外部网络的物理网络是physnet1

四、安装openstack

 

安装OpenStack
检查:kolla-ansible prechecks -i /home/all-in-one
部署:kolla-ansible deploy -i /home/all-in-one

验证部署
kolla-ansible post-deploy
这样就创建 /etc/kolla/admin-openrc.sh 文件

. /etc/kolla/admin-openrc.sh


安装OpenStack client端
pip install --ignore-installed python-openstackclient

 

部署经验

(1)如果,在部署过程中失败了,亦或是变更了配置信息,需要重新部署,则执行如下命令,清除掉已部署的 Docker 容器,即 OpenStack 服务。

kolla-ansible destroy -i /home/multinode --yes-i-really-really-mean-it

接着,umount 卸掉 Ceph OSD 挂载的目录,如 /dev/sdb1。

umount /dev/sdb1

删除掉 /var/lib/ceph 目录下的 OSD 文件:

rm -rf /var/lib/ceph/osd/*

删除掉 OSD 盘的分区,如 /dev/sdb:

parted /dev/sdb rm 1 rm 2

重新对 OSD 盘进行分区,如 /dev/sdb:

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

最后,执行部署命令即可。

(2)除此外,还有一些小工具,在需要时,可以使用。

  • kolla-ansible prechecks:在执行部署命令之前,先检查环境是否正确;
  • tools/cleanup-containers:可用于从系统中移除部署的容器;
  • tools/cleanup-host:可用于移除由于网络变化引发的 Docker 启动的neutron-agents 主机;
  • tools/cleanup-images:可用于从本地缓存中移除所有的 Docker image。

最后,可以使用 docker ps -a 命令查看到安装的 OpenStack 所有服务的容器。

故障诊断与排除

通过 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/kollalogs/data/ 目录下,查看指定服务的日志信息。

(4)一些 Ceph的管理命令,如下:

  • docker exec -it ceph_mon ceph osd pool ls
  • docker exec -it ceph_mon ceph -s
  • docker exec -it ceph_mon rbd ls images
  • docker exec -it ceph_mon rbd ls volumes
  • docker exec -it ceph_mon rbd ls vms

当然,也可以直接进入到 Ceph 容器中,直接执行相关命令,如下所示。

# docker exec -it -u root ceph_mon bash

查看OSD状态和Ceph集群状态:

ceph osd tree
ceph health
ceph -s

查看 Ceph 的实时运行状态:

ceph -w

查看 Ceph 存储空间:

ceph df
ceph osd df

查看 Ceph 集群monitor信息:

ceph mon statceph osd dump |grep pool

要检查监视器的法定人数状态,执行下面的命令:

ceph quorum_status

查看OSD Journal分区大小:

ceph --show-config|grep osd_journal_size
























1. 准备工作

1.1环境准备

物理机一台、CentOS7、双网卡(第一张为管理网络,可以访问公网,第二张为实例使用网络,启动即可,无需配置IP。)

这里注意的是,docker安装目录在/var,分区的时候要注意,或者软链接到新目录

1.2 关闭selinux

 
1
vi /etc/selinux/config

更改SELINUX选项为不可用

 
1
SELINUX=disabled

1.3 关闭防火墙(可选)

 
1
2
3
4
5
systemctl stop firewalld
 
systemctl disable firewalld
 
# 因为是测试环境,所以关掉了防火墙

1.4 更改hosts

 
1
2
3
192.168.134.131 kolla
 
# centos 默认主机名localhost如果更改,统一即可

2.安装docker容器

使用官方脚本一键安装

 
1
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

 
1
curl -sSL https://get.daocloud.io/docker | sh

手动安装请参考:
https://www.runoob.com/docker/centos-docker-install.html

测试docker是够正常运行:

 
1
sudo docker run hello-world

3.安装依赖

 
1
2
3
yum install epel-release
yum install python-pip
pip install -U pip
 
1
yum install python-devel libffi-devel gcc openssl-devel libselinux-python
 
1
yum install ansible

配置ansible:
添加至 /etc/ansible/ansible.cfg

 
1
2
3
4
[defaults]
host_key_checking=False
pipelining=True
forks=100

4. 安装Kolla-ansible

 
1
pip install kolla-ansible

提示有安装包无法安装,使用pip install --ignore-installed 命令强制执行

复制kolla-ansible配置文件:

 
1
cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/
 
1
cp /usr/share/kolla-ansible/ansible/inventory/* .

5. 安装Kolla

从git克隆Kolla和Kolla Ansible存储库。

 
1
2
git clone https://github.com/openstack/kolla
git clone https://github.com/openstack/kolla-ansible

将配置文件复制到/etc/kolla目录。

 
1
cp -r kolla-ansible/etc/kolla /etc/kolla/
 
1
cp kolla-ansible/ansible/inventory/* .

6. 配置OpenStack环境

6.1 调整kolla-ansible全局配置

 
1
2
3
4
5
6
7
8
kolla_install_type: "source" # 使用源码版本,更稳定
openstack_release: "train"
 # 指定queens版本kolla_internal_vip_address: "192.168.134.131" # all-in-one部署,指定vip为管理网络网卡
network_interface: "ens33" # 管理网络、API网络的网卡
 
neutron_external_interface: "ens34" # 外部网络的网卡
 
enable_haproxy: "no" # all-in-one部署,不部署HA服务

6.2 调整 all-in-one 配置

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[control]
kolla       ansible_connection=local
 
[network]
kolla       ansible_connection=local
 
[compute]
kolla       ansible_connection=local
 
[storage]
kolla       ansible_connection=local
 
[monitoring]
kolla       ansible_connection=local

全部改为之前修改的主机名

7.生成密码

 
1
kolla-genpwd
 
1
2
3
4
5
# 生成的文件在/etc/kolla/password.yml
 
vi /etc/kolla/password.yml
 
keystone_admin_password: 123 #OpenStack登录密码,原始密码哈希生成,记忆王者可以随意修改

8. 部署OpenStack环境

 
1
kolla-ansible -i ./all-in-one bootstrap-servers
 
1
kolla-ansible -i ./all-in-one prechecks
 
1
kolla-ansible -i ./all-in-one deploy

9. 使用openstack

OpenStack需要一个openrc文件,其中设置了管理员用户等的凭据。生成此文件运行

 
1
2
kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh

安装基本OpenStack CLI客户端:

 
1
pip install python-openstackclient python-glanceclient python-neutronclient

根据安装Kolla Ansible的方式,有一个脚本可以创建示例网络、图像等。

 
 
 
1
. /usr/share/kolla-ansible/init-runonce
 
























kolla-ansible单节点部署OpenStack过程,遵循all-in-one模式部署,其部署过程中可以有效的进行配置文件和日志文件的集中规划。

部署经过了虚拟机测试和物理机测试皆可用,本文就以物理机作为个例进行部署分解。

物理机配置清单:

CPU4个逻辑核    勾选“虚拟化 Intel VT-x/EPT”

网卡ens33接NAT网络,IP 192.168.134.131,用于下载组件、管理网络、API网络

网卡ens34桥接物理机网卡,IP 10.25.21.177,用于外部网络(即内网环境)

操作系统CentOS 7.5

 


下面进入系统环境配置

在装系统的过程中,目录分区的过程中默认/root/ 50GB,后期测试会严重不足,所以在系统安装的时候需要对/root目录的容量进行规划。

完成之后,进入centos对系统进行初始化设定:

1.关闭selinux

vi /etc/selinux/config 

更改SELINUX选项为不可用

SELINUX=disabled

2.关闭防火墙

systemctl stop firewalld

systemctl disable firewalld 

# 以为是测试环境,所以关掉了防火墙

3.更改hosts

192.168.134.131 localhost 

# centos 默认主机名localhost如果更改,统一即可

二、安装docker容器

1.查询一下防火墙是否关闭

systemctl status firewalld

# 显示disable即为关闭,同时查看selinux=disable修改完毕

2.下载安装基本工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3.安装docker

# 安装docker官方yum源

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 下载安装docker

sudo yum install -y docker-ce  

# 启用docker服务

sudo systemctl start docker  

# 设置开机自启docker服务

sudo systemctl enable docker

4.测试docker是够正常运行

sudo docker run hello-world

从官方源下载hello-world镜像并启动容器,输出

 
 

三、配置docker容器

1.开启共享挂载

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

tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'

[Service]

MountFlags=shared

EOF

重启docker服务,使生效

systemctl daemon-reload

systemctl restart docker

四、安装kolla-ansible

1.下载安装基本工具

yum install -y epel-release

yum install -y python-pip

pip install -U pip

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

yum install -y ansible

2.下载kolla、kolla-ansible

git clone https://github.com/openstack/kolla

git clone https://github.com/openstack/kolla-ansible

3.切换到queens版本

cd kolla

git checkout -b queens remotes/origin/stable/queens  

cd ../kolla-ansible

git checkout -b queens remotes/origin/stable/queens

4.安装kolla-ansible

# 先预装版本不匹配的包

pip install -U idna

pip install -I PyYAML  

# 安装kolla-ansible

cd kolla-ansible

pip install .

5.配置kolla-ansible

vi /etc/ansible/ansible.cfg

修改一下选项

[defaults]

host_key_checking=False

pipelining=True

forks=100

五、配置OpenStack环境

1、复制kolla-ansible配置文件

cp -r kolla-ansible/etc/kolla /etc/kolla/

cp kolla-ansible/ansible/inventory/* .

正常部署来说,kolla-ansible的方式部署OpenStack所包含的配置文件存储路径是在/etc/kolla/文件目录下。OpenStack的服务容器启动时,会将此目录映射到容器里。

2.调整kolla-ansible全局配置

vi /etc/kolla/globals.yml

更改如下

kolla_install_type: "source" # 使用源码版本,更稳定openstack_release: "queens"

 # 指定queens版本kolla_internal_vip_address: "192.168.134.131" # all-in-one部署,指定vip为管理网络网卡

docker_registry: "kolla:4000" # ----仅使用docker离线源时配置

docker_namespace: "kolla" # ----仅使用docker离线源时配置

network_interface: "ens33" # 管理网络、API网络的网卡

neutron_external_interface: "ens34" # 外部网络的网卡

enable_haproxy: "no" # all-in-one部署,不部署HA服务

nova_compute_virt_type: "kvm" # ---- 在物理机上部署时无需设置(默认kvm) ,仅在虚拟机中部署kolla-ansible-openstack时设置qemu

注意:在版本上,流传很多对下载镜像进行加速的,基本上都是阿里云,有时候有效有时候无效,看个人喜好。

[root@localhost ~]# mkdir -p /etc/docker

[root@localhost ~]# vim /etc/docker/daemon.json { "registry-mirrors": ["https://7g5a4z30.mirror.aliyuncs.com"] }

# 国内镜像加速依据个人喜好

3、生成密码

kolla-genpwd

# 生成的文件在/etc/kolla/password.yml

vi /etc/kolla/password.yml

keystone_admin_password: 123 #OpenStack登录密码,原始密码哈希生成,记忆王者可以随意修改

六、部署OpenStack环境

1.检查

kolla-ansible -i /home/all-in-one prechecks #注意一下你的all-in-one 文件目录

2.部署安装

kolla-ansible -i /home/all-in-one -vvv deploy #开启详情检查方式,方便与部署过程中的排查

3.生成运行脚本

kolla-ansible post-deploy

运行脚本

source /etc/kolla/admin-openrc.sh

4.安装OpenStack命令行工具

# 先安装版本不匹配的组件

pip install -I ipaddress  

# 安装命令行工具

pip install python-openstackclient python-glanceclient python-neutronclient

5.初始化OpenStack环境

vi /usr/share/kolla-ansible/init-runonce # 对于OpenStack的网络资源规划要进行修改

修改如下:

# This EXT_NET_CIDR is your public network,that you want to connect to the internet via.

EXT_NET_CIDR='192.168.1.0/24'

EXT_NET_RANGE='start=192.168.134.150,end=192.16.134.199'

EXT_NET_GATEWAY='192.168.1.1'




 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Kola简介:

kolla项目起源于TripleO项目,聚焦于使用Docker容器部署OpenStack服务。该项目由Cisco于2014年9月提出,是OpenStack 社区Big Tent开发模式下的孵化项目。

 

Kolla项目是一个支持Openstack服务以容器的方式部署,借助ansible部署工具可以简单的扩展到多个节点。同时,又借助于使用 heat 来编排 Kolla 集群。

 

环境介绍:

10.0.100.201 kolla-all-in-one   Centos7.2系统

 

10.0.100.207 docker-registry   Centos7.2系统

 

由于我目的很明确,所以这里就不强调网络了,没有特殊要求,能上网就行。

 

另外就是安装kolla,必须自己build镜像,由于网络的原因,经常会导致在build 镜像的时候失败。这次我们直接采用kolla官方提供的镜像文件,这样就不需要自己build镜像的环节,也就是说我们搭建本地的docker registry。

 

环境准备:

安装epel源

yum install epel-release -y
 

安装所需的依赖包

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

 

配置docker源

vi /etc/yum.repos.d/docker.repo

[dockerrepo]
name=Docker Repository
baseurl= http://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
 

 

安装docker

yum install docker-engine -y
 

 

设置docker

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

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

 

重启docker服务

systemctl daemon-reload
systemctl enable docker
systemctl restart docker
 

 

 

设置docker采用私有仓库

编辑 /usr/lib/systemd/system/docker.service

 

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

 

如何搭建本地docker registry请查看:http://sangh.blog.51cto.com/6892345/1927000

 

重启Docker服务

systemctl daemon-reload
systemctl restart docker
 

 

安装Ansible

yum install ansible -y
 

 

 

下载Kolla源码

git clone http://git.trystack.cn/openstack/kolla-ansible
 

这里采用trystack的国内源

cd kolla-ansible
pip install .
 

 

复制相关文件

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

 

生成密码:

kolla-genpwd
 

 

为了方便登录Dashboard,我们修改下keystone的密码,这里根据自己需求修改哈,编辑 /etc/kolla/passwords.yml

 

keystone_admin_password:devin
 

 

另外需要注意的是需要在passwords.yml文件里面新添加一个服务的密码placement_keystone_password,之后在运行下koll-genpwd,placement_keystone_password选项是在O版本新增的,不然部署的时候会报错说placement_keystone_password密码未定义。

 

接下来编辑 /etc/kolla/globals.yml  文件

kolla_internal_vip_address:"10.0.100.208"
 
kolla_install_type:"source"
openstack_release:"4.0.2"
docker_registry:"10.0.100.207:4000"
docker_namespace:"lokolla"
 

10.0.100.208这个ip是一个没有使用的的ip地址,他是给haproxy使用,单节点其实压根没有意义

 

安装OpenStack

kolla-ansible deploy -i /root/all-in-one
 

 

验证部署

kolla-ansible post-deploy
 

 

这样就创建/etc/kolla/admin-openrc.sh 文件

安装OpenStack client端

pip install python-openstackclient
 

 

运行

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

 

最后登录Dashboard,大功告成。

 

wKiom1kdIIrBKO69AACO480iLzw441.png-wh_50

wKioL1kdII-CHxGPAAGpLXj0iQw672.png-wh_50

 

 
posted @ 2021-03-01 16:18  woaibaobei  阅读(957)  评论(0编辑  收藏  举报