离线部署openstack 2024.1需求说明、初始化及实例创建过程分析

背景

在ubuntu22.04离线部署openstack 2024.1集群,外置存储为ceph reef,提供:
1、计算虚拟化;
2、网络虚拟化,支持协议flat、vlan、vxlan;
3、存储对接ceph;
4、web UI;
5、management网络为bond0,对应vlan10;
6、self-service网络为bond0,对应vlan15;
7、external网络对应bond1,对应vlan20、21;
8、部署Masakari,实现高可用性;
9、使用apt-get --downloadonly保存主包、依赖包;
10、其他功能暂不需要。
其中:
a.后端分布式存储的cluster网络为bond3,无vlan;
b.后端分布式存储的public网络为bond2,无vlan;

拓扑

  • Controller节点:管理所有控制面服务,同时参与管理、租户、外部网络、Ceph客户端。
  • Compute节点:承担虚拟机运行,同时参与管理、租户,并作为Ceph客户端。
  • Ceph存储节点:主要用于存储服务,必须有存储-公有、存储-集群网络,管理网络可选用于监控和运维。
网络 名称 物理接口 VLAN 用途 涉及节点角色
management网络 management bond0 10 OpenStack管理、API、集群心跳、服务通信 Controller、Compute
tenants网络 self-service bond0 15 租户自服务网络,VXLAN/flat/VLAN类型 Controller、Compute
external网络 external bond1 20/21 负载均衡、浮动IP、外网访问 Controller
public网络 ceph public network bond2 Ceph客户端与OSD通信 mon节点、OSD节点、Controller、Compute
cluster网络 ceph cluster network bond3 Ceph OSD间复制、心跳 OSD节点

  • apt源:https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11EYDm0J

  • openstack 2024.1源:

add-apt-repository cloud-archive:caracal
  • ceph reef源
curl --silent --remote-name --location https://download.ceph.com/rpm-squid/el9/noarch/cephadm
chmod +x cephadm

./cephadm add-repo --release reef

控制节点1初始化

  • 时间服务器
vim /etc/chrony.conf

server controller1 iburst
allow <management_network>
local stratum 10

所有节点初始化

  • 常用软件
apt-get install --download-only chrony net-tools lrzsz wget curl python3-pip bridge-utils ifenslave vlan gnupg apt-transport-https

