openstack|kolla-ansible部署openstack+ceph高可用集群queens版本--- 环境准备及初始化

一、宿主主机硬件需求 1、主机必须满足以下最低要求:

  1. 2张网卡,都需要网线连接(内部管理网络建议万兆,外部网络千兆即可)
  2. 8GB主内存
  3. 40GB磁盘空间(部署ceph至少两块硬盘)
  4. 高可用集群环境至少2台controller,1台computer.
2、部署环境 本文采用1台monitor,3台controller,3台computer,1台做docker镜像仓库,均安装centos7 minimal 系统,3T 硬盘*4,3块作为ceph存储使用,2张万兆网卡。
hostname 网卡1 网卡2
monitor 172.29.55.229 无ip
controller01 172.29.55.230 无ip
controller02 172.29.55.231 无ip
compute03 172.29.55.232 无ip
compute01 172.29.55.233 无ip
compute02 172.29.55.234 无ip
compute03 172.29.55.235 无ip
2级标题 3、系统其他要求
  1. 安装系统的时候采用默认分区,并删除/home分区,剩余容量全部分给root分区.可省略
  2. 系统其他硬盘,不要挂载,直接格式化
  3. 服务器的网口至少两个,一个内网管理必须分配ip,连接网线;另一个不需要分配ip,连接网线。
二、所有主机初始化配置 1、yum加速源配置,并安装需要的更新
!#/bin/bash mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup cd /etc/yum.repos.d/ curl -o /etc/yum.repos.d/CentOS7-Base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum clean all yum makecache yum update -y systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config

2、 ntp服务配置
OpenStack,RabbitMQ和Ceph要求所有主机具有匹配的时间,以确保正确的消息传递。对于Ceph,如果主机相差超过0.05秒,它将抱怨。默认情况下,某些OpenStack服务的计时器低至2秒。由于这些原因,强烈建议您设置某种NTP服务。而ntpd如果NTP服务器在本地部署环境中运行将实现部署更准确的时间,chrony同步通过WAN连接的时候更准确。ntpd由于时间紧迫,建议在运行Ceph时设置为本地同步时间。

添加ntp服务器指向
centos7 系统安装已有chronyd服务
可直接修改配置文件启动服务
cp /etc/chrony.conf/etc/chrony.conf_back vi /etc/chrony.conf #注释掉服务器初始的ntp服务指向,添加国内或自建ntp server server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst server ntp3.aliyun.com iburst systemctl start chronyd && systemctl status chronyd && systemctl enable chornyd chronyc sources -V #查看ntp状态

或者安装ntp服务
yum install ntp ntpdate -y cp /etc/ntp.conf /etc/ntp.conf.backup vi/etc/ntp.conf #注释掉服务器初始的ntp服务指向,添加国内或自建ntp server server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst server ntp3.aliyun.com iburstsystemctl enable ntpd.service && systemctl start ntpd.service && systemctl status ntpd.service ntpq –p#查看ntp状态

3、修改服务器的hostname
echo "monitor" > /etc/hostname hostname monitor hostnamectl set-hostname monitor echo "controller01" > /etc/hostname hostname controller01 hostnamectl set-hostname controller01 echo "computer01" > /etc/hostname hostname computer01 hostnamectl set-hostname computer01

在monitor上编辑/etc/hosts文件
127.0.0.1 localhost ::1localhost localhost.localdomain localhost6 localhost6.localdomain6 172.29.55.229 monitor 172.29.55.231 controller01 172.29.55.232 controller02 172.29.55.233 controller03 172.29.55.234 computer01 172.29.55.235 computer02 172.29.55.236 computer03

4、配置monitor节点可以免密码访问其他节点
ssh-keygen//生成ssh密钥 将密钥copy到controller和computer节点 ssh-copy-id root@monitor ssh-copy-id root@controller01 ssh-copy-id root@controller02 ssh-copy-id root@controller03 ssh-copy-id root@computer01 ssh-copy-id root@computer02

配置后,可以通过命令测试,是否可以免密访问
scp /etc/hosts root@controller01:/etc/hosts//controller01-03 scp /etc/hosts root@computer01:/etc/hosts//computer01-03

5、关闭libvirtd服务 创建的虚机没有libvirtd服务,但是物理机服务器会有,这个必须要关闭
# systemctl stop libvirtd.service && systemctl disable libvirtd.service && systemctl status libvirtd.service

