基于 CentOS 8 手工部署 OpenStack Victoria 版本(一)-- 基础环境配置

一、前言

1.1 约定

  1. 本文档中所指的”主机“为在 VMware Workstation 中创建的虚拟机
  2. 本文档中所指的”宿主机“为笔者的计算机,即安装 VMware Workstation 软件的计算机
  3. 宿主机及软件包相关参数:
    • OpenStack 版本:Victoria
    • 主机操作系统:CentOS Linux release 8.3.2011
    • VMware Workstation:16.1.1 build-17801498
    • 宿主机操作系统:Windows 10 Feature Experience Pack 321.13101.0.3(Windows 10 专业工作站 21H2 体验版 )
  4. 命令约定:
    • $ 提示符为前缀的代表执行该命令的用户为普通用户

      $ command
    • # 提示符为前缀的代表执行该命令的用户为 root 用户

      # command
  5. 其他通配符约定:
    • { } (大括号)括起来的参数,代表可变参数,需要将包括大括号和大括号内的内容替换为实际部署当中的参数

      # ping {域名}
  6. 安装过程中的无用输出信息会直接忽略,不在文档当中体现

二、前置准备

2.1 前期准备

  1. 安装文档(官方):
  2. 软硬件:
    • 一台内存不低于 16 GB,存储不低于 120 GB,CPU 需要支持硬件辅助虚拟化,能够正常访问互联网的计算机
    • VMware Workstation、Xshell 或者 SecureCRT 等远程终端连接软件、记事本或其他文本编辑器(用来记录安装过程中的一些参数和小插曲)

2.2 节点规划

  1. 这几类节点是从功能上进行的逻辑划分,在实际部署时可以根据需求进行灵活配置,本文档使用两个主机进行部署
    • OpenStack-controller:控制节点+网络节点+存储节点+计算节点
    • OpenStack-compute:计算节点

image-20210127203914892

2.3 组网规划

网络拓扑

image-20210128104100491

  1. 各网络作用:
    • Management Network:用于 OpenStack 内部管理,比如各个服务之间通信(管理网络)
    • VM(Tenant) Network:OpenStack 部署的虚拟机所使用的网络(租户网络)
    • External Network:外部网络,Neutron 通过 L3 服务让 VM 能够访问到 External Network(外部网络)

地址规划

  1. Management Network(管理网络):
    • 网关:192.168.10.1
    • 物理节点:192.168.10.11-192.168.10.99
  2. VM(Tenant) Network(租户网络):
    • 网关:10.0.0.1
    • 可用地址:10.0.0.0/8
  3. External Network(外部网络):
    • 根据具体情况而定

2.4 资源规划

  1. 资源配置参考如图,可根据宿主机的实际情况进行调整

image-20210128102850441

三、基础环境配置

3.1 虚拟网络配置

  • 在 VMware Workstation 上创建三个网络:VMnet0、VMnet1、VMnet8

image-20210128110553144

  • VMnet0:作为 External Network
  • VMnet1:作为 VM(Tenant) Network
  • VMnet8:作为 Management Network

3.2 虚拟机配置

  • 配置一台标准的虚拟机,完成通用配置之后,再通过虚拟机克隆的方式克隆出两台虚拟机作为控制节点和计算节点
    虚拟机处理器需要勾选:虚拟化 Intel VT-x/EPT 或 AMD-V/RVI

image-20210524174350615

3.3 主机操作系统安装

  • 此处省略 CentOS 8 的安装,CentOS 8 应该使用 “Minimal Install - Standard” 安装,其他的保持默认即可

image-20210524175131218

3.4 关闭防火墙和 SELinux

  1. 关闭防火墙并禁止开机自启

    [root@localhost ~]# systemctl stop firewalld.service 
    [root@localhost ~]# systemctl disable firewalld.service
  2. 临时关闭 SELinux

    [root@localhost ~]# setenforce 0
  3. 永久关闭 SELinux,编辑配置文件 vim /etc/selinux/config ,将 SELINUX 选项配置为 disabled
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=disabled
    # SELINUXTYPE= can take one of these three values:
    #     targeted - Targeted processes are protected,
    #     minimum - Modification of targeted policy. Only selected processes are protected. 
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted

3.5 克隆虚拟机

使用 VMware Workstation 软件的克隆功能,克隆出两台虚拟机,一台做为控制节点,一台作为计算节点(此处省略操作步骤)

四、主机网络设置

4.1 控制节点

配置网络接口

NIC 指代网卡, NIC 1 为第一张网卡,依次类推

NIC 1(管理网络)
  1. 编辑网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens32
    [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
  2. 配置好 IP 地址、子网掩码、网关和 DNS

    TYPE=Ethernet
    BOOTPROTO=static
    NAME=ens33
    DEVICE=ens32
    ONBOOT=yes
    IPADDR=192.168.10.11 
    PREFIX=24 
    GATEWAY=192.168.10.1
    DNS1=114.114.114.114
  3. 重启网卡,使网络生效

    [root@localhost ~]# nmcli connection reload ens32
    [root@localhost ~]# nmcli connection up ens32
NIC 2(租户网络)
  1. 编辑网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33
    [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
  2. 配置对应的 IP 地址和子网掩码

    TYPE=Ethernet
    BOOTPROTO=static
    NAME=ens33
    DEVICE=ens33
    ONBOOT=yes
    IPADDR=10.0.0.1     
    PREFIX=8
  3. 重启网卡,使网络生效

    [root@localhost ~]# nmcli connection reload ens33
    [root@localhost ~]# nmcli connection up ens33
NIC 3(外部网络)

此处暂不作配置,等配置 Neutron 组件时再来设置该网卡

配置名称解析

  1. 将节点的主机名设置为 controller
    [root@localhost ~]# hostnamectl set-hostname controller
  2. 编辑 vim /etc/hosts 文件,在文件内写入如下配置

    # controller
    192.168.10.11   controller
    
    # compute
    192.168.10.12   compute

     

4.2 计算节点

如果有多个计算节点,IP 地址和主机名按照规划的进行数字递增,如:compute01、compute02、……

配置网络接口

NIC 1(管理网络)
  1. 编辑网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens32
    [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
  2. 配置好 IP 地址、子网掩码、网关和 DNS

    TYPE=Ethernet
    BOOTPROTO=static
    NAME=ens32
    DEVICE=ens32
    ONBOOT=yes
    IPADDR=192.168.10.12 
    PREFIX=24 
    GATEWAY=192.168.10.1
    DNS1=114.114.114.114
  3. 重启网卡,使网络生效

    [root@localhost ~]# nmcli connection reload ens32
    [root@localhost ~]# nmcli connection up ens32
NIC 2(租户网络)
  1. 编辑网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33
    [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
  2. 配置对应的 IP 地址和子网掩码

    TYPE=Ethernet
    BOOTPROTO=static
    NAME=ens33
    DEVICE=ens33
    ONBOOT=yes
    IPADDR=10.0.0.2     
    PREFIX=8
  3. 重启网卡,使网络生效

    [root@localhost ~]# nmcli connection reload ens33
    [root@localhost ~]# nmcli connection up ens33
NIC 3(外部网络)
  1. 计算节点不需要配置外部网络,将该网卡关闭,编辑配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33
    [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens34
  2. ONBOOT 参数值设置为 no
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=ens34
    DEVICE=ens34
    ONBOOT=no
  3. 重启网卡,使网络生效

    [root@localhost ~]# nmcli connection reload ens34
    [root@localhost ~]# nmcli connection up ens34

配置名称解析

  1. 将节点的主机名设置为 compute
    [root@localhost ~]# hostnamectl set-hostname compute
  2. 编辑 vim /etc/hosts 文件,在文件内写入如下配置

    # controller
    192.168.10.10   controller
    
    # compute
    192.168.10.11   compute

4.3 验证

  1. 分别在计算节点和控制节点使用 ping 命令测试网络连通性

    [root@localhost ~]# ping -c 4 docs.openstack.org
    PING static01.opendev.org (23.253.245.150) 56(84) bytes of data.
    64 bytes from 23.253.245.150 (23.253.245.150): icmp_seq=1 ttl=128 time=577 ms
    64 bytes from 23.253.245.150 (23.253.245.150): icmp_seq=2 ttl=128 time=533 ms
    64 bytes from 23.253.245.150 (23.253.245.150): icmp_seq=3 ttl=128 time=289 ms
    64 bytes from 23.253.245.150 (23.253.245.150): icmp_seq=4 ttl=128 time=284 ms
    
    --- static01.opendev.org ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 649ms
    rtt min/avg/max/mdev = 284.342/420.899/577.186/135.304 ms

五、软件源配置

所有节点都需要进行软件源的配置

5.1 配置 CentOS 8 源

此处使用的 CentOS 源由华为云镜像站提供
  1. 备份配置文件

    [root@localhost ~]# cp -a /etc/yum.repos.d/CentOS-Linux-BaseOS.repo{,.bak}
  2. 下载新的 CentOS-Linux-BaseOS.repo 文件

    [root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Linux-BaseOS.repo https://repo.huaweicloud.com/repository/conf/CentOS-8-reg.repo
  3. 清除原有的 yum 缓存

    [root@localhost ~]# yum clean all
  4. 更新缓存

    [root@localhost ~]# yum makecache

5.2 启用 OpenStack 存储库

  1. 在 CentoOS 上,OpenStack 的 RPM 安装包由 extras 存储库提供,CentOS 默认包含该存储库,只需要安装该软件包即可启用 OpenStack 的存储库

    [root@localhost ~]# yum install centos-release-openstack-victoria -y
  2. CentOS 8 还需要额外启用 PowerTools 存储库

    [root@localhost ~]# yum config-manager --set-enabled powertools
  3. 升级软件和系统

    [root@localhost ~]# yum update -y
    [root@localhost ~]# yum upgrade

六、时间同步 NTP 配置

控制节点作为 NTP 服务器,其他的节点作为客户端,向控制节点同步时间

6.1 控制节点

  1. 安装软件包

    [root@controller ~]# yum install chrony -y
  2. 编辑配置文件 vim /etc/chrony.cong ,将原有的 pool 注释掉,新增一行如下,这里配置向阿里云 NTP 服务器同步时间

    # pool 2.centos.pool.ntp.org iburst
    server ntp.aliyun.com iburst
  3. 为了让其他节点可以访问到控制节点同步时间,还需要在配置文件中配置允许访问 NTP 服务器的网段,这里配置的网段为管理网段

     allow 192.168.10.0/24
  4. 设置时区,将时区设置为 Asia/Shanghai
    [root@controller ~]# timedatectl set-timezone Asia/Shanghai
  5. 重启 chrony 服务,并设置为开机自启

    [root@controller ~]# systemctl restart chronyd
    [root@controller ~]# systemctl enable chronyd

6.2 其他节点

  1. 安装软件包

    [root@compute ~]# yum install chrony -y
  2. 编辑配置文件 vim /etc/chrony.cong ,将原有的 pool 注释掉,新增一行如下,这里配置向控制节点同步时间

    # pool 2.centos.pool.ntp.org iburst
    server controller iburst
  3. 重启 chrony 服务,并设置为开机自启

    [root@controller ~]# systemctl restart chronyd
    [root@controller ~]# systemctl enable chronyd

6.3 验证

  1. 执行以下命令查看控制节点和其他节点的时间和当前的时间是否同步
    1. 控制节点

      [root@controller ~]# date
      Thu May 27 16:19:12 CST 2021
    2. 计算节点

      [root@compute ~]# date
      Thu May 27 16:19:12 CST 2021
  2. 执行以下命令,查看 chrony 是否正常工作
    1. 控制节点

      [root@controller ~]# chronyc sources
      210 Number of sources = 1
      MS Name/IP address         Stratum Poll Reach LastRx Last sample               
      ===============================================================================
      ^* 203.107.6.88                  2   8   377    18   +670us[ +855us] +/-   33ms
    2. 计算节点

      [root@compute ~]# chronyc sources
      210 Number of sources = 1
      MS Name/IP address         Stratum Poll Reach LastRx Last sample               
      ===============================================================================
      ^* controller                    3   6   377    29   -747us[ -765us] +/-   32ms

THE END