国赛先电 Openstack 部署
第一部分:IaaS 云计算基础架构平台
环境要求
- 系统 CentOS-7-x86_64
- 节点 数量 2
- 控制节点 Controller
- 计算节点 Compute
- 软件 XianDian-IaaS-v2.2
任务一、IaaS 云平台搭建
基础环境
使用命令行方式设置主机名,防火墙以及 SELinux 设置如下:
要求
- 设置控制节点主机名 controller;计算节点主机名:compute。
- 各个节点关闭防火墙,设置开机不启动。
- 设置各个节点 selinux 状态为 permissive。
配置命令
Controller
1
2
3
4
5
6hostnamectl set-hostname controller
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
echo '192.168.100.10 controller' >> /etc/hosts
echo '192.168.100.20 compute' >> /etc/hostsCompute
1
2
3
4
5
6hostnamectl set-hostname compute
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
echo '192.168.100.10 controller' >> /etc/hosts
echo '192.168.100.20 compute' >> /etc/hosts
使用命令查询控制/计算节点的主机名
使用命令查询控制/计算节点 selinux 的状态。
在控制节点上通过 SecureFX 上传两个镜像文件 CentOS-7-x86_64-DVD-1511.iso, XianDian-IaaS-v2.2.iso 到 opt 下,通过命令行创建两个目录,并将以上镜像文件分别挂载到上述两个目录下。
1
2
3
4
5
6
7
8
9cd /opt
mkdir CentOS-7 XianDian-IaaS
# 临时挂载 重启失效
mount CentOS-7-x86_64-DVD-1511.iso CentOS-7
mount XianDian-IaaS-v2.2.iso XianDian-IaaS
# 永久挂载 重启保留
echo "/opt/CentOS-7-x86_64-DVD-1511.iso /opt/CentOS-7 iso9660 defaults 0 0" >>/etc/fstab
echo "/opt/XianDian-IaaS-v2.2.iso /opt/XianDian-IaaS iso9660 defaults 0 0" >>/etc/fstab
mount -a在控制节点上通过 SecureFX 上传两个镜像文件 CentOS-7-x86_64-DVD-1511.iso, XianDian-IaaS-v2.2.iso 到 opt 下,使用命令创建 /opt 下两个目录,并将以上镜像文件分别挂载到上述两个目录下,并使用命令查看挂载的情况(需显示挂载的文件系统类型和具体的大小)
配置控制节点本地 yum 源文件 local.repo ,搭建 ftp 服务器指向存放 yum 源路径;配置计算节点 yum 源文件 ftp.repo 使用之前配置的控制节点 ftp 作为 yum 源,其中的两个节点的地址使用主机名表示。使用 cat 命令查看上述控制/计算节点的 yum 源全路径配置文件。
配置控制节点本地 yum 源文件 local.repo
1
2
3
4
5
6
7
8
9
10
11
12
13
14rm -rf /etc/yum.repos.d/CentOS-*
vi /etc/yum.repos.d/local.repo
[CentOS]
name = CentOS
baseurl = file:///opt/CentOS-7
gpgcheck = 0
enabled = 1
[XianDian-IaaS]
name = XianDian-IaaS
baseurl = file:///opt/XianDian-IaaS/iaas-repo
gpgcheck = 0
enabled = 1搭建 ftp 服务器指向存放 yum 源路径
1
2
3
4
5
6
7
8yum install -y vsftpd
vi /etc/vsftpd/vsftpd.conf
anon_root=/opt
systemctl restart vsftpd
systemctl enable vsftpd配置计算节点 yum 源文件 ftp.repo
1
2
3
4
5
6
7
8
9
10
11
12
13
14rm -rf /etc/yum.repos.d/CentOS-*
vi /etc/yum.repos.d/ftp.repo
[CentOS]
name = CentOS
baseurl = ftp://controller/CentOS-7
gpgcheck = 0
enabled = 1
[XianDian-IaaS]
name = XianDian-IaaS
baseurl = ftp://controller/XianDian-IaaS/iaas-repo
gpgcheck = 0
enabled = 1使用 cat 命令查看上述控制/计算节点的 yum 源全路径配置文件
在控制节点和计算节点分别安装 iaas-xiandian 软件包,完成配置文件中基本变量的配置,并根据提供的参数完成指定变量的配置。
安装
1
yum install -y iaas-xiandian
修改配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113##--------------------system Config--------------------##
##Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.100.10
##Controller Server hostname. example:controller
HOST_NAME=controller
##Compute Node Manager IP. example:x.x.x.x
HOST_IP_NODE=192.168.100.20
##Compute Node hostname. example:compute
HOST_NAME_NODE=compute
##--------------------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
##External Network Interface. example:eth1
INTERFACE_NAME=eno33554960
##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=
##--------------------Trove Config--------------------##
##Password for Mysql Trove User. exmaple:000000
TROVE_DBPASS=000000
##Password for Keystore Trove User. exmaple:000000
TROVE_PASS=000000
##--------------------Swift Config---------------------##
##Password for Keystore swift user. exmaple:000000
SWIFT_PASS=000000
##The NODE Object Disk for Swift. example:md126p4.
#OBJECT_DISK=
##The NODE IP for Swift Storage Network. example:x.x.x.x.
#STORAGE_LOCAL_NET_IP=
##--------------------Heat Config----------------------##
##Password for Mysql heat user. exmaple:000000
HEAT_DBPASS=000000
##Password for Keystore heat user. exmaple:000000
HEAT_PASS=000000
##--------------------Ceilometer Config----------------##
##Password for Mysql ceilometer user. exmaple:000000
#CEILOMETER_DBPASS=
##Password for Keystore ceilometer user. exmaple:000000
#CEILOMETER_PASS=
##--------------------AODH Config----------------##
##Password for Mysql AODH user. exmaple:000000
#AODH_DBPASS=
##Password for Keystore AODH user. exmaple:000000
#AODH_PASS=初始化环境
修改配置文件后 Controller 与 Compute 节点执行
1
iaas-pre-host.sh
Mysql 搭建
根据平台安装步骤安装至数据库服务,使用一条命令安装提供的 iaas-install-mysql.sh 脚本并查看脚本运行的时间。
命令
1
time /usr/local/bin/iaas-install-mysql.sh
查询结果
使用 root 用户登录数据库,查询数据库列表信息。
命令
1
show databases;
查询结果
Database information_schema mysql performance_schema
使用 root 用户登录数据库,使用 mysql 数据库,查询所有表的信息。
命令
1
2use mysql;
show databases;查询结果
Tables_in_mysql column_stats columns_priv db ~~~~~~~~~~~~~~~~~~ time_zone_transition time_zone_transition_type user
使用 root 用户登录数据库,使用 mysql 数据库,查询所有表的信息,并查询表 user 中的特定的信息。
命令
1
2use mysql;
select host,user,password from user;查询结果
host user password localhost root *032197AE5731D4664921A6CCAC7CFCE6A0698693 controller root *032197AE5731D4664921A6CCAC7CFCE6A0698693 127.0.0.1 root *032197AE5731D4664921A6CCAC7CFCE6A0698693 ::1 root *032197AE5731D4664921A6CCAC7CFCE6A0698693
Keystone 搭建
安装 keystone
1 iaas-install-keystone.sh
按要求安装完 keystone 脚本后,在数据库中查询 keystone 用户的远程访问权限信息。
命令
1
2use keystone;
desc access_token;查询结果
Field Type Null Key Default Extra id varchar(64) NO PRI NULL access_secret varchar(64) NO NULL authorizing_user_id varchar(64) NO MUL NULL project_id varchar(64) NO NULL role_ids text NO NULL consumer_id varchar(64) NO MUL NULL expires_at varchar(64) YES NULL
列出数据库 keystone 中的所有表。
命令
1
2use keystone;
show tables;查询结果
Tables_in_keystone access_token assignment config_register ~~~~~~~~~~~~~~~~ user user_group_membership whitelisted_config
使用相关命令,查询角色列表信息。
命令
1
2source /etc/keystone/admin-openrc.sh
openstack role list查询结果
ID Name 29efe97c88094fe9918d0f4a79e1cdc0 admin 64162db17b814429a765801262d868ec user
使用相关命令,查询 admin 项目信息。
命令
1
2source /etc/keystone/admin-openrc.sh
openstack project show admin查询结果
Field Value description Admin Project domain_id eedf9531120c47b8aafd363a7dc270b2 enabled True id 61e03e709d2a45c0b5bee652a78495e0 is_domain False name admin parent_id eedf9531120c47b8aafd363a7dc270b2
使用相关命令,查询用户列表信息。
命令
1
2source /etc/keystone/admin-openrc.sh
openstack user list查询结果
ID Name 6ea45f0655ef4c4e90a3b3de71391b0b admin 8c357b77079a4504adc4026336a49396 demo
使用相关命令,查询 admin 用户详细信息。
命令
1
2source /etc/keystone/admin-openrc.sh
openstack user show admin查询结果
Field Value domain_id eedf9531120c47b8aafd363a7dc270b2 enabled True id 6ea45f0655ef4c4e90a3b3de71391b0b name admin
使用相关命令,查询服务列表信息。
命令
1
2source /etc/keystone/admin-openrc.sh
openstack service list查询结果
ID Name Type bc83adcd6dfe4d0f81ed030384b99d9e keystone identity
使用一条命令将 keystone 的数据库导出为当前路径下的 keystone.sql 文件,并使用命令查询文件 keystone.sql 的大小。
命令
1
2mysqldump -uroot -p000000 keystone > keystone.sql
du -h keystone.sql查询结果
Glance 搭建
安装 Glance
1 iaas-install-glance.sh
使用镜像文件 CentOS_7.2_x86_64_XD.qcow2 创建 glance 镜像名为 CentOS7.2,格式为 qcow2 。
1
2
3
4
5source /etc/keystone/admin-openrc.sh
glance image-create --name "CentOS7.2" \
--disk-format qcow2 \
--container-format bare \
--progress < /opt/XianDian-IaaS/images/CentOS_7.2_x86_64_XD.qcow2使用相关命令查询镜像列表,并查询 CentOS7.2 镜像的详细信息。
命令
1
2source /etc/keystone/admin-openrc.sh
glance image-list查询结果
ID Name 3e6b8387-f943-42c8-84d7-599de6045cce CentOS7.2 命令
1
glance image-show 3e6b8387-f943-42c8-84d7-599de6045cce
查询结果
Property Value checksum ea197f4c679b8e1ce34c0aa70ae2a94a container_format bare created_at 2020-09-23T02:43:55Z disk_format qcow2 id 3e6b8387-f943-42c8-84d7-599de6045cce min_disk 0 min_ram 0 name CentOS7.2 owner 61e03e709d2a45c0b5bee652a78495e0 protected False size 400752640 status active tags [] updated_at 2020-09-23T02:43:57Z virtual_size None visibility private
使用相关命令,在一条命令中查询 glance 组件中所有服务的状态信息。
命令
1
systemctl status openstack-glance-registry.service openstack-glance-api.service
查询结果
Nova 搭建
根据平台安装步骤安装至 nova 计算服务,在控制节点使用提供的脚本 iaas-install-nova-controller.sh、在计算节点使用提供的脚本 iaas-install-nova-compute.sh,安装 nova 组件。
Controller
1
iaas-install-nova-controller.sh
Compute
1
iaas-install-nova-compute.sh
使用相关命令查询计算节点虚拟机监控器的状态。
命令
1
2source /etc/keystone/admin-openrc.sh
nova hypervisor-list查询结果
ID Hypervisor hostname State Status 1 compute up enabled
使用相关命令查询 nova 服务状态列表。
命令
1
2source /etc/keystone/admin-openrc.sh
nova service-list查询结果
Id Binary Host Zone Status State Updated_at Disabled Reason 1 nova-conductor controller internal enabled up 2020-09-23T03:02:07.000000 - 2 nova-scheduler controller internal enabled up 2020-09-23T03:02:07.000000 - 3 nova-consoleauth controller internal enabled up 2020-09-23T03:02:07.000000 - 6 nova-compute compute nova enabled up 2020-09-23T03:02:06.000000 -
使用相关命令查询网络的列表信息。
命令
1
2source /etc/keystone/admin-openrc.sh
nova network-list查询结果
ID Label Cidr a38f5073-1583-415b-ba1f-a55ede04a982 ext-net - 9c3d91c8-19ea-4c7b-b64e-8fab1319db3f demo-net -
使用相关命令查询 nova 资源使用情况的信息。
命令
1
2source /etc/keystone/admin-openrc.sh
nova quota-show查询结果
Quota Limit instances 10 cores 20 ram 51200 floating_ips 10 fixed_ips -1 metadata_items 128 injected_files 5 injected_file_content_bytes 10240 injected_file_path_bytes 255 key_pairs 100 security_groups 10 security_group_rules 20 server_groups 10 server_group_members 10 命令
1
2source /etc/keystone/admin-openrc.sh
nova host-list查询结果
host_name service zone controller conductor internal controller scheduler internal controller consoleauth internal compute compute nova 命令
1
2source /etc/keystone/admin-openrc.sh
nova host-describe compute查询结果
HOST PROJECT cpu memory_mb disk_gb compute (total) 2 3776 49 compute (used_now) 0 512 0 compute (used_max) 0 0 0
Neutron 搭建
安装 Neutron
Neutron Controller 安装
1 iaas-install-neutron-controller.shNeutron Controller 安装
1 iaas-install-neutron-compute.sh
根据平台安装步骤安装至 neutron 网络服务,在控制节点和计算节点通过提供的 neutron 脚本,完成 neutron 服务在控制节点和计算节点的安装,并配置为 GRE 网络。
Controller
1
iaas-install-neutron-controller-gre.sh
Compute
1
iaas-install-neutron-compute-gre.sh
根据平台安装步骤安装至 neutron 网络服务,在控制节点和计算节点通过提供的 neutron 脚本,完成 neutron 服务在控制节点和计算节点的安装,并配置为 VLAN 网络。
Controller
1
iaas-install-neutron-controller-vlan.sh
Compute
1
iaas-install-neutron-compute-vlan.sh
使用相关命令查询网络服务的列表信息,并以下图的形式打印出来。
命令
1
2source /etc/keystone/admin-openrc.sh
neutron agent-list | cut - d"|" -f3,8,6查询结果
id agent_type host availability_zone alive admin_state_up binary 152c3f41-01bc-41aa-845e-59cc758c39e9 Metadata agent controller :-) True neutron-metadata-agent 2cc96c3f-6694-4953-bde2-591992460192 Open vSwitch agent compute :-) True neutron-openvswitch-agent 42a56c45-bbb7-4d17-acf2-f74a78ce880b Open vSwitch agent controller :-) True neutron-openvswitch-agent 5da7d5df-981c-406c-b3a5-8a9016c94365 Loadbalancer agent controller :-) True neutron-lbaas-agent 666ffedc-3aee-4c90-adf0-755c80e97eae DHCP agent controller nova :-) True neutron-dhcp-agent 66746db4-3771-40bb-8bdc-03ba8ee083d9 L3 agent controller nova :-) True neutron-l3-agent 8201a541-93ab-4d1d-82ac-b61d1f96a304 Metadata agent compute :-) True neutron-metadata-agent
使用相关命令查询网络服务的列表信息中的“binary”一列。
命令行查询
命令
1
2
3source /etc/keystone/admin-openrc.sh
neutron agent-list | cut -c 119-160
neutron agent-list | cut -d "|" -f 8查询结果
binary neutron-metadata-agent neutron-openvswitch-agent neutron-openvswitch-agent neutron-lbaas-agent neutron-dhcp-agent neutron-l3-agent neutron-metadata-agent
数据库查询
命令
1
2use neutron;
select agents.binary from agents;查询结果
binary neutron-metadata-agent neutron-openvswitch-agent neutron-openvswitch-agent neutron-lbaas-agent neutron-dhcp-agent neutron-l3-agent neutron-metadata-agent
使用相关命令查询网络服务 DHCP agent 的详细信息。
使用 ovs-vswitchd 管理工具的相关命令查询计算节点的网桥列表信息。
使用 ovs-vswitchd 管理工具的相关命令查询控制节点的网桥 br-ex 的端口列表信息。
创建云主机外部网络 ext-net,子网为 ext-subnet,云主机浮动 IP 可用网段为 192.168.200.100 ~ 192.168.200.200,网关为 192.168.200.1。创建云主机内部网络 int-net1,子网为 int-subnet1,云主机子网 IP 可用网段为 10.0.0.100 ~ 10.0.0.200,网关为10.0.0.1;创建云主机内部网络int-net2,子网为 int-subnet2,云主机子网 IP 可用网段为 10.0.1.100 ~ 10.0.1.200,网关为 10.0.1.1。添加名为 ext-router 的路由器,添加网关在 ext-net 网络,添加内部端口到 int-net1 网络,完成内部网络 int-net1 和外部网络的连通。
使用相关命令查询所创建路由器的详细信息。
使用相关命令查询所创建子网的列表信息,并查看内网子网的详细信息。
使用相关命令查询所创建网络的列表信息。