版本说明
先电版本:v2.4操作系统:CentOS 7.5 1804IaaS 版本:OpenStack Queens v3.4.15PaaS 版本:
Docker Engine:19.03.13Docker Compose:1.25.5Kubernetes:1.18.1
前言
本帖的安装环境为 虚拟机,使用版本为 VMware Workstation Pro 16若使用真实 服务器 搭建需配合三层交换机使用,请自行更改网卡等参数,下面有详细的注释
本帖仅涉及云计算 OpenStack 先电版基础搭建内容,内容与最新改革试点赛 ChinaSkills(国基北盛)版一致,更多有关完整部署、实战、运维内容请参考其他作者的优秀文章
镜像如何下载详见评论区
一、硬件环境
1. 网卡
2. 配置
Controller 节点: Compute节点: 所有节点处理器开启虚拟化:
注: 内存 和 处理器 根据个人而定,硬盘容量建议 250G 以上;此处计算节点的 第二块硬盘 是给 Cinder 和 Swift 服务预留的,最小化部署可先不加;两台虚拟机处理器需要开启 虚拟化 功能;真实 服务器 请根据实际情况作出调整,且需要配合交换机使用。
二、系统安装
1. 加载镜像
CentOS-7-x86_64-DVD-1804.iso
下载镜像:CentOS 官方开源镜像站
2. 选择安装软件包
默认最小化安装
3. 磁盘配置
选择手动配置 点击自动创建 删除 /home 用户分区 将可用空间最大化分配给 / 根分区
友情提示:可参考左下角 Available Space 数值。
接受更改
4. 其它安装前配置
语言:英语(US) 时区:中国/上海 KDUMP:关闭
三、配置 CentOS
1. 更改主机名
Controller 节点:
hostnamectl set-hostname controller
bash
Compute 节点:
hostnamectl set-hostname compute
bash
注:更改完主机名后在执行部署脚本前请 重启 环境,否则 RabbitMQ 服务可能会报错导致部署失败。(重要)
2. 配置网卡
节点名称内部 IP 地址(网卡1)外部 IP 地址(网卡2 )子网掩码网关controller192.168.100.10192.168.200.1024192.168.100.1compute192.168.100.20192.168.200.2024192.168.100.1
vi /etc/sysconfig/network-scripts/ifcfg-<网卡名> # 修改配置文件命令
Controller 节点:
## ens32(网卡1)
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.100.10
PREFIX=24
GATEWAY=192.168.100.1
## ens33(网卡2)
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.200.10
PREFIX=24
Compute 节点:
## ens32(网卡1)
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.100.20
PREFIX=24
GATEWAY=192.168.100.1
## ens33(网卡2)
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.200.10
PREFIX=24
注:服务器 自行对照更改参数 。
所有节点上执行:
systemctl restart network # 重启网卡使配置生效
3. 基础配置
所有节点上执行:
关闭防火墙和SELINUX
systemctl disable --now firewalld
sed -i "7c SELINUX=disabled" /etc/selinux/config
setenforce 0
添加解析记录
echo "192.168.100.10 controller" >> /etc/hosts
echo "192.168.100.20 compute" >> /etc/hosts
4. 配置 YUM 源
所有节点上执行:
rm -rf /etc/yum.repos.d/* # 删除原有官方源
Controller 节点:
上传镜像:
CentOS-7-x86_64-DVD-1804.iso XianDian-IaaS-v2.4.iso
挂载镜像:
## 挂载镜像至 /opt 目录
mkdir -p /opt/centos /opt/iaas
mount -o loop CentOS-7-x86_64-DVD-1804.iso /opt/centos
mount -o loop XianDian-IaaS-v2.4.iso /opt/iaas
配置本地源:
vi /etc/yum.repos.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
安装并配置 FTP 服务器:
rpm -ivh /opt/centos/Packages/vsftpd-3.0.2-22.el7.x86_64
echo "anon_root=/opt" >> /etc/vsftpd/vsftpd.conf
systemctl enable --now vsftpd
建立本地缓存:
yum makecache
Compute 节点:
配置 FTP 源:vi /etc/yum.repos.d/ftp.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
建立本地缓存:yum makecache
友情提示:您可以在此处创建关于 初始环境 的快照,以缓解在实验学习中经常遇到报错需要重搭的问题
四、部署 IaaS 私有云
1. 安装并配置先电软件包
所有节点上执行:
yum install -y iaas-xiandian vim # 安装先电软件包
Controller 节点:
vim /etc/xiandian/openrc.sh # 修改配置文件命令
变量名称变量的值HOST_IP192.168.100.10HOST_PASS000000HOST_NAMEcontrollerHOST_IP_NODE192.168.100.20HOST_PASS_NODE000000HOST_NAME_NODEcomputenetwork_segment_IP192.168.100.0/24RABBIT_USERopenstackRABBIT_PASS000000DB_PASS000000DOMAIN_NAMEdemoADMIN_PASS000000DEMO_PASS000000KEYSTONE_DBPASS000000GLANCE_DBPASS000000GLANCE_PASS000000NOVA_DBPASS000000NOVA_PASS000000NEUTRON_DBPASS000000NEUTRON_PASS000000METADATA_SECRET000000INTERFACE_IP192.168.100.10(填入对应节点IP,这里很容易出错,看注释)INTERFACE_NAMEens33(计算节点的第二块网卡名)Physical_NAMEprovider(默认)minvlan101(默认)maxvlan200(默认)CINDER_DBPASS000000CINDER_PASS000000BLOCK_DISKsdb1SWIFT_PASS000000OBJECT_DISKsdb2STORAGE_LOCAL_NET_IP192.168.100.20HEAT_DBPASS000000HEAT_PASS000000ZUN_DBPASS000000ZUN_PASS000000KURYR_DBPASS000000KURYR_PASS000000CEILOMETER_DBPASS000000CEILOMETER_PASS000000AODH_DBPASS000000AODH_PASS000000BARBICAN_DBPASS000000BARBICAN_PASS000000
注:NTERFACE_IP这里填入对应节点的IP地址,如果是控制节点的配置文件则填入192.168.100.10,如果是计算节点的配置文件则填入192.168.100.20。
Compute 节点:
scp root@controller:/etc/xiandian/openrc.sh /etc/xiandian # 从控制节点拷贝变量配置文件
sed -i "69c INTERFACE_IP=192.168.100.20" /etc/xiandian/openrc.sh # 此条命令对应上面的注释
所有节点上执行:
source /etc/xiandian/openrc.sh # 使环境变量生效
2. 执行官方安装脚本
所有节点上执行:
iaas-pre-host.sh
Controller 节点:
iaas-install-mysql.sh
iaas-install-keystone.sh
iaas-install-glance.sh
iaas-install-nova-controller.sh
iaas-install-neutron-controller.sh
iaas-install-dashboard.sh
Compute 节点:
iaas-install-nova-compute.sh
iaas-install-neutron-compute.sh
注:控制节点脚本全部运行完毕后再运行计算节点脚本,不要同时进行,如果遇到报错请检查是否缺漏执行脚本。
四、最小化部署完成
浏览器访问:http://192.168.100.10/dashboard
五、创建云主机环境
下面的内容包含 IaaS 私有云基础运维,实际生产环境中一般使用图形界面代替命令操作
虚拟机环境需要在 Compute 节点执行下面的命令: (重要)## 更改配置文件并重启 nova-compute 服务
crudini --set /etc/nova/nova.conf libvirt virt_type qemu
systemctl restart libvirtd.service openstack-nova-compute.service
注:这里的两条命令是为了解决 虚拟机 环境下的 QEMU模拟器错误 导致云主机无法使用的问题,旧版本先电v2.2不存在此问题,真实 服务器 请忽略。
1. 创建镜像
glance image-create --name "CentOS7.5" --disk-format qcow2 --container-format bare --progress < /opt/iaas/images/CentOS_7.5_x86_64_XD.qcow2
2. 创建网络和子网
创建外部网络:
注:若使用 虚拟机 搭建,外部网络类型请选择Flat;若使用 服务器 搭建,外部网络类型请选择VLAN;注意不要重复执行命令,二选一执行。
虚拟机openstack network create ext-net --provider-network-type flat --provider-physical-network provider --external
服务器openstack network create ext-net --provider-network-type vlan --provider-physical-network provider --provider-segment 1 --external
创建外部网络参数解读:
参数用法--provider-network-type<供应商网络类型>--provider-physical-network<供应商物理设备名>注:创建Flat VLAN网络类型时需要--provider-segment<段 ID> 注:创建VLAN GRE VXLAN Geneve网络类型时需要--external外部网络
注:参数的含义带有<>时,需要在此参数后面跟上对应的值。
创建内部网络:
openstack network create int-net1 --provider-network-type vxlan --provider-segment 1
openstack network create int-net2 --provider-network-type vxlan --provider-segment 2
创建子网:
外部网络
openstack subnet create ext-subnet --network ext-net --gateway 192.168.200.1 --subnet-range 192.168.200.0/24 --allocation-pool start=192.168.200.100,end=192.168.200.200 --dhcp
内部网络
openstack subnet create int-subnet1 --network int-net1 --gateway 10.0.0.1 --subnet-range 10.0.0.0/24 --dhcp
openstack subnet create int-subnet2 --network int-net2 --gateway 10.0.1.1 --subnet-range 10.0.1.0/24 --dhcp
创建子网参数解读:
参数用法--network<网络名>--gateway<网关地址>--subnet-range<网络地址>--allocation-poolstart=<始IP>,end=<尾IP>--dhcp开启 DHCP 服务
3. 创建路由
创建路由
openstack router create ext-router
绑定外部网络
openstack router set ext-router --external-gateway ext-net
连接内部网络子网
openstack router add subnet ext-router int-subnet1
4. 创建安全组和规则
创建安全组,名称为 all
openstack security group create all
创建规则
openstack security group rule create --ingress --protocol tcp all
openstack security group rule create --ingress --protocol udp all
openstack security group rule create --ingress --protocol icmp all
openstack security group rule create --egress --protocol tcp all
openstack security group rule create --egress --protocol udp all
openstack security group rule create --egress --protocol icmp all
注:创建安全组后请手动删除自带的两条规则,另外不要尝试删除默认安全组 default,否则会报错导致安全组功能不可用。
5. 创建云主机
注:下面的一些命令固定了 IP 地址,可自行更换但需注意地址冲突问题。
创建实例类型:
名称ID内存硬盘vCPU数master112G100G6个node28G100G4个
注:vCPU数根据实际情况而定,内存和硬盘是官方操作手册规定的,物理资源不够可适当缩减。
nova flavor-create master 1 12288 100 6
nova flavor-create node 2 8192 100 4
命令格式:nova flavor-create <名字> < ID > <内存> <硬盘容量> < vcpu 数量>
创建云主机:
nova boot --image CentOS7.5 --flavor 1 --nic net-name=int-net1,v4-fixed-ip=10.0.0.3 --security-groups all --poll master
nova boot --image CentOS7.5 --flavor 2 --nic net-name=int-net1,v4-fixed-ip=10.0.0.4 --security-groups all --poll node
创建云主机参数解读:
参数用法--image<镜像名>--flavor<实例类型ID>--nic
openstack floating ip create ext-net --floating-ip-address 192.168.200.104
openstack floating ip create ext-net --floating-ip-address 192.168.200.105
绑定浮动IP地址至云主机:
openstack server add floating ip master 192.168.200.104
openstack server add floating ip node 192.168.200.105
六、附录
上面的内容您都学会了吗?下面的技巧可能会对您有所帮助。
1. 一键部署脚本
如果您在学习实验中经常遇到报错导致平台崩溃,推荐使用作者编写的一键部署脚本
2020 ~ 2022 云计算先电 2.4(私有云 IaaS 最小化部署 + 创建PaaS实验云主机环境)Shell 一键部署脚本模板
2. 虚拟机管理器添加控制节点
虚拟机管理器资源不够用怎么办?我们可通过下面的方法将控制节点主机加入到虚拟机管理器资源中,以解决本地环境资源不足的问题。
请在 Controller 控制节点进行如下操作:
更改变量配置文件信息 vim /etc/xiandian/openrc.sh
变量名称变量的值HOST_IP_NODE192.168.100.10HOST_PASS_NODE000000HOST_NAME_NODEcontroller
执行命令 ## 使变量配置文件生效
source /etc/xiandian/openrc.sh
## 执行 nova-compute 脚本
iaas-install-nova-compute.sh
## 更改配置文件并重启 nova-compute 服务
crudini --set /etc/nova/nova.conf libvirt virt_type qemu
systemctl restart libvirtd.service openstack-nova-compute.service
最终效果:
七、推广
每次安装完系统后如何快速更换国内软件源?推荐使用下面的一键换源脚本
GNU/Linux 一键更换系统软件源脚本