IaaS 云计算基础架构平台
1. 基础环境:
1.使用命令行方式设置主机名,防火墙以及 SELinux 设置如下:
(1)设置控制节点主机名 controller;计算节点主机名:compute。
# hostnamectl set-hostname controller
# hostnamectl set-hostname compute
(2)各个节点关闭防火墙,设置开机不启动。
# systemctl stop firewalld.service
# systemctl disable firewalld.service
(3)设置各个节点 selinux 状态为 permissive。
# vi /etc/selinux/config
SELINUX=permissive
2.使用命令查询控制/计算节点的主机名。
# hostname
3.使用命令查询控制/计算节点 selinux 的状态。
# getenforce
4.在控制节点上通过 SecureFX 上传两个镜像文件
CentOS-7-x86_64-DVD-1511.iso, XianDian-IaaS-v2.2.iso 到 opt 下,使用命 令创建/opt 下两个目录,并将以上镜像文件分别挂载到上述两个目录下,并 使用命令查看挂载的情况(需显示挂载的文件系统类型和具体的大小)。
# mkdir /opt/centos /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
5.在控制节点上通过 SecureFX 上传两个镜像文件
CentOS-7-x86_64-DVD-1511.iso, XianDian-IaaS-v2.2.iso 到 opt 下,通过命 令行创建两个目录,并将以上镜像文件分别挂载到上述两个目录下。
# mkdir /opt/centos /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
6.配置控制节点本地 yum 源文件 local.repo ,搭建 ftp 服务器指向存放 yum 源路径;配置计算节点 yum 源文件 ftp.repo 使用之前配置的控制节点 ftp 作 为 yum 源,其中的两个节点的地址使用主机名表示。使用 cat 命令查看上述 控制/计算节点的 yum 源全路径配置文件。
[controller]
在/etc/yum.repos.d创建local.repo源文件
[centos]
name=centos
baseurl=file:/
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:/
gpgcheck=0
enabled=1
[root@controller ~]# cat /etc/yum.repos.d/local.repo
【compute】
在/etc/yum.repos.d创建ftp.repo源文件
[centos]
name=centos
baseurl=ftp://192.168.100.10/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=ftp://192.168.100.10/iaas-repo
gpgcheck=0
enabled=1
# cat /etc/yum.repos.d/ftp.repo
7.在控制节点和计算节点分别安装 iaas-xiandian 软件包,完成配置文件中基 本变量的配置,并根据提供的参数完成指定变量的配置。
# yum install -y iaas-xiandian
# vi /etc/xiandian/openrc.sh
# 传送命令scp /etc/xiandian/openrc.sh 192.168.100.20:/etc/xiandian/
2. Mysql 搭建:
1.根据平台安装步骤安装至数据库服务,使用一条命令安装提供的 iaas-install-mysql.sh 脚本并查看脚本运行的时间。
2.使用 root 用户登录数据库,查询数据库列表信息。
MariaDB [(none)]> show databases;
3.使用 root 用户登录数据库,使用 mysql 数据库,查询所有表的信息。
MariaDB [(none)]> show databases;
MariaDB [(none)]> use mysql;
MariaDB [mysql]> show tables;
4.使用 root 用户登录数据库,使用 mysql 数据库,查询所有表的信息,并查 询表 user 中的特定的信息。
MariaDB [mysql]> select host,user,password from user;
3. Keystone 搭建:
1.按要求安装完 keystone 脚本后,在数据库中查询 keystone 用户的远程访问 权限信息。
iaas-install-keystone.sh
MariaDB [(none)]> use keystone;
MariaDB [keystone]> desc access_token;
2.列出数据库 keystone 中的所有表。
MariaDB [(none)]> use keystone;
MariaDB [keystone]> show tables;
3.使用相关命令,查询角色列表信息。
4.使用相关命令,查询 admin 项目信息。
5.使用相关命令,查询用户列表信息。
6.使用相关命令,查询 admin 用户详细信息。
7.使用相关命令,查询服务列表信息。
8.使用一条命令将 keystone 的数据库导出为当前路径下的 keystone.sql 文件, 并使用命令查询文件 keystone.sql 的大小。
4. Glance 搭建:
1.根据平台安装步骤安装至镜像服务,在控制节点使用提供的脚本 iaas-install-glance.sh 安装 glance 组件。使用镜像文件
CentOS_7.2_x86_64_XD.qcow2 创建 glance 镜像名为 CentOS7.2,格式为 qcow2。
# iaas-install-glance.sh
# source admin-openrc.sh (上传镜像前必须生效)
# glance image-create --name "CentOS7.0" --disk-format qcow2 --container-format bare --progress < /opt/images/centos_7-x86_64_xiandian.qcow2
2.使用相关命令查询镜像列表,并查询 CentOS7.2 镜像的详细信息。
# glance image-list
# glance image-show 30ea40cb-62b6-4866-90bd-3ec7ef3d79eb (这一串数字代表此镜像的id号)
3.使用相关命令,在一条命令中查询 glance 组件中所有服务的状态信息。
# systemctl status openstack-glance-registry.service openstack-glance-api.service
5. Nova 搭建:
1.根据平台安装步骤安装至 nova 计算服务,在控制节点使用提供的脚本
iaas-install-nova-controller.sh、在计算节点使用提供的脚本 iaas-install-nova-compute.sh,安装 nova 组件。
# iaas-install-nova-controller.sh
# iaas-install-nova-compute.sh
2.使用相关命令查询计算节点虚拟机监控器的状态。
# nova hypervisor-list
+----+---------------------+-------+---------+
| ID | Hypervisor hostname | State | Status |
+----+---------------------+-------+---------+
| 1 | compute | up | enabled |
| 2 | controller | up | enabled |
+----+---------------------+-------+---------+
3.使用相关命令查询 nova 服务状态列表。
# nova service-list
4.使用相关命令查询网络的列表信息。
# nova network-list
5.使用相关命令查询 nova 资源使用情况的信息。
# nova quota-show
# nova host-list
# nova host-describe compute
6. Neutron 搭建:
1.根据平台安装步骤安装至 neutron 网络服务,在控制节点和计算节点通过 提供的 neutron 脚本,完成 neutron 服务在控制节点和计算节点的安装,并配 置为 GRE 网络。
# iaas-install-neutron-controller.sh
# iaas-install-neutron-compute.sh
# iaas-install-neutron-controller-gre.sh
# iaas-install-neutron-compute-gre.sh
2.根据平台安装步骤安装至 neutron 网络服务,在控制节点和计算节点通过 提供的 neutron 脚本,完成 neutron 服务在控制节点和计算节点的安装,并配置为 VLAN 网络。
# iaas-install-neutron-controller-vlan.sh
# iaas-install-neutron-compute-vlan.sh
3.使用相关命令查询网络服务的列表信息,并以下图的形式打印出来。
# neutron agent-list | cut - d"|" -f3,8,6
4.使用相关命令查询网络服务的列表信息中的“binary”一列。
# neutron agent-list | cut -c 119-160
# neutron agent-list | cut -d "|" -f 8
# mysql -uroot -p000000
MariaDB [(none)]> use neutron;
MariaDB [neutron]> show tables;
MariaDB [neutron]> select 'binary' from agents;
5.使用相关命令查询网络服务 DHCP agent 的详细信息。
# mysql -uroot -p000000
MariaDB [(none)]> use neutron;
MariaDB [neutron]> show tables;
MariaDB [neutron]> select id from agents where agent_type= 'DHCP agent';
[root@controller ~]# neutron agent-show 8631b6d5-1b70-4de1-a7d5-73b2d2a446ed
6.使用 ovs-vswitchd 管理工具的相关命令查询计算节点的网桥列表信息。
# ovs-vsctl list-br
7.使用 ovs-vswitchd 管理工具的相关命令查询控制节点的网桥 br-ex 的端口 列表信息。
# ovs-vsctl list-ports br-ex
8.创建云主机外部网络 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 和外部网络的连通。
# neutron net-create --router:external=true ext-net1
# neutron subnet-create --name ext-subnet1 --allocation-pool start=192.168.200.100,end=192.168.200.200 --gateway 192.168.200.1 --enable-dhcp --ip-version 4 ext-net 192.168.200.0/24
# neutron net-create int-net1
# neutron subnet-create --name int-subnet1 --allocation-pool start=10.0.0.100,end=10.0.0.200 --gateway 10.0.0.1 --ip-version 4 int-net1 10.0.0.0/24
# neutron net-create int-net2
# neutron subnet-create --name int-subnet2 --allocation-pool start=10.0.1.100,end=10.0.1.200 --gateway 10.0.1.1 --ip-version 4 int-net2 10.0.1.0/24
# neutron router-create ext-router
# neutron router-gateway-set 8d8ea5f2-895d-4e78-a40b-d444097c14dc
# neutron router-interface-add 8d8ea5f2-895d-4e78-a40b-d444097c14dc 4c5519fc-377b-4746-9aea-4dc93c4265b0
9.使用相关命令查询所创建路由器的详细信息。
# neutron router-list
# neutron router-show 46c33de5-a148-46a2-9223-72eb6e56cb5c
10.使用相关命令查询所创建子网的列表信息,并查看内网子网的详细信息。
# neutron subnet-list
# neutron subnet-show 5130a772-60f9-4492-a9ea-2c3002812ba9
11.使用相关命令查询所创建网络的列表信息。
# neutron net-list
7. Dashboard 搭建:
1.通过脚本 iaas-install-dashboard.sh 安装 dashboard 组件,使用 curl 命令查询网址 http://192.168.100.10/dashboard。
# iaas-install-dashboard.sh
# curl -i http://192.168.100.10/dashboard
2.通过脚本 iaas-install-dashboard.sh 安装 dashboard 组件,通过 chrome 浏览 器使用 admin 账号登录云平台网页,进入管理员菜单中的系统信息页面。
http://192.168.100.10/dashboard/admin/info/
8. Heat 搭建:
1.在控制节点使用提供的脚本 iaas-install-heat.sh 安装 heat 组件。
# iaas-install-heat.sh
2.使用 heat 相关命令,查询 stack 列表。
# heat stack-list
3.从附件下载 server.yml 文件,通过命令行使用 server.yml 文件创 建栈 mystack,指定配置参数为镜像 CentOS7.2、网络 int-net2。
# glance image-list
# nova network-list
# heat stack-create -f server.yml -P ImageId=CentOS7.2 -P NetID=int-net2 mystack(注释)
# heat stack-create -f server.yml -P 0d234b90-f11c-4cf6-b298-9ecbb8e54b34=CentOS7.2 -P ce494d87-a05c-4575-bcba-d79c3bedae8d=int2-net mystack
4.查询栈 mystack 状态为 CREATE_COMPLETE 的事件详细信息。
# heat event-list mystack
5.查询栈 mystack 的事件列表信息。
# heat event-show mystack
9. Trove 搭建:
注意:安装trove时必须安装完cinder和swift
1.在控制节点配置提供的脚本 iaas-install-trove.sh,使其连接的网络为 int-net1, 安装数据库 trove 服务,完成 trove 服务在控制节点的安装。完成后查询所有 的数据库实例列表。
MariaDB [(none)]> use trove;
MariaDB [(none)]> show databases;
2.在控制节点上传提供的 MySQL_5.6_XD.qcow2 到系统内,并创建 mysql 的数据库存储类型,使用上传的镜像更新该数据库类型的版本信息和镜像信 息。
3.在控制节点查创建名称为 mysql-1,大小为 5G,数据库名称为 myDB、远 程连接用户为 user,密码为 r00tme,类型为 m1.small 完成后查询 trove 列表 信息,并查询 mysql-1 的详细信息。
4.在控制节点查询所有数据的版本信息,完成后查询 mysql 数据库的详细信 息。
> select version();
IaaS 云平台运维
10. Rabbitmq 运维:
1.按以下配置在云平台中创建云主机,完成本任务下的相关试题后关闭云主 机。
云主机:
(1)名称:IaaS
(2)镜像文件:Xiandian-IaaS-All.qcow2
(3)云主机类型:4cpu、8G 内存、100G 硬盘
(4)网络:网络 1:int-net1,绑定浮动 IP
网络 2:int-net2
注:该镜像已安装 IaaS 平台所有可能使用的组件,用于完成 IaaS 平台相关 运维操作题,必须按以上配置信息配置接入两个网络才能保证云主机运行正常。
根据题目要求,连接相应的云主机或各节点服务器,进行以下答题。
2.使用 rabbitmqctl 创建用户 xiandian-admin,密码为 admin。
3.使用 rabbitmqctl 命令查询所有用户列表。
4.使用命令对 xiandian-admin 用户进行授权,对本机所有资源可写可读权限。
5.使用 rabbitmqctl 命令查询集群状态。
6.使用命令给 xiandian-admin 用户创建 administrator 角色,并查询。
7.使用命令对用户 xiandian-admin 进行授权,对本机所有资源可写可读权限, 然后查询 xiandian-admin 用户的授权信息。
8.使用 rabbitmqctl 命令,查看队列信息,所包含的信息包括 name,arguments, messages,memory。
9.通过修改配置文件的方式修改 memcache 的缓存大小,使用 ps 相关命令查询 memcahce 进程的信息,将修改的配置文件全路径文件名、修改的参数以 及相应的参数值、查询 memcache 进程信息。
10.构建 rabbitmq 集群,并对集群进行运维操作。
11. Mysql 运维:
1.使用数据库的相关命令查询数据库的编码方式。
MariaDB [(none)]> show variables like 'character_set_database';
2.通过 mysql 相关命令查询当前系统时间。
MariaDB [(none)]> select now();
3.通过 mysql 相关命令,查看当前是什么用户。
MariaDB [(none)]> select user();
4.通过 mysql 相关命令,查看 mysql 的默认存储引擎信息,并查看 mysql 支 持的存储引擎有哪些。
MariaDB [(none)]> show variables like 'default_storage_engine';
MariaDB [(none)]> show engines;
5.进入数据库 keystone,通过 user 表和 local_user 表做联合更新,u 用来做 user 表别名,lu 用来做 local_user 表别名,sql 语句更新 neutron 用户的 enabled 状态为 0, 更新语句中 user 表在 local_user 前面。
MariaDB [(none)]> use keystone;
MariaDB [keystone]> update user u,local_user lu set u.enabled=0 where u.id=lu.user_id and lu.name='neutron';
6.进入数据库 keystone,通过 user 表和 local_user 表做联合查询,u 用来做 user 表别名,lu 用来做 local_user 表别名,两表联合查询 nova 用户的 enabled 状态,查询语句中 user 表在 local_user 前面。
MariaDB [(none)]> use keystone;
MariaDB [keystone]> select u.enabled from user u,local_user lu where u.id=lu.user_id and lu.name='nova';
7.进入数据库,创建本地用户 examuser,密码为 000000,然后查询 mysql 数据库中的 user 表的特定字段。最后赋予这个用户所有数据库的“查询”“删 除”“更新”“创建”的本地权限。
MariaDB [(none)]> use mysql;
MariaDB [mysql]> create user 'examuser'@'localhost' identified by '000000';
MariaDB [mysql]> select Host,User,Password from user where User='examuser';
MariaDB [mysql]> grant select,insert,update,delete on *.* to 'examuser'@'localhost' identified by '000000';
8.登录 iaas 云主机,登录 mysql 数据库,使用 keystone 数据库,查询本地用 户表中的所有信息,并按照 id 的降序排序。(关于数据库的命令均使用小 写)
MariaDB [(none)]> use keystone;
MariaDB [keystone]> select * from local_user order by id desc;
12. MongoDB 运维
1.登录 iaas 云主机,登录 MongoDB 数据库,查看数据库,使用 ceilometer 数据库,查看此数据库下的集合,并查询此数据库用户,最后创建一个数据 库并查询。
[root@controller ~]
> show dbs;
> use ceilometer;
> show collections;
> show users;
> use wjm
switched to db wjm
> db.createCollection('wjm')
{ "ok" : 1 }
2.登录 iaas 云主机,登录 MongoDB 数据库,新建一个数据库,使用这个数 据库,向集合中插入数据,最后查询特定的一类数据。
[root@controller ~]
> use dancy
switched to db dancy
> db.user.insert({"name": "dancy", "age": 23})
WriteResult({ "nInserted" : 1 })
> db.user.find()
{ "_id" : ObjectId("5cad7de3136f9fa15d2a9a8e"), "name" : "dancy", "age" : 23 }
3.登录 iaas 云主机,登录 MongoDB 数据库,新建一个数据库,使用这个数 据库,向集合中插入数据,插入完毕后,数据进行修改,修改完后,查询修 改完的数据。
> use cyw;
switched to db cyw
> db.createCollection("yunjisuan");
{ "ok" : 1 }
>db.yunjisuan.insert({"name":"chengyinwu","age":20,"jiguan":"qingyang"});
WriteResult({ "nInserted" : 1 })
> db.yunjisuan.insert({"name":"zhufanyu","age":20});
WriteResult({ "nInserted" : 1 })
> db.yunjisuan.update({"name":"zhufanyu"},{"age":21});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.yunjisuan.find()
{ "_id" : ObjectId("5cad8b903345be69b178b3d9"), "name" : "chengyinwu", "age" : 20, "jiguan" : "qingyang" }
{ "_id" : ObjectId("5cad8bbf3345be69b178b3da"), "age" : 21 }
4.登录 iaas 云主机,登录 MongoDB 数据库,新建一个数据库,使用这个数 据库,向集合中插入数据(其中某一条数据插入两遍),插入数据完毕后, 发现某条数据多插入了一遍需要删除,请使用命令删除多余的一行数据,最 后将数据库删除。
> use zhangsan
switched to db zhangsan
> db.createCollection("chengxuyuan")
{ "ok" : 1 }
> db.chengxuyuan.insert({"name":"yihao","age":100});
WriteResult({ "nInserted" : 1 })
> db.chengxuyuan.insert({"name":"yihao","age":100});
WriteResult({ "nInserted" : 1 })
> db.chengxuyuan.remove({"name":"yihao"})
WriteResult({ "nRemoved" : 2 })
> db.dropDatabase()
{ "dropped" : "zhangsan", "ok" : 1 }
5.登录 iaas 云主机,登录 MongoDB 数据库,新建一个数据库,使用这个数 据库,向集合中插入数据,插入完毕后,查询集合中的数据并按照某关键字 的升序排序。
> use cyw;
switched to db cyw
> db.createCollection("yunjisuan");
{ "ok" : 1 }
>db.yunjisuan.insert({"name":"chengyinwu","age":20,"jiguan":"qingyang"});
WriteResult({ "nInserted" : 1 })
> db.yunjisuan.insert({"name":"zhufanyu","age":20});
WriteResult({ "nInserted" : 1 })
> db.yunjisuan.update({"name":"zhufanyu"},{"age":21});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.yunjisuan.find().sort({age:1})
6.登录 iaas 云主机,登录 MongoDB 数据库,新建一个数据库,使用这个数 据库,向集合中批量插入多条数据,使用 for 循环,定义变量 i=1,插入"_id" : i,"name" : "xiaoming", "age" : "21"。插入数据完毕后,统计集合中的数据 条数,然后查询集合中满足特定条件的结果。
> use dhd;
switched to db dhd
> for(var i=1;i<10;i++){db.dhd.insert({_id:i,name:"xiaoming",age:21})}
WriteResult({ "nInserted" : 1 })
> db.dhd.find();
{ "_id" : 1, "name" : "xiaoming", "age" : 21 }
{ "_id" : 2, "name" : "xiaoming", "age" : 21 }
{ "_id" : 3, "name" : "xiaoming", "age" : 21 }
{ "_id" : 4, "name" : "xiaoming", "age" : 21 }
{ "_id" : 5, "name" : "xiaoming", "age" : 21 }
{ "_id" : 6, "name" : "xiaoming", "age" : 21 }
{ "_id" : 7, "name" : "xiaoming", "age" : 21 }
{ "_id" : 8, "name" : "xiaoming", "age" : 21 }
{ "_id" : 9, "name" : "xiaoming", "age" : 21 }
7.登录 iaas 云主机,使用 mongoimport 命令,将给定的文件,导入至 MongoDB 下的相应数据库中的指定集合中。导入后登录 MongoDB 数据库。查询集合 中满足特定条件的结果。注:PPG
mongoimport -d basketball -c player test.dat
use basketball
db.player.find({"MPG":{$gt:"35"},"PPG":{$gte:"20"},"PPG":{$lte:"25"}}).sort({"PTS":-1})
13. Keystone 运维:
1.在 keystone 中创建用户 testuser,密码为 password。
2.将 testuser 用户分配给 admin 项目,赋予用户 user 的权限。
3.以管理员身份将 testuser 用户的密码修改为 000000。
4.通过 openstack 相关命令获取 token 值。
[root@controller ~]
5.使用命令查询认证服务的查询端点信息。
[root@controller ~]
MariaDB [(none)]> use keystone;
MariaDB [keystone]> select * from service;
MariaDB [keystone]> select * from endpoint;
6.使用命令列出认证服务目录。
[root@controller ~]
7.在 keystone 中创建用户 testuser,密码为 password,创建好之后,使用命 令修改 testuser 密码为 000000,并查看 testuser 的详细信息。
[root@controller ~]
[root@controller ~]
8.在 keystone 中创建用户 testuser,密码为 password,创建好之后,使用命 令修改 testuser 的状态为 down,并查看 testuser 的详细信息。
9.完成 keystone 证书加密的 HTTPS 服务提升。
[root@controller ~]
14. Glance 运维:
1.使用 glance 相关命令上传 CentOS_6.5_x86_64_XD.qcow2 镜像到云主机中, 镜像名为 testone,然后使用 openstack 相关命令,并查看镜像的详细信息。
# source /etc/keystone/admin-openrc.sh
# glance image-create –name “testone” –disk-format qcow2 –container-format bare –progress < /opt/images/ CentOS_6.5_x86_64_XD.qcow2
# openstack image list
# openstack image show id号
2.使用 glance 相关命令上传两个镜像,一个名字为 testone,一个名字叫 testtwo, 使用相同的镜像源 CentOS_6.5_x86_64_XD.qcow2,然后使用 openstack 命令 查看镜像列表,接着检查这两个镜像的 checksum 值是否相同。
# glance image-create –name “testone” –disk-format qcow2 –container-format bare –progress < /opt/images/ CentOS_6.5_x86_64_XD.qcow2
# glance image-create –name “testtwo” –disk-format qcow2 –container-format bare –progress < /opt/images/ CentOS_6.5_x86_64_XD.qcow2
# openstack image list
# openstack image show id号
3.登录 iaas 云主机,使用 glance 相关命令,上传镜像,源使用 CentOS_6.5_x86_64_XD.qcow2,名字为 testone,然后使用 openstack 命令修 改这个镜像名改为 examimage,改完后使用 openstack 命令查看镜像列表。
# source /etc/keystone/admin-openrc.sh
# glance image-create --name "testone" --disk-format qcow2 --container-format bare --progress < /opt/images/CentOS_6.5_x86_64_XD.qcow2
# openstack image set testone --name examimage
# openstack image list
4 使用 glance 相关命令,上传镜像,源使用 CentOS_6.5_x86_64_XD.qcow2, 名字为 examimage,然后使用 openstack 命令查看镜像列表,然后给这个镜 像打一个标签,标签名字为 lastone,接着查询修改的结果。
# glance image-create --name "examimage" --disk-format qcow2 --container-format bare --progress < /opt/images/CentOS_6.5_x86_64_XD.qcow2
# openstack image list
[root@controller ~]# openstack image set examimage --tag lastone
[root@controller ~]# openstack image show 315f8ebc-8ffb-43a2-8102-b84a40fafbaf
5.通过一条组合命令获取镜像列表信息,该组合命令包含:
(1)使用 curl 命令获取镜像列表信息;
(2)使用 openstack 相关命令获取的 token 值;
(3)仅使用 awk 命令且用“|”作为分隔符获取 token 具体参数值。
[root@controller ~]# source /etc/keystone/admin-openrc.sh
[root@controller ~]#curl -i -H "X-Auth-Token:`openstack token issue | awk -F '|' ' / id / {print $3}'`" http://controller:9292/v2/images
6.通过一条组合命令获取该镜像详细信息,该组合命令要求:
(1)不能使用任何 ID 作为参数;
(2)使用 openstack 相关命令获取详细信息;
(3)使用 glance 相关命令获取镜像对应关系;
(4)仅使用 awk 命令且用“|”作为分隔符获取 ID 值。
[root@controller ~]# source /etc/keystone/admin-openrc.sh
[root@controller ~]#curl -i -H "X-Auth-Token:`openstack token issue | awk -F '|' ' / id / {print $3}'`" http://controller:9292/v2/images
7.查看 glance 配置文件,找到默认的镜像存储目录,进入到存储目录中,使 用 qemu 命令查看任意的一个镜像信息。
# cat /etc/glance/glance-api.conf
15. Nova 运维:
1.修改云平台中默认每个 tenant 的实例注入文件配额大小,并修改。
# nova quota-class-show default
# nova quota-class-update --instances 20 default
# nova quota-class-show default
2.通过 nova 的相关命令创建云主机类型,并查询该云主机的详细信息。
# nova flavor-create exam 1234 1024 20 2
# nova flavor-show 1234
3.使用 nova 相关命令,查询 nova 所有服务状态。
# nova service-list
4.修改云平台中默认每个 tenant 的实例配额个数并查询。
# nova quota-class-show default
# nova quota-class-update --instances 20 default
# nova quota-class-show default
5.使用 nova 相关命令,查询 nova 所有的监控列表,并查看监控主机的详细 信息。
[root@controller ~]# nova hypervisor-list
[root@controller ~]# nova hypervisor-show controller
6.使用 grep 命令配合-v 参数控制节点/etc/nova/nova.conf 文件中有效的命令行覆盖输出到/etc/novaback.conf 文件。
# grep -v '#' /etc/nova/nova.conf > /etc/novaback.conf
7.此题可使用物理 iaas 环境,使用 nova 相关命令,启动一个云主机,云主 机类型使用 m1.small,镜像使用 CentOS_6.5_x86_64_XD.qcow2,云主机名 称为 examtest。
[root@controller ~]# nova start examtest
8.此题可使用物理 iaas 环境,使用 openstack 相关命令,启动一个云主机, 云主机类型使用 m1.small,镜像使用 centos6.5,云主机名称为 xxxtest,并 使用 openstack 命令查看此云主机的详细信息。
[root@controller ~]# openstack image list
9.此题可使用物理环境,登录 dashboard 界面,创建一台虚拟机,将该虚拟 机使用手动迁移的方式,迁移至另一个计算节点并查看。(controller 既是 控制也是计算)
[root@compute~]#cd/var/lib/nova/instances/
[root@computeinstances]#ll
[root@computeinstances]#scp-r62b6ab26-7040-4a04-9456-23549a2a0ddb/root@controller:/var/lib/nova/instances/
[root@controller~]#cd/var/lib/nova/instances/
[root@controllerinstances]#ll
[root@controllerinstances]#chown-Rnova:nova62b6ab26-7040-4a04-9456-23549a2a0ddb/
MariaDB[(none)]>showdatabases;
MariaDB[(none)]>usenova;
MariaDB[nova]>updateinstancessethost='controller',node='controller'whereuuid='62b6ab26-7040-4a04-9456-23549a2a0ddb';
[root@controllerinstances]#systemctlrestartopenstack-nova-compute
[root@controllerinstances]#novastart62b6ab26-7040-4a04-9456-23549a2a0ddb
10.登录 iaas-all 云主机,修改 nova 后端默认存储位置。
[root@controller ~]# cd /var/lib/nova/instances/
11.修改相应的配置文件,使得 openstack 云主机的工作负载实现所要求的性 能、可靠性和安全性。
# /etc/neutron/neutron.conf
12.配置 NFS 网络存储作为 nova 的后端存储。
Cinder 运维:
1.使用分区工具,对/dev/vda 进行分区,创建一个分区,使用命令将刚创建 的分区创建为物理卷,然后使用命令查看物理卷信息。
[root@cyw ~]
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): p
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-83873316, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-83873316, default 83873316): 10240
Partition 1 of type Linux and of size 4 MiB is set
2.使用命令查看当前卷组信息,使用命令创建逻辑卷,查询该逻辑卷详细信 息。
Fdisk -l
3.创建一个卷类型,然后创建一块带这个卷类型标识的云硬盘,查询该云硬 盘的详细信息。
4.通过命令行创建云硬盘,将其设置为只读,查询该云硬盘的详细信息。
5.通过命令行创建云硬盘,查询该云硬盘的详细信息。
6.使用命令,对/dev/vda 分区,并把这个分区创建成物理卷,然后再把这个 物理卷加入到 cinder-volumes 卷组中,查看卷组详情。
7.使用命令创建一个云硬盘,然后通过 lvm 相关命令查看该云硬盘的详细信 息,最后通过 cinder 命令对这块云硬盘进行扩容操作,并查看详细信息。
8.登录 iaas 云主机,使用命令对硬盘/dev/vda 进行分区,将这个分区创建为 物理卷并使用 pvs 查看,然后将这个物理卷添加到 cinder-volumes 卷组中并 使用 vgs 查看。
9 .登录 controller 节点,创建云主机,镜像使用 centos6.5,flavor 使用 m1.medium,配置好网络。然后给云主机 iaas 挂载一个云硬盘,使用这块云 硬盘,把云主机 iaas 的根目录扩容,最后在 iaas 云主机上用 df -h 命令查看。
[root@controller ~]
[root@controller ~]
[root@controller ~]
[root@controller ~]
[root@controller ~]
[root@controller ~]
[root@controller ~]
[root@controller ~]
[root@controller ~]
[root@controller ~]
10 .登录“iaas-all”云主机,使用命令对磁盘/dev/vda 进行分区,然后使用命令, 创建 raid 磁盘阵列,最后将 md0 格式化为 ext4 格式并查看该磁盘阵列的 UUID。
12 .登录“iaas-all”云主机,查看 cinder 后端存储空间大小,将 cinder 存储空间 扩容 10 个 G 大小,最后查看 cinder 后端存储空间大小。
[root@xiandian~]
Command(mforhelp):n
Select(defaultp):p
Lastsector,+sectorsor+size{K,M,G}(104857600-209715199,default209715199):+10G
Command(mforhelp):w
root@xiandian~]
[root@xiandian~]
[root@xiandian~]
[root@xiandian~]
Device/dev/vda2notfound(orignoredbyfiltering).
[root@xiandian~]
[root@xiandian~]
Physicalvolume"/dev/vda2"successfullycreated
[root@xiandian~]
PVVGFmtAttrPSizePFree
/dev/vda2lvm2---10.00g10.00g
/dev/vda7cinder-volumeslvm2a--4.75g4.75g
[root@xiandian~]
Volumegroup"cinder-volumes"successfullyextended
[root@xiandian~]
VG
cinder-volumes200wz--n-14.74g14.74g
13 .修改相应的配置文件,增加 cinder backup 后端备份。
14.配置 NFS 网络存储作为 cinder 的后端存储。
Swift 运维:
1.使用命令查看 swift 服务状态,然后创建一个容器,并使用命令查看容器 列表。
[root@controller ~]
[root@controller ~]
[root@controller ~]
[root@controller ~]
2.使用 swift 相关命令,创建一个容器,然后使用命令查看该容器的状态。
[root@controller ~]
[root@controller ~]
3.使用 swift 相关命令,查询 swift 对象存储服务可以存储的单个文件大小的 最大值。
4.使用 swift 相关命令,创建一个容器,然后往这个容器中上传一个文件(文 件可以自行创建),上传完毕后,使用命令查看容器。
[root@controller ~]
[root@controller ~]
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 0.380656 s, 1.4 GB/s
[root@controller ~]
5.登录 iaas 云主机,使用 openstack 命令,创建一个容器,并查询,上传一 个文件(可自行创建)到这个容器中,并查询。
[root@controller ~]
[root@controller ~]
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 0.380656 s, 1.4 GB/s
[root@controller ~]
6.登录 IaaS 云主机,创建 swifter 用户,并创建 swift 租户,将 swifter 用户规 划到 swift 租户下,赋予 swifter 用户使用 swift 服务的权限,并通过 url 的方 式使用该用户在 swift 中创建容器。
7.使用 url 的方式,用 admin 账号在 swift 中创建容器,创建完之后用 url 的 方式查看容器列表。
8.配置 swift 对象存储为 glance 的后端存储,并查看。
KVM 运维:
1.在物理云平台查询云主机 IaaS 在 KVM 中的真实实例名,在计算节点使用
virsh 命令找到该实例名对应的 domain-id,使用该 domain-id 关闭云主机 IaaS。
2.在物理云平台查询云主机 IaaS 在 KVM 中的真实实例名,在计算节点使用
virsh 命令找到该实例名对应的 domain-id,使用该 domain-id 重启云主机 IaaS。
3.此题使用物理 iaas 平台。登录 compute 节点,使用命令将 KVM 进程绑定 到特定的 cpu 上。
[root@controller ~]# ps -e|grep kvm
4.此题使用物理平台。登录 controller 节点,调优 kvm 的 I/O 调度算法,centos7 默认的是 deadline,使用命令将参数改为 noop 并查询。
5.此题使用物理 iaas 平台。登录 controller 节点,使用 cat 命令,只查看当前
最后将大页挂载到/dev/hugepages/上。
[root@xiandian ~]# echo 20 > /proc/sys/vm/nr_hugepages
[root@xiandian ~]# grep Huge /proc/meminfo
AnonHugePages: 1067008 kB
HugePages_Total: 20
HugePages_Free: 20
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB6.登录 192.168.100.10/dashboard,创建一个云主机。在云主机所在的物理节 点,进入 virsh 交互式界面,调整虚拟机的内存大小,最后使用命令查看该 虚拟机的详情。
[root@controller~]#virsh
virsh#dominfoinstance-000000fd
virsh#setmeminstance-000000fd5242880
virsh#dominfoinstance-000000fd
7.KVM 网络优化:让虚拟机访问物理网卡的层数更少,直至对物理网卡的 单独占领,和物理机一样的使用物理网卡,达到和物理机一样的网络性能。
网络运维:
1.在控制节点安装配置 JDK 环境。安装完成后,查询 JDK 的版本信息。
[root@controller ~]# java -version
2.在控制节点安装配置 Maven 环境。安装完成后,查询 Maven 的版本信息。
[root@controller ~]# java -version
3 .继续完成 OpenDaylight 的安装,完成后使用 curl 命令访问网页
http://192.168.100.10:8181/index.html。
[root@controller ~]# curl http://192.168.100.10:8181/index.html
4 .创建网桥 br-test,把网卡 enp9s0 从原网桥迁移到 br-test,查询 openvswitch
的网桥信息和该网桥的端口信息。
5 .创建命名空间 ns。
6.在网桥 br-test 中创建内部通信端口 tap。
7.在命名空间 ns 中配置端口 tap 的地址为 172.16.0.10/24。
8.在命名空间中查询端口 tap 的地址信息。
9.通过 openvswitch 手动运维 openstack 中虚拟主机的通讯信息。
Ceilometer 运维:
1.使用 ceilometer 相关命令,查询测量值的列表信息。
[root@controller ~]# ceilometer meter-list
2.使用 ceilometer 相关命令,查询给定名称的测量值的样本列表信息。
[root@controller ~]# ceilometer meter-list -q resource_id=a55e5bda-2a94-471e-a773-3ed65259b85b
3.使用 ceilometer 相关命令,查询事件列表信息。
[root@controller ~]# ceilometer event-list
4.使用 ceilometer 相关命令,查询资源列表。
[root@controller ~]# ceilometer resource-list
5.按以下提供的参数及其顺序,使用 ceilometer 相关命令创建一个新的基于 计算统计的告警。以下题目都需在这个基础上完成。
(1)名字为:cpu_hi
(2)测量值的名称为:cpu_util
(3)阈值为:70.0
(4)对比的方式为:大于
(5)统计的方式为:平均值
(6)周期为:600s
(7)统计的次数为:3
(8)转为告警状态时提交的 URL 为:'log://'
(9)关键字:resource_id=INSTANCE_ID
# ceilometer alarm-threshold-create --name cpu_hi --meter-name cpu_util --threshold 70.0 --comparison -operator gt --statistic avg --period 600 --evaluqtion-periods 3 --alarm-action 'log://' --query resource_id=INSTANCE_ID
6.使用 ceilometer 相关命令,查询用户的告警列表信息。
[root@controller ~]# ceilometer alarm-list
7.使用 ceilometer 相关命令,查询给定名称的告警的历史改变信息。
[root@controller ~]# ceilometer alarm-history (id号)
8.使用 ceilometer 相关命令,修改给定名称的告警状态为不生效。
[root@controller ~]# ceilometer alarm-update --enabled False
9.使用 ceilometer 相关命令,删除给定名称的告警,并使用命令查看删除结 果。
# ceilometer alarm-delete -a 后跟id
10.使用 Ceilometer 相关命令,查看某云主机有哪些样本,然后使用 Ceilometer
命令查看云主机的特定样本信息。
Heat 运维:
1.使用 heat 相关命令,查看 heat 的服务列表信息。
[root@controller ~]
2.使用 heat 相关命令,查询给定的详细资源类型信息。
[root@controller ~]
[root@controller ~]
3.使用 heat 相关命令,查询 heat 模板的版本信息。
[root@controller ~]
4.使用 heat 相关命令,查询 heat 最新版本模板的功能列表。
[root@controller ~]
5.使用提供的文件 server.yml 创建名为 heat 的 stack,其中 glance 镜像使用
centos7,网络使用 int-net1。查询 stack 列表信息。
6.现有 server.yml 文件,请使用该 yml 文件创建堆栈 mystack,指定使用镜 像 centos6.5,使用网络 int-net1,待创建完成后,查询堆栈 mystack 的状态 为 CREATE_COMPLETE 的事件信息。
7.对提供的 server.yml 模板进行修改,添加所需参数。通过命令使用 heat 模 板创建名为 test-heat 的 stack,其中 glance 镜像使用 centos7,网络使用 int-net1。 查询 stack 列表信息。
数据加密:
前提:按要求配置静态 fixed_key,使 cinder 和 nova 组件可以使用加密过的 Block Storage 卷服务,配置好之后,创建一个卷类型叫 luks,并把这个类型配置 为加密类型,cipher 使用“aes-xts-plain64”,key_size 使用“512”,control-location 使用“front-end”,Provider 使用“nova.volume.encryptors.luks.LuksEncryptor”。
1.使用命令查看卷类型列表和加密卷类型列表。
2.使用命令创建两个卷,前者不加密,后者使用 luks 卷类型加密。然后查看 卷列表。
3 .使用命令创建两个卷,前者不加密,后者使用 luks 卷类型加密。使用 nova 命令,创建一个云主机,镜像使用提供的 cirros 镜像,然后使用命令分别将 创建的两块云硬盘 attach 到云主机上,最后使用 cinder list 查看。
4 .使用命令创建两个卷,前者不加密,后者使用 luks 卷类型加密。使用 nova 命令,创建一个云主机,镜像使用提供的 cirros 镜像,然后使用命令分别将 创建的两块云硬盘 attach 到云主机上,最后使用 strings 命令验证数据卷的加 密功能。
负载均衡:
1.安装完 neutron 网络后,使用 neutron 命令查询 lbaas 服务的状态。(物理 环境)
2.使用负载均衡创建 nginx 资源池,使用 http 协议,选择轮循负载均衡方式。 创建完成后添加 vip:nginx-vip,使用 http 协议,端口为 80,HTTP_COOKIE 会话持久化。使用 neutron 命令查询资源池 nginx 详细信息、nginx-vip 详细 信息。
3.使用负载均衡创建 nginx 资源池,使用 http 协议,选择轮循负载均衡方式。 创建完成后添加 vip:nginx-vip,使用 http 协议,端口为 80,HTTP_COOKIE 会话持久化。使用命令查看所创建资源池的 haproxy 配置文件。(物理环境)
[root@controller ~]
[root@controller lbaas]
global
daemon
user nobody
group haproxy
log /dev/log local0
log /dev/log local1 notice
stats socket /var/lib/neutron/lbaas/9412c907-99f5-401b-b5bc-0d1a7628387e/sock mode 0666 level user
defaults
log global
retries 3
option redispatch
timeout connect 5000
timeout client 50000
timeout server 50000
frontend 42aea3d2-84fb-4b15-97c7-cd56376fc360
option tcplog
bind 10.0.0.4:80
mode http
default_backend 9412c907-99f5-401b-b5bc-0d1a7628387e
option forwardfor
backend 9412c907-99f5-401b-b5bc-0d1a7628387e
mode http
balance roundrobin
option forwardfor[root@controller lbaas]
防火墙:
1.防火墙规则创建,添加名为 icmp 的规则,拒绝所有源 IP、源端口、目的 IP、目的端口的 ICMP 规则。使用 neutron 命令查询规则列表信息、详细信 息。(物理环境)
[root@controller ~]
[root@controller ~]
2.防火墙创建,创建名为 nginx 的防火墙,添加防火墙规则 nginx-80,放行 所有源 IP、源端口、目的 IP、目的端口为 80 的规则。创建防火墙策略 nginx-policy,添加 nginx-80 规则。使用 neutron 命令查询防火墙详细信息、
策略详细信息、规则详细信息。(物理环境)
[root@controller ~]
[root@controller ~]
[root@controller ~]
Mariadb 高可用:
1.申请两台虚拟机,构建 mariadb 高可用数据库集群,通过命令查询集群状 态。
2.申请两台虚拟机,构建 mariadb 主从数据库,通过命令查询数据库状态。
3.配置 mariadb 高可用数据库,并对集群数据库进行运维操作。
系统排错:
1.使用 awk 相关命令,查询表格文件中以空格为分隔符,包含关键字“key” 的一行中第一个字段和最后一个字段的内容,以“,”作为间隔。
# awk -F “” ‘$1~/key/{print $NF}’ cheng.txt
2.使用 sed 相关命令,显示文件中第 10 行内容。
[root@controller ~]# sed -n
3.使用 sed 相关命令,替换文件中的关键词“key”为“guanjianci”。
[root@controller ~]# sed -i "s/key/guanjianci/g" cheng.txt
4.使用 grep 相关命令,查询显示文件中以“[”开始并以“]”结束的所有行。
5.使用 grep 相关命令,查询显示文件中的包含关键词“key”的行。
6 .登录“iaas-all”云主机,使用 curl 的方式,获取 token 值,并使用该 token
值,获取用户信息。
7 .登录“iaas-all”云主机,使用 curl 的方式,获取 token 值,并使用该 token
值,获取指定用户信息。
8 .登录“iaas-all”云主机,获取 token 值,使用 curl 的方式,创建用户并使用 命令查询验证。
9.在云平台后台管理的过程中出现错误导致无法获取镜像信息,找出错误原
因,并进行修复。
10.在云平台后台管理的过程中出现错误导致无法登录数据库,找出错误原 因,并进行修复。
11.在云平台后台管理的过程中出现错误导致无法进行 keystone 验证,找出 错误原因,并进行修复。
12.在云平台后台管理的过程中对象存储功能无法使用,找出错误原因,并 进行修复。
13.在云平台后台管理的过程中块存储功能无法使用,找出错误原因,并进 行修复。
14.在云平台后台管理的过程中无法上传镜像,找出错误原因,并进行修复。
15.在云平台后台管理的过程中无法将云硬盘挂载到云主机上,找出错误原 因,并进行修复。
16.在云平台后台管理的过程中无法获取云主机详细信息,找出错误原因, 并进行修复。
17.在云平台中创建云主机过程中出现错误无法成功创建,找出错误原因, 并进行修复。
18.在云平台后台管理的过程中发生错误,错误现象为无法创建可用的云硬 盘,无法获取云主机信息,也无法将云硬盘挂载到云主机上。找出错误原因, 并进行修复。
19.搭建 Ceph 分布式集群存储,配置 Ceph 作为 openstack 后端的统一存储, 为 glance、nova、cinder、swift 提供存储支持