文章目录
Openstack介绍
OpenStack 是一个开源的云计算管理平台 。你可以把它理解为一套用来构建和运营"云"的操作系统,就像 Windows 或 Linux 管理一台电脑的资源一样,OpenStack 则负责管理数据中心里成千上万台服务器、存储设备和网络设备。
它通过软件将所有物理硬件(计算、存储、网络)抽象成一个巨大的资源池。用户不再需要关心底层的物理设备,而是通过一个网页界面(Dashboard)或 API 就可以按需申请和使用虚拟机、存储空间等资源,就像使用自来水或电力一样方便。
关键组件:构建云服务的"积木
OpenStack 最大的特点之一是模块化(Modular),它由许多独立的服务组件构成,你可以像搭积木一样按需选择和组合。
这些核心组件通常包括:
| 组件名称 | 项目代号 | 主要功能 |
|---|---|---|
| 计算服务 | Nova | 负责虚拟机的整个生命周期管理,如创建、调度、销毁,是云的核心"发动机"。 |
| 网络服务 | Neutron | 提供云环境的网络连接服务,可以创建私有网络、路由器、防火墙等。 |
| 镜像服务 | Glance | 存储和管理虚拟机启动所需的镜像模板文件。 |
| 身份认证服务 | Keystone | 为所有 OpenStack 服务提供统一的认证和授权管理,是云平台的"守门人"。 |
| 块存储服务 | Cinder | 为虚拟机提供持久化的块存储设备,类似于给服务器挂载一块新硬盘。 |
| 控制面板 | Horizon | 提供基于 Web 的图形化管理界面,方便管理员和用户操作。 |
环境
安全
内存设置
内存大小设为4GB

内核数量
2核,启用虚拟化

添加网卡

其他
修改主机名,配置时间同步,关闭防火墙,关闭selinux
主机网络
配置网络接口
关闭NetworkManager
bash
[root@controller ~]# systemctl disable --now NetworkManager
将第一个接口配置为管理网络接口
bash
[root@controller ~]# cd /etc/sysconfig/network-scripts/
[root@controller network-scripts]# vim ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.117.131
PREFIX=24
GATEWAY=192.168.117.2
DNS1=114.114.114.114
供者网络接口使用一个特殊的配置,不分配给它IP地址。配置第二块网卡作为提供者网络
bash
[root@controller network-scripts]# mv ifcfg-eth0 ifcfg-eth1
[root@controller network-scripts]# vim ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
NAME=eth1
DEVICE=eth1
ONBOOT=yes
[root@controller network-scripts]# systemctl restart network
配置域名解析
bash
[root@controller ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.117.131 controller
192.168.117.132 compute1
192.168.117.133 block1
Openstack包
启用Openstack库
bash
[root@controller ~]# ls
anaconda-ks.cfg mitaka.tar
[root@controller ~]# tar xf mitaka.tar -C /opt/
[root@controller ~]# cd /opt/mitaka/
[root@controller mitaka]# ls
...
repodata
...
完成安装
配置yum源
bash
[root@controller ~]# vim /etc/yum.repos.d/openstack.repo
[openstack]
name=mitaka
baseurl=file:///opt/mitaka
gpgcheck=0
在主机上升级包
bash
[root@controller ~]# yum upgrade
如果更新了一个新内核,重启主机来使用新内核
bash
[root@controller ~]# reboot
安装 OpenStack 客户端
bash
[root@controller ~]# yum install python-openstackclient
SQL数据库
安装软件包
bash
[root@controller ~]# yum install mariadb mariadb-server python2-PyMySQL
创建并编辑 /etc/my.cnf.d/openstack.cnf
bash
[root@controller ~]# vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.117.131
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
启动数据库服务,并将其配置为开机自启
bash
[root@controller ~]# systemctl enable --now mariadb.service
为了保证数据库服务的安全性,运行mysql_secure_installation脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码
bash
[root@controller ~]# mysql_secure_installation
Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
消息队列
安装包
bash
[root@controller ~]# yum install rabbitmq-server
启动消息队列服务并将其配置为随系统启动
bash
[root@controller ~]# systemctl enable --now rabbitmq-server.service
添加 openstack 用户
bash
[root@controller ~]# rabbitmqctl add_user openstack openstack
给openstack用户配置写和读权限
bash
[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
开启数据库
bash
[root@controller ~]# rabbitmq-plugins enable rabbitmq_management
[root@controller ~]# netstat -antlp | grep 15672
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 1744/beam.smp
用户名:guest
密码:guest

查看权限授予

Memcached
安装软件包
bash
[root@controller ~]# yum install memcached python-memcached
启动Memcached服务,并且配置它随机启动
bash
[root@controller ~]# systemctl enable --now memcached.service
修改监听端口
bash
[root@controller ~]# vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
[root@controller ~]# systemctl restart memcached.service
[root@controller ~]# netstat -antlp | grep 11211
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 9059/memcached
tcp6 0 0 :::11211 :::* LISTEN 9059/memcached