在CentOS 8上安装和配置OpenStack Ussuri

这是续集。
您可以通过以下链接以PDF格式下载本文,以为我们提供支持。

以PDF格式下载指南


这是续集。

这是续集。
这是续集。

你好!今天的指南描述了如何在CentOS 8 Linux服务器上安装和配置OpenStack Ussuri。本指南不适用于在CentOS 8服务器上安装高可用性的Production OpenStack Cloud,但适用于POC和家庭实验室。 OpenStack是一个免费的开源软件平台,旨在帮助用户构建私有云环境和为其客户提供云服务。本指南涵盖的主要OpenStack组件包括:

  • 煤壳 –块存储服务
  • 中子 –网​​络服务
  • 新星 –计算
  • –对象存储服务
  • 梯形失真 –身份服务
  • –编排服务
  • 扫视 –图片服务
  • 地平线 -仪表板

如前所述,此安装是在具有以下硬件规格的单个物理服务器上完成的:

Memory: 128GB RAM
CPU: Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz (12 cores)
Disk: 3 x 4TB SATA
Network: 1Gbit
IPV4 Adresses: 1 x IPV4 + /28 Subnet (14 IPs)


------------------------------------------------------------
$ grep -c ^processor /proc/cpuinfo 
12

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           125G        207M        125G         21M        244M        124G
Swap:            0B          0B          0B

$ lsblk 
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0   7:0    0    3G  1 loop 
sda     8:0    0  3.7T  0 disk 
sdb     8:16   0  3.7T  0 disk 
sdc     8:32   0  3.7T  0 disk 
sdd     8:32   0  3.7T  0 disk 

这并不意味着硬件要求必须符合以上要求,才能使我们对正在研究的内容有所了解。

第1步:预设置要求

由于CentOS 8上的OpenStack安装使用PackStack,因此必须禁用某些服务(例如firewalld和NetworkManager)才能成功安装。在禁用NetworkManager服务之前,请安装network-scripts程序包。它提供了CentOS 8系统用来管理网络的网络服务。

sudo dnf install -y network-scripts
sudo systemctl disable --now firewalld NetworkManager
sudo systemctl enable network && sudo systemctl start network

禁用弃用警告。

sudo touch /etc/sysconfig/disable-deprecation-warnings

检查网络服务的状态。

$ systemctl status network
● network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; generated)
   Active: active (exited) since Fri 2020-07-03 17:36:41 CEST; 11s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 14766 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS)

Jul 03 17:36:40 osp.computingforgeeks.com systemd[1]: Starting LSB: Bring up/down networking...Jul 03 17:36:40 osp.computingforgeeks.com network[14766]: WARN      : [network] You are using 'network' service provided by 'network-scripts', which are now de>
Jul 03 17:36:40 osp.computingforgeeks.com network[14766]: WARN      : [network] 'network-scripts' will be removed in one of the next major releases of RHEL.Jul 03 17:36:40 osp.computingforgeeks.com network[14766]: WARN      : [network] It is advised to switch to 'NetworkManager' instead for network management.
Jul 03 17:36:41 osp.computingforgeeks.com network[14766]: Bringing up loopback interface:  [  OK  ]
Jul 03 17:36:41 osp.computingforgeeks.com network[14766]: Bringing up interface enp5s0:  ERROR     : [ipv6_set_default_route] Given IPv6 default gateway 'fe80:>
Jul 03 17:36:41 osp.computingforgeeks.com network[14766]: [  OK  ]
Jul 03 17:36:41 osp.computingforgeeks.com systemd[1]: Started LSB: Bring up/down networking.

确保DNS正常运行。

$ ping -c 2 google.com
PING google.com(arn09s11-in-x0e.1e100.net (2a00:1450:400f:807::200e)) 56 data bytes
64 bytes from arn09s11-in-x0e.1e100.net (2a00:1450:400f:807::200e): icmp_seq=1 ttl=120 time=7.27 ms64 bytes from arn09s11-in-x0e.1e100.net (2a00:1450:400f:807::200e): icmp_seq=2 ttl=120 time=7.34 ms

--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 3ms
rtt min/avg/max/mdev = 7.269/7.306/7.343/0.037 ms

另外,禁用SELinux以避免麻烦排除故障。

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

设置服务器的主机名。

sudo hostnamectl set-hostname openstackcloud.example.com --static

确保本地名称解析正常。

$ sudo vim /etc/hosts
192.168.21.20 openstackcloud.example.com

最后,更新系统并安装基本实用程序。

sudo dnf -y install vim wget curl telnet bash-completion network-scripts dnf-utils

步骤2:安装PackStack软件包

将OpenStack Ussuri版本存储库添加到您的CentOS 8计算机。如果在新发行的OpenStack中使用本文,请用发行名称替换stein。

