涨了一个大教训,以后如果有官方准备的安装说明文档就再也不看网上的安装教程了。很多步骤的细节都不说明白,导致一直报错,作者也不提醒。

基础环境-主机准备

OpenStack云平台搭建需要两个节点,一个是controller(控制节点),另一个是compute(计算节点)。

名称 IP地址 主机名称 备注
控制节点 192.168.146.150 controller 最小4G,开启虚拟化
计算节点 192.168.146.200 compute1 最小2G,开启虚拟化

controller(控制节点)

主机安装

我没有截图标注的部分直接下一步。

image-20250108195647601

image-20250108195733468

image-20250108200006319

image-20250108200024404

image-20250108200035684

image-20250108200156324

image-20250108200437838

image-20250108200604120

image-20250108202418908

image-20250108200727741

image-20250108200821337

image-20250108202506210

此设置是为了修改网卡命名规则为eth规则

image-20250108202612173

之后按上下箭头选中Install CentOS 7,不要按回车,随后按下tab键。

按下空格,输入如下指令后,按回车键。

1
net.ifnames=0 biosdevname=0

之后进入图形化安装界面:

image-20250108203222232

image-20250108203329247

image-20250108203415595

image-20250108203459938

image-20250108205645888

image-20250108205739323

image-20250108205818666

image-20250108205937549

如果输入的密码比较短的话,这里要点击两次完成:

image-20250108205954270

等待下面这个进度条结束之后点击重启

image-20250108210416469

重启之后使用root登录

image-20250108212021905

修改主机名

1
2
3
hostnamectl set-hostname controller
bash
hostname

image-20250109180325082

修改第一块网卡

首先打开虚拟机的虚拟网络编辑器,记住子网掩码和网关。

image-20250110112850428再查看一下IP范围

image-20250110112940219

修改主机ip地址

1
vi /etc/sysconfig/network-scripts/ifcfg-eth0

在IP地址和子网掩码部分,子网掩码就是虚拟机net模式的子网掩码,IP地址就是在IP范围内的随意数即可。

image-20250110144143023

保存退出后,重启网卡,使网卡生效。

1
systemctl restart network

发现报错,查看一下报错信息

image-20250109175108548

这个报错的原因是配置文件中MAC与当前网卡MAC不一致,只需要修改一下配置文件即可。

通过ip a命令查看mac地址是00:0c:29:bc:d2:97

image-20250109175452426

然后在配置文件中加入这一行(如果存在的话只修改就可以)

1
HWADDR=00:0c:29:bc:d2:97

这时候再重启就没问题了

image-20250109175800342

修改第二块网卡

同样,查看主机模式的IP掩码和IP范围,主机模式可以不用设置网关。

image-20250109200754419

image-20250110152831681

1
vi /etc/sysconfig/network-scripts/ifcfg-eth0

这里的IP地址要跟主机模式在同一个网段。

image-20250109200710910

别忘记设置网卡MAC地址HWADDR=00:0c:29:bc:d2:a1

image-20250109193103326

重启网络服务。

1
systemctl restart network

创建ssh连接

开启sshd服务并更改默认配置文件。

1
2
systemctl enable sshd
vi /etc/ssh/sshd_config

可能需要更改的地方:

1
2
3
Port=22  设置SSH的端口号是22(默认端口号为22)
PermitRootLogin yes 设置为yes是允许root用户登陆
ClientAliveInterval 60 服务器发送保持活动消息的时间间隔,不希望ssh无操作断连太快就改大一点,比如改成60

如果找不到这些配置的话,vi有个查找快捷键,进入管理模式,使用/进行查找,然后回车就行。

重启sshd服务,使配置生效。

1
service sshd restart

开启防火墙端口

1
firewall-cmd --zone=public --add-port=22/tcp --permanent  

这样就能使用连接ssh了。

如果你的ssh连接也报WARNING!The remote SSH server rejected X11 forwarding request.这个错误,那可能是因为没有下载xorg-x11-xauth 的rpm包。在完成1.3yum换源之后,可以下载该包解决此问题。

1
yum -y install xorg-x11-xauth

设置hosts文件

1
vi /etc/hosts

添加如下内容:

1
192.168.146.200 compute1

compute计算节点

compute节点与controller节点基础环境及安装系统大致相同,可参考controller节点配置,以下是稍有不同的地方。

image-20250109214859648

image-20250109215414205

image-20250109215437139

image-20250109215506457

image-20250110095136222

修改主机名

1
2
3
hostnamectl set-hostname controller
bash
hostname

image-20250110101139519

修改网卡

1
vi /etc/sysconfig/network-scripts/ifcfg-eth0

