热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CentOS7手动安装OpenStack

官网文档因为之前已经在Ubuntu20.04下完成了Ubuntu20.04手动安装OpenStack,最后,想要学习OVN的时候,发现u




官网文档

因为之前已经在 Ubuntu 20.04 下完成了 Ubuntu 20.04 手动安装OpenStack ,最后,想要学习 OVN 的时候,发现 ubuntu 上的 OVN 安装很复杂,没有 TripleO/RDO based deployments ,所以,又在 CentOS 7.9 上完成了一次 OpenStack Controller 安装


一、我的环境(前提)

1 个 Hyper-V 虚拟机
Controller (CentOS 7.9)
管理者网卡( Management ): 192.168.0.145
公网提供者网卡 ( Provider ): 203.0.113.145

依然使用之前模拟的 203.0.113.1 网关
Ubuntu 18.04 通过 ufw route 配置网关服务器

抱歉!大部分内容从之前抄写过来的

二、关于 网卡 IP 和角色


  1. 来回失败的尝试,死活 ping 不通 route 的地址 (203.0.113.XX)

  2. 习惯性的以为 Networking 部分配置不对,于是在
    Install and configure for Ubuntu 这里打转转,甚至折腾了好久 OVN Install Documentation

  3. 无奈又无聊的时候,翻看文档
    原文抄录如下:

    **Management on 10.0.0.0/24 with gateway 10.0.0.1

    This network requires a gateway to provide Internet access to all nodes for administrative purposes such as package installation, security updates, DNS, and NTP.

    Provider on 203.0.113.0/24 with gateway 203.0.113.1

    This network requires a gateway to provide Internet access to instances in your OpenStack environment.**

    终于恍然大悟!问题出在网关(gateway)!

  4. 这个 Provider 在以前版本叫 Public ,开始总是半知半解,把 2 个单词加一起理解比较好

  5. 学习中不可能有实际公网地址和网关给我们使用,所以,模拟一个 203.0.113.0/24 网关

  6. 如果不想单独用一个虚拟机作为网关,可以在 Controller 增加第三个网卡来模拟

总之,要想最终可以 ping 通路由器和虚拟机的浮动地址,开始时就需要预备好网关
在 Controller 和 Compute1 服务器上, ping 通203.0.113.1


三、环境准备

Environment

学习过程中所有的密码设置为同一个,例如: secret
Host networking按照前面修改为自己的 IP

OpenStack packages for RHEL and CentOS

这里列举了所有版本的 OpenStack repository ,但是,实际上对应 CentOS 7 只有可怜的几个

[root@localhost ~]# yum list centos-release-openstack*
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.huaweicloud.com
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.aliyun.com
可安装的软件包
centos-release-openstack-queens.noarch 1-2.el7.centos extras
centos-release-openstack-rocky.noarch 1-1.el7.centos extras
centos-release-openstack-stein.noarch 1-1.el7.centos extras
centos-release-openstack-train.noarch 1-1.el7.centos extras

查询 OpenStack的历史版本,发现 train 才是这其中的最新版,原来我还傻傻的以为列表的第一个 queen 版本最新!

抄写一下对应的步骤

# yum install centos-release-openstack-train
# yum install https://rdoproject.org/repos/rdo-release.rpm
# yum upgrade
# yum install python-openstackclient
# yum install openstack-selinux

四、Controller 安装 OpenStack 服务

Install OpenStack services
如图所示,建议安装到 Networking service – neutron installation for Xena 之前,
再做一个快照!
再做一个快照!
再做一个快照!

在这里插入图片描述
安装完 Networking service – neutron installation for Xena 之后,
再做一个快照!
再做一个快照!
再做一个快照!

还有一个 network bridge filters 需要设置

vim /etc/sysctl.conf

增加

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

必须先加载模块 br_netfilter

modprobe br_netfilter

应用生效

sysctl -p /etc/sysctl.conf

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

因为完全单独安装完成 Controller ,所以验证这里会缺少一项 compute1,只有 4 条

[root@controller ~]# openstack network agent list

+--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
| 7208479a-62e5-44d9-9ad8-3aa393973949 | Linux bridge agent | controller | None | :-) | UP | neutron-linuxbridge-agent |
| 9a065e95-3bf0-48f7-9605-7766311e78da | DHCP agent | controller | nova | :-) | UP | neutron-dhcp-agent |
| a01323eb-19a6-4446-8d05-e7fe4b3f7d3e | L3 agent | controller | nova | :-) | UP | neutron-l3-agent |
| f7c78cc7-ee8e-4949-840f-af9d70da6c5e | Metadata agent | controller | None | :-) | UP | neutron-metadata-agent |
+--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+

不要着急进入 : Dashboard
跳到下一步 : Launch an instance


五、发布一个实例

Launch an instance

