openstack 的架构应当按照用户需求进行定制化,所以我仅按照openstack-ansible 的官方网站的架构,提出了自己的理解。
集群部署中最为关键的是集群的网络架构,按照功能可以分为计算网络,存储网络以及管理网络。按照网络协议可以分为RDMA 网络 即 infiband ,ROCE 等,以太网网络及FC 光纤网络等。应当按照用户需求进行取舍。
部署之前参考官方链接:https://docs.openstack.org/openstack-ansible/latest/
打算部署的是 https://docs.openstack.org/openstack-ansible/victoria/ victoria 版本
在部署之前 需要进行网络规划
-
集群用户如何访问虚拟机?
当然是通过网络了,通过ssh连进来。
那么用户使用的网络会有一个网段,这个网段有多少个空余的ip地址,这个ip 地址池掩码长度是24 位还是22位?mtu是多大呢,默认是1500还是9000。对于10G网络及以上 应当是9000 吧
-
虚拟机集群中是否需要路由?
集群对用户开放的地址池,每个虚拟机都单独配一个用户可以访问到的ip,地址池不够用怎么办,可能需要路由,那么是否需要虚拟路由。
假设需要虚拟路由,那么是否网络节点性能是否满足要求,假如集群虚拟机网络为100G,再使用基于linux bridge 、iptables虚拟路由器,肯定是不合理的。
进行存储规划
ceph 存储里对应的存储池 是否创建好了,权限是否设置正确,存储的副本数量设置
使用lvm 卷 lvm 没有副本、冗余机制,所在的节点可能还是个计算节点或管理节点,在维护时会很麻烦。
准备root免密登录
从部署节点的root 账号免密登录到 集群其他节点 的root账户
具体实现:
- 给每个节点的root账户设置密码
- 修改每个节点ssh配置:可通过密码登录,可通过root账户登录
- 在部署节点上生成密钥对,ssh-copy-id 到集群节点
- 查看后端存储系统 ceph的状态,准备好存储池及密钥对
参考 https://docs.openstack.org/openstack-ansible/latest/
-
准备部署节点
下载 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
-
准备 目标节点
-
安装系统
推荐:ubuntu 18.04
-
配置免密登录
- 部署节点 的root 用户可以ssh 直接访问到集群的其他节点root用户
-
配置存储
检查后端存储 是否可用
-
配置网络
服务器上的网桥解读:(为什么要配这么多网桥,我想主要作用应该解决不同服务器上网卡名称不同的问题把。)
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
-
-
开始部署
一共是 两个配置文件 + 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