使用Packstack工具在CentOS7上部署OpenStack

1. OpenStack部署介绍

OpenStack是一个开源的云操作系统平台,它由一系列相互关联的服务组成,这些服务共同构建了一个完整的云基础设施,提供了虚拟机、网络、存储、身份认证等功能,使用户能够轻松部署和管理云计算资源。由于开源的OpenStack平台不提供高可用,负载均衡,容灾,告警,监控,日志等服务,且界面粗糙,部署难度较大,一般用户不会采用这种方式部署,因此很多的厂商都会基于它再进行二次开发,增加对自家虚拟化平台的驱动和接口,集群,日志等一系列的功能,且客户在购买后还能得到来自厂家的部署以及维护服务。目前,市面上有很多种OpenStack的部署方式:

  1. DevStack:适用于开发和测试的快速部署脚本。DevStack会在单个节点上安装所有的OpenStack组件,并通常用于学习和开发目的。
  2. Packstack:如前面介绍的,Packstack是由Red Hat提供的自动化部署工具,适用于CentOS和RHEL等RPM包管理的Linux发行版。
  3. TripleO(OpenStack on OpenStack):TripleO允许在虚拟机或裸金属服务器上部署OpenStack。它使用OpenStack自身作为管理平台来部署和配置OpenStack。
  4. Kolla:Kolla使用Docker容器来部署OpenStack服务,简化了安装和升级过程,并提供了一种轻量级的部署方式。
  5. Charms:适用于Ubuntu的Juju Charm工具,它可以通过编排方式来自动化部署和管理OpenStack服务。
  6. Manual Deployment:高级用户可以手动安装和配置OpenStack组件(使用官方的配置手册),这样可以更加灵活地进行定制,但也需要更多的时间和精力。

Packstack是一个用于快速部署OpenStack私有云环境的工具。它是由Red Hat推出的一种简化OpenStack安装过程的自动化工具。Packstack可以帮助用户在几个步骤内将一个完整的OpenStack环境部署到一台物理服务器或虚拟机上,而无需手动进行复杂的配置。目前开源的PackStack安装有两种方式,一种是基于RHEL推出的一个安装包(RHEL7OSP-6.0-2015-02-23.2-x86_64.iso),该安装包包含了所有安装OpenStack所需要的软件包,RedHat对OpenStack的dashboard做了一定的优化调整。另一种是安装packstack工具后,再增加一个来自互联网的OpenStack软件源,通过这个源提供的软件包来完成安装。

2. 运行环境

操作系统版本硬件配置IP地址规划主机名OpenStack版本
centos7.94vCPUS/8G 50G硬盘192.168.100.49/24openstackStein

3. 部署过程

  1. 修改centos系统的主机名
[root@localhost ~]# hostnamectl set-hostname openstack
  1. 设置centos系统为静态IP地址
