==openstack==
IaaS 云计算基础架构平台
基础环境:
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:///opt/CentOS
- gpgcheck=0
- enabled=1
- [iaas]
- name=iaas
- baseurl=file:///opt/iaas-repo
- gpgcheck=0
- enabled=1
- [[email protected] ~]# 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/
MySQL 搭建:
1. 根据平台安装步骤安装至数据库服务, 使用一条命令安装提供的 iaas-install-MySQL.sh 脚本并查看脚本运行的时间.
# time /usr/local/bin/iaas-install-MySQL.sh
2. 使用 root 用户登录数据库, 查询数据库列表信息.
- # MySQL -uroot -p000000
- MariaDB [(none)]> show databases;
3. 使用 root 用户登录数据库, 使用 MySQL 数据库, 查询所有表的信息.
- # MySQL -uroot -p000000
- MariaDB [(none)]> show databases;
- MariaDB [(none)]> use MySQL;
- MariaDB [MySQL]> show tables;
4. 使用 root 用户登录数据库, 使用 MySQL 数据库, 查询所有表的信息, 并查 询表 user 中的特定的信息.
MariaDB [MySQL]> select host,user,password from user;
Keystone 搭建:
1. 按要求安装完 keystone 脚本后, 在数据库中查询 keystone 用户的远程访问 权限信息.
- iaas-install-keystone.sh
- # MySQL -uroot -p000000
- MariaDB [(none)]> use keystone;
- MariaDB [keystone]> desc access_token;
2. 列出数据库 keystone 中的所有表.
- # MySQL -uroot -p000000
- MariaDB [(none)]> use keystone;
- MariaDB [keystone]> show tables;
3. 使用相关命令, 查询角色列表信息.
- # source /etc/keystone/admin-openrc.sh 生效
- # openstack role list
4. 使用相关命令, 查询 admin 项目信息.
# openstack project show admin
5. 使用相关命令, 查询用户列表信息.
# openstack user list
6. 使用相关命令, 查询 admin 用户详细信息.
# openstack user show admin
7. 使用相关命令, 查询服务列表信息.
# openstack service list
8. 使用一条命令将 keystone 的数据库导出为当前路径下的 keystone.sql 文件, 并使用命令查询文件 keystone.sql 的大小.
- # mysqldump -uroot -p000000 keystone> keystone.sql
- # du -h keystone.sql
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
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
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';
- [[email protected] ~]# 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// 上一条创建路由器的命令执行后的列表中可以看到该路由器的 id ea3bf9b6-bb5e-400c-ae07-18755145268// 使用 neutron.NET-list 命令查看 name 为 ext-net1 的网络 id
- # neutron router-interface-add 8d8ea5f2-895d-4e78-a40b-d444097c14dc 4c5519fc-377b-4746-9aea-4dc93c4265b0// 使用 neutron.NET-list 命令查看 name 为 ext-net1 的 sub.NET 网络 id
9. 使用相关命令查询所创建路由器的详细信息.
- # neutron router-list
- # neutron router-show 46c33de5-a148-46a2-9223-72eb6e56cb5c // 路由器的 id 号
10. 使用相关命令查询所创建子网的列表信息, 并查看内网子网的详细信息.
- # neutron subnet-list
- # neutron subnet-show 5130a772-60f9-4492-a9ea-2c3002812ba9
- // 子网的 id 号
11. 使用相关命令查询所创建网络的列表信息.
# neutron.NET-list
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/
Heat 搭建:
1. 在控制节点使用提供的脚本 iaas-install-heat.sh 安装 heat 组件.
# iaas-install-heat.sh
2. 使用 heat 相关命令, 查询 stack 列表.
# heat stack-list
3 . 从考试系统附件下载 server.YAML 文件, 通过命令行使用 server.YAML 文件创 建栈 mystack, 指定配置参数为镜像 CentOS7.2, 网络 int-net2.
- # glance image-list
- # nova network-list
- # heat stack-create -f server.YAML -P ImageId=CentOS7.2 -P NetID=int-net2 mystack(注释)
- # heat stack-create -f server.YAML -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
Trove 搭建:
注意: 安装 trove 时必须安装完 cinder 和 swift
1 . 在控制节点配置提供的脚本 iaas-install-trove.sh, 使其连接的网络为 int-net1, 安装数据库 trove 服务, 完成 trove 服务在控制节点的安装. 完成后查询所有 的数据库实例列表.
- # iaas-install-trove.sh
- # MySQL -uroot -p000000
- MariaDB [(none)]> use trove;
- MariaDB [(none)]> show databases;
2 . 在控制节点上传提供的 MySQL_5.6_XD.qcow2 到系统内, 并创建 MySQL 的数据库存储类型, 使用上传的镜像更新该数据库类型的版本信息和镜像信 息.
- # glance image-create --name "mysql-5.6" --disk-format qcow2 --container-format bare --progress </opt/images/MySQL_5.6_XD.qcow2
- # trove-manage datastore_update MySQL ''# glance_id=$(glance image-list | awk'/ mysql-5.6 / {
- print $2
- }')
- # trove-manage datastore_version_update MySQL MySQL-5.6 MySQL ${glance_id} '' 1
3. 在控制节点查创建名称为 MySQL-1, 大小为 5G, 数据库名称为 myDB, 远 程连接用户为 user, 密码为 r00tme, 类型为 m1.small 完成后查询 trove 列表 信息, 并查询 MySQL-1 的详细信息.
- # FLAVOR_ID=$(openstack flavor list | awk '/ m1.small / { print $2 }')
- # trove create MySQL-1 ${
- FLAVOR_ID
- } --size 5 --databases myDB --users user:r00tme --datastore_version MySQL-5.6 --datastore MySQL
- # trove list
4. 在控制节点查询所有数据的版本信息, 完成后查询 MySQL 数据库的详细信 息.
- .
- # MySQL -uroot -p000000
- > select version();
任务二, IaaS 云平台运维
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.
# rabbitmqctl add_user xiandian-admin admin
3. 使用 rabbitmqctl 命令查询所有用户列表.
# rabbitmqctl list_users
4. 使用命令对 xiandian-admin 用户进行授权, 对本机所有资源可写可读权限.
# rabbitmqctl set_permissions -p / xiandian-admin ".*" ".*" ".*"
5 . 使用 rabbitmqctl 命令查询集群状态.
# rabbitmqctl cluster_status
6 . 使用命令给 xiandian-admin 用户创建 administrator 角色, 并查询.
- # rabbitmqctl set_user_tags xiandian-admin administrator
- # rabbitmqctl list_users
7. 使用命令对用户 xiandian-admin 进行授权, 对本机所有资源可写可读权限, 然后查询 xiandian-admin 用户的授权信息.
- # rabbitmqctl set_permissions -p / xiandian-admin ".*" ".*" ".*"
- # rabbitmqctl list_user_permissions xiandian-admin
8. 使用 rabbitmqctl 命令, 查看队列信息, 所包含的信息包括 name,arguments, messages,memory.
# rabbitmqctl list_queues
9. 通过修改配置文件的方式修改 memcache 的缓存大小, 使用 ps 相关命令查
询 memcahce 进程的信息, 将修改的配置文件全路径文件名, 修改的参数以 及相应的参数值, 查询 memcache 进程信息.
- # vi /etc/sysconfig/Memcached
- # ps -ef | grep Memcached
10. 构建 rabbitmq 集群, 并对集群进行运维操作.
MySQL 运维:
1. 使用数据库的相关命令查询数据库的编码方式.
- # MySQL -uroot -p000000
- 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 表的特定字段. 最后赋予这个用户所有数据库的 "查询"" 删 除 ""更新"" 创建 " 的本地权限.
- # MySQL -uroot -p000000
- 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 的降序排序.(关于数据库的命令均使用小 写)
- # MySQL -uroot -p000000
- MariaDB [(none)]> use keystone;
- MariaDB [keystone]> select * from local_user order by id desc;
MongoDB 运维
1. 登录 iaas 云主机, 登录 MongoDB 数据库, 查看数据库, 使用 ceilometer 数据库, 查看此数据库下的集合, 并查询此数据库用户, 最后创建一个数据 库并查询.
- [[email protected] ~]# mongo // 登录数据库
- > show dbs; // 查看数据库
- > use ceilometer; // 切换数据库
- > show collections; // 查看集合
- > show users; // 查看用户
- > use wjm
- switched to db wjm // 创建名为 wjm 的数据库
- > db.createCollection('wjm')
- {
- "ok" : 1
- } // 查询创建的数据库
2. 登录 iaas 云主机, 登录 MongoDB 数据库, 新建一个数据库, 使用这个数 据库, 向集合中插入数据, 最后查询特定的一类数据.
- [[email protected] ~]# mongo // 登录数据库
- > use dancy // 新建名为 dancy 的数据库
- switched to db dancy
- > db.user.insert({
- "name": "dancy", "age": 23
- }) // 向集合插入数据
- WriteResult({
- "nInserted" : 1
- })
- > db.user.find() // 查看已插入集合的所有文档: db.user.find() , 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
- }) // 按照关键字 age 升序
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-- 场均得分; PTS-- 总得分; FG%-- 投篮命 中率; 3P%-- 三分命中率; MPG-- 平均上场时间
- mongoimport -d basketball -c player test.dat
- use basketball
- db.player.find({
- "MPG":{
- $gt:"35"
- },"PPG":{
- $gte:"20"
- },"PPG":{
- $lte:"25"
- }
- }).sort({
- "PTS":-1
- })
Keystone 运维:
1 . 在 keystone 中创建用户 testuser, 密码为 password.
- # source /etc/keystone/admin-openrc.sh
- # openstack user create --domain demo --password password testuser
2 . 将 testuser 用户分配给 admin 项目, 赋予用户 user 的权限.
# openstack role add --project admin --user testuser user
3. 以管理员身份将 testuser 用户的密码修改为 000000.
# openstack user set --password 000000 testuser
4. 通过 openstack 相关命令获取 token 值.
[[email protected] ~]# openstack token issue
5. 使用命令查询认证服务的查询端点信息.
- [[email protected] ~]# MySQL -uroot -p000000
- MariaDB [(none)]> use keystone;
- MariaDB [keystone]> select * from service; // 查询服务
- MariaDB [keystone]> select * from endpoint; // 查询端点
6. 使用命令列出认证服务目录.
[[email protected] ~]# openstack service list
7 . 在 keystone 中创建用户 testuser, 密码为 password, 创建好之后, 使用命 令修改 testuser 密码为 000000, 并查看 testuser 的详细信息.
- # source /etc/keystone/admin-openrc.sh
- # openstack user create --domain demo --password password testuser
- # openstack user set --password 000000 testuser
- [[email protected] ~]# openstack user list
- [[email protected] ~]# openstack user show b4c59d24268c445da8e69ccb1ff826d8
8 . 在 keystone 中创建用户 testuser, 密码为 password, 创建好之后, 使用命 令修改 testuser 的状态为 down, 并查看 testuser 的详细信息.
- # source /etc/keystone/admin-openrc.sh
- # openstack user create --domain demo --password password testuser
9 . 完成 keystone 证书加密的 HTTPS 服务提升.
[[email protected] ~]# keystone-manage ssl_setup
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
- [[email protected] ~]# openstack image set examimage --tag lastone
- [[email protected] ~]# openstack image show 315f8ebc-8ffb-43a2-8102-b84a40fafbaf
5. 通过一条组合命令获取镜像列表信息, 该组合命令包含:
(1)使用 curl 命令获取镜像列表信息;
(2)使用 openstack 相关命令获取的 token 值;
(3)仅使用 awk 命令且用 "|" 作为分隔符获取 token 具体参数值.
- [[email protected] ~]# source /etc/keystone/admin-openrc.sh
- [[email protected] ~]#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 值.
- [[email protected] ~]# source /etc/keystone/admin-openrc.sh
- [[email protected] ~]#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
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 所有的监控列表, 并查看监控主机的详细 信息.
- [[email protected] ~]# nova hypervisor-list
- [[email protected] ~]# 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.
[[email protected] ~]# nova start examtest
8. 此题可使用物理 iaas 环境, 使用 openstack 相关命令, 启动一个云主机, 云主机类型使用 m1.small, 镜像使用 centos6.5, 云主机名称为 xxxtest, 并 使用 openstack 命令查看此云主机的详细信息.
[[email protected] ~]# openstack image list
9. 此题可使用物理环境, 登录 dashboard 界面, 创建一台虚拟机, 将该虚拟 机使用手动迁移的方式, 迁移至另一个计算节点并查看.(controller 既是 控制也是计算)
- [[email protected]~]#cd/var/lib/nova/instances/
- [[email protected]]#ll
- [[email protected]]#scp-r62b6ab26-7040-4a04-9456-23549a2a0ddb/[email protected]:/var/lib/nova/instances/
- [[email protected]~]#cd/var/lib/nova/instances/
- [[email protected]]#ll
- [[email protected]]#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';
- [[email protected]]#systemctlrestartopenstack-nova-compute
- [[email protected]]#novastart62b6ab26-7040-4a04-9456-23549a2a0ddb
10. 登录 iaas-all 云主机, 修改 nova 后端默认存储位置.
[[email protected] ~]# cd /var/lib/nova/instances/
11. 修改相应的配置文件, 使得 openstack 云主机的工作负载实现所要求的性 能, 可靠性和安全性.
# /etc/neutron/neutron.conf
12. 配置 NFS 网络存储作为 nova 的后端存储.
Cinder 运维:
1. 使用分区工具, 对 / dev/vda 进行分区, 创建一个分区, 使用命令将刚创建 的分区创建为物理卷, 然后使用命令查看物理卷信息.
- [[email protected] ~]# fdisk /dev/vda
- 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 命令查看.
- [[email protected] ~]# lsblk
- [[email protected] ~]# vgs
- [[email protected] ~]# lvs
- [[email protected] ~]# pvcreate /dev/vda3
- [[email protected] ~]# vgextend VolGroup /dev/vda3
- [[email protected] ~]# vgs
- [[email protected] ~]# lVextend -L +5G /dev/mapper/VolGroup-lv_root
- [[email protected] ~]# df -h
- [[email protected] ~]# resize2fs /dev/mapper/volGroup-lv_root
- [[email protected] ~]# df -h
10 . 登录 "iaas-all" 云主机, 使用命令对磁盘 / dev/vda 进行分区, 然后使用命令, 创建 raid 磁盘阵列, 最后将 md0 格式化为 ext4 格式并查看该磁盘阵列的 UUID.
12 . 登录 "iaas-all" 云主机, 查看 cinder 后端存储空间大小, 将 cinder 存储空间 扩容 10 个 G 大小, 最后查看 cinder 后端存储空间大小.
- [[email protected]~]#fdisk/dev/vda
- Command(mforhelp):n
- Select(defaultp):p
- Lastsector,+sectorsor+size{
- K,M,G
- }(104857600-209715199,default209715199):+10G
- Command(mforhelp):w
- [email protected]~]#lsblk
- [[email protected]~]#partprobe
- [[email protected]~]#lsblk
- [[email protected]~]#pvcreate/dev/vda2
- Device/dev/vda2notfound(orignoredbyfiltering).
- [[email protected]~]#vi/etc/lvm/lvm.conf
- [[email protected]~]#pvcreate/dev/vda2
- Physicalvolume"/dev/vda2"successfullycreated
- [[email protected]~]#pvs
- PVVGFmtAttrPSizePFree
- /dev/vda2lvm2---10.00g10.00g
- /dev/vda7cinder-volumeslvm2a--4.75g4.75g
- [[email protected]~]#vgextendcinder-volumes/dev/vda2
- Volumegroup"cinder-volumes"successfullyextended
- [[email protected]~]#vgs
- VG#PV#LV#SNAttrVSizeVFree
- cinder-volumes200wz--n-14.74g14.74g
13 . 修改相应的配置文件, 增加 cinder backup 后端备份.
14. 配置 NFS 网络存储作为 cinder 的后端存储.
Swift 运维:
1. 使用命令查看 swift 服务状态, 然后创建一个容器, 并使用命令查看容器 列表.
- [[email protected] ~]# source /etc/keystone/admin-openrc.sh
- [[email protected] ~]# swift stat // 查看服务状态
- [[email protected] ~]# swift post test // 创建容器
- [[email protected] ~]# swift list --lh // 查看容器列表
2. 使用 swift 相关命令, 创建一个容器, 然后使用命令查看该容器的状态.
- [[email protected] ~]# swift post test // 创建容器
- [[email protected] ~]# swift stat // 查看服务状态
3. 使用 swift 相关命令, 查询 swift 对象存储服务可以存储的单个文件大小的 最大值.
4. 使用 swift 相关命令, 创建一个容器, 然后往这个容器中上传一个文件(文 件可以自行创建), 上传完毕后, 使用命令查看容器.
- [[email protected] ~]# swift post test // 创建容器
- [[email protected] ~]# dd if=/dev/zero of=/tmp/example-500Mb bs=1M count=500
- 500+0 records in
- 500+0 records out
- 524288000 bytes (524 MB) copied, 0.380656 s, 1.4 GB/s
- [[email protected] ~]# swift list --lh // 查看容器列表
5. 登录 iaas 云主机, 使用 openstack 命令, 创建一个容器, 并查询, 上传一 个文件 (可自行创建) 到这个容器中, 并查询.
- [[email protected] ~]# swift post test // 创建容器
- [[email protected] ~]# dd if=/dev/zero of=/tmp/example-500Mb bs=1M count=500
- 500+0 records in
- 500+0 records out
- 524288000 bytes (524 MB) copied, 0.380656 s, 1.4 GB/s
- [[email protected] ~]# swift list --lh // 查看容器列表
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 上.
[[email protected] ~]# ps -e|grep kvm
4. 此题使用物理平台. 登录 controller 节点, 调优 kvm 的 I/O 调度算法, centos7 默认的是 deadline, 使用命令将参数改为 noop 并查询.
5. 此题使用物理 iaas 平台. 登录 controller 节点, 使用 cat 命令, 只查看当前
最后将大页挂载到 / dev/hugepages / 上.
- [[email protected] ~]# echo 20> /proc/sys/vm/nr_hugepages
- [[email protected] ~]# 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 交互式界面, 调整虚拟机的内存大小, 最后使用命令查看该 虚拟机的详情.
- [[email protected]~]#virsh
- virsh#dominfoinstance-000000fd
- virsh#setmeminstance-000000fd5242880
- virsh#dominfoinstance-000000fd
7.KVM 网络优化: 让虚拟机访问物理网卡的层数更少, 直至对物理网卡的 单独占领, 和物理机一样的使用物理网卡, 达到和物理机一样的网络性能.
网络运维:
1. 在控制节点安装配置 JDK 环境. 安装完成后, 查询 JDK 的版本信息.
[[email protected] ~]# java -version
2. 在控制节点安装配置 Maven 环境. 安装完成后, 查询 Maven 的版本信息.
[[email protected] ~]# java -version
3 . 继续完成 OpenDaylight 的安装, 完成后使用 curl 命令访问网页
- http://192.168.100.10:8181/index.html.
- [[email protected] ~]# 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 相关命令, 查询测量值的列表信息.
[[email protected] ~]# ceilometer meter-list
2. 使用 ceilometer 相关命令, 查询给定名称的测量值的样本列表信息.
[[email protected] ~]# ceilometer meter-list -q resource_id=a55e5bda-2a94-471e-a773-3ed65259b85b
3. 使用 ceilometer 相关命令, 查询事件列表信息.
[[email protected] ~]# ceilometer event-list
4. 使用 ceilometer 相关命令, 查询资源列表.
[[email protected] ~]# 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 相关命令, 查询用户的告警列表信息.
[[email protected] ~]# ceilometer alarm-list
7. 使用 ceilometer 相关命令, 查询给定名称的告警的历史改变信息.
[[email protected] ~]# ceilometer alarm-history (id 号)
8. 使用 ceilometer 相关命令, 修改给定名称的告警状态为不生效.
[[email protected] ~]# ceilometer alarm-update --enabled False
9. 使用 ceilometer 相关命令, 删除给定名称的告警, 并使用命令查看删除结 果.
# ceilometer alarm-delete -a 后跟 id
10. 使用 Ceilometer 相关命令, 查看某云主机有哪些样本, 然后使用 Ceilometer
命令查看云主机的特定样本信息.
Heat 运维:
1. 使用 heat 相关命令, 查看 heat 的服务列表信息.
[[email protected] ~]# heat service-list
2. 使用 heat 相关命令, 查询给定的详细资源类型信息.
- [[email protected] ~]# heat resource-type-list // 列出可用的资源类型
- [[email protected] ~]# heat resource-type-show OS::Nova::ServerGroup // 查询给定的资源
3. 使用 heat 相关命令, 查询 heat 模板的版本信息.
[[email protected] ~]# heat template-version-list
4. 使用 heat 相关命令, 查询 heat 最新版本模板的功能列表.
[[email protected] ~]# heat template-function-list
5. 使用提供的文件 server.YAML 创建名为 heat 的 stack, 其中 glance 镜像使用
centos7, 网络使用 int-net1. 查询 stack 列表信息.
- # glance image-list
- # nova network-list
- # heat stack-create -f server.YAML -P ImageId=CentOS7.2 -P NetID=int-net2 mystack(注释)
- # heat stack-create -f server.YAML -P 0d234b90-f11c-4cf6-b298-9ecbb8e54b34=CentOS7.2 -P ce494d87-a05c-4575-bcba-d79c3bedae8d=int2.NET mystack
6. 现有 server.YAML 文件, 请使用该 YAML 文件创建堆栈 mystack, 指定使用镜 像 centos6.5, 使用网络 int-net1, 待创建完成后, 查询堆栈 mystack 的状态 为 CREATE_COMPLETE 的事件信息.
# heat event-list mystack
7. 对提供的 server.YAML 模板进行修改, 添加所需参数. 通过命令使用 heat 模 板创建名为 test-heat 的 stack, 其中 glance 镜像使用 centos7, 网络使用 int-net1. 查询 stack 列表信息.
# heat event-show mystack
数据加密:
前提: 按要求配置静态 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 配置文件.(物理环境)
- [[email protected] ~]# cd /var/lib/neutron/lbaas/
- [[email protected] lbaas]# cat /var/lib/neutron/lbaas/9412c907-99f5-401b-b5bc-0d1a7628387e/conf
- 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[[email protected] lbaas]#
防火墙:
1. 防火墙规则创建, 添加名为 icmp 的规则, 拒绝所有源 IP, 源端口, 目的 IP, 目的端口的 ICMP 规则. 使用 neutron 命令查询规则列表信息, 详细信 息.(物理环境)
- [[email protected] ~]# neutron firewall-rule-list
- [[email protected] ~]# neutron firewall-rule-show
2. 防火墙创建, 创建名为 nginx 的防火墙, 添加防火墙规则 nginx-80, 放行 所有源 IP, 源端口, 目的 IP, 目的端口为 80 的规则. 创建防火墙策略 nginx-policy, 添加 nginx-80 规则. 使用 neutron 命令查询防火墙详细信息,
策略详细信息, 规则详细信息.(物理环境)
- [[email protected] ~]# neutron firewall-show
- [[email protected] ~]# neutron firewall-policy-show
- [[email protected]ler ~]# neutron firewall-rule-show
Mariadb 高可用:
申请两台虚拟机, 构建 mariadb 高可用数据库集群, 通过命令查询集群状 态.
申请两台虚拟机, 构建 mariadb 主从数据库, 通过命令查询数据库状态.
配置 mariadb 高可用数据库, 并对集群数据库进行运维操作.
系统排错:
1. 使用 awk 相关命令, 查询表格文件中以空格为分隔符, 包含关键字 "key" 的一行中第一个字段和最后一个字段的内容, 以 "," 作为间隔.
# awk -F ""'$1~/key/{print $NF}' cheng.txt
2. 使用 sed 相关命令, 显示文件中第 10 行内容.
[[email protected] ~]# sed -n '10,10p' cheng.txt
3. 使用 sed 相关命令, 替换文件中的关键词 "key" 为 "guanjianci".
[[email protected] ~]# 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 提供存储支持
来源: http://www.bubuko.com/infodetail-3273571.html