前言

openstack 的架构应当按照用户需求进行定制化,所以我仅按照openstack-ansible 的官方网站的架构,提出了自己的理解。

集群部署中最为关键的是集群的网络架构,按照功能可以分为计算网络,存储网络以及管理网络。按照网络协议可以分为RDMA 网络 即 infiband ,ROCE 等,以太网网络及FC 光纤网络等。应当按照用户需求进行取舍。

部署之前

参考官方链接:https://docs.openstack.org/openstack-ansible/latest/

打算部署的是 https://docs.openstack.org/openstack-ansible/victoria/ victoria 版本

在部署之前 需要进行网络规划

  1. 集群用户如何访问虚拟机?

    ​ 当然是通过网络了,通过ssh连进来。

    ​ 那么用户使用的网络会有一个网段,这个网段有多少个空余的ip地址,这个ip 地址池掩码长度是24 位还是22位?mtu是多大呢,默认是1500还是9000。对于10G网络及以上 应当是9000 吧

  2. 虚拟机集群中是否需要路由?

    ​ 集群对用户开放的地址池,每个虚拟机都单独配一个用户可以访问到的ip,地址池不够用怎么办,可能需要路由,那么是否需要虚拟路由。

    ​ 假设需要虚拟路由,那么是否网络节点性能是否满足要求,假如集群虚拟机网络为100G,再使用基于linux bridge 、iptables虚拟路由器,肯定是不合理的。

    进行存储规划

    ​ ceph 存储里对应的存储池 是否创建好了,权限是否设置正确,存储的副本数量设置

    ​ 使用lvm 卷 lvm 没有副本、冗余机制,所在的节点可能还是个计算节点或管理节点,在维护时会很麻烦。

开始准备

准备root免密登录

从部署节点的root 账号免密登录到 集群其他节点 的root账户

具体实现:

  1. 给每个节点的root账户设置密码
  2. 修改每个节点ssh配置:可通过密码登录,可通过root账户登录
  3. 在部署节点上生成密钥对,ssh-copy-id 到集群节点
  4. 查看后端存储系统 ceph的状态,准备好存储池及密钥对
开始部署

参考 https://docs.openstack.org/openstack-ansible/latest/

  1. 准备部署节点

    下载 openstack_ansible 注意选择版本

    git clone -b master https://github.com/openstack/openstack-ansible.git /opt/openstack-ansible
    

Change to the /opt/openstack-ansible directory, and run the Ansible bootstrap script:

# scripts/bootstrap-ansible.sh
  1. 准备 目标节点

    1. 安装系统

      推荐:ubuntu 18.04

    2. 配置免密登录

      1. 部署节点 的root 用户可以ssh 直接访问到集群的其他节点root用户
    3. 配置存储

      ​ 检查后端存储 是否可用

    4. 配置网络

      服务器上的网桥解读:(为什么要配这么多网桥,我想主要作用应该解决不同服务器上网卡名称不同的问题把。)

      br-mgmt :管理网络,所有节点的openstack组件RESTful API 都通过这个网桥进行通信,因此这个网络必不可少

      br-vxlan : vxlan网络,br-vxlan 接口上需要配置ip地址,vxlan网络才能使用,同时需要打开l2population 或者打开交换机的vxlan 多播模式

      br-vlan: vlan 网络 ,假如br-vlan所在交换机 有个vlan29 可以提供用户使用。因此可以在horizon界面上创建vlan29 及虚拟机,这个虚拟机所在物理机上就会出现br-vlan.29。

      br-storage: 存储网络,集群里的存储服务器和其他机器通信用的就是这个网络,具体来讲cinder-volume 服务器和 ceph的 mon节点 通过这个网络连接到了一起

      lxcbr0: lxc 连接这个接口 安装完成后管理节点上所有的lxc容器里的eth0 都会连接 eth0

  2. 开始部署

    一共是 两个配置文件 + 3行命令

    两个yaml文件:

    /etc/openstack_deploy/openstack_user_config.yml

    /etc/openstack_deploy/user_variables.yml

    三个命令:

    openstack-ansible setup-hosts.yml

    openstack-ansible setup-infrastructure.yml

    openstack-ansible setup-openstack.yml