【经验分享】私有云搭建的知识点

最近忙于备考没关注,有次点进某小黄鱼发现首页出现了我的笔记还被人收费了

虽然我也卖了一些资源,但我以交流、交换 为主,笔记都是免费 给别人看的

由于当时刚刚接触写的并不成熟,为了避免更多人花没必要的钱,所以决定公开出来

欢迎各位大佬指正文章内容

1,修改主机名

应用场景:

在linux中,默认主机名为localhost,为方便区分,通常需要将其修改为我们规定的这个主机在项目中扮演的角色

bash 复制代码
hostnamectl set-hostname $hostname

例如:在搭建部分的第一题中,我们的两台主机,Controller节点负责整体的管理和服务控制,而Compute节点则负责实际的计算资源管理和虚拟机实例的运行,二者共同构成一个完整的OpenStack环境,为了方便我们后续运维(因为实际环境不可能只有两台主机),我们需要修改主机名对各个主机进行区分

plain 复制代码
Controller节点:
Controller节点是OpenStack环境中的核心节点,负责管理整个OpenStack环境的各种服务。
它通常承担以下一些主要角色和功能:
1,Keystone(身份认证服务):负责用户、服务和终端的认证、授权和访问控制。
2,Glance(镜像服务):负责管理虚拟机镜像。
3,Nova(计算服务):负责管理虚拟机实例。
4,Neutron(网络服务):负责提供网络服务和管理网络资源。
5,Cinder(块存储服务):负责提供持久化块存储服务。
6,Swift(对象存储服务):负责提供分布式对象存储服务。
7,Horizon(仪表板):提供Web界面用于OpenStack服务的管理和监控。

Compute节点:
Compute节点负责实际的计算资源和虚拟机实例的运行
它通常承担以下一些主要角色和功能:
1,Nova Compute:负责管理和运行虚拟机实例。
2,Neutron Agent:负责处理网络功能,如路由、防火墙和负载均衡等。
3,Cinder Volume:负责连接到块存储设备并提供块存储卷。

2,修改hosts文件映射主机名

hosts文件的作用是映射域名和IP的(前为IP,后为域名)

**作用:**在我们输入域名访问网站时,系统会首先在hosts文件中找,如果找到我们访问的域名,就访问hosts中域名对应的ip,没有的话再去DNS服务器查询ip,避免频繁向DNS服务器查询域名解析

注意:添加hosts文件时,没有位置的要求,只需要在任意位置起一行,添加即可

bash 复制代码
vi /etc/hosts

以下是添加方式,以ip 192.168.100.10为例
192.168.100.10 controller # 如果我们输入了controller,就会在hosts匹配到这个ip

3,配置yum源

这里配置yum源,如果跟着前面配置了文件服务器,可以直接用文件服务器的链接

应用场景:

yum 是一个包管理器,用于管理软件包的安装、更新和删除,yum源 位于 /etc/yum.repos.d/ 下的 .repo 文件中

由于centos起源于国外,因此我们访问不到它的官方源(访问到也很慢),所以需要配置yum源

3.1,先切换到存放yum源的目录,把系统自带的源删除(反正也用不了)

shell 复制代码
[root@controller ~]# cd /etc/yum.repos.d  
[root@controller yum.repos.d]# rm -rf ./* 

3.2,配置yum源

[centos] Yum源配置节,就是用来区分的多个yum源的,如果一个文件只有一个yum源可省略

name=centos名称为"centos"

enabled=1启用此yum源

gpgcheck=0禁用GPG检查(也就是禁止软件包安装时对软件包的数字签名进行验证)

baseurl= 基础 URL ,可设置能以任何方式访问到的软件仓库http协议、file协议、ftp协议...

我们在本地练习的时候

controller使用的就是file协议(使用本地仓库)

