Centos7 单机单网卡 RDO 安装 OpenStack

文档

OpenStack 涵盖太多知识量,总是找不到一个称心的官方文档

  1. OpenStack Installation Guide for Red Hat Enterprise Linux and CentOS
    这个是中文版的,但是 UPDATED: 2017-06-12 11:14 ,很古老了!基本概念和思想还是一样的

  2. https://docs.openstack.org/install-guide/launch-instance-provider.html
    这个是英文版的,更新日期也是最新的

  3. RDO 官方安装文档
    这里只有 CentOS 8 ,没有 CentOS 7 的

  4. Neutron with existing external network
    主要就是折腾网络,最终解决桥接配置还是照着这里操作完成的

学习环境和过程

  1. 前后使用过 VirtualBox 虚拟机 8G 内存 和 Hyper-V 虚拟机 16G 内存
    都是单网卡
  2. 足够的耐心,开始不熟悉的时候,错了重来!所以,多准备几个新的虚拟机,过程中多做几次快照,以便回滚
  3. 不同的国内源,版本可能不一样,所以,报错也不一样,我这里最终选择的阿里源
  4. 本文实际环境:
    CentOS-7-x86_64-DVD-2009.iso
    内存 : 16G
    IP : 192.168.0.151
    hostname : centos7-151
    简单起见,直接 root 登录

安装过程

  1. 准备网络和防火墙

     # systemctl disable firewalld
     # systemctl stop firewalld
     # systemctl disable NetworkManager
     # systemctl stop NetworkManager
     # systemctl enable network
     # systemctl start network
    

    虽然是单机单节点,一定加上,否则,后续dashboard 操作虚拟机实例是连接控制台失败
    # hostnamectl set-hosrname centos7-151

     # vim /etc/hosts 
     加上
     192.168.0.151 centos7-151
     
     # vim /etc/selinux/config 
     SELINUX=disabled
     
     配置国内源:我选择的是 阿里源
    

    这些准备好,并且 yum update 之后,做一份快照或者复制一份虚拟机备用

  2. 查询并安装合适的版本

    # yum list centos-release-openstack*
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.aliyun.com
     * extras: mirrors.aliyun.com
     * 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
    

    我开始学习时,囫囵的抄写别人,安装的 centos-release-openstack-train
    后来改用先查询,再选择其中最新的 centos-release-openstack-queens

    # yum install centos-release-openstack-queens.noarch
    
    # yum update -y
    

    继续查询 openstack-packstack

    # yum list openstack-packstack*
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.aliyun.com
     * centos-qemu-ev: mirrors.huaweicloud.com
     * extras: mirrors.aliyun.com
     * updates: mirrors.aliyun.com
    可安装的软件包
    openstack-packstack.noarch                                                                         1:12.0.1-1.el7                                                                   centos-openstack-queens
    openstack-packstack-doc.noarch                                                                     1:12.0.1-1.el7                                                                   centos-openstack-queens
    openstack-packstack-puppet.noarch                                                                  1:12.0.1-1.el7                                                                   centos-openstack-queens
    

    安装 openstack-packstack

    # yum install -y openstack-packstack.noarch
    
  3. 提前准备过程中会出现的错误处理
    不是必须提前准备,待安装过程报错之后,分别处理,那样子印象深刻-_
    然后重新运行 (换成自己的 answer-file)

      # packstack --answer-file=packstack-answers-20221002-170651.txt
    
    1. . 降级 leatherman

       # yum list installed | grep leatherma
       leatherman.x86_64              1.10.0-1.el7             @epel                   
       
       # yum downgrade leatherman
      

    2). 应对 openstack-keystone 错误

     # yum -d 0 -e 0 -y install openstack-keystone
     错误:软件包:python2-qpid-proton-0.22.0-1.el7.x86_64 (centos-openstack-queens)
               需要:qpid-proton-c(x86-64) = 0.22.0-1.el7
               可用: qpid-proton-c-0.14.0-2.el7.x86_64 (extras)
                   qpid-proton-c(x86-64) = 0.14.0-2.el7
               可用: qpid-proton-c-0.17.0-4.el7.x86_64 (centos-openstack-queens)
                   qpid-proton-c(x86-64) = 0.17.0-4.el7
               可用: qpid-proton-c-0.22.0-1.el7.x86_64 (centos-openstack-queens)
                   qpid-proton-c(x86-64) = 0.22.0-1.el7
               正在安装: qpid-proton-c-0.37.0-1.el7.x86_64 (epel)
                   qpid-proton-c(x86-64) = 0.37.0-1.el7
      您可以尝试添加 --skip-broken 选项来解决该问题
      您可以尝试执行:rpm -Va --nofiles --nodigest
      
     # yum -y install qpid-proton-c-0.22.0-1.el7.x86_64
    

    3). 应对错误: Error: Execution of ‘/usr/bin/yum -d 0 -e 0 -y install openstack-ceilometer-ipmi’ returned 1:

     # yum -d 0 -e 0 -y install openstack-ceilometer-ipmi
     Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
     
     # yum install applydeltarpm
     ......
      * updates: mirrors.aliyun.com
     没有可用软件包 applydeltarpm。
     错误:无须任何处理
     
     # yum -d 0 -e 0 -y install openstack-ceilometer-ipmi
     软件包 1:openstack-ceilometer-ipmi-10.0.1-1.el7.noarch 已安装并且是最新版本
    
  4. 开始 all-in-one
    建议开始之前,做一份快照备用,除非已经很熟悉错误处理

     # packstack --allinone --provision-demo=n
    

    直接 packstack --allinone 会配置一份 demo 项目,开始学习时,反而扰乱视听

    按照 Neutron with existing external network 加上网桥参数,最终经过对比 answer 文件以及实际结果,没有发现差别,可能是英文理解问题

     # packstack --allinone --provision-demo=n --os-neutron-ovn-bridge-mappings=extnet:br-ex --os-neutron-ovn-bridge-interfaces=br-ex:eth0
    