如果担心后续虚拟机 ping 不通外网,可以修改 8.8.4.4 为 114.114.114.114 等国内 DNS


  1. 创建公网提供者(provider)网络和子网
    Provider network

    抄录一下 3 条命令

    $ . admin-openrc

    $ openstack network create --share --external \
    --provider-physical-network provider \
    --provider-network-type flat provider

    $ openstack subnet create --network provider \
    --allocation-pool start=203.0.113.101,end=203.0.113.250 \
    --dns-nameserver 8.8.4.4 --gateway 203.0.113.1 \
    --subnet-range 203.0.113.0/24 provider

  2. 创建私有网络(selfservice)网络和子网
    Self-service network

    抄录一下 3 条命令

    $ . demo-openrc

    $ openstack network create selfservice

    $ openstack subnet create --network selfservice \
    --dns-nameserver 8.8.4.4 --gateway 172.16.1.1 \
    --subnet-range 172.16.1.0/24 selfservice

  3. 创建路由器(router)
    抄录一下 4 条命令

    $ . demo-openrc

    $ openstack router create router

    $ openstack router add subnet router selfservice

    $ openstack router set router --external-gateway provider

  4. 验证网络连通性

    1). root@controller:/home/dhbm# source admin-openrc

    2). root@controller:/home/dhbm# ip netns

    qrouter-f6a53f5b-104a-4840-bd67-db6b5a51d6dd (id: 2)
    qdhcp-1c17dcdc-ab9a-4324-8dc0-e5a21515323d (id: 0)
    qdhcp-dcda4686-434c-409c-8de4-134eafdbe939 (id: 1)

    3). root@controller:/home/dhbm# openstack port list --router router

    +--------------------------------------+------+-------------------+------------------------------------------------------------------------------+--------+
    | ID | Name | MAC Address | Fixed IP Addresses | Status |
    +--------------------------------------+------+-------------------+------------------------------------------------------------------------------+--------+
    | 32127872-6154-44d0-b52d-5408fe659528 | | fa:16:3e:14:b6:32 | ip_address='172.16.1.1', subnet_id='c0a15e76-3694-4b61-9101-71a9aed1e7b0' | ACTIVE |
    | fe315fd4-9014-43f0-a64f-472758ac305f | | fa:16:3e:c5:a5:e9 | ip_address='203.0.113.198', subnet_id='eac59d6f-a533-424d-bb22-8bc504acf773' | ACTIVE |
    +--------------------------------------+------+-------------------+------------------------------------------------------------------------------+--------+

    4). root@controller:/home/dhbm# ping 203.0.113.198

    PING 203.0.113.198 (203.0.113.198) 56(84) bytes of data.
    64 bytes from 203.0.113.198: icmp_seq=1 ttl=64 time=0.090 ms
    64 bytes from 203.0.113.198: icmp_seq=2 ttl=64 time=0.065 ms
    64 bytes from 203.0.113.198: icmp_seq=3 ttl=64 time=0.076 ms
    ......

  5. 后悔药 (反向删除以上 2 个 network 和 router)

    openstack router remove subnet router selfservice
    openstack router delete router
    openstack subnet delete selfservice
    openstack network delete selfservice
    openstack subnet delete provider
    openstack network delete provider

本文不再继续安装 openstack-dashboard

本来是准备用来学习 OVN 的,到这里才发现 train (以及更早)版本,不支持 OVN ,文档中就没有,究其原因,可能是因为老版本还都是 python 2 ,新版本都是 python 3


测试一下之前的 compute1 加入

之前的 compute1 是 ubuntu 20.04 安装的 XENA 版本的 nova 计算节点
openstack compute service list 找不到 compute1
openstack network agent list 可以看到 compute1

查看日志
root@compute1:/home/dhbm# tail /var/log/nova/nova-compute.log

2022-11-24 08:23:02.666 1918 ERROR nova File "/usr/lib/python3/dist-packages/nova/scheduler/client/report.py", line 231, in _create_client
2022-11-24 08:23:02.666 1918 ERROR nova client = self._adapter or utils.get_sdk_adapter('placement')
2022-11-24 08:23:02.666 1918 ERROR nova File "/usr/lib/python3/dist-packages/nova/utils.py", line 984, in get_sdk_adapter
2022-11-24 08:23:02.666 1918 ERROR nova return getattr(conn, service_type)
2022-11-24 08:23:02.666 1918 ERROR nova File "/usr/lib/python3/dist-packages/openstack/service_description.py", line 87, in __get__
2022-11-24 08:23:02.666 1918 ERROR nova proxy = self._make_proxy(instance)
2022-11-24 08:23:02.666 1918 ERROR nova File "/usr/lib/python3/dist-packages/openstack/service_description.py", line 266, in _make_proxy
2022-11-24 08:23:02.666 1918 ERROR nova raise exceptions.NotSupported(
2022-11-24 08:23:02.666 1918 ERROR nova openstack.exceptions.NotSupported: The placement service for controller:RegionOne exists but does not have any supported versions.
2022-11-24 08:23:02.666 1918 ERROR nova

看来,如果实际使用 OpenStack 的话,一定保证 controller 节点和 compute 节点的软件版本一致!







推荐阅读
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
author-avatar
何丽-Hely
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有