IaaS平台搭建

1. 操作系统环境配置

 

1.1 修改网卡

# 1. 修改网卡
vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
DEVICE=eth0 //配置网卡的设备名称
IPADDR=172.24.2.10 //配置实际网络地址
NETMASK=255.255.255.0 //配置网络子网掩码
GATEWAY=172.24.2.1 //配置网络网关
BOOTPROTO=static //配置静态网络地址
ONBOOT=yes //开机启动网络
USERCTL=no //不允许非root用户修改此设备

1.2 分区,swift和cinder

# 2. 分区,swift和cinder
fdisk -l   # 判断未分区空间的大概起始位置

[root@compute ~]# parted /dev/md126                                    
(parted) mkpart cinder 702G 803G    # 创建cinder分区,从702G到803G                                                  
[root@compute ~]# mkfs.xfs /dev/md126p5

[root@compute ~]# parted /dev/md126   # 将cinde分区设置为lvm
(parted)set
Flag to Invert? LVM  
New state? On/off on

[root@compute ~]# parted /dev/md126                                    
(parted) mkpart swift 803G 904G    # 创建swift分区,从803G到904G                                                  

[root@compute ~]# mkfs.xfs /dev/md126p6
# 最后用fdisk –l 查看修改结果。

1.3 设置主机名

# 3.设置控制节点主机名 controller;计算节点主机名:compute。
hostnamectl set-hostname controller
hostnamectl set-hostname compute
hostname     # 查看主机名

1.4 关闭防火墙

# 4.各个节点关闭防火墙,设置开机不启动
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld
setenforce 0

1.5 selinux状态为permissive

# 5.设置各个节点selinux状态为permissive
vi /etc/selinux/config
SELINUX=permissive
getenforce     # 查看selinux防火墙的状态
sestatus
[root@controller ~]#systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
  Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
  Active: inactive (dead)
    Docs: man:firewalld(1)
[root@controller ~]# getenforce
Permissive

1.6 上传镜像

  • 在控制节点上通过 SecureFX 上传两个镜像文件CentOS-7-x86_64-DVD-1511.iso, XianDian-IaaS-v2.2.iso到opt 下

  • 使用命令创建/opt下两个目录,并将以上镜像文件分别挂载到上述两个目录下

  • 并 使用命令查看挂载的情况(需显示挂载的文件系统类型和具体的大小)。

mkdir /opt/centos 
mkdir /opt/iaas
mount -o loop CentOS-7-x86_64-DVD-1511.iso /opt/centos
mount -o loop XianDian-IaaS-v2.2.iso /opt/iaas
df-Th    # 查看挂载情况
umount /mnt     # 取消挂载