安装完成,配置网桥

  1. 修改桥接网卡配置
    修改之前查看一下

    # ip a
    ......
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:15:5d:5a:a6:59 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.151/24 brd 192.168.0.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::215:5dff:fe5a:a659/64 scope link 
           valid_lft forever preferred_lft forever
    3: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
        link/ether 36:8c:b5:5a:43:a1 brd ff:ff:ff:ff:ff:ff
    4: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
        link/ether 82:c0:23:69:97:44 brd ff:ff:ff:ff:ff:ff
        inet6 fe80::80c0:23ff:fe69:9744/64 scope link 
           valid_lft forever preferred_lft forever
    ......
    

    按照 Neutron with existing external network ,配置 ifcfg-br-ex 和 ifcfg-eth0 文件

    修改并 reboot 之后,再次查看

    # ip a
    ......
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP group default qlen 1000
        link/ether 00:15:5d:5a:a6:59 brd ff:ff:ff:ff:ff:ff
        inet6 fe80::215:5dff:fe5a:a659/64 scope link 
           valid_lft forever preferred_lft forever
    3: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
        link/ether ea:29:03:97:a3:20 brd ff:ff:ff:ff:ff:ff
    ......
    9: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
        link/ether 00:15:5d:5a:a6:59 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.151/24 brd 192.168.0.255 scope global br-ex
           valid_lft forever preferred_lft forever
        inet6 fe80::215:5dff:fe5a:a659/64 scope link 
           valid_lft forever preferred_lft forever
    ......
    19: tap654bc70b-d9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast master qbr654bc70b-d9 state UNKNOWN group default qlen 1000
        link/ether fe:16:3e:dc:0f:c9 brd ff:ff:ff:ff:ff:ff
        inet6 fe80::fc16:3eff:fedc:fc9/64 scope link 
           valid_lft forever preferred_lft forever
    

创建外网和外网子网

抄写 Neutron with existing external network 并修改成自己的网络参数

# . keystonerc_admin
	
# neutron net-create external_network --provider:network_type flat --provider:physical_network extnet  --router:external
	
# neutron subnet-create --name public_subnet --enable_dhcp=False --allocation-pool=start=192.168.0.10,end=192.168.0.20 \
	                        --gateway=192.168.0.81 external_network 192.168.0.0/24

文档中写到这里,又切换到新用户新项目去,后续命令行操作反而会出现多份 default 等混乱

下载并配置一份镜像

上这里 http://download.cirros-cloud.net/找一下最新的 cirror 镜像,我找的时候最新的是 0.5.2

# wget http://download.cirros-cloud.net/0.5.2/cirros-0.5.2-x86_64-disk.img
	
# openstack image create "cirros_1" --file cirros-0.5.2-x86_64-disk.img --disk-format qcow2 --container-format bare --public

生成一个键值对

按照启动一个实例这里继续操作

不再生成,直接上传

# openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

增加安全组规则

允许 ICMP (ping):
# openstack security group rule create --proto icmp default

允许安全 shell (SSH) 的访问:
# openstack security group rule create --proto tcp --dst-port 22 default

按照个人经验,命令行操作就到这里,后续操作(项目私有内部网络创建、路由、实例…)在 dashboard 操作

浏览器登录 dashboard

# cat keystonerc_admin 
unset OS_SERVICE_TOKEN
    export OS_USERNAME=admin
    export OS_PASSWORD='b5f5521added4ab2'
    export OS_REGION_NAME=RegionOne
    export OS_AUTH_URL=http://192.168.0.151:5000/v3
    export PS1='[\u@\h \W(keystone_admin)]\$ '
    
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3

