云计算赛项学习————OpenStack 平台搭建

news2024/11/15 11:24:13

PS: 原创作品,严禁用于商业目的。如有任何技术问题,欢迎和我交流:w104118078  (微信号)

一、基础环境准备

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

控制节点(controller)规划如下:

        一块200G的硬盘。两块网卡,第一块网卡(桥接模式)IP地址使用192.168.100.100,第二块网卡(仅主机模式)IP地址使用192.168.200.100

计算节点(compute)规划如下:

        一块200G的硬盘和一块100G的硬盘。两块网卡,第一块网卡(桥接模式)IP地址使用192.168.100.200,第二块网卡(仅主机模式)IP地址使用192.168.200.200。

PS:  在VMware中将仅主机模式的DHCP服务关闭,并将网络分配地址更改为192.168.200.0        255.255.255.0

云平台搭建需要使用centos7.0版本的镜像和chinaskills_cloud_iaas.iso镜像,镜像提供如下:

centos7.0镜像链接:https://pan.baidu.com/s/1v0xOq7N6WSofosa7AEMb-A?pwd=chjx

iaas镜像链接:https://pan.baidu.com/s/1stR_BCNPUEYrIrOpzjItAA?pwd=chjx 


二、搭建OpenStack云平台

controller节点配置:

## 1.controller 网络配置