sudo dnf config-manager --enable PowerTools
sudo dnf install -y centos-release-openstack-ussuri
sudo dnf -y update

添加存储库后,为CentOS安装packstack软件包。

sudo dnf install -y openstack-packstack

启用高级Virt模块。

sudo dnf -y module enable virt

更新系统:

sudo dnf update -y
sudo systemctl reboot

步骤3:使用packstack在CentOS 8上部署OpenStack

有两种使用packstack在CentOS 8上部署OpenStack的方法。

方法1:简单的单节点OpenStack部署-默认值(仅简单POC)

对于单节点OpenStack部署,请运行以下命令:

sudo packstack --allinone

要禁用演示设置:

sudo packstack --allinone --provision-demo=n

方法2:定制的单节点安装

您需要生成一个配置文件,该文件将用于通过PackStack安装OpenStack Cloud。该文件包含诸如要安装的服务,存储配置和网络之类的信息。

sudo packstack 
  --keystone-admin-passwd='MySr0ngAdminPassw0rd' 
  --cinder-volumes-create=n 
  --provision-demo=n 
  --os-heat-install=y 
  --os-ceilometer-install=y 
  --os-horizon-ssl=n 
  --os-neutron-ml2-mechanism-drivers=openvswitch 
  --os-neutron-ml2-tenant-network-types=vxlan 
  --os-neutron-ml2-type-drivers=vxlan,flat,vlan 
  --os-neutron-l2-agent=openvswitch 
  --nova-libvirt-virt-type=kvm 
  --os-swift-storages=/dev/sdc 
  --os-swift-storage-fstype=xfs 
  --gen-answer-file /root/packstack-answers.txt

哪里:

  • / dev / sdc Swift对象存储使用的原始定义。它也可以是/ dev / sdc1之类的分区。如果没有原始磁盘,则可以删除该行并指定回送设备的大小。 –os-swift-storage-size =20GB
  • MySr0ngAdminPassw0rd 管理员用户的密码。

检查生成的文件以确保正确的值适合您的部署。

sudo vi /root/packstack-answers.txt

准备煤渣量

将LVM分区用于您创建的Cinder逻辑卷(cinder-volume)。

为此,我有 / dev / sdd / dev / sde 在我的服务器上。从两个磁盘创建RAID 0设备。

$ sudo  mdadm --create --verbose /dev/md2 --level=0 --raid-devices=2 /dev/sdd /dev/sde
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.

接下来,创建一个Cinder物理卷,卷组和精简池。

$ sudo pvcreate /dev/md2
Physical volume "/dev/md2" successfully created.

$ sudo vgcreate cinder-volumes /dev/md2
Volume group "cinder-volumes" successfully created

$ sudo lvcreate -l 100%FREE -T cinder-volumes/cinder-volumes-pool
Logical volume "cinder-volumes-pool" created.

清洁LVM和RAID设备

如果要再次执行此操作,请使用以下命令来清洁LVM和RAID设备。

# ONLY RUN IF YOU WANT TO DESTROY LOGICAL VOLUME AND RAID DEVICES
sudo vgremove cinder-volumes
sudo mdadm --stop /dev/md2
sudo mdadm --zero-superblock /dev/sdd
sudo mdadm --zero-superblock /dev/sdbe

这可以通过不带RAID设备的标准分区来完成。请参见下面的示例。

$ sudo pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created. 

$ sudo vgcreate cinder-volumes /dev/sdd1
Volume group "cinder-volumes" successfully created

$ sudo lvcreate -l 100%FREE -T cinder-volumes/cinder-volumes-pool
  Logical volume "cinder-volumes-pool" created.

如果没有原始设备或可用分区,则也可以使用回送设备。 –Cinder-volumes-create = y 生成answer.txt文件或添加行 CINDER_VOLUMES_CREATE = y 直接到文件。

使用PackStack安装CentStack 8和OpenStack

现在您可以使用响应文件了,您可以使用packstack命令行来引导OpenStack云。

sudo packstack --answer-file /root/packstack-answers.txt --timeout=1500 | tee packstrack-output.txt

请参阅下面的安装输出。