#注意修改自己的网卡配置文件
[root@openstack ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

[root@openstack ~]# echo "nameserver 8.8.8.8" >> /etc/resolve

#重启网络服务
[root@openstack ~]# systemctl restart network
#验证IP地址
[root@openstack ~]# ip addr show
  1. 添加主机hosts记录
[root@openstack ~]# echo "192.168.100.49 openstack" >> /etc/hosts
#验证修改结果
[root@openstack ~]# more /etc/hosts
  1. 设置本机SSH免密码登录
#生成ssh密钥
[root@openstack ~]# ssh-keygen
#添加密钥信息到~./ssh/know_hosts文件
[root@openstack ~]# ssh-copy-id root@192.168.100.49
  1. 关闭服务

关闭防火墙

[root@openstack ~]# systemctl stop firewalld
[root@openstack ~]# systemctl disable firewalld
#查看防火墙状态
[root@openstack ~]# systemctl status firewalld

关闭SeLinux

[root@openstack ~]# setenforce 0
[root@openstack ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

关闭NetworkManager服务,RHEL7.1在关闭了NetworkManager后网络会不通,可不用关闭

[root@openstack ~]# systemctl stop NetworkManager
[root@openstack ~]# systemctl disable NetworkManager
#查看NetworkManager状态
[root@openstack ~]# systemctl status NetworkManager
  1. 安装常用软件
[root@openstack ~]# yum -y install vim bash-completion yum-utils
  1. 安装OpenStack Stein的yum库
[root@openstack ~]# yum -y install centos-release-openstack-stein

修改CentOS-OpenStack-stein.repo配置文件(可选)

[root@openstack ~]# cd /etc/yum.repos.d/
#备份
[root@openstack ~]# cp -a CentOS-OpenStack-stein.repo CentOS-OpenStack-stein.repo.bak

#修改配置文件
[root@openstack ~]# vim CentOS-OpenStack-stein.repo
[centos-openstack-stein]
baseurl=http://mirrors.aliyun.com/$contentdir/$releasever/cloud/$basearch/openstack-stein/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=cloud-openstack-stein
...

#清除本地yum索引缓存,然后再重建索引缓存
[root@openstack ~]# yum clean all && yum makecache
  1. 安装packstack工具
[root@openstack ~]# yum -y install openstack-packstack
  1. 安装OpenStack allinone
[root@openstack ~]# packstack --allinone
Welcome to the Packstack setup utility

The installation log file is available at: /var/tmp/packstack/20230727-071818-k1kmMw/openstack-setup.log

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 LBaaS Agent 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 ]
Applying 192.168.100.49_controller.pp
192.168.100.49_controller.pp:                        [ DONE ]           
Applying 192.168.100.49_network.pp
192.168.100.49_network.pp:                           [ DONE ]        
Applying 192.168.100.49_compute.pp
192.168.100.49_compute.pp:                           [ DONE ]        
Applying Puppet manifests                            [ DONE ]
Finalizing                                           [ DONE ]

#自动化安装时间很长,静静等待,直到出现如下信息,表示成功安装。

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

Additional information:
 * Parameter CONFIG_NEUTRON_L2_AGENT: You have choosen OVN neutron backend. Note that this backend does not support LBaaS, VPNaaS or FWaaS services. Geneve will be used as encapsulation method for tenant networks
 * A new answerfile was created in: /root/packstack-answers-20230727-071819.txt
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
 * File /root/keystonerc_admin has been created on OpenStack client host 192.168.100.49. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://192.168.100.49/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * The installation log file is available at: /var/tmp/packstack/20230727-071818-k1kmMw/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20230727-071818-k1kmMw/manifests

在安装之前,也可以先生成应答文件,根据需求修改了应答文件后再部署

[root@openstack ~]# packstack  --gen-answer-file=/tmp/answer.txt
[root@openstack ~]# vim /tmp/answer.txt 

CONFIG_NTP_SERVERS=192.168.100.51
CONFIG_CONTROLLER_HOST=192.168.100.49
CONFIG_KEYSTONE_ADMIN_PW=redhat
CONFIG_COMPUTE_HOSTS=192.168.100.49  #如果有其他的计算节点,可以在这里加,主机之间使用逗号隔开
CONFIG_PROVISION_DEMO=n		#默认为y,部署演示环境

[root@openstack ~]# packstack --answer-file=/tmp/answer.txt
  1. 查看Dashboard web页面的登录账号及密码
[root@openstack ~]# cat keystonerc_admin 
unset OS_SERVICE_TOKEN
    export OS_USERNAME=admin
    export OS_PASSWORD='fd8305e89a47450c'
    export OS_REGION_NAME=RegionOne
    export OS_AUTH_URL=http://192.168.100.49: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
  1. Dashboard web登录界面

在这里插入图片描述
在这里插入图片描述
11. 配置网桥

[root@openstack network-scripts]# cp ifcfg-ens33 ifcfg-ens33.bak
[root@openstack network-scripts]# cp ifcfg-ens33 ifcfg-br-ex
[root@openstack network-scripts]# vim ifcfg-br-ex 

TYPE=OVSBridge
BOOTPROTO=static

NAME=br-ex
DEVICETYPE=ovs
UUID=97d71e0d-78cd-4fa8-b494-0ddfb20a0923
DEVICE=br-ex

ONBOOT=yes
IPADDR=192.168.100.49
PREFIX=24
GATEWAY=192.168.100.1

[root@openstack network-scripts]# vim ifcfg-ens33

TYPE=OVSPort
BOOTPROTO=none
NAME=ens33
DEVICE=ens33
ONBOOT=yes
DEVICETYPE=ovs
OVS_BRIDGE=br-ex

[root@openstack network-scripts]# systemctl restart network

3. 报错及解决

  1. 错误1:ERROR : Failed to run remote script, stdout:
 stderr: Warning: Permanently added '172.17.2.60' (ECDSA) to the list of known hosts.

解决办法:

[root@openstack ~]# ssh-kengen
[root@openstack ~]# ssh-copy-id root@192.168.100.49
  1. 错误2:facter: error while loading shared libraries: leatherman_curl.so.1.3.0: cannot open shared object file: No such file or directory

原因:启用了epel库导致的
解决办法:

#1.禁用epel
yum-config-manager --disable epel
#2.清理yum索引缓存
yum clean all
#3.重建yum索引缓存
yum makecache
#4.降级leatherman
yum downgrade leatherman

4. 发放主机

  1. 上传制作好的镜像

在这里插入图片描述

如果制作的镜像对处理器架构,磁盘和内存有要求,也可以将这些内容填进去(可选),某些厂商的云平台中,磁盘和内容要求是必选项。

创建实例规格,实例规格就是资源分配的模板

在这里插入图片描述

系统有一些默认的,也可以自定义

  1. 创建租户,并修改配额(限制租户使用的资源)
    在这里插入图片描述
    在这里插入图片描述

创建用户并关联给租户

在这里插入图片描述

  1. 网络设置

公网用于和外界通信,这里的公网使用了宿主机的网段(宿主机可以连接wifi上网),在共有云中,公网的IP就是真实可上网的地址,需要花钱购买(也就是浮动IP)
私网用于租户内部之间通信,可以由用户自行分配,且数量不限
路由器用于连接公网和私网,如果内部主机想要上网,需要通过路由器来进行转发

创建公网

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在管理员界面下修改网络

在这里插入图片描述
在这里插入图片描述

进入租户的账户(user01),创建私有网络后,再创建路由器

在这里插入图片描述

增加路由器接口

在这里插入图片描述
在这里插入图片描述

网络就已经就绪了

在这里插入图片描述

  1. 网络安全设置

创建安全组(可选)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建用于云主机登陆的密钥对

在这里插入图片描述
在这里插入图片描述

注意:创建好密钥后会自动下载,需要妥善保管,完成后就不能再下载了

  1. 发布云主机
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 35
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

-风中叮铃-

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

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

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

打赏作者

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

抵扣说明:

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

余额充值