1. OpenStack部署介绍
OpenStack是一个开源的云操作系统平台,它由一系列相互关联的服务组成,这些服务共同构建了一个完整的云基础设施,提供了虚拟机、网络、存储、身份认证等功能,使用户能够轻松部署和管理云计算资源。由于开源的OpenStack平台不提供高可用,负载均衡,容灾,告警,监控,日志等服务,且界面粗糙,部署难度较大,一般用户不会采用这种方式部署,因此很多的厂商都会基于它再进行二次开发,增加对自家虚拟化平台的驱动和接口,集群,日志等一系列的功能,且客户在购买后还能得到来自厂家的部署以及维护服务。目前,市面上有很多种OpenStack的部署方式:
- DevStack:适用于开发和测试的快速部署脚本。DevStack会在单个节点上安装所有的OpenStack组件,并通常用于学习和开发目的。
- Packstack:如前面介绍的,Packstack是由Red Hat提供的自动化部署工具,适用于CentOS和RHEL等RPM包管理的Linux发行版。
- TripleO(OpenStack on OpenStack):TripleO允许在虚拟机或裸金属服务器上部署OpenStack。它使用OpenStack自身作为管理平台来部署和配置OpenStack。
- Kolla:Kolla使用Docker容器来部署OpenStack服务,简化了安装和升级过程,并提供了一种轻量级的部署方式。
- Charms:适用于Ubuntu的Juju Charm工具,它可以通过编排方式来自动化部署和管理OpenStack服务。
- 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.9 | 4vCPUS/8G 50G硬盘 | 192.168.100.49/24 | openstack | Stein |
3. 部署过程
- 修改centos系统的主机名
[root@localhost ~]# hostnamectl set-hostname openstack
- 设置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
- 添加主机hosts记录
[root@openstack ~]# echo "192.168.100.49 openstack" >> /etc/hosts
#验证修改结果
[root@openstack ~]# more /etc/hosts
- 设置本机SSH免密码登录
#生成ssh密钥
[root@openstack ~]# ssh-keygen
#添加密钥信息到~./ssh/know_hosts文件
[root@openstack ~]# ssh-copy-id root@192.168.100.49
- 关闭服务
关闭防火墙
[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
- 安装常用软件
[root@openstack ~]# yum -y install vim bash-completion yum-utils
- 安装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
- 安装packstack工具
[root@openstack ~]# yum -y install openstack-packstack
- 安装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
- 查看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
- 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: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
- 错误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. 发放主机
- 上传制作好的镜像
如果制作的镜像对处理器架构,磁盘和内存有要求,也可以将这些内容填进去(可选),某些厂商的云平台中,磁盘和内容要求是必选项。
创建实例规格,实例规格就是资源分配的模板
系统有一些默认的,也可以自定义
- 创建租户,并修改配额(限制租户使用的资源)
创建用户并关联给租户
- 网络设置
公网用于和外界通信,这里的公网使用了宿主机的网段(宿主机可以连接wifi上网),在共有云中,公网的IP就是真实可上网的地址,需要花钱购买(也就是浮动IP)
私网用于租户内部之间通信,可以由用户自行分配,且数量不限
路由器用于连接公网和私网,如果内部主机想要上网,需要通过路由器来进行转发
创建公网
在管理员界面下修改网络
进入租户的账户(user01),创建私有网络后,再创建路由器
增加路由器接口
网络就已经就绪了
- 网络安全设置
创建安全组(可选)
创建用于云主机登陆的密钥对
注意:创建好密钥后会自动下载,需要妥善保管,完成后就不能再下载了
- 发布云主机