......
Installing:
Clean Up                                             [ DONE ]
Discovering ip protocol version                      [ DONE ]
Setting up ssh keys                                  [ DONE ]
Preparing servers                                    [ DONE ]
Pre installing Puppet and discovering hosts' details [ DONE ]
Preparing pre-install entries                        [ DONE ]
Setting up CACERT                                    [ DONE ]
Preparing AMQP entries                               [ DONE ]
Preparing MariaDB entries                            [ DONE ]
Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]
Preparing Keystone entries                           [ DONE ]
Preparing Glance entries                             [ DONE ]
Checking if the Cinder server has a cinder-volumes vg[ DONE ]
Preparing Cinder entries                             [ DONE ]
Preparing Nova API entries                           [ DONE ]
Creating ssh keys for Nova migration                 [ DONE ]
Gathering ssh host keys for Nova migration           [ DONE ]
Preparing Nova Compute entries                       [ DONE ]
Preparing Nova Scheduler entries                     [ DONE ]
Preparing Nova VNC Proxy entries                     [ DONE ]
Preparing OpenStack Network-related Nova entries     [ DONE ]
Preparing Nova Common entries                        [ DONE ]
Preparing Neutron API entries                        [ DONE ]
Preparing Neutron L3 entries                         [ DONE ]
Preparing Neutron L2 Agent entries                   [ DONE ]
Preparing Neutron DHCP Agent entries                 [ DONE ]
Preparing Neutron Metering Agent entries             [ DONE ]
Checking if NetworkManager is enabled and running    [ DONE ]
Preparing OpenStack Client entries                   [ DONE ]
Preparing Horizon entries                            [ DONE ]
Preparing Swift builder entries                      [ DONE ]
Preparing Swift proxy entries                        [ DONE ]
Preparing Swift storage entries                      [ DONE ]
Preparing Gnocchi entries                            [ DONE ]
Preparing Redis entries                              [ DONE ]
Preparing Ceilometer entries                         [ DONE ]
Preparing Aodh entries                               [ DONE ]
Preparing Puppet manifests                           [ DONE ]
Copying Puppet modules and manifests                 [ DONE ]
Testing if puppet apply is finished: 10.10.20.10_controller.pp  [  ]
10.10.20.10_controller.pp:                           [ DONE ]           
Applying  10.10.20.10_network.pp
10.10.20.10_network.pp:                              [ DONE ]        
Applying  10.10.20.10_compute.pp
10.10.20.10_compute.pp:                              [ DONE ]        
Applying Puppet manifests                            [ DONE ]
Finalizing                                           [ DONE ]

 **** Installation completed successfully ******

成功安装后,将显示仪表板登录URL。

步骤4:配置OpenStack网络

安装程序将自动创建一个OVS桥,您可以使用以下命令进行检查:

$ sudo ovs-vsctl show
9ed1d854-1950-4ea3-99b5-1e5be0f0f230
    Manager "ptcp:6640:127.0.0.1"
        is_connected: true
    Bridge br-ex
        Port "patch-provnet-f62aa13c-c6e5-41a2-bd30-9760f2773e07-to-br-int"
            Interface "patch-provnet-f62aa13c-c6e5-41a2-bd30-9760f2773e07-to-br-int"
                type: patch
                options: {peer="patch-br-int-to-provnet-f62aa13c-c6e5-41a2-bd30-9760f2773e07"}
        Port br-ex
            Interface br-ex
                type: internal
    Bridge br-int
        fail_mode: secure
        Port br-int
            Interface br-int
                type: internal
        Port "patch-br-int-to-provnet-f62aa13c-c6e5-41a2-bd30-9760f2773e07"
            Interface "patch-br-int-to-provnet-f62aa13c-c6e5-41a2-bd30-9760f2773e07"
                type: patch
                options: {peer="patch-provnet-f62aa13c-c6e5-41a2-bd30-9760f2773e07-to-br-int"}
    ovs_version: "2.12.0"

如果接口和OVS桥映射不正确,请更改接口配置并将接口添加到OpenStack使用的桥。

在接口上创建一个外部OVS桥。

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eno1
DEVICE=eno1
ONBOOT=yes
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex 

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-br-ex
DEVICE=br-ex
BOOTPROTO=none
ONBOOT=yes
TYPE=OVSBridge
DEVICETYPE=ovs
USERCTL=yes
PEERDNS=yes
IPV6INIT=no
IPADDR=192.168.10.10
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DNS1=192.168.10.1

将已配置接口的静态路由移动到br-ex。

sudo mv /etc/sysconfig/network-scripts/route-eno1 /etc/sysconfig/network-scripts/route-br-ex

网络物理接口 布雷克斯 打开vSwitch网桥。

sudo ovs-vsctl add-port br-ex eno1; systemctl restart network.service

可以以类似方式配置其他网桥。您需要使用正确的映射配置Open vSwitch。

$ sudo  vi /etc/neutron/plugins/ml2/openvswitch_agent.ini 
bridge_mappings=extnet:br-ex

重新启动Nova服务。

sudo systemctl restart openstack-nova-compute
sudo systemctl restart openstack-nova-api
sudo systemctl restart openstack-nova-scheduler

创建一个OpenStack专用网络。

