说明
- 先电版本:v2.4
- 操作系统:CentOS7.5 1804
- IaaS版本:Openstack Queens v3.4.15
- 此教程的安装环境为 VMware虚拟机
- 若使用 服务器 搭建请自行更改网卡等参数,下面有详细的注释
- 本人使用的虚拟机是最新版VMware Workstation Pro 16
- 虚拟机创建等基础的东西就不在这写了
附:如果你在学习实验中经常遇到报错导致平台崩溃,推荐使用本人编写的一键部署脚本
2020云计算先电2.4(最小化+云主机环境)一键部署Shell脚本模板
一、硬件环境
1.网卡
2.配置
Controller节点:
Compute节点:
- 处理器开启虚拟化:
注: 内存 和 处理器 根据个人而定,硬盘容量250G以上;此处计算节点的 第二块硬盘 是给
Cinder
和Swift
服务预留的,最小化部署可先不加;两台虚拟机处理器一定要开启 虚拟化 功能。
二、安装CentOS
1.加载镜像
- CentOS-7-x86_64-DVD-1804.iso
2.软件选择
- 默认最小化安装
3.磁盘配置
- 选择手动配置
- 点击自动创建
- 将
/home
用户分区删除
- 根据左下角数值将可用空间最大化分配给
/
根分区
- 接受更改
4.其它配置
时区:
中国/上海
KDUMP:关闭
主机名:controller/compute
三、配置CentOS
1.更改主机名
- Controller 节点:
hostnamectl set-hostname controller
bash
- Compute 节点:
hostnamectl set-hostname compute
bash
注:更改完主机名后一定要 重启 ,否则
RABBIT
会报错。(重要)
2.基础配置
- 所有节点上执行:
1)配置防火墙和SELINUX
systemctl disable --now firewalld
setenforce 0
2)添加解析记录
echo "192.168.100.10 controller" >> /etc/hosts
echo "192.168.100.20 compute" >> /etc/hosts
3.上传镜像至 /root 目录
- 上传镜像至Controller 节点
CentOS-7-x86_64-DVD-1804.iso
XianDian-IaaS-v2.4.iso
4.挂载镜像至 /opt 目录
- Controller 节点:
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
5.配置网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-xxx
节点 | 网卡 1 IP地址 | 网卡 2 IP地址 |
---|---|---|
controller | 192.168.100.10 | 192.168.200.10 |
compute | 192.168.100.20 | 192.168.200.20 |
-
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
6.配置YUM源
- 所有节点:
rm -rf /etc/yum.repos.d/* #删除原有官方源
-
Controller 节点:
#touch /etc/yum.repos.d/local.repo #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
-
Compute 节点:
#touch /etc/yum.repos.d/ftp.repo #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
7.安装并配置FTP服务器
- Controller 节点:
yum install -y vsftpd
echo "anon_root=/opt" >> /etc/vsftpd/vsftpd.conf
systemctl enable --now vsftpd
8.安装并配置先电软件包
- 所有节点上执行:
yum install -y iaas-xiandian #安装先电软件包
- Controller 节点配置变量:
vi /etc/xiandian/openrc.sh
名称 | 值 |
---|---|
HOST_IP | 192.168.100.10 |
HOST_PASS | 000000 |
HOST_NAME | controller |
HOST_IP_NODE | 192.168.100.20 |
HOST_PASS_NODE | 000000 |
HOST_NAME_NODE | compute |
network_segment_IP | 192.168.100.0/24 |
RABBIT_USER | openstack |
RABBIT_PASS | 000000 |
DB_PASS | 000000 |
DOMAIN_NAME | demo |
ADMIN_PASS | 000000 |
DEMO_PASS | 000000 |
KEYSTONE_DBPASS | 000000 |
GLANCE_DBPASS | 000000 |
GLANCE_PASS | 000000 |
NOVA_DBPASS | 000000 |
NOVA_PASS | 000000 |
NEUTRON_DBPASS | 000000 |
NEUTRON_PASS | 000000 |
METADATA_SECRET | 000000 |
INTERFACE_IP | 192.168.100.10 (填入对应节点IP,看注释) |
INTERFACE_NAME | ens33 (计算节点的第二块网卡名) |
Physical_NAME | provider (默认) |
minvlan | 101 (默认) |
maxvlan | 200 (默认) |
CINDER_DBPASS | 000000 |
CINDER_PASS | 000000 |
BLOCK_DISK | sdb1 |
SWIFT_PASS | 000000 |
OBJECT_DISK | sdb2 |
STORAGE_LOCAL_NET_IP | 192.168.100.20 |
HEAT_DBPASS | 000000 |
HEAT_PASS | 000000 |
ZUN_DBPASS | 000000 |
ZUN_PASS | 000000 |
KURYR_DBPASS | 000000 |
KURYR_PASS | 000000 |
CEILOMETER_DBPASS | 000000 |
CEILOMETER_PASS | 000000 |
AODH_DBPASS | 000000 |
AODH_PASS | 000000 |
BARBICAN_DBPASS | 000000 |
BARBICAN_PASS | 000000 |
注:
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 #使环境变量生效
四、执行先电官方脚本
-
所有节点上执行:
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
注:控制节点脚本全部运行完毕后再运行计算节点脚本,不要同时进行。
五、最小化部署完成
六、创建云主机环境
- VMware虚拟机环境需要在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.创建网络和子网
- 创建外部网络:
#虚拟机
openstack network create ext-net --provider-physical-network provider --provider-network-type flat --external
#服务器
openstack network create ext-net --provider-network-type vlan --provider-physical-network provider --provider-segment 1 --external
注:若使用 虚拟机 搭建,外部网络类型请选择
Flat
;若使用 服务器 搭建,外部网络类型请选择VLAN
。
- 创建外部网络参数解读:
网络参数 | 含义用法 |
---|---|
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 | <网关IP地址> |
subnet-range | <网络地址> |
allocation-pool | <start=始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.创建云主机
- 创建实例类型:
名称 | ID | 内存 | 硬盘 | VCPU数 |
---|---|---|---|---|
master | 1 | 12G | 100G | 6个 |
node | 2 | 8G | 100G | 4个 |
注: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 | <net-name=网络名>,<v4-fixed-ip=固定IP地址> |
security-groups | <安全组名> |
poll | 显示进度 |
- 创建浮动IP:
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
注:上面的一些命令固定了IP地址,可自行更改。
七、附录
- 上面的内容你都学会了吗?下面的技巧可能会对你有所帮助。
1.一键部署脚本
- 如果你在学习实验中经常遇到报错导致平台崩溃,推荐使用本人编写的一键部署脚本
2.虚拟机管理器添加主机
- VMware环境下虚拟机管理器资源不够用怎么办?
- 我们可通过下面的方法将控制节点主机加入到虚拟机管理器资源中,添加计算节点主机操作类似。
- 在控制节点进行如下操作:
1.更改变量配置文件信息
vi /etc/xiandian/openrc.sh
名称 | 值 |
---|---|
HOST_IP_NODE | 192.168.100.10 |
HOST_PASS_NODE | 000000 |
HOST_NAME_NODE | controller |
2.执行命令
#使变量配置文件生效
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
- 最终效果:
如果您觉得这篇帖子不错的话可以在左下角点个赞👍吗?感谢!
若有问题欢迎在下方评论留言 (∩_∩)