Kolla ansible 多节点部署openstack(stable/2023.2)

Kolla ansible 多节点部署openstack(stable/2023.2)

基础环境

主机系统: ubuntu22.04

主机名 内网管理IP 配置 角色
controller01 192.168.100.201 内存:8G
CPU:4C
系统盘: 60G
数据盘:50G
控制节点
controller02 192.168.100.202 内存:8G
CPU:4C
系统盘: 60G
数据盘: 50G
控制节点
controller03 192.168.100.203 内存:8G
CPU:4C
系统盘: 60G
数据盘: 50G
控制节点
compute01 192.168.100.204 内存:8G
CPU:4C
系统盘: 60G
计算节点
compute02 192.168.100.205 内存:8G
CPU:4C
系统盘: 60G
计算节点
network01 192.168.100.206 内存:4G
CPU:4C
系统盘: 60G
网络节点
network02 192.168.100.207 内存:4G
CPU:4C
系统盘: 60G
网络节点
/ 192.168.100.208 / VIP

主机名配置

hostnamectl hostname controller01
hostnamectl hostname controller02
hostnamectl hostname controller03
hostnamectl hostname compute01
hostnamectl hostname compute01
hostnamectl hostname network01
hostnamectl hostname network02

cat /etc/hosts(每个节点都得设置)

192.168.100.201 controller01 
192.168.100.202 controller02
192.168.100.203 controller03
192.168.100.204 compute01  
192.168.100.205 compute02  
192.168.100.206 network01
192.168.100.207 network02
192.168.100.208 cloud.xxyy.com 
#192.168.100.164 harbor.xxyy.com 这个是我的私有docker镜像仓库 无需添加

APT安装依赖(每个节点)

sudo apt update
sudo apt install git python3-dev libffi-dev gcc libssl-dev python3-venv libglib2.0-dev libdbus-1-dev 

Docker 安装(每个节点)

# 安装必要的软件包以支持 HTTPS 传输、CA 证书、curl、gnupg-agent 和 software-properties-common
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

# 下载 Docker 的 GPG 密钥并保存到 /etc/apt/keyrings/docker.asc
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

# 添加 Docker APT 仓库,使用 USTC 镜像源,并配置密钥
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 更新 APT 包索引以包含新添加的 Docker 仓库
sudo apt-get update

# 安装特定版本的 Docker CE、Docker CLI 和 containerd.io
sudo apt-get install docker-ce=5:24.0.9-1~ubuntu.22.04~jammy docker-ce-cli=5:24.0.9-1~ubuntu.22.04~jammy containerd.io

chrony时间同步(每个节点指向控制节点01NTP,每个节点都这样做)

(kolla) root@controller01:~# cat /etc/chrony/chrony.conf
server 192.168.100.201 iburst
allow all
local stratum 10
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
logdir /var/log/chrony
maxupdateskew 100.0
rtcsync
makestep 1 3

创建虚拟环境(controller节点安装)

python3 -m venv kolla
source kolla/bin/activate

PIP源以及安装docker python 库更新(每台节点安装)

pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
pip install -U pip
pip install docker 

安装 Kolla-ansible(controller01节点安装)

# 安装 kolla-ansible 包
pip install kolla-ansible

# 从指定的 Git 仓库安装 kolla-ansible 的稳定分支
pip install git+https://opendev.org/openstack/kolla-ansible@stable/2023.2

# 创建 /etc/kolla 目录(如果不存在)
sudo mkdir -p /etc/kolla

# 更改 /etc/kolla 目录的所有者为当前用户
sudo chown $USER:$USER /etc/kolla

# 复制 kolla-ansible 的示例配置文件到 /etc/kolla 目录
cp -r /root/kolla/share/kolla-ansible/etc_examples/kolla/* /etc/kolla

# 复制 kolla-ansible 的 multinode 库存文件到当前目录
cp /root/kolla/share/kolla-ansible/ansible/inventory/multinode ./

# 安装特定版本的 ansible-core
pip install 'ansible-core==2.14.15'

# 安装 kolla-ansible 所需的依赖项
kolla-ansible install-deps

# 生成 kolla 的密码文件
kolla-genpwd

数据盘LVM后端存储(3台controller节点安装)

分别在controller01,controller02,controller03执行,这里我的挂的数据盘是sdb。

pvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb

multinode配置(controller01节点配置)

[control]
controller01
controller02
controller03
 
[network]
network01
network02
 
[compute]
compute01
compute02
 
[monitoring]
controller01
 
[storage]
controller01
controller02
controller03

globals.yml配置

vim /etc/kolla/globals.yml

kolla_base_distro: "ubuntu"
openstack_release: "2023.2"
kolla_internal_vip_address: "192.168.100.208"
kolla_internal_fqdn: "cloud.xxyy.com"
kolla_external_fqdn: "cloud.xxyy.com"
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"
enable_skyline: "yes"
network_interface: "ens32"
neutron_external_interface: "ens33"
#如果是用VMware虚拟化的话需要用qemu
nova_compute_virt_type: "qemu"

通过 kolla-ansible 部署 openstack

# 拉取所有在配置文件中定义的 Docker 镜像
kolla-ansible pull -i ./multinode

# 引导目标主机,准备它们以运行 Kolla 容器
kolla-ansible bootstrap-servers -i ./multinode

# 运行一系列预检查任务,确保系统满足部署 OpenStack 的要求
kolla-ansible prechecks -i ./multinode

# 部署 OpenStack 到指定的目标主机
kolla-ansible deploy -i ./multinode

部署完后可以输入你的VIP加默认端口9999进入skyline面板

image-xdst.png

后续添加compute计算节点

# 准备compute03服务器,安装必要软件包并配置操作系统和Docker
kolla-ansible -i multinode bootstrap-servers --limit compute03  

# 拉取构建OpenStack服务所需的Docker镜像到compute03服务器
kolla-ansible -i multinode pull --limit compute03

# 在compute03节点上部署OpenStack服务,启动并配置容器以运行OpenStack组件
kolla-ansible -i multinode deploy --limit compute03

安装OpenStack命令行客户端:

# 安装python-openstackclient,并指定约束文件以匹配特定版本的OpenStack组件
pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/2023.2

# 运行kolla-ansible的post-deploy命令来完成OpenStack集群的后期部署任务
kolla-ansible post-deploy

# 将生成的admin用户凭据脚本复制到/root目录下,以便于管理
cp /etc/kolla/admin-openrc.sh /root/admin-openrc
Comment