image-20250110143231171

第二块网卡

1
vi /etc/sysconfig/network-scripts/ifcfg-eth1

image-20250110143308094

重启网卡

1
systemctl restart network

image-20250110103137641

创建ssh连接

1
2
3
4
5
6
#更改默认配置文件。
vi /etc/ssh/sshd_config
#重启sshd服务,使配置生效。
service sshd restart
#开启防火墙端口
firewall-cmd --zone=public --add-port=22/tcp --permanent

这样就能使用工具连接ssh了。

设置hosts文件

1
vi /etc/hosts

添加如下内容:

1
192.168.146.150 controller

yum换源

删除系统自带yum所有源配置文件

1
rm -f /etc/yum.repos.d/*

获取阿里源的配置文件

1
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

文件内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

清理yum缓存,并生成新的缓存

1
2
yum clean all
yum makecache

更新yum源检查是否生效

1
yum -y update

时间同步

控制节点

下载安装chrony

1
yum -y install chrony

修改配置文件/etc/chrony.conf

1
vi /etc/chrony.conf

添加server NTP_SERVER iburst,将NTP_SERVERNTP_SERVER替换成time1.aliyun.com

1
2
3
server time1.aliyun.com iburst
#修改allow
allow 192.168.146.0/24

保存并退出后,输入如下命令:

1
2
3
#启动并加入开机自启
systemctl enable chronyd.service
systemctl start chronyd.service

image-20250113215300673

计算节点

下载安装chrony

1
yum -y install chrony

修改配置文件/etc/chrony.conf

1
vi /etc/chrony.conf

编辑/etc/chrony.conf 文件并注释除server 值外的所有内容

1
server controller iburst

保存并退出后输入如下命令:

1
2
3
#启动并加入开机自启
systemctl enable chronyd.service
systemctl start chronyd.service

image-20250110155143151

验证操作

输入命令

1
chronyc sources

控制节点将显示

image-20250113215341470

计算节点将显示

image-20250113215405852

安装通用软件包

计算节点和控制节点都要进行如下操作。

先禁用防火墙和selinux(永久禁用)。

1
2
3
4
5
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
getenforce
vi /etc/selinux/config

编辑配置文件如下所示:

image-20250110165646713

OpenStack包

在CentOS中, extras仓库提供用于启用 OpenStack 仓库的RPM包。

1
2
3
4
5
6
7
8
9
10
# 安装用于启用OpenStack仓库的包。
yum install -y https://buildlogs.centos.org/centos/7/cloud/x86_64/openstack-liberty/centos-release-openstack-liberty-1-3.el7.noarch.rpm
# 安装 centos-release-openstack-liberty
yum install -y centos-release-openstack-liberty
#在主机上升级包
yum -y upgrade
# 安装 OpenStack 客户端
yum install -y python-openstackclient
# RHEL和 CentOS 默认启用 SELinux 。安装 openstack-selinux 包实现对OpenStack服务的安全策略进行自动管理
yum install -y openstack-selinux

安装rabbitmq消息队列

安装包:

1
yum install -y rabbitmq-server

启动消息队列服务并将其配置为随系统启动:

1
2
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

验证端口是否存在

1
netstat -lntp|grep 5672

添加 openstack 用户:

1
rabbitmqctl add_user openstack RABBIT_PASS

用合适的密码替换 RABBIT_DBPASS

openstack用户配置写和读权限:

1
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

安装监控插件

1
rabbitmq-plugins enable rabbitmq_management

检查端口查看是否开启

1
netstat -tnulp|grep 15672

开启之后可以访问rabbitmq web管理界面http://192.168.168.150:15672.

image-20250114164646844

SQL数据库

控制节点安装软件包

1
yum install -y mariadb mariadb-server MySQL-python

创建并编辑 /etc/mysql/conf.d/mariadb_openstack.cnf,然后在 [mysqld] 部分,设置 bind-address值为控制节点的管理网络IP地址以使得其它节点可以通过管理网络访问数据库:

1
2
3
4
5
6
7
8
[mysqld]
bind-address = 192.168.146.200
default-storage-engine = innodb
innodb_file_per_table = on
collation-server = utf8_general_ci
max_connections = 4096
init-connect = 'SET NAMES utf8'
character-set-server = utf8

启动数据库服务,并将其配置为开机自启:

1
2
3
4
systemctl enable mariadb.service
systemctl start mariadb.service
#查看端口验证
netstat -tnulp|grep 3306

执行脚本来对数据库进行安全加固。

1
2
3
#跳坑
mysql_secure_installation
#输入回车-Y-输入密码-Y-Y-Y-Y