1.7 yum源配置

  • 配置控制节点本地 yum 源文件 local.repo ,搭建 ftp 服务器指向存放 yum 源路径;

  • 配置计算节点 yum 源文件 ftp.repo 使用之前配置的控制节点 ftp 作 为 yum 源,其中的两个节点的地址使用主机名表示。

  • 使用 cat 命令查看上述 控制/计算节点的 yum 源全路径配置文件。

 mv /etc/yum.repos.d/* /etc/yum
#[controller]
# 在/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
# cat /etc/yum.repos.d/local.repo
# [compute]
# 在/etc/yum.repos.d创建ftp.repo源文件
[centos]
name=centos //设置此yum的资源描述名称
baseurl=ftp://192.168.100.10/centos //设置yum源的访问地址及路径
gpgcheck=0 //禁用gpg检查gpgkey
enabled=1 //启动此yum源
[iaas]
name=iaas
baseurl=ftp://192.168.100.10/iaas/iaas-repo
gpgcheck=0
enabled=1
# cat /etc/yum.repos.d/ftp.repo

如果遇到进程卡死的状态
[root@compute yum.repos.d]# rm -r /var/run/yum.pid            
rm: remove regular file ‘/var/run/yum.pid’? y

1.8 搭建FTP服务器开机自启

[root@controller ~]# yum install vsftpd –y
[root@controller ~]# vi /etc/vsftpd/vsftpd.conf
# 添加anon_root=/opt/
# wq 保存退出
[root@controller ~]# systemctl start vsftpd
[root@controller ~]# systemctl enable vsftpd

1.9 环境变量配置

[root@controller ~]# yum install iaas-xiandian –y
[root@compute ~]# yum install iaas-xiandian –y
[root@controller ~]# vi /etc/xiandian/openrc.sh
# 跟据表中给定参数设置,注意,外网网卡名称之前用ip a 验证过,根据实际写。
# Cinder和swift分区名不能混了,lvm那个分区是cinder.
Mysql_Admin_Passwd=000000                         //数据库用户密码
Admin_Passwd=000000                               //管理员密码
Demo_User_Passwd=000000                           //演示用户密码
Demo_DB_Passwd=000000                             //演示数据库密码
Contoller_Hostname=controller                     //控制节点主机名
Controller_Mgmt_IPAddress=172.24.2.10             //控制节点管理网段密码
Gateway_Mgmt=172.24.2.1                           //管理网段网关
Controller_External_IPAddress=172.24.3.10         //外部地址
Network_Start_Vlan_ID=43                     //网络节点开始Vlan ID
Network_End_Vlan_ID=46                       //网络节点结束Vlan ID
Compute_Hostname=compute                     //实例节点主机名
Compute_Mgmt_IPAddress=172.24.3.20           //实例节点管理地址
Compute_External_IPAddress=172.24.3.20       //实例节点外部地址
Stroage_Cinder_Disk=sda3                     //Cinder存储磁盘分区名称
Stroage_Swift_Disk=sda2                      //Swift存储磁盘分区名称

scp   /etc/xiandian/openrc.sh  192.168.100.20:///etc/xiandian/openrc.sh 
# 将文件传给compute节点
[root@controller opt]# grep -vE "^$|^#" /etc/xiandian/openrc.sh 

2. 基础配置操作

[root@controller ~]# iaas-pre-host.sh
[root@controller ~]# reboot
[root@compute ~]# iaas-pre-host.sh
[root@compute ~]# reboot

 

3. MySQL搭建

[root@controller ~]#iaas-install-mysql.sh
[root@controller ~]# time iaas-install-mysql.sh
[root@compute ~]# yum -y install  MySQL-python

#使用脚本安装数据库服务,以root用户身份登录数据库,查询mysql数据库中所有表的信息
mysql -uroot -p000000
show databases
use mysql
show tables;
#查到运行时间
#查到默认的存储引擎 InnoDB
#查到支持的存储引擎
MariaDB [(none)]> show variables like "storage_engine"; 
+----------------+--------+ 
| Variable_name  | Value  | 
+----------------+--------+ 
| storage_engine | InnoDB | 
+----------------+--------+ 
1 row in set (0.00 sec) 
MariaDB [(none)]> show variables like "have%"; 
+----------------------+----------+ 
| Variable_name        | Value    | 
+----------------------+----------+ 
| have_compress        | YES      | 
| have_crypt           | YES      | 
| have_dynamic_loading | YES      | 
| have_geometry        | YES      | 
| have_openssl         | YES      | 
| have_profiling       | YES      | 
| have_query_cache     | YES      | 
| have_rtree_keys      | YES      | 
| have_ssl             | DISABLED | 
| have_symlink         | DISABLED | 
+----------------------+----------+ 
10 rows in set (0.00 sec) 

 

4. keystone管理认证用户

[root@controller ~]#iaas-install-keystone.sh 

# 创建用户testuser,密码为xiandian,将testuser用户分配给admin项目,赋予用户admin的权限。

source /etc/keystone/admin-openrc.sh

openstack user create --domain demo --password xiandian testuser  #创建用户

openstack role add --project admin --user testuser admin   # 分配给admin项目,赋予用户admin权限

# 列出数据库 keystone 中的所有表


# 将其中 keystone 的数据库导出为 keystone.sql 文件,并使用 sed 命令显示文件 keystone.sql 中前 20 行内容。
[root@controller ~]# mysqldump -uroot -p000000 keystone>keystone.sql

sed -n '1,20p' keystone.sql

5. glance 搭建

[root@controller ~]# iaas-install-glance.sh


# 使用CentOS_6.5_x86_64_XD.qcow2文件创建名为examimage的镜像;使用openstack命令查看镜像列表;设置该镜像的标签为lastone,查询镜像详细信息

[root@controller ~]glance image-create --name "examimage" --disk-format qcow2 --container-format bare --progress </opt/iaas/images/CentOS_6.5_x86_64_XD.qcow2
[root@controller ~]# openstack image set examimage  --tag  lastone  打上标签

openstack image list   # 查看镜像列表	

openstack image show examimage   # 查看镜像详细标签

6. nova搭建

[root@controller ~]# iaas-install-nova-controller.sh
[root@compute ~]# iaas-install-nova-compute.sh
#使用nova相关命令查询nova服务状态列表。
 nova service-list
 # 使用 nova 相关命令,查询 nova 所有的监控列表,并查看监控主机的详细 信息
[root@controller ~]#nova hypervisor-list
[root@controller ~]#nova hypervisor-show compute
[root@controller ~]# nova usage-list 
[root@controller ~]# nova quota-show
[root@controller ~]# nova host-list
[root@controller ~]# nova host-describe compute

 

7. neutron搭建

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

source /etc/keystone/admin-openrc.sh

[root@controller ~]#iaas-install-neutron-controller-gre.sh
[root@compute ~]#iaas-install-neutron-compute -gre.sh

[root@controller ~]# systemctl enable neutron-lbaas-agent

# 使用neutron相关命令查询子网的列表信息,并查看int-subnet1的详细信息。
neutron subnet-list
+----------------------------------+-------------+------------------+-----------------------------------+
| id                               | name        | cidr             | allocation_pools                  |
+----------------------------------+-------------+------------------+-----------------------------------+
| dbec58ae-                        | int-subnet2 | 10.0.1.0/24      | {"start": "10.0.1.2", "end":      |
| 0e36-4de8-8b40-15c7b28df550      |             |                  | "10.0.1.254"}                     |
| ba1f3480-7212-43a6-9c29-dd67415e | int-subnet1 | 10.0.0.0/24      | {"start": "10.0.0.2", "end":      |
| 4f1e                             |             |                  | "10.0.0.254"}                     |
| b2934fee-b3ae-                   | ext-subnet  | 192.168.200.0/24 | {"start": "192.168.200.2", "end": |
| 4a5e-8964-818e76361570           |             |                  | "192.168.200.254"}                |
+----------------------------------+-------------+------------------+-----------------------------------+
neutron subnet-show int-subnet1
+-------------------+--------------------------------------------+
| Field             | Value                                      |
+-------------------+--------------------------------------------+
| allocation_pools  | {"start": "10.0.0.2", "end": "10.0.0.254"} |
| cidr              | 10.0.0.0/24                                |
| created_at        | 2020-10-16T18:35:22                        |
| description       |                                            |
| dns_nameservers   |                                            |
| enable_dhcp       | True                                       |
| gateway_ip        | 10.0.0.1                                   |
| host_routes       |                                            |
| id                | ba1f3480-7212-43a6-9c29-dd67415e4f1e       |
| ip_version        | 4                                          |
| ipv6_address_mode |                                            |
| ipv6_ra_mode      |                                            |
| name              | int-subnet1                                |
| network_id        | 3e31a959-8719-480f-9bf0-a95f07c8eebc       |
| subnetpool_id     |                                            |
| tenant_id         | 550b28f573584fafb9d7a1601caa7ee1           |
| updated_at        | 2020-10-16T18:35:22                        |
+-------------------+--------------------------------------------+
# 用 neutron 命令 查询网络服务的列表信息
[root@controller ~]# neutron agent-list -c binary -c agent_type -c alive
+---------------------------+--------------------+-------+
| binary                    | agent_type         | alive |
+---------------------------+--------------------+-------+
| neutron-l3-agent          | L3 agent           | :-)   |
| neutron-metadata-agent    | Metadata agent     | :-)   |
| neutron-dhcp-agent        | DHCP agent         | :-)   |
| neutron-metadata-agent    | Metadata agent     | :-)   |
| neutron-openvswitch-agent | Open vSwitch agent | :-)   |
| neutron-lbaas-agent       | Loadbalancer agent | :-)   |
| neutron-openvswitch-agent | Open vSwitch agent | :-)   |
+---------------------------+--------------------+-------+

 

8. 安装Dashboard服务

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

#打开浏览器访问Dashboard
http://controller(或本机内网ip)/dashboard

# 使用curl命令查询http://192.168.100.10/dashboard。
curl -i http://192.168.100.10/dashboard

9. 网络创建

# 创建云主机外部网络 ext-net,子网为 ext-s。+
ubnet,云主机浮动 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 和外部网络的连通。 


(1)管理员 → 网络 → 创建网络ext-net → 创建子网ext-subnet(192.168.200.100 ~ 192.168.200.200,网关为192.168.200.1) 
(2)管理员 → 网络 → 创建网络int-net1 → 创建子网int-subnet1(10.0.0.100 ~ 10.0.0.200,网关为 10.0.0.1) 
(3)管理员 → 网络 → 创建网络int-net2 → 创建子网int-subnet2(10.0.1.100 ~ 10.0.1.200,网关为 10.0.1.1) 
(4)项目 → 网络 → 路由 → 新建路由 → 添加网关ext-net,内网接口int-net1
(5)项目 → 计算 → 访问安全 → 管理规则 → 添加规则(ICMP、TCP、UDP)


# 使用neutron相关命令查询子网的列表信息,并查看int-subnet1的详细信息。
如果显示An auth plugin is required to fetch a token:
source /etc/keystone/admin-openrc.sh
neutron subnet-list
neutron subnet-show int-subnet1

 

10. 安装cinder块存储服务

[root@controller ~]# iaas-install-cinder-controller.sh
[root@compute ~]#iaas-install-cinder-compute.sh

11. 安装Swift对象存储服务

[root@controller~]#source /etc/keystone/admin-openrc.sh
[root@controller ~]#iaas-install-swift-controller.sh
[root@compute ~]#iaas-install-swift-compute.sh

12. trove 安装

[root@controller ~]# iaas-install-trove.sh
[root@controller ~]# trove list

13. trove 管理

# 上传软件包中的镜像文件 MySQL_5.6_XD.qcow2 到云平台,并创建trove 数据库服务存储类型 mysql
[root@controller ~]# glance image-create --name "mysql-5.6" --disk-format qcow2  --container-format bare --progress </opt/iaas/images/MySQL_5.6_XD.qcow2

将显示的内容复制到答题框

# 注意:如果有错误,可能是镜像存放目录的问题
[root@controller ~]# trove-manage datastore_update mysql ''
将显示的内容复制到答题框

trove-manage datastore_update mysql ''

14.ALarm安装

[root@controller ~]# iaas-install-alarm.SH

15.添加控制节点资源到计算节点

[root@controller ~]#  vi /etc/xiandian/openrc.sh
将Compute 节点的 IP 和主机名改为controller 节点和 IP
##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.10
##Compute Node hostname. example:compute
HOST_NAME_NODE=controller
在controller 节点执行 nova-compute 脚本
[root@controller ~]# iaas-install-nova-compute.sh

 

IaaS平台运维

IaaS平台运维准备工作:
按以下配置在云平台中创建云主机:
(1)名称:iaas_all;
(2)镜像文件:iaas-all;
(3)云主机类型:m1.large;
(4)网络1:int-net1,绑定浮动IP;
(5)网络2:int-net2。
[root@controller ~]glance image-create --name "iaas-all" --disk-format qcow2  --container-format bare --progress </opt/iaas/images/XianDian-IaaS-All.qcow2             
[=============================>] 100%

1.MongoDB管理

1.MongoDB管理
# 登录“iaas_all”云主机,e登录mongodb数据库。
mongo –host 127.0.0.1:27017
# 新建一个名为xiandian的数据库;
use xiandian

# 使用for循环,向数据库xiandian下的集合student中插入100条数据:"_id" : i,"name" : "xiaoming", "age" : "21",其中循环变量为“i”;
for(vari=1;i<=100;i++)db.student.insert({"_id":i,"name":"xiaoming","age":"21"});

# 使用命令统计集合student中的数据条数;
db.student.find().count()

# 使用命令查询集合stduent中_id小于等于33、忽略前15个数据、并按照_id降序排列的结果。
db.student.find({"_id":{$lte:33}}).skip(15).sort({"_id":-1})

2.rabbitmq管理

2.rabbitmq管理
# 登录“iaas_all”云主机。
# 使用rabbitmqctl命令创建用户xiandian-admin,密码为admin;\
rbbitmqctl add_user xiandian-admin admin
 
# 赋予xiandian-admin用户administrator的角色并查询;
rabbitmqctl set_user_tags xiandian-admin administrator
rabbitmqctl list_users


# 授予用户xiandian-admin对本机所有资源可写可读可执行的权限,查询xiandian-admin用户的授权信息。
  	rabbitmqctl set_permissions -p / xiandian-admin ".*" ".*" ".*"
	rabbitmqctl list_user_permissions xiandian-admin

3.cinder管理

3.cinder管理
# 登录http://192.168.100.10/dashboard,创建云主机名为“vm_extend”,镜像使用“centos6.5”,flavor使用“m1.medium”;	
# 登录“vm_extend”云主机,从该主机的硬盘“/dev/vda”中分出一个10G的分区,使用这个分区将云主机“vm_extend”根目录所在逻辑分区扩容5G;
# 在云主机上用df -h命令查看挂载信息。
[root@host-10-10-10-115 ~]#fdisk /dev/vda
[root@host-10-10-10-115 ~]# lsblk 	
[root@host-10-10-10-115 ~]# vgs 
[root@host-10-10-10-115 ~]# lvs 
[root@host-10-10-10-115 ~]# pvcreate /dev/vda3 
[root@host-10-10-10-115 ~]# vgextend VolGroup /dev/vda3
[root@host-10-10-10-115 ~]# vgs 
[root@host-10-10-10-115~]# lvextend -L +5G /dev/mapper/VolGroup-lv_root 
[root@host-10-10-10-115~]# resize2fs /dev/mapper/VolGroup-lv_root  
[root@host-10-10-10-115 ~]# df -h

4. heat管理

4.heat管理(4分)
#在controller节点,安装heat服务,使用提供的文件server.yml创建名为heat的stack,其中glance镜像使用centos7,网络使用int-net1。提交查询stack列表信息以文本形式提交到答题框中
glance image-list
nova network-list
heat stack-create -f server.yml  -P  ImageID=查询到的镜像名 -P NetID=查询到的网络名   mystack
heat  stack-list  
#登录“iaas_all”云主机,使用heat相关命令,查询heat模板的版本信息。依次将操作命令及返回结果以文本形式提交到答题框。
heat template-version-list

5. MariaDB管理

5.MariaDB管理
# 登录http://192.168.100.10/dashboard,创建两台centos7系统的云主机,构建maria--db高可用数据库集群,通过命令查询集群状态。

6.nova管理

#登录“iaas_all”云主机,通过nova的相关命令创建名为exam、ID为1234、内存为1024M、硬盘为20G、虚拟内核数量为2的云主机类型,查看exam的详细信息。依次将操作命令及返回结果以文本形式提交到答题框。
nova flavor-create exam 1234 1024 20 2 
nova flavor-show exam

7.对象存储管理

#登录“iaas_all”云主机,使用openstack命令,创建名为examtest的容器并查询,上传一个aaa.txt(可自行创建)文件到这个容器中并查询。依次将操作命令和返回结果以文本形式提交到答题框。
[root@xiandian ~]# openstack container create examtest
[root@xiandian ~]# openstack container list
[root@xiandian ~]# openstack object create examtest aaa.txt 
[root@xiandian ~]# openstack object list examtest

8.KVM管理

#登录controller节点,首先查看当前系统有多少大页,然后设置大页数量为20并查看,其次使用命令使配置永久生效,最后将大页挂载到/dev/hugepages/上。依次将操作命令和返回结果以文本形式提交到答题框。
[root@controller ~]#cat /proc/meminfo | grep HugePages  
[root@controller ~]#echo 2000 > /proc/sys/vm/nr_hugepages 
[root@controller ~]#sysctl -w vm.nr_hugepages=2000 
[root@controller ~]#mount -t hugetlbfs hugetlbfs /dev/hugepages 

9.防火墙管理

#登录http://192.168.100.10/dashboard
#创建名为nginx的防火墙;
#添加防火墙规则nginx-80,放行所有源IP、源端口、目的IP、目的端口为80的报文;
#创建防火墙策略nginx-policy,添加nginx-80规则。
#使用neutron命令查询防火墙详细信息、策略详细信息、规则详细信息,依次将操作命令和返回结果以文本形式提交到答题框。
[root@controller ~]# neutron firewall-show nginx
[root@controller ~]# neutron firewall-policy-show nginx-policy
[root@controller ~]# neutron firewall-rule-show nginx-80

10.glance管理

#登录“iaas_all”云主机,使用glance相关命令,上传cirros镜像,名字为“cirros”,类型为qcow2,然后使用curl的方法,查询glance image api的状态和版本信息。将上述所有操作命令和返回结果以文本形式提交到答题框。
glance image-create --name " cirros " --disk-format qcow2 --container-format bare --progress < /opt/ cirros-0.3.4-x86_64-disk.img  

curl -i -H "X-Auth-Token:`openstack token issue | awk -F '|' ' / id / {print $2}'`" http://controller:9292/v2/images