`compute``使用的就是ftp协议(远程使用controller的仓库)

关于这个baseurl(比赛时直接复制仓库链接粘贴即可):

shell 复制代码
[centos] 		
name=centos
enabled=1
gpgcheck=0
baseurl=粘贴仓库链接至此
[iaas]	
name=iaas
enabled=1
gpgcheck=0
baseurl=粘贴仓库链接至此
shell 复制代码
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.tuna.tsinghua.edu.cn/help/CentOS-7-Base-163.repo

验证:

shell 复制代码
yum clean all && yum repolist	

4,配置ssh免密钥登陆

应用场景:

在实际环境中,通常都是内网主机之间交互,如果每个都需要密码,在机房中运维上会有很多没必要的麻烦,配置了免密钥就可以直接相互通信

shell 复制代码
ssh-keygen
# 过程中会提示输入保存路径和密码短语生成私钥
#(我们不用管,直接全部回车跳过)
shell 复制代码
ssh-copy-id compute
# 这个compute必须在hosts文件中配置好
# 如果没配置hosts文件要直接写ip

# 需要输入目标主机的密码(默念输入,不会回显)

验证:

shell 复制代码
ssh 'compute'
看主机名变化 (这就是要修改主机名的原因)

CTRL + D 退出回到我们当前主机

从这里开始就要开始搭建OpenStack平台了

5,基础安装

安装openstack-iaas(这个是内部提供的)

修改配置文件,位于 /etc/openstack/openrc.sh,这个配置文件陈列了我们后续所有服务需要的参数

修改文件的技巧:

技巧一:

先按ctrl+v

然后 shift+g #选中每行的第一个字符

再delete # 删除每行前1个字符(#号)

真正的注释有2个#,参数只有1个#,删了就可以开始改了

技巧二:

输入 :%s/PASS=/PASS=000000

这句命令的意思是,将PASS=全部替换为PASS=000000


手动添加:

除了下列参数,其余全部按照exmple后面跟的填写

(不用刻意记,空着的没几个了,混个眼熟就行)

shell 复制代码
参数一:填写自己的controller节点的ip
#Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.25.100		

参数二:填写自己的compte节点的ip
#Compute Node Manager IP. example:x.x.x.x

HOST_IP_NODE=192.168.25.200   

参数三:填写自己设置的网段
#Controller network segment IP.  example:x.x.0.0/16(x.x.x.0/24)

network_segment_IP=192.168.25.0/24	

参数四:填写demo
#Password for Keystore admin user. exmaple:000000
DOMAIN_NAME=demo
ADMIN_PASS=000000
DEMO_PASS=000000

参数五:填写第二张网卡,有的可能是ens34
#External Network Interface. example:eth1

INTERFACE_NAME=eth1

参数六:这个有的是vdb1,2,3,后面分盘时有如何看
#Cinder Block Disk. example:md126p3
BLOCK_DISK=sdb1
#The NODE Object Disk for Swift. example:md126p4.
OBJECT_DISK=sdb2
#The NODE Object Disk for Manila. example:md126p5.
SHARE_DISK=sdb3

参数七:填写计算节点ip
#The NODE IP for Swift Storage Network. example:x.x.x.x.

STORAGE_LOCAL_NET_IP=192.168.25.200	

执行基础安装脚本

shell 复制代码
iaas-pre-host.sh

执行完毕后, CTRL + D 退出断开远程工具连接,按 ENTER 重连即可刷新

如果没有用远程工具,那么输入 reboot 命令重启


记录一个比赛时节约时间的手法:

在controller节点

shell 复制代码
输入
iaas-install- 
按两下tab
将用到的所有脚本复制下来,按下面一键运行
iaas-install-mysql.sh && iaas-install-keystone.sh && iaas-install-neutron.sh && ...自行补齐.

在compute节点

shell 复制代码
cat /usr/local/bin/iaas-*compute.sh | grep yum
然后将列出来的所有命令复制并执行
由于只是安装软件,所以不存在controller节点没安装完成而报错的情况

6,数据库安装与调优

数据库用法不在这里写,主要是调优,数据库也只需要在控制节点安装

安装:

shell 复制代码
iaas-install-mysql.sh

mariadb部分,配置文件位于:/etc/my.cnf,直接添加下面五个参数就行(直接起一行添加即可)

本题需要记参数,如果不想记参数,按以下三条命令搜索一下,再结合题目的要求自己找

shell 复制代码
show variables like 'lower%';
show variables like 'innodb_buffer_%';
show variables like 'innodb_log%';
shell 复制代码
# 只要不破坏已有的内容,随便写哪里都行
lower_case_table_names=1		# 数据库支持大小写
innodb_buffer_pool_size=4G	# 设置数据库缓存
innodb_log_buffer_size=64MB	# 设置数据库的 log buffer
innodb_log_file_size=256MB	# 设置数据库的 redo log 大小
innodb_log_files_in_group=2	# 设置数据库的 redo log 文件组

memcached部分,配置文件位于:/etc/sysconfig/memcached,修改两个,添加一个(这个是需要记的)

shell 复制代码
MAXCONN="2048"  		#自带的,直接修改为题目要求大小
CACHESIZE="512"			#自带的,直接修改为题目要求大小
hash_algorithm=md5	#添加

7,keystone安装与使用

Keystone是一个开源的身份认证服务,主要用于用户 、服务 和终端的认证 、授权 和访问控制。

用于管理和保护云计算环境中各种资源的访问。因此只需要在控制节点安装

安装与使用:

shell 复制代码
# 安装
iaas-install-keystone.sh
# 使用
source /etc/keystone/admin-openrc.sh

在题目中,要求我们使用openstack创建用户,那么在此之前就需要keystone服务进行认证,不然我们没法使用openstack

接下来是对openstack创建用户的命令详解:

简单来说,openstack创建命令必要的几个参数

openstack create $(资源类型) $(定义名字) $(指明属于哪个资源)

shell 复制代码
接下来,根据赛题,将一步一步使用命令
1,创建域【域是最高层资源,因此只需指明名字】
openstack domain create 210Demo

2,创建组【需要指明属于哪个域】
openstack group create devops --domain 210Demo

3,创建项目【需要指明属于哪个域】
openstack project create Production --domain 210Demo
openstack project create Engineering --domain 210Demo

4,创建用户【需要指明属于哪个项目、哪个域】
# 在参数比较多的话,可以用 \ 换行写,方便检查
openstack user create Robert \
--Project Production \
--domain 210Demo \
--email Robert@example.com

openstack user create George \
--Project Engineering \
--domain 210Demo \
--email George@example.com

openstack user create William \
--Project Production \
--domain 210Demo \
--email William@example.com
shell 复制代码
这几条命令目的都一样
都是将某个用户加入到某个项目的某个角色

如:第一条是将Robert加入到Engineering 的成员角色
openstack role add \
--user Robert \
--project Engineering member

# 是将Robert加入到Engineering 的管理员角色
openstack role add \
--user Robert \
--project Engineering admin 

openstack role add \
--user George \
--project Engineering member

openstack role add \
--user William \
--project Production member

openstack role add \
--user william \
--project Production admin

8,Glance 安装与使用

镜像服务,主要用于管理虚拟机镜像;通过 Glance 服务,可以方便地管理和共享虚拟机镜像,提高虚拟机实例的创建效率

shell 复制代码
iaas-install-glance.sh

【了解】

裸金属服务(Bare Metal Service)是一种云计算服务模式,允许用户直接在物理服务器上运行虚拟化或容器化的工作负载,而无需使用虚拟化层。"coreos_production_pxe.vmlinuz" 是一个 CoreOS 生产环境 PXE 镜像,用于在 OpenStack Ironic 裸金属服务中部署操作系统

shell 复制代码
openstack image create deploy-vmlinuz \
--container-format aki < coreos_production_pxe.vmlinuz 
# aki 表示 Amazon Kernel Image 格式,适用于包含内核的镜像
# 通常用于启动 EC2 实例或裸金属服务器。

记录一个题目:

shell 复制代码
openstack image create \
--container-format bare \
--disk-format qcow2 \
--file cirros-0.3.4-x84_64-disk.img \
--min-disk 10 \
--min-ram 1024 \
cirros

9,Nova 安装与优化

Nova负责实现虚拟机和裸金属服务器的调度、启动、暂停、迁移和终止等操作

通过Nova服务,可以轻松地创建、销毁和管理虚拟机实例,以满足各种计算需求,还可以实现弹性扩展和自动化操作

shell 复制代码
Controller:
iaas-install-placement.sh
iaas-install-nova-controller.sh
Compute:
iaas-install-nova-compute.sh

将调度器设置为缓存调度器(caching_scheduler)并启用 scheduler_caching 来开启缓存功能

修改配置文件:/etc/nova/nova.conf

shell 复制代码
scheduler_driver = caching_scheduler
scheduler_caching = True

10,Neutron 安装

Neutron是OpenStack中的网络服务组件,它负责管理和提供网络连接和服务。

Neutron主要用于为虚拟机实例和其他资源创建、配置和管理网络,以便它们能够互相通信和访问外部网络。

shell 复制代码
iaas-install-neutron-controller.sh   
iaas-install-neutron-compute.sh 

11,Dashboard 安装

OpenStack项目的官方Web用户界面

shell 复制代码
iaas-install-dashboard.sh

提示一个搜索技巧:

进入vim或vi编译器的适合,在命令模式下输入/$str即可搜索指定字符,按一下n就是继续向下搜索

shell 复制代码
vim /etc/openstack-dashboard/local_settings
# 改为false就是成功了
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = False	
shell 复制代码
vim /etc/openstack-dashboard/local_settings
SESSION_ENGINE = 'django.contrib.sessions.backends.file'

需要重启httpd生效

12,Swift 安装

对象存储服务,用于存储和检索大规模的非结构化数据

通过 Swift,用户可以创建容器并在其中存储和组织对象

shell 复制代码
controller:
iaas-install-swift-controller.sh 

compute:  
iaas-install-swift-compute.sh
shell 复制代码
controller节点:
导入环境变量
source /etc/keystone/admin-openrc.sh
创建容器
swift post examcontainer
查看容器列表
openstack container list

上传镜像到容器,并分段保存
swift upload \
-S 10M examcontainer cirros-0.3.4-x86_64-disk.img

13,Cinder 创建硬盘

注意:这个必须等controller安装完才能安装compute节点

块存储服务,提供了虚拟机实例和其他计算资源所需的持久化块存储,可以方便地创建、管理和使用块存储卷。

具体有:块存储管理 卷快照 扩展性和弹性 多租户支持 高可用性和故障转移

shell 复制代码
iaas-install-cinder-controller.sh
iaas-install-cinder-compute.sh

如果说分盘分了sdb4没有显示出来,可以重新生效一下partprobe

shell 复制代码
# pvcreate命令用于创建物理卷
pvcreate /dev/sdb4

# vgextend命令用于向现有卷组添加一个或多个物理卷
# 这里将 /dev/sdb4 添加到名为 cinder-volumes 的卷组中
vgextend cinder-volumes /dev/sdb4

# vgs命令用于显示系统中所有的卷组信息
vgs

14,配置主机禁 ping

就是让主机ping不通(但不是不能连)

shell 复制代码
vim /etc/sysctl.conf

# sysctl 是一个命令行实用程序
# 用于在运行时动态地修改内核参数
sysctl -p

如下:现在主机就ping不通了
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.icmp_echo_ignore_all = 1

检查openstack

openstack-service status,都是active则为正常

相关推荐
聪明的笨猪猪11 小时前
企业知识库AI架构选型:落地导向的架构决策与组件清单
经验分享·面试·架构·embedding·数据库架构
Go Work12 小时前
两个等值条件摆着,MySQL 偏要全表扫
经验分享·笔记
深圳智根网络程序开发17 小时前
WordPress固定链接怎么设?改不对谷歌收录直接崩
经验分享
德思特18 小时前
如何提升 5G 移动性切换验证效率?德思特 Amarisoft Callbox 新增 NR SA LTM 测试功能详解
经验分享·无线通信·车载通信
虹科数字化与AR20 小时前
农业机械AR质检ROI怎么算?从搬运、测量、返工和交付成本入手
经验分享·ar·质检·农业机械
聪明的笨猪猪1 天前
Java 工程案例:AI 生成 @Async 异步线程池踩坑
java·经验分享·面试·ai编程
仓库日记2 天前
Excel进销存何时该换?用3项检查判断是否需要软件
经验分享·excel·进销存·开单软件
AI工具挖掘机2 天前
开源!2个Skill复刻带货视频、图文和Live,做百号矩阵
经验分享
虹科网络安全2 天前
Redis Radar:在统一视图中掌握 Redis 部署、健康与容量
经验分享·redis·艾体宝·艾体宝it·艾体宝redis
聪明的笨猪猪2 天前
实际工程问题:AI 生成 Spring Cache(@Cacheable / @CachePut / @CacheEvict)缓存注解踩坑
java·经验分享·面试·ai编程