$ source keystonerc_admin
$ openstack network create private

确认已创建网络。

$ openstack network list
+--------------------------------------+---------+--------------------------------------+
| ID                                   | Name    | Subnets                              |
+--------------------------------------+---------+--------------------------------------+
| a5e2a8f0-a953-4eb4-8fc1-2712c2c879d5 | private | 238ec5c5-602d-4fb8-9fca-053d444d9187 |
+--------------------------------------+---------+--------------------------------------+

将子网添加到创建的专用网络。

openstack subnet create --network private 
  --allocation-pool start=10.1.1.50,end=10.1.1.200 
  --dns-nameserver 8.8.8.8 
  --subnet-range 10.1.1.0/24 
  private_subnet

创建一个公共网络。

openstack network create 
  --provider-network-type flat 
  --provider-physical-network extnet 
  --external 
  public

添加一个公共网络子网。

 openstack subnet create --network public 
    --allocation-pool start=,end= 
    --no-dhcp 
    --subnet-range /27 public_subnet

添加新路由器并配置路由器接口。

openstack router create --no-ha router1
openstack router set --external-gateway public router1
openstack router add subnet router1 private_subnet

检查网络名称空间以验证网络配置

ip netns show

步骤5:将Cinder配置为使用LVM

配置Cinder以使用配置的LVM卷。

$ sudo  vi /etc/cinder/cinder.conf
enabled_backends=lvm
volume_clear = none

[lvm]
volume_backend_name=lvm
volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver
iscsi_ip_address=192.168.10.10
iscsi_helper=lioadm
volume_group=cinder-volumes
volumes_dir=/var/lib/cinder/volumes

进行更改后,您必须重新启动Cinder服务。

sudo systemctl restart openstack-cinder-volume
sudo systemctl restart openstack-cinder-api

进行更改后,重新启动Cinder服务。

sudo systemctl restart openstack-cinder-volume
sudo systemctl restart openstack-cinder-api

步骤6:创建风味和安全性组

让我们添加一个OpenStack风格:

openstack flavor create --id 0 --ram 1024  --vcpus  1 --swap 2048  --disk 10    m1.tiny
openstack flavor create --id 1 --ram 2048  --vcpus  1 --swap 4096  --disk 20    m1.small
openstack flavor create --id 2 --ram 4096  --vcpus  2 --swap 8192  --disk 40    m1.medium
openstack flavor create --id 3 --ram 8192  --vcpus  4 --swap 8192  --disk 80    m1.large
openstack flavor create --id 4 --ram 16384 --vcpus  8 --swap 8192  --disk 160   m1.xlarge

和基本安全组

openstack security group create basic --description "Allow base ports"
openstack security group rule create --protocol TCP --dst-port 22 --remote-ip 0.0.0.0/0 basic
openstack security group rule create --protocol TCP --dst-port 80 --remote-ip 0.0.0.0/0 basic
openstack security group rule create --protocol TCP --dst-port 443 --remote-ip 0.0.0.0/0 basic
openstack security group rule create --protocol ICMP --remote-ip 0.0.0.0/0 basic

步骤7:创建私钥并添加一览表图像

为您的帐户创建一个新密钥或使用现有的密钥。

$ ssh-keygen -q -N "" 
$ openstack keypair create --public-key=~/.ssh/id_rsa.pub adminkey
+-------------+-------------------------------------------------+
| Field       | Value                                           |
+-------------+-------------------------------------------------+
| fingerprint | e4:00:26:64:1c:f7:20:06:d6:59:c6:31:20:53:59:c8 |
| name        | adminkey                                        |
| user_id     | 9f7d84c3014445e7aac3048c9a0fd856                |
+-------------+-------------------------------------------------+

有关扫视图像,请参阅前一指南。

如何将Glance Cloud映像添加到OpenStack

步骤8:访问OpenStack仪表板

要访问OpenStack仪表板,请访问http:// openstackip /仪表板。

登录凭据是 keystonerc_admin 在您的主目录中的文件。

$ grep OS_PASSWORD keystonerc_admin
export OS_PASSWORD='c11661db5ecf4ebd'

登录后,您可以开始创建可在项目中使用的实例。有几篇OpenStack文章可用。

如何在OpenStack中运行CentOS 8实例

如何在OpenStack中重命名实例/服务器

如何在OpenStack中调整/扩展Cinder的大小

如何为OpenStack实例分配浮动IP地址

使用静态/静态IP地址创建OpenStack实例

如何创建OpenStack项目,用户和角色

如何调整OpenStack实例/虚拟机的大小

这是续集。
您可以通过以下链接以PDF格式下载本文,以为我们提供支持。

以PDF格式下载指南


这是续集。

这是续集。
这是续集。

Sidebar