http://192.168.0.151/dashboard/auth/login/?next=/dashboard/project/

  1. 按照以上用户密码登录,直接操作 admin 项目

在这里插入图片描述
2. 创建内网子网

在这里插入图片描述
使用 DHCP

在这里插入图片描述

  1. 新建路由

在这里插入图片描述
点击路由,增加内网接口
在这里插入图片描述
确认网络拓扑

在这里插入图片描述

确认 ping 路由

[root@centos7-151 ~]# ping 192.168.0.12
PING 192.168.0.12 (192.168.0.12) 56(84) bytes of data.
64 bytes from 192.168.0.12: icmp_seq=1 ttl=64 time=0.910 ms
64 bytes from 192.168.0.12: icmp_seq=2 ttl=64 time=0.086 ms
64 bytes from 192.168.0.12: icmp_seq=3 ttl=64 time=0.093 ms

如果 ping 不通路由,就不要继续,先去解决网络配置或安全组设置

  1. 新建一个虚拟机实例
    过程忽略
    最终结果如下
    在这里插入图片描述

  2. ping 测试

     [root@centos7-151 ~]# ping 192.168.0.11
     PING 192.168.0.11 (192.168.0.11) 56(84) bytes of data.
     64 bytes from 192.168.0.11: icmp_seq=1 ttl=63 time=6.23 ms
    
  3. ssh 测试

     # ssh cirros@192.168.0.11
    

    登录到虚拟机

     $ ip a
     1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
         link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
         inet 127.0.0.1/8 scope host lo
            valid_lft forever preferred_lft forever
         inet6 ::1/128 scope host 
            valid_lft forever preferred_lft forever
     2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast qlen 1000
         link/ether fa:16:3e:a7:a3:f6 brd ff:ff:ff:ff:ff:ff
         inet 10.2.1.3/24 brd 10.2.1.255 scope global eth0
            valid_lft forever preferred_lft forever
         inet6 fe80::f816:3eff:fea7:a3f6/64 scope link 
            valid_lft forever preferred_lft forever
            
      $ uname -a
     	Linux vm-20221009 5.3.0-26-generic #28~18.04.1-Ubuntu SMP Wed Dec 18 16:40:14 UTC 2019 x86_64 GNU/Linux
    
### CentOS 7单节点 OpenStack IaaS 平台安装与部署 #### 基础环境准备 在开始之前,需确保已准备好一台运行 CentOS 7 的服务器,并完成基本的系统更新和依赖项安装。具体操作如下: ```bash sudo yum update -y sudo yum groupinstall "Development Tools" -y ``` 为了实现网络通信正常化,还需设置静态 IP 地址以及禁用防火墙和服务发现工具(如 SELinux 和 NetworkManager),以便减少潜在冲突[^1]。 --- #### 下载并配置先电包 通过 `yum` 工具下载并安装先电包,这是简化 OpenStack 部署的重要组件之一。执行以下命令来安装必要的软件包: ```bash sudo yum install -y iaas-xiandian ``` 随后编辑 `/etc/xiandian/openrc.sh` 文件以定义管理员账户和其他必要参数[^2]。 --- #### 创建 Flavor 类型 Flavor 是指虚拟机实例的具体规格,包括内存大小、磁盘空间及 CPU 数量等属性。可以利用以下命令创建一个新的 flavor 类型: ```bash openstack flavor create --ram 2048 --disk 20 --vcpus 2 Fmin ``` 此命令会生成一个名为 **Fmin** 的 flavor,具有 2GB RAM、20GB 存储容量和两个 vCPU 核心[^3]。 --- #### Compute 节点初始化脚本 对于单节点架构而言,Compute 功能同样需要被激活。可以通过一系列预设脚本来快速完成这一过程,涉及 Nova 计算服务、Neutron 网络支持以及其他存储模块的集成。以下是主要脚本及其用途概述: - `iaas-pre-host.sh`: 初始化主机环境; - `iaas-install-nova-compute.sh`: 安装 Nova 组件用于管理计算资源; - `iaas-install-neutron-compute.sh`: 提供 Neutron 支持以处理网络连接需求; - `iaas-install-cinder-compute.sh`: 添加 Cinder 卷服务功能; - `iaas-install-swift-compute.sh`: 可选对象存储扩展选项[^4]。 依次运行这些脚本即可逐步构建完整的计算能力框架。 --- #### 测试验证 最后一步是对整个系统的功能性进行全面测试,确认各子系统间协作无误。尝试启动一个简单的云主机实例作为初步检验手段: ```bash openstack server create --flavor Fmin --image cirros-test-image --nic net-id=your-network-id test-instance ``` 上述指令中的 `cirros-test-image` 应替换为实际可用镜像名称;而 `your-network-id` 则对应目标网络 ID 参数值。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈虎123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值