mkdir /base
mv /var/cache/apt/archives/*.deb /base/
dpkg -i /base/*.deb
  • 基础配置
# 防火墙
systemctl stop ufw
systemctl disable ufw

# 主机名
hostnamectl set-hostname controller1

vim /etc/hosts

ip1 controller1
ip2 controller2
ip3 controller3

ip11 compute1
ip12 compute2
ip13 compute3

ip21 mon1
ip22 mon2
ip23 mon3

ip31 stor1
ip32 stor2
ip33 stor3

# 时间同步
vim /etc/chrony.conf
server controller1 iburst

systemctl enable chronyd --now
  • 作为ceph客户端:
  • 将配置文件:/etc/ceph/ceph.conf,对应用户的密钥环:ceph.client..keyring,拷贝到对应节点
  • 安装ceph-common

控制节点初始化

  • bond0 (VLAN 10/15):Management & Self-service 网络
  • bond1 (VLAN 20/21):External网络
  • bond2:Ceph Public网络
vim /etc/netplan/05-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets: {}
  bonds:
    bond0:
      interfaces: [enp0, enp2]
      parameters:
        mode: active-backup
        mii-monitor-interval: 100
    bond1:
      interfaces: [enp1, enp3]
      parameters:
        mode: active-backup
        mii-monitor-interval: 100
    bond2:
      interfaces: [enp4, enp6]
      parameters:
        mode: active-backup
        mii-monitor-interval: 100
      addresses: [ip2/mask]
      gateway4: gw2

  vlans:
    bond0.10:
      id: 10
      link: bond0
      addresses: [ip1/mask]
      gateway4: gw1
    bond0.15:
      id: 15
      link: bond0
    bond1.20:
      id: 20
      link: bond1
    bond1.21:
      id: 21
      link: bond1

计算节点初始化

  • bond0 (VLAN 10/15):Management & Self-service 网络
  • bond2:Ceph Public网络
vim /etc/netplan/05-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets: {}
  bonds:
    bond0:
      interfaces: [enp0, enp2]
      parameters:
        mode: active-backup
        mii-monitor-interval: 100
    bond2:
      interfaces: [enp1, enp3]
      parameters:
        mode: active-backup
        mii-monitor-interval: 100
      addresses: [ip2/mask]
      gateway4: gw2

  vlans:
    bond0.10:
      id: 10
      link: bond0
      addresses: [ip1/mask]
      gateway4: gw1
    bond0.15:
      id: 15
      link: bond0

mon节点初始化

  • bond2:Ceph Public网络
vim /etc/netplan/05-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets: {}
  bonds:
    bond2:
      interfaces: [enp0, enp2]
      parameters:
        mode: active-backup
        mii-monitor-interval: 100
      addresses: [ip2/mask]
      gateway4: gw2

osd节点初始化

  • bond2:Ceph Public网络
  • bond3:Ceph Cluster网络
vim /etc/netplan/05-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets: {}
  bonds:
    bond2:
      interfaces: [enp0, enp2]
      parameters:
        mode: active-backup
        mii-monitor-interval: 100
      addresses: [ip2/mask]
      gateway4: gw2
    bond3:
      interfaces: [enp1, enp3]
      parameters:
        mode: active-backup
        mii-monitor-interval: 100
      addresses: [ip3/mask]

实例创建过程分析

离线部署openstack 2024.1需求说明、初始化及实例创建过程分析_第1张图片

用户验证

1、某用户以登录web界面或执行rc文件的方式,通过RESTful API向keystone获取credentials;
2、keystone进行authentication,若正确则生成并返回auth-token;
3、以携带auth-token的形式,在web界面或命令行cli,通过RESTful API向nova-api发送一个启动实例的请求;
4、nova-api向keystone发送认证请求,验证token是否有效;
5、若有效则返回对应的role、credentials ;

资源查询

6、通过认证后,nova-api验证参数是否正确,再与db通信;
7、记录新建虚拟机的数据;
8、 nova-api通过同步执行远程方法rpc.call向nova-scheduler请求是否有资源
9、nova-scheduler持续侦听mq,获取nova-api的请求;
10、nova-scheduler查询db中计算资源的情况,通过调度算法计算符合需求的主机;
11、nova-schduler更新db中待创建vm的宿主机信息;
12、nova-scheduler通过异步执行远程方法rpc.cast向nova-compute发送创建vm请求;

资源组合

13、nova-compute从mq获取到创建vm的请求消息;
14、nova-compute通过rpc.call向nova-conductor获取规格flavor;
15、nova-conductor从mq获取到nova-compute的请求;
16-17、nova-conductor从db种查询对应vm的信息;
18、nova-conductor把vm信息发送到mq;
19、nova-compute从mq中获取vm信息;
20、nova-compute携带从keystone获取的token,向glance-api发送http请求,获取镜像;
21、glance-api向keystone验证token是否有效,并返回验证结果;
22、若token验证通过,nova-compute获得相应镜像的URL;
23、nova-compute携带从keystone获取的token ,向neutron-server发送http请求,获取网络;
24、neutron-server向keystone验证token是否有效,并返回验证结果;
25、若token验证通过,nova-compute获得相应的网络信息;
26、nova-compute携带从keystone获取的token ,向cinder-api发送http请求,获取块存储;
27、cinder-api向keystone认证token是否有效,并返回验证结果;
28、若token验证通过,nova-compute获得相应的块存储信息;

实例创建

29、nova-compute根据虚拟机信息生成配置文件libvirt.xml文件,调用libvirt driver创建vm;

你可能感兴趣的:(openstack,openstack)