[root@controller ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
DNS1=233.5.5.5
DNS2=114.114.114.114
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=4933c159-8fcb-4646-a29f-6b5c8b4e79f
DEVICE=ens33
ONBOOT=yes

[root@controller ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.200.100
NETMASK=255.255.255.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34
UUID=932fef43-d94a-4a84-9b3f-428a85af8858
DEVICE=ens34
ONBOOT=yes

## 2.修改主机名

[root@localhost ~]# hostnamectl set-hostname controller

[root@controller ~]# bash 

## 3.修改 hosts 文件将 IP 地址映射为主机名

[root@controller ~] vi /etc/hosts
192.168.100.100 controller
192.168.100.200 compute

## 4.关闭防火墙

[root@controller ~]# systemctl disable firewalld

[root@controller ~]# systemctl stop firewalld

## 5.设置seLinux

SELinux有两个级别:
强制、警告
setenforce 0 :表示警告(Permissive)
setenforce 1 :表示强制(Enforcing)

状态分为以下三种:
SELINUX=enforcing #selinux开启,级别为强制
SELINUX=permissive #selinux开启,级别为警告
SELINUX=disabled #selinux关闭

[root@controller ~]# setenforce 0        # 临时设置等级,重启失效

[root@controller ~]# vi /etc/selinux/conf        #  重启后,永久生效
SELINUX=permissive

## 6.配置Yum源

上传 CentOS 7 ISO镜像文件和iaas ISO镜像文件到controller主机root目录下面

[C:\~]$ scp D:\chinaskills_cloud_iaas.iso root@192.168.200.100:/root

[C:\~]$ scp D:\CentOS-7-x86_64-DVD-1804.iso root@192.168.200.100:/root

[root@controller ~]# ls
anaconda-ks.cfg  CentOS-7-x86_64-DVD-1804.iso  chinaskills_cloud_iaas.iso

挂载镜像到opt目录下(临时挂载,重启失效)

[root@controller ~]# mount -o loop chinaskills_cloud_iaas.iso /opt/iaas/
mount: /dev/loop is write-protected, mounting read-only

[root@controller ~]# mount -o loop CentOS-7-x86_64-DVD-1804.iso /opt/centos/
mount: /dev/loop is write-protected, mounting read-only

——————————————————————————————————————————————————————————————————————————————————————

[root@controller ~]# vi /etc/fstab       # 永久挂载

/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=fda6f1d5-b8c5-4401-a68b-b2ab67ed8370 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

#添加以下内容
#镜像名称								挂载路径			格式		
/root/CentOS-7-x86_64-DVD-1804.iso      /opt/centos     iso9660 defaults        0 0
/root/chinaskills_cloud_iaas.iso        /opt/iaas       iso9660 defaults        0 0

[root@controller ~]# gzip /etc/yum.repo.d/*        # 使原yum源失效

[root@controller ~]# vi /etc/yum.repo.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/iaas/iaas-repo
gpgcheck=0
enabled=1

[root@controller ~]# yum clean all        # 清除yum源缓存

[root@controller ~]# yum repolist        # 验证yum源

## 7.搭建vsftpd

[root@controller ~]# yum install -y vsftpd

[root@controller ~]# echo anon_root=/opt/ >> /etc/vsftpd/vsftpd.conf    # 修改vsftp 共享服务根目录

[root@controller ~]# systemctl enable vsftpd

[root@controller ~]# systemctl start vsftpd

## 8.时间同步配置

[root@controller ~]# yum -y install chrony

[root@controller ~]# vi /etc/chrony.conf        # 修改配置文件

server controller iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.100.0/24
local stratum 10
logdir /var/log/chrony

[root@controller ~]# systemctl restart chronyd        # 重启chrony服务

[root@controller ~]# systemctl enable chronyd         # 设置开机自启动

compute节点配置:

## 1.compute 网络配置

[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.100.200
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
DNS1=233.5.5.5
DNS2=114.114.114.114
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=4933c159-8fcb-4646-a29f-6b5c8b4e79f8
DEVICE=ens33
ONBOOT=yes

[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.200.200
NETMASK=255.255.255.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34
UUID=932fef43-d94a-4a84-9b3f-428a85af8858
DEVICE=ens34
ONBOOT=yes

## 2.修改主机名

[root@localhost ~]# hostnamectl set-hostname compute

[root@compute ~]# bash 

## 3.修改 hosts 文件将 IP 地址映射为主机名

[root@compute ~] vi /etc/hosts
192.168.100.100 compute
192.168.100.200 compute

## 4.关闭防火墙

[root@compute ~]# systemctl disable firewalld

[root@compute ~]# systemctl stop firewalld

## 5.设置seLinux

SELinux有两个级别:
强制、警告
setenforce 0 :表示警告(Permissive)
setenforce 1 :表示强制(Enforcing)

状态分为以下三种:
SELINUX=enforcing #selinux开启,级别为强制
SELINUX=permissive #selinux开启,级别为警告
SELINUX=disabled #selinux关闭

[root@compute ~]# setenforce 0        # 临时设置等级,重启失效

[root@compute ~]# vi /etc/selinux/conf        #  重启后,永久生效
SELINUX=permissive

## 6.配置Yum源

[root@compute ~]# gzip /etc/yum.repo.d/*        # 使原yum源失效

[root@compute ~]# vi /etc/yum.repo.d/local.repo
[centos]
name=centos
baseurl=ftp://controller/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=ftp://controller/iaas/iaas-repo
gpgcheck=0
enabled=1

[root@compute ~]# yum clean all        # 清除yum源缓存

[root@compute ~]# yum repolist        # 验证yum源

## 7.时间同步设置

[root@compute ~]# yum -y install chrony

[root@compute ~]# vi /etc/chrony.conf

server controller iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony

[root@compute ~]# systemctl restart chronyd        # 重启chrony服务

[root@compute ~]# chronyc sources -v
# 结尾显示为 ^* controller  则是同步成功

## 8.设置硬盘分区

[root@compute ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0  200G  0 disk 
sr0              11:0    1  4.2G  0 rom

[root@compute ~]# fdisk /dev/sdb

Command (m for help): n
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-419430399, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-419430399, default 419430399): +25G    # 输入 +25G ,将sdb 硬盘分区1 设置为25G大小

Command (m for help): n
Select (default p): p
Partition number (2-4, default 2): 
First sector (52430848-419430399, default 52430848): 
Using default value 52430848
Last sector, +sectors or +size{K,M,G} (52430848-419430399, default 419430399): +25G    # 
 输入 +20G ,将sdb 硬盘分区2 设置为25G大小
Partition 2 of type Linux and of size 25 GiB is set

Command (m for help): w        # 输入w更新磁盘并退出
The partition table has been altered!

三、正式搭建OpenStack云平台

controller节点配置:

[root@controller ~]# yum install -y iaas-xiandian

[root@controller ~]# vi /etc/xiandian/openrc.sh
命令模式下输入::%s/^#//g                # 将#号去掉

 
#--------------------system Config--------------------##
#Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.100.100        #controller节点的IP地址
 
#Controller HOST Password. example:000000 
HOST_PASS=000000
 
#Controller Server hostname. example:controller
HOST_NAME=controller
 
#Compute Node Manager IP. example:x.x.x.x
HOST_IP_NODE=192.168.100.200        #compute节点的IP地址
 
#Compute HOST Password. example:000000 
HOST_PASS_NODE=000000
 
#Compute Node hostname. example:compute
HOST_NAME_NODE=compute
 
#--------------------Chrony Config-------------------##
#Controller network segment IP.  example:x.x.0.0/16(x.x.x.0/24)
network_segment_IP=192.168.100.0/24        #controller节点所在的网段
 
#--------------------Rabbit Config ------------------##
#user for rabbit. example:openstack
RABBIT_USER=openstack
 
#Password for rabbit user .example:000000
RABBIT_PASS=000000
 
#--------------------MySQL Config---------------------##
#Password for MySQL root user . exmaple:000000
DB_PASS=000000
 
#--------------------Keystone Config------------------##
#Password for Keystore admin user. exmaple:000000
DOMAIN_NAME=demo        
ADMIN_PASS=000000
DEMO_PASS=000000
 
#Password for Mysql keystore user. exmaple:000000
KEYSTONE_DBPASS=000000
 
#--------------------Glance Config--------------------##
#Password for Mysql glance user. exmaple:000000
GLANCE_DBPASS=000000
 
#Password for Keystore glance user. exmaple:000000
GLANCE_PASS=000000
 
#--------------------Nova Config----------------------##
#Password for Mysql nova user. exmaple:000000
NOVA_DBPASS=000000
 
#Password for Keystore nova user. exmaple:000000
NOVA_PASS=000000
 
#--------------------Neturon Config-------------------##
#Password for Mysql neutron user. exmaple:000000
NEUTRON_DBPASS=000000
 
#Password for Keystore neutron user. exmaple:000000
NEUTRON_PASS=000000
 
#metadata secret for neutron. exmaple:000000
METADATA_SECRET=000000
 
#Tunnel Network Interface. example:x.x.x.x
INTERFACE_IP=192.168.100.100        #本机IP地址
 
#External Network Interface. example:eth1
INTERFACE_NAME=ens33
 
#External Network The Physical Adapter. example:provider
Physical_NAME=provider
 
#First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
minvlan=101
 
#Last Vlan ID in VLAN RANGE for VLAN Network. example:200
maxvlan=200
 
#--------------------Cinder Config--------------------##
#Password for Mysql cinder user. exmaple:000000
CINDER_DBPASS=000000
 
#Password for Keystore cinder user. exmaple:000000
CINDER_PASS=000000
 
#Cinder Block Disk. example:md126p3
BLOCK_DISK=sdb1        #compute节点的存储块
 
#--------------------Swift Config---------------------##
#Password for Keystore swift user. exmaple:000000
SWIFT_PASS=000000
 
#The NODE Object Disk for Swift. example:md126p4.
OBJECT_DISK=sdb2        #compute节点的存储块
 
#The NODE IP for Swift Storage Network. example:x.x.x.x.
STORAGE_LOCAL_NET_IP=192.168.100.200    #compute节点的IP地址
 
#--------------------Heat Config----------------------##
#Password for Mysql heat user. exmaple:000000
HEAT_DBPASS=000000
 
#Password for Keystore heat user. exmaple:000000
HEAT_PASS=000000
 
#--------------------Zun Config-----------------------##
#Password for Mysql Zun user. exmaple:000000
ZUN_DBPASS=000000
 
#Password for Keystore Zun user. exmaple:000000
ZUN_PASS=000000
 
#Password for Mysql Kuryr user. exmaple:000000
KURYR_DBPASS=000000
 
#Password for Keystore Kuryr user. exmaple:000000
KURYR_PASS=000000
 
#--------------------Ceilometer Config----------------##
#Password for Gnocchi ceilometer user. exmaple:000000
CEILOMETER_DBPASS=000000
 
#Password for Keystore ceilometer user. exmaple:000000
CEILOMETER_PASS=000000
 
#--------------------AODH Config----------------##
#Password for Mysql AODH user. exmaple:000000
AODH_DBPASS=000000
 
#Password for Keystore AODH user. exmaple:000000
AODH_PASS=000000
 
#--------------------Barbican Config----------------##
#Password for Mysql Barbican user. exmaple:000000
BARBICAN_DBPASS=000000
 
#Password for Keystore Barbican user. exmaple:000000
BARBICAN_PASS=000000

[root@controller ~]# source /etc/xiandian/openrc.sh        # 环境配置生效

[root@controller ~]# scp /etc/xiandian/openrc.sh root@compute:/etc/xiandian/openrc.sh    # 将controller节点的脚本拷贝到compute节点

compute节点配置:

[root@compute ~]# yum install -y iaas-xiandian

[root@compute ~]# vi /etc/xiandian/openrc.sh        # 修改脚本

INTERFACE_IP=192.168.100.200        #本机IP地址

 刷脚本:

controller节点:

  安装OpenStack包,配置域名解析,防火墙和Selinux,安装NTP服务等
​[root@controller ~]# iaas-pre-host.sh         # 刷完脚本后需要重启

PS:注意使用临时挂载的话,controller节点重启后,需要重新挂载yum源

  安装RabbitMQ服务、Mysql、memcahce等
[root@controller ~]# iaas-install-mysql.sh


  安装keystone服务包,创建Keystone数据库,配置数据库连接
[root@controller ~]# iaas-install-keystone.sh

  安装Glance镜像服务包,创建Glance数据库,配置数据库连接
[root@controller ~]# iaas-install-glance.sh

  安装nova
[root@controller ~]# iaas-install-nova-controller.sh

  安装neutron
[root@controller ~]# iaas-install-neutron-controller.sh

  安装Dashboard
[root@controller ~]# iaas-install-dashboard.sh

compute节点:

  安装OpenStack包,配置域名解析,防火墙和Selinux,安装NTP服务等
[root@compute ~]# iaas-pre-host.sh            # 刷完脚本后需要重启

  安装nova
[root@compute ~]# iaas-install-nova-compute.sh

  安装neutron
[root@compute ~]# iaas-install-neutron-compute.sh

四、 登录OpenStack云平台

在浏览器界面输入192.168.100.100/dashboard

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1971136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

getUnlimitedQRCode获取无限制小程序二维码,如何在前端展示

被坑惨了,搞了我好几个小时 nodejs开发服务端,获取微信小程序无限次二维码 getUnlimitedQRCode怎么用的我就不说了,官方文档 小程序官方文档 刚开始出返回的结果是 正确的返回格式应该是 原因是我在请求getUnlimitedQRCode接口时未设置r…

【Android Studio】UI 布局

文章目录 view布局LinearLayout view 在Android开发中,View是一个非常重要的概念,它是所有用户界面组件的基类。View类及其子类构成了Android应用中的用户界面。每个View都占用屏幕上的一个矩形区域,并可以响应用户输入(如触摸、按…

UE5 敌人血条

这样处理就完毕,然后 User Widget 尽可能分成多个进行处理

鸿蒙开发入门指南

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 引言 一、鸿蒙系统概述 1.1 简介 1.2 鸿蒙开发的优势 二、鸿蒙开发环境搭建 2.1 安装鸿蒙DevEco Studi…

机器学习中的关键距离度量及其应用

引言 在当今的数据驱动世界中,机器学习算法扮演着至关重要的角色,它们在图像分类、面部识别、在线内容审核、零售目录优化和推荐系统等多个领域发挥着重要作用。这些算法的核心在于它们能够识别和利用数据之间的相似性。而实现这一点的关键,…

在 Hub 上使用 Presidio 进行自动 PII 检测实验

我们在 Hugging Face Hub 上托管的机器学习 (ML) 数据集中发现了一个引人关注的现象: 包含个人未经记录的私密信息。这一现象为机器学习从业者带来了一些特殊挑战。 在本篇博客中,我们将深入探讨含有一种称为个人识别信息 (PII) 的私密信息的各类数据集,…

965不加班还赚钱,金融科技岗真的绝了!

薪资福利好、稳定有前景、大部分965不加班…… 如果你在观望新机会,金融科技岗的这些特质一定非常吸引人。‍‍‍‍‍‍ 特别是在如今的求职环境中,可观的薪资和稳定的环境已经能够打败90%以上的公司了,更别说金融科技岗的工作强度相比互联…

生产计划问题的不同最优化工具软件求解

一、优化求解软件简介 众所周知,常用的优化工具软件有Lingo、Mathcad和MATLAB。 1. LINGO是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器”,由美国LINDO系统公司(Lindo System Inc.&…

Photoshop 滤镜使用详解(全集 · 2024版)

Photoshop 内置了约 120 多个滤镜 Fitler。 Ps菜单:滤镜 Fitler 滤镜,根据一定的规律和运算规则,改变像素的排列、组合、RGB 值与分布等,从而实现图像的各种特殊、奇妙的效果。 可将滤镜作用于选区、图层、通道、蒙版和智能对象&a…

采购在供应链管理中有什么作用?8个步骤拆解供应链采购流程!

在当今全球化和竞争激烈的商业环境中,供应链管理的重要性日益凸显。采购作为供应链中的关键环节,不仅关系到企业成本控制和利润空间,更是企业战略实施和市场竞争力的重要体现。本文将深入探讨供应链采购流程的各个方面,从需求识别…

CreateCustomShape函数怎么在C++调用,参数需要用SAFEARRAY

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

关于去中心化自治组织DAO

DAO(Decentralized Autonomous Organizations)代表了一种变革性的治理和组织管理方法,利用区块链技术创建透明、民主和自我管理的实体。通过自动化决策过程并减少对传统等级结构的依赖,DAO使各种社区团体能够共同管理资源、项目和…

技术分享 | 自动化测试中如何高效定位元素?

在自动化测试中,元素定位是一项非常重要的工作。良好的元素定位可以帮助测试人员处理大量的测试用例,加快测试进度,降低工作负担。但是在实际的测试工作中,我们常常遇到各种各样的定位问题,比如元素定位失败、元素选择…

【数学建模】评价类模型:优劣解距离法

【数学建模】评价类模型:优劣解距离法 目录 【数学建模】评价类模型:优劣解距离法 1:前言 2:算法 1. 将原始矩阵正向化(统一为极大型) 2. 正向矩阵标准化(消除量纲) 3. 计算得分并归一化 3:例题 4&#xff1a…

【C++】学习笔记——C++的类型转换

文章目录 二十三、C的类型转换1. C语言中的类型转换2. C类型转换static_castreinterpret_castconst_castdynamic_cast 未完待续 二十三、C的类型转换 1. C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配&#x…

书单 | 大模型的书那么多,如何快速选到适合自己的那一本?来,教你!

大模型的书这么多,该怎么选呢? 本期书单就来教大家怎么快速地从众多大模型书中选到你想要的那一本! 大模型基础 大模型入门不可错过的一本书,就是这本大模型界的经典畅销书**《大规模语言模型》**!系统性强&#xf…

Excel函数基础(二)

1、单元格名称 框选单元格(不含标题),公式选项卡->定义名称, 或者框选单元格后,在左上角的栏位直接输入要定义的名字,按下enter键即可 这样在使用函数时,数据范围参数可以用定义的名称来替…

4款翻译软件分享,告别职场困境

作为一名初入职场的新人,我经常会遇到各种需要翻译的文件,从合同到项目报告,再到专业资料,无一不考验着我的语言能力。幸运的是,我遇到了几款超级给力的翻译软件——福昕翻译在线、福昕翻译客户端、海鲸AI翻译和deepl翻…

Python | Leetcode Python题解之第310题最小高度树

题目: 题解: class Solution:def findMinHeightTrees(self, n: int, edges: List[List[int]]) -> List[int]:if n 1:return [0]g [[] for _ in range(n)]deg [0] * nfor x, y in edges:g[x].append(y)g[y].append(x)deg[x] 1deg[y] 1q [i for …

太厉害了,使用WebGL SDK居然可以添加这么多图层!

想象一下,你在网页上展示一张地图,不仅有基本的点、线、面,还能叠加三维模型、高分辨率影像、地形数据,甚至实时的车辆轨迹。这听起来是不是很酷?今天,我们就来聊聊如何用Mapmost WebGL SDK,轻松…