6、关闭防火墙
# systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld

7、disable掉selinux
# sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config

或是直接修改:
# vim /etc/selinux/config 设置SELINUX=disabled,reboot之后生效。 # getenforce//查看selinux当前状态

8、所有节点重启服务器
reboot

三、ceph 存储池配置 1、为存储节点的空白硬盘打ceph标签(本文存储节点,在controller和computer节点上) ceph用户指导Filestore
Filestore 打标格式KOLLA_CEPH_OSD_BOOTSTRAP (queens 默认使用)
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

ceph用户指导Bluestore
Bluestore 打标格式KOLLA_CEPH_OSD_BOOTSTRAP_BS (rocky以上两种格式均可使用,FOO1为编号)
parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_FOO1 1 -1 parted /dev/sdc -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_FOO2 1 -1 parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1

2、为ceph_rgw创建池 Ceph_RGW需要一个健康的集群才能成功部署。在初次启动时,RGW将创建几个池。第一个池应处于运行状态以继续第二个池,依此类推。因此,在进行一体化部署的情况下,必须在部署之前更改池的默认副本数。按照需求,本示例部署选用三个池副本。
本次部署针对monitor机器和所有存储节点,修改/etc/kolla/config/ceph.conf并添加内容:
mkdir -pv /etc/kolla/config/ && vim /etc/kolla/config/ceph.conf [global] osd pool default size = 3 osd pool default min size = 3

四、 安装配置Docker Pip 1、从阿里云下载docker的repo文件:
wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2、安装docker、pip其他依赖
yum -y install docker-ce yum install epel-release yum install python-pip pip install -U pip pip install docker yum install python-devel libffi-devel gcc openssl-devel libselinux-python

3、修改pip 源
mkdir ~/.pip vim ~/.pip/pip.conf [global] trusted-host=mirrors.aliyun.com 阿里源或者豆瓣源 [global] trusted-host = pypi.douban.com index-url = http://pypi.douban.com/simple

4、配置国内镜像:
mkdir -p /etc/docker vim /etc/docker/daemon.json { "registry-mirrors": ["https://7g5a4z30.mirror.aliyuncs.com"] }

5、 配置Docker共享挂载: 如果不设置此项,kolla-ansible 部署neutron-dhcp-agent 容器的时候会失败,并抛APIError/HTTPError
When running with systemd, setup docker-engine with the appropriate information in the Docker daemon to launch with. This means setting up the following information in the docker.service file. If you do not set the MountFlags option correctly then kolla-ansible will fail to deploy the neutron-dhcp-agent container and throws APIError/HTTPError. After adding the drop-in unit file as follows, reload and restart the Docker service:
mkdir -p /etc/systemd/system/docker.service.d vim /etc/systemd/system/docker.service.d/kolla.conf [Service] MountFlags=shared tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF' [Service] MountFlags=shared EOF

6、重启Docker服务并设置开机启动
systemctl daemon-reload && systemctl enable docker && systemctl restart docker && systemctl status docker

7、python导入docker库测试 测试成功正常导入如下
python >>> import docker; >>> exit();

如果出现 import error
查看 pip/docker 版本,更新pip后重新安装docker,若不能解决,根据报错查看解决办法
pip show docker pip --version pip remove docker pip install –U pip pi install docker

注意:
ocata 版本根据官网指南 使用指定docker版本安装docker-py或者python-docker-py
Node The old docker-python is obsoleted by python-docker-py.

yum install python-docker-py Or using pip to install the latest version: pip install -U docker-py

8、添加信任source节点的Registry服务
# vim /usr/lib/systemd/system/docker.service

修改如下:
172.16.50.31:4000 为source主机的docker私有仓库地址和端口号
ExecStart=/usr/bin/dockerd --insecure-registry 172.16.50.31:4000

重启Docker服务:
# systemctl daemon-reload && systemctl restart docker && systemctl status docker

9、测试Registry服务是否正常(这一步为制作本地私有仓库后再测试)
# curl -X GET http://172.16.50.31:4000/v2/_catalog

【openstack|kolla-ansible部署openstack+ceph高可用集群queens版本--- 环境准备及初始化】正常如下返回数据即可:
{"repositories":["kolla/centos-source-aodh-api","kolla/centos-source-aodh-base","kolla/centos-source-aodh-evalua……}

    推荐阅读