私有云平台搭建——史上最详细_私有云平台架构分为哪些部门
ztj100 2025-10-02 11:34 2 浏览 0 评论
简单介绍
私有云平台搭建是指在企业或组织内部构建和管理自己的云计算环境
核心组件
包括虚拟化层、管理平台、存储系统、网络虚拟化模块和自动化工具等。其中,虚拟化层如 KVM、VMware ESXi 可实现硬件资源抽象化;管理平台如 OpenStack、Proxmox 能统一管理计算、存储、网络资源
本章的私有云搭建使用openstack平台
实验环境
VMware-CentOS 7
openstack
实验步骤
1.创建两块网卡
一块连外网
一块连内网
2.修改主机名和host文件
vim /etc/hostname
ypt
vim /etc/hosts
192.168.1.1 ypt #内网IP与主机名对应
3.关闭防火墙和SELinux
systemctl stop firewalld
vim /etc/selinux/config
disabled
4.挂载OpenStack和cdrom,安装OpenStack客户端
(1)挂载OpenStack源,这里用的是阿里云的镜像源
[openstack]
name=openstack
baseurl=https://mirrors.aliyun.com/centos-vault/7.2.1511/cloud/x86_64/openstack-mitaka/
enabled=1
gpgcheck=0
(2)安装OpenStack客户端
yum -y install python-openstackclient
5.安装MySQL
(1)安装MySQL
yum -y install mariadb mariadb-server python2-PyMySQL
#安装如果出问题运行rpm -e mariadb-libs --nodeps
(2)配置 MySQL 服务
vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.1.80 #bind-address 是安装 mysql 的机器的 IP 地址
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
(3)启动MySQL服务,加入开机启动项,查看状态
systemctl enable mariadb
systemctl start mariadb
systemctl status mariadb
(4)初始化数据库
mysql_secure_installation
(5)安装NoSQL 数据库 MongoDB 软件包
yum -y install mongodb-server mongodb
(6)编辑MongoDB配置文件
vim /etc/mongod.conf
bind_ip = 192.168.1.80
smallfiles = true
(7)设置 MongoDB 开机启动,并启动 MongoDB
systemctl enable mongod
systemctl start mongod
systemctl status mongod
6.安装消息队列服务(RabbitMQ)、 缓存服务(memcached)
(1)安装配置 RabbitMQ
yum -y install rabbitmq-server
(2)设置 RabbitMQ 开机启动,并启动服务
systemctl enable rabbitmq-server
systemctl start rabbitmq-server
(3)增加 openstack 用户,密码自己设置
rabbitmqctl add_user openstack 123
(4)给新增的用户授权,没有授权的用户将不能接受和传递消息
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
(5)重启RabbitMQ服务
systemctl restart rabbitmq-server.service
(6)安装 memcached
yum -y install memcached python-memcached
(7)配置 memcached 开启启动,并启动 memcached 服务
systemctl enable memcached
systemctl start memcached
7.部署认证服务
1.登录MySQL数据库,创建 keystone 数据库,设置授权用户和密码
mysql -u root -p
create database keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123';
show databases;
2.生成 admin_token 的随机值
openssl rand -hex 10
bfa6c88c791f35783b6a
3.安装软件包
yum -y install openstack-keystone httpd mod_wsgi
4.编辑/etc/keystone/keystone.conf 文件
vim /etc/keystone/keystone.conf
[DEFAULT] #13行左右
...
admin_token = bfa6c88c791f35783b6a #修改为刚才生成的随机令牌
[database] #549行左右
...
connection = mysql+pymysql://keystone:123@192.168.199.130/keystone #配置数据库连接
[token] #2005行左右
...
provider = fernet #设置fernet方式
5.同步 keystone 数据库
keystone-manage db_sync
6.查看 MySQL 数据, 验证表是否创建成功
mysql -u keystone -p
show databases;
use keystone
show tables;
7.初始化 Fernet keys
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
8.编辑/etc/httpd/conf/httpd.conf
vim /etc/httpd/conf/httpd.conf
ServerName ypt #ServerName 为主机名,95行左右
9.生成 wsgi 配置文件/etc/httpd/conf.d/wsgi-keystone.conf
cp /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/ #复制模板
cat /etc/httpd/conf.d/wsgi-keystone.conf
10.设置 HTTP 开机启动,并启动 HTTP 服务
systemctl enable httpd.service
systemctl start httpd.service
11.查看 Keystone 服务端口,35357、5000
netstat -lntup |grep http
8.创建 Service、 endpoint、 domain、 projects、 users和 roles
1.加载环境变量
export OS_TOKEN=bfa6c88c791f35783b6a #设置 OS_TOKEN 为之前创建的随机值
export OS_URL=http://192.168.199.130:35357/v3 #设置 endpoint
export OS_IDENTITY_API_VERSION=3 #设置 Identity API 版本
2.创建 keystone 的 service
openstack service create --name keystone --description "OpenStack Identity" identity
3.创建 Keystone 的 endpoint
#创建公共用户endpoint
openstack endpoint create --region RegionOne identity public http://192.168.199.130:5000/v3
#创建私有用户endpoint
openstack endpoint create --region RegionOne identity internal http://192.168.199.130:5000/v3
#创建admin用户endpoint
openstack endpoint create --region RegionOne identity admin http://192.168.199.130:35357/v3
4.查看服务列表和 endpoint 列表
openstack service list
openstack endpoint list
5.创建 domain、projects、users和roles
(1)创建domain
openstack domain create --description "Default Domain" default
(2)创建 admin 项目
openstack project create --domain default --description "Admin Project" admin
(3)创建 admin 用户
openstack user create --domain default --password-prompt admin
User Password:
Repeat User Password:
(4)创建 admin 角色
openstack role create admin
6.将 admin 角色添加到 admin 项目和 admin 用户中
openstack role add --project admin --user admin admin
7.创建一个服务项目, 包含每个服务的一个用户
openstack project create --domain default --description "Service Project" service
8.创建一个非管理的演示项目和用户(demo)
(1)创建 demo 项目
openstack project create --domain default --description "Demo Project" demo
(2)创建 demo 用户
openstack user create --domain default --password-prompt demo
User Password:
Repeat User Password:
(3)创建 user 角色
openstack role create user
(4)将 user 角色添加到 demo 项目和 demo 用户中
openstack role add --project demo --user demo user
9.在安装其他服务之前,验证 keystone 操作
vim /etc/keystone/keystone-paste.ini
[pipeline:public_api] #51行
移除 admin_token_auth
[pipeline:admin_api] #56
移除 admin_token_auth
[pipeline:api_v3] #61
移除 admin_token_auth
10.取消临时环境文件 OS_TOKEN 和 OS_URL
unset OS_TOKEN OS_URL
11.测试 admin 用户请求 token
openstack --os-auth-url http://172.16.1.11:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name
admin --os-username admin token issue
12.创建 openstack 客户端环境脚本
(1)创建 admin 用户环境文件脚本 admin
vim admin
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123
export OS_AUTH_URL=http://192.168.199.130:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
(2)创建 demo 用户环境文件脚本 demo
vim demo
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=123
export OS_AUTH_URL=http://192.168.199.130:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
(3)加载 admin 文件,然后请求 token
. admin
openstack token issue
. demo
openstack token issue
注:
(1)Keystone 命令不能成功执行, 报Internal Server Error (HTTP 500)
解决方法:删除/var/log/keystone/keystone.log 文件
rm -rf /var/log/keystone/keystone.log
(2)创建 endpoint 时偶尔出现 500 错误,偶尔出现正常情况
解决方法:重启操作系统---重启后需要重新加载环境变量
9.部署镜像服务
1.创建 Glance 数据库
mysql -u root -p
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123';
show databases;
2.加载 admin 文件
. admin
openstack user create --domain default --password-prompt glance
User Password:
Repeat User Password:
3.将 admin 角色增加到 service 项目中 glance 用户上
openstack role add --project service --user glance admin
4.创建 glance 服务
openstack service create --name glance --description "OpenStack Image" image
5.创建镜像服务 endpoint
openstack endpoint create --region RegionOne image public http://192.168.199.130:9292
openstack endpoint create --region RegionOne image internal http://192.168.199.130:9292
openstack endpoint create --region RegionOne image admin http://192.168.199.130:9292
6.安装 Glance
yum -y install openstack-glance
7.配置 Glance
·编辑/etc/glance/glance-api.conf 文件
vim /etc/glance/glance-api.conf
(1)修改数据库连接
[database] #641行左右
...
connection = mysql+pymysql://glance:123@192.168.199.130/glance
(2)配置服务认证信息
[keystone_authtoken] #1112行左右
auth_uri = http://192.168.199.130:5000
auth_url = http://192.168.199.130:35357
memcached_servers = 192.168.199.130:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = 123
[paste_deploy] #1685行左右
...
flavor = keystone
(3)配置镜像本地文件存储
[glance_store] #734行左右
...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/ #1026行左右
·编辑/etc/glance/glance-registry.conf 文件
vim /etc/glance/glance-registry.conf
(1)修改数据库连接
[database] #382行左右
...
connection = mysql+pymysql://glance:123@192.168.199.130/glance
(2)配置服务认证信息
[keystone_authtoken] #836行左右
auth_uri = http://192.168.199.130:5000
auth_url = http://192.168.199.130:35357
memcached_servers = 192.168.199.130:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = 123
[paste_deploy]
...
flavor = keystone #1391行左右
8.填充镜像服务数据库
su -s /bin/sh -c "glance-manage db_sync" glance
9.查看数据库验证填充命令是否成功
mysql -u root -p
show databases;
use glance
show tables;
10.设置镜像服务开机启动,并启动服务
systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service
systemctl status openstack-glance-api.service openstack-glance-registry.service
11.验证镜像服务
(1)加载 admin 用户环境文件
. admin
(2)FTP上传镜像到虚拟机中
(3)上传测试镜像到glance
openstack image create "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public
格式:openstack image create "镜像名称" --file Linux识别的镜像名称 --disk-format qcow2 --container-format bare --public
(4)查看镜像列表
openstack image list
qemu-img info
10.制作镜像
一:在镜像服务器(另外一台虚拟机)上新建虚拟机
1.创建新的虚拟机安装镜像
使用virt-manager创建centos7
2.建立镜像文件
qemu-img create -f qcow2 centos7.qcow2 10G
二:登录服务器
1.镜像服务器连接到新建虚拟机中
ssh root@192.168.1.111
2.新建虚拟机安装ACPI服务
yum install acpid
3.新建虚拟机配置ACPI服务开机启动
systemctl enable acpid
4.新建虚拟机安装cloud-init包
yum install cloud-init
5.新建虚拟机禁用默认的zeroconf route
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
6.新建虚拟机编辑/etc/default/grub文件
vi /etc/default/grub
(1)删除rhgb quiet
(2)添加console=tty0 console=ttyS0,115200n8
7.关闭虚拟机
shutdown -h now
8.镜像服务器上清除虚拟机MAC地址信息
virt-sysprep -d centos7
(1)安装libguestfs-tools
9.镜像服务器上取消虚拟机定义
virsh undefine centos7
10.镜像服务器复制镜像到Glance服务器(搭载云平台的虚拟机)
scp centos7.qcow2 root@172.16.1.11:/root
11.登录云平台,并加载admin用户环境
ssh root@172.16.1.11
.admin
12.在云平台上传镜像
glance image-create --name "centos7" --file centos7.qcow2 --disk-format qcow2 --container-format bare --visibility public --progress
相关推荐
- Linux集群自动化监控系统Zabbix集群搭建到实战
-
自动化监控系统...
- systemd是什么如何使用_systemd/system
-
systemd是什么如何使用简介Systemd是一个在现代Linux发行版中广泛使用的系统和服务管理器。它负责启动系统并管理系统中运行的服务和进程。使用管理服务systemd可以用来启动、停止、...
- Linux服务器日常巡检脚本分享_linux服务器监控脚本
-
Linux系统日常巡检脚本,巡检内容包含了,磁盘,...
- 7,MySQL管理员用户管理_mysql 管理员用户
-
一、首次设置密码1.初始化时设置(推荐)mysqld--initialize--user=mysql--datadir=/data/3306/data--basedir=/usr/local...
- Python数据库编程教程:第 1 章 数据库基础与 Python 连接入门
-
1.1数据库的核心概念在开始Python数据库编程之前,我们需要先理解几个核心概念。数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它就像一个电子化的文件柜,能让我们高效...
- Linux自定义开机自启动服务脚本_linux添加开机自启动脚本
-
设置WGCloud开机自动启动服务init.d目录下新建脚本在/etc/rc.d/init.d新建启动脚本wgcloudstart.sh,内容如下...
- linux系统启动流程和服务管理,带你进去系统的世界
-
Linux启动流程Rhel6启动过程:开机自检bios-->MBR引导-->GRUB菜单-->加载内核-->init进程初始化Rhel7启动过程:开机自检BIOS-->M...
- CentOS7系统如何修改主机名_centos更改主机名称
-
请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1.前言本文将讲解CentOS7系统如何修改主机名。...
- 前端工程师需要熟悉的Linux服务器(SSH 终端操作)指令
-
在Linux服务器管理中,SSH(SecureShell)是远程操作的核心工具。以下是SSH终端操作的常用命令和技巧,涵盖连接、文件操作、系统管理等场景:一、SSH连接服务器1.基本连接...
- Linux开机自启服务完全指南:3步搞定系统服务管理器配置
-
为什么需要配置开机自启?想象一下:电商服务器重启后,MySQL和Nginx没自动启动,整个网站瘫痪!这就是为什么开机自启是Linux运维的必备技能。自启服务能确保核心程序在系统启动时自动运行,避免人工...
- Kubernetes 高可用(HA)集群部署指南
-
Kubernetes高可用(HA)集群部署指南本指南涵盖从概念理解、架构选择,到kubeadm高可用部署、生产优化、监控备份和运维的全流程,适用于希望搭建稳定、生产级Kubernetes集群...
- Linux项目开发,你必须了解Systemd服务!
-
1.Systemd简介...
- Linux系统systemd服务管理工具使用技巧
-
简介:在Linux系统里,systemd就像是所有进程的“源头”,它可是系统中PID值为1的进程哟。systemd其实是一堆工具的组合,它的作用可不止是启动操作系统这么简单,像后台服务...
- Linux下NetworkManager和network的和平共处
-
简介我们在使用CentoOS系统时偶尔会遇到配置都正确但network启动不了的问题,这问题经常是由NetworkManager引起的,关闭NetworkManage并取消开机启动network就能正...
你 发表评论:
欢迎- 一周热门
-
-
MySQL中这14个小玩意,让人眼前一亮!
-
旗舰机新标杆 OPPO Find X2系列正式发布 售价5499元起
-
面试官:使用int类型做加减操作,是线程安全吗
-
C++编程知识:ToString()字符串转换你用正确了吗?
-
【Spring Boot】WebSocket 的 6 种集成方式
-
PyTorch 深度学习实战(26):多目标强化学习Multi-Objective RL
-
pytorch中的 scatter_()函数使用和详解
-
与 Java 17 相比,Java 21 究竟有多快?
-
基于TensorRT_LLM的大模型推理加速与OpenAI兼容服务优化
-
这一次,彻底搞懂Java并发包中的Atomic原子类
-
- 最近发表
-
- Linux集群自动化监控系统Zabbix集群搭建到实战
- systemd是什么如何使用_systemd/system
- Linux服务器日常巡检脚本分享_linux服务器监控脚本
- 7,MySQL管理员用户管理_mysql 管理员用户
- Python数据库编程教程:第 1 章 数据库基础与 Python 连接入门
- Linux自定义开机自启动服务脚本_linux添加开机自启动脚本
- linux系统启动流程和服务管理,带你进去系统的世界
- CentOS7系统如何修改主机名_centos更改主机名称
- 前端工程师需要熟悉的Linux服务器(SSH 终端操作)指令
- Linux开机自启服务完全指南:3步搞定系统服务管理器配置
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)
- vmware17pro最新密钥 (34)
- mysql单表最大数据量 (35)