Openstack/Ceph云计算平台之Kolla部署指南_python

 

背景知识

(适合Openstack/ceph有了解的阅读人群)

Openstack

OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务。

Ceph

Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(rbd)、对象存储服务(rgw)以及文件系统存储服务(cephfs)。目前也是OpenStack的主流后端存储,和OpenStack亲如兄弟,为OpenStack提供统一共享存储服务。Ceph与Openstack关系如下图:

Openstack/Ceph云计算平台之Kolla部署指南_centos_02

Kolla

Kolla是一个非常棒的项目了,它解决了原始OpenStack部署的一些痛点,kolla项目是为了容器化openstack,目标是做到100个节点的开箱即用,所有的组件的HA都具备。

 

部署开始

(适合Openstack/ceph有了解的阅读人群)

系统环境规划

Openstack/Ceph云计算平台之Kolla部署指南_解决方法_03Openstack/Ceph云计算平台之Kolla部署指南_python_04

配置前准备

修改主机名

Kolla/Ceph-1/Ceph-2/Node01/Node02

# hostnamectl set-hostname Kolla



修改hosts

Kolla

# vi /etc/ hosts

10.10.10.128 kolla

10.10.10.130 node01

10.10.10.131 node02

192.168.175.101 ceph-1

192.168.175.102 ceph-2

SSH免密登录

Kolla/Ceph-1/Ceph-2/Node01/Node02

参考:https://blog.csdn.net/fuck487/article/details/79361197



配置防火墙

Kolla/Ceph-1/Ceph-2/Node01/Node02

# firewall-cmd --zone=public --add-port=6789/tcp --permanent  

# firewall-cmd --zone=public --add-port=6800-7100/tcp --permanent

# firewall-cmd --zone=public --add-port=123/udp --permanent 

# firewall-cmd --reload

# firewall-cmd --zone=public --list-all

因为环境不通外网,无法访问Centos时间源。并且,这个环境也没有其他的NTP时间源,因此,在这里,我们使用Monitor服务器(Kolla)作为NTP server的本地时间源。

安装NTP

Kolla/Ceph-1/Ceph-2/Node01/Node02

# yum -y install ntp



校准主NTP时间

Kolla

# ntpdate time.windows.com && hwclock –w



修改ntp.conf

Kolla

# vi /etc/ntp.conf

注销掉以时间源的部分

#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

在文件末尾添加如下内容

server  127.127.1.0 minpoll 4     # 如果有其他的NTP源,可以更换这里的ip地址。

fudge   127.127.1.0 stratum 1

restrict 192.168.175.0 mask 255.255.255.0 nomodify notrap

启动NTP服务

Kolla/Ceph-1/Ceph-2/Node01/Node02

# systemctl enable ntpd

# systemctl start ntpd

同步NTP

Ceph-1/Ceph-2/Node01/Node02

# ntpdate -u 192.168.175.128

# ntpstat

# ntpq -p

注意:NTP服务刚重启时,需要一定的时间来同步时间源,不能立刻提供服务,需一定时间后才能正常工作(一般5分钟左右)。可在NTP server端执行命令ntpq -p来查看服务状态。

pip 加速源(阿里源)

Kolla

# mkdir ~/.pip

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

[global]

trusted-host=mirrors.aliyun.com

index-url=https://mirrors.aliyun.com/pypi/simple/

EOF

安装基础包

Kolla

# yum install –y epel-release

# yum install –y python-pip

# yum install –y python-devel

# yum install –y libffi-devel

# yum install –y gcc

# yum install –y openssl-devel 

 

部署Openstack&Ceph

(适合Openstack/ceph有了解的阅读人群)

Docker环境部署

安装docker

Kolla

# yum install -y yum-utils \

device-mapper-persistent-data \

lvm2

#yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

#yum list docker-ce --showduplicates | sort -r

# yum install docker-ce #或 yum install docker-ce-18.06.3.ce-3.el7

设置docker服务参数MountFlags

Kolla

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

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

[Service]

MountFlags=shared

EOF

重启相关服务

Kolla

# systemctl daemon-reload && systemctl enable docker && systemctl restart docker



Docker镜像仓库部署

配置Registry服务器

Kolla

# mkdir /opt/registry

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

访问私有的Docke Registry服务器

Kolla

# vi /usr/lib/systemd/system/docker.service



注释掉原有配置

#ExecStart=/usr/bin/dockerd



替换上面配置

ExecStart=/usr/bin/dockerd --insecure-registry 10.10.10.128:4000



重启相关服务

Kolla

# systemctl daemon-reload && systemctl restart docker



上传Kolla镜像到本地Docker仓库服务器

Kolla

#tar zxvf kolla-openstack-queens-registry.tar.gz -C /



如需要,可以下载本人做好的镜像文件,此文件可满足本篇部署需求。同时公众号也有制作镜像的文章。

 

查看是否恢复成功

Kolla

# curl -XGET http://10.10.10.128:4000/v2/_catalog

Openstack/Ceph云计算平台之Kolla部署指南_docker_05

Kolla部署

安装Ansible

Kolla

# yum install -y ansible

安装kolla-ansible

Kolla

# pip install kolla-ansible



复制相关文件

Kolla

# cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/

# cp /usr/share/kolla-ansible/ansible/inventory/* /opt/

编辑kolla配置文件

Kolla

# vi /etc/kolla/globals.yml

kolla_base_distro: "centos"  # 基础容器镜像版本

kolla_install_type: "source"  # 源码安装方式安装组件

openstack_release: "queens"  # openstack版本,选择你需要的

docker_registry: "10.10.10.128:4000" #docker私有仓库地址

network_interface: "ens33"  # 管理网使用得网卡

neutron_external_interface: "ens38"  # public网使用得网卡

kolla_internal_vip_address: " 10.10.10.250"  # ha或者keepalived代理的服务内部地址。

kolla_external_vip_address: "192.168.175.250"  # ha或者keepalived代理的服务外部地址。

enable_cinder: "yes"

enable_cinder_backend_lvm: "yes"

cinder_volume_group: "cinder-volumes"

enable_horizon: "yes"  #因为控制节点有多个,所以要启动haproxy,默认

enable_haproxy: "yes"

enable_heat: "yes"

# 以下为ceph配置

enable_ceph: "yes"

enable_ceph_rgw: "yes"

enable_ceph_rgw_keystone: "yes"

#ceph_target_max_bytes: ""  # 表示每个cache pool最大大小。注意,如果配置了cache盘,此项不配置会导致cache不会自动清空。cache_osd_size*cache_osd_num/replicated/cache_pool_num

#ceph_target_max_objects: "" # 表示cache pool最大的object数量

ceph_pool_pg_num: 16

ceph_pool_pgp_num:16

glance_backend_ceph: "yes"

glance_backend_file: "no"

cinder_backend_ceph: "yes"

cinder_backup_driver: "ceph"

nova_backend_ceph: "yes"

ceph_pool_type: "replicated"
》pg_num= ((Total_number_of_OSD * 100) / pool_count / replicated

》Total_number_of_OSD:4(本篇4个OSD)

》pool_count:8(根据开启组件情况)

》replicated:3(默认)

编辑节点文件

Kolla

# vi /opt/multinode

Openstack/Ceph云计算平台之Kolla部署指南_python_06

生成随机码作为密码使用

Kolla

# kolla-genpwd



Ceph配置

ceph硬盘配置

Ceph-1/Ceph-2

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

# parted /dev/sdc -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1

SSD的分区,则使用不同标签,KOLLA_CEPH_OSD_BOOTSTRAP_SDC

修改ceph配置文件

Kolla

# vi /usr/share/kolla-ansible/ansible/group_vars/all.yml

ceph_osd_store_type: "filestore"



目前安装kolla-ansible默认使用bluestore的ceph,bluestore用于SSD硬盘。这里演示使用filestore。

开始部署Openstack&Ceph

部署

Kolla

# kolla-ansible -i /opt/multinode bootstrap-servers

# kolla-ansible -i /opt/multinode prechecks

# kolla-ansible -i /opt/multinode deploy

安装命令行工具

Kolla

# pip install python-openstackclient python-glanceclient python-neutronclient



确认部署(会生成管理员密码等)

Kolla

# kolla-ansible post-deploy



导入环境变量

Kolla

# . /etc/kolla/admin-openrc.sh



打开openstack管理web

可以联通175.0网段电脑

Http://192.168.175.250



检测部署情况

查看Openstack服务

node1/node2/ceph-1/ceph-2

# openstack service list --long 

Openstack/Ceph云计算平台之Kolla部署指南_解决方法_07

查看ceph状态

Node01/Node02

# docker exec ceph_mon ceph -s

Openstack/Ceph云计算平台之Kolla部署指南_解决方法_08

 

部署过程出现问题的解决方法

(适合Openstack/ceph有了解的阅读人群)

Health_warm

查看ceph状态,出现health_warm警告:

Openstack/Ceph云计算平台之Kolla部署指南_docker_09

查看OSD TREE是否正常

Node01/Node02

# docker exec ceph_mon ceph osd tree

Openstack/Ceph云计算平台之Kolla部署指南_centos_10

查看Pool情况

Node01/Node02

# docker exec -it ceph_mon ceph osd lspools

# docker exec -it ceph_mon ceph osd dump | grep pool

Openstack/Ceph云计算平台之Kolla部署指南_python_11

ceph系统有health_warn警告,通过Pool看出池的副本数是3(replicated size),osd tree故障域只有两台host,有一个副本没有地方放置,所以是降级状态(degraded)。

解决方法

Node01

配置副本数量,8个pool池都需要改

# docker exec -it ceph_mon ceph osd pool set .rgw.root size 2



Cannot uninstall 'PyYAML'.

It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

解决方法

Kolla

pip install --ignore-installed PyYAML

Network timed out while trying to...

fatal: [localhost]: FAILED! =>{"changed": false, "msg": "Unknown error message: Network timed out while trying to connect to https://index.docker.io/v1/repositories/kolla/centos-source-fluentd/images. You may want to check your internet connection or if you are behind a proxy."}

解决方法

Kolla

没有新建:vi /etc/docker/daemon.json

{

  "registry-mirrors": ["https://jzngeu7d.mirror.aliyuncs.com"]

}

#systemctl daemon-reload

#systemctl restart docker

 'ReadTimeoutError("HTTPSConnection

Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)",)': /simple/ansible/

解决方法

Kolla

# pip install -U ansible --default-timeout=100



ImportError: cannot import name decorate

ImportError: cannot import name decorate

解决方法

Kolla

# pip install -U decorator



Cannot uninstall 'ipaddress'.

Cannot uninstall 'ipaddress'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

此类问题强制升级此安装包即可。(已发现PyYAML,ipaddress)

解决方法

Kolla

# pip install --ignore-installed ipaddress



TCP connection reset by peer

"https://yum.dockerproject.org/repo/main/centos/7/repodata/repomd.xml: [Errno 14] curl#35 - \"TCP connection reset by peer\"", "/bin/sh: apt-get: command not found"]}

解决方法

Kolla

yum 加速源(centos7 阿里源)

# yum install -y wget

# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

# yum clean all

# yum makecache