2021江苏省云计算技术与应用比赛
前言
由于没有原题,单纯靠记忆力记下来的,可能没有看起来那么正规,比的时候太紧张了,也没有可能有些题目没有记全,只能说个大概,有些资源没有所以就没有做了
【私有云】
某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授权等管理。
系统架构如图1所示,IP地址规划如表1所示。
图1系统架构图
表1 IP地址规划
设备名称 主机名 接口 IP地址 说明
云服务器1 Controller eth0 192.168.x.10/24 Vlan x
eth1 192.168.y.10/24 Vlan y
云服务器2 Compute eth0 192.168.x.20/24 Vlan x
eth1 192.168.y.20/24 Vlan y
PC-1 本地连接 172.24.z.2/24 Vlan 1
交换机 Vlan 1 172.24.z.1/24 PC机使用
Vlan 10 192.168.x.1/24 服务器使用
Vlan 20 192.168.y.1/24 虚拟机使用
说明:
1.表中的 x,y 为vlan号,每人有两个vlan号;z为工位号;
2.根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;
3.考试所需要的资源包与附件均在考位信息表中给出;
4.竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息时,请确认自己的IP地址,用户名和密码。
【任务1】基础运维任务[5分]
【题目1】基础环境配置
根据表1中的IP地址规划,设置各服务器节点的IP地址,确保网络正常通信,然后按以下要求配置服务器:
(1)设置控制节点主机名为controller,设置计算节点主机名为compute;
(2)修改hosts文件将IP地址映射为主机名;
(3)关闭控制节点的防火墙,设置开机不启动;
(4)设置SELinux为Permissive 模式。
完成后提交控制节点的用户名、密码和IP地址到答题框。
**controller节点:**
[root@localhost ~]# hostnamectl set-hostname controller
[root@localhost ~]# bash
[root@controller ~]# echo 192.168.100.10 controller >> /etc/hosts ##根据自己的IP地址来改
[root@controller ~]# echo 192.168.100.20 compute >> /etc/hosts ##根据自己的IP地址来改
[root@controller ~]# systemctl stop firewalld && systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@controller ~]# setenforce 0
**compute节点:**
[root@localhost ~]# hostnamectl set-hostname controller
[root@localhost ~]# hostnamectl set-hostname compute
[root@localhost ~]# bash
[root@compute ~]# echo 192.168.100.10 controller >> /etc/hosts ##根据自己的IP地址来改
[root@compute ~]# echo 192.168.100.20 compute >> /etc/hosts ##根据自己的IP地址来改
[root@compute ~]# systemctl stop firewalld && systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@compute ~]# setenforce 0
[root@compute ~]# getenforce
Permissive
【题目2】镜像挂载
将提供的CentOS-7-x86_64-DVD-1804.iso和chinaskills_cloud_iaas.iso光盘镜像上传到controller节点/root目录下,然后在/opt目录下分别创建centos目录和openstack目录,并将镜像文件CentOS-7-x86_64-DVD-1804.iso挂载到centos目录下,将镜像文件chinaskills_cloud_iaas.iso挂载到openstack目录下。完成后提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# mkdir /opt/{centos,openstack}
[root@controller ~]# mount CentOS-7-x86_64-DVD-1804.iso /opt/centos/
mount: /dev/loop1 is write-protected, mounting read-only
[root@controller ~]# mount chinaskills_cloud_iaas.iso /opt/openstack/
mount: /dev/loop2 is write-protected, mounting read-only
【题目3】Yum源配置
在controller节点上利用/opt/centos目录中的软件包安装httpd服务,设置开机自启动,并使用http提供yum仓库服务,在http服务默认工作目录下创建openstack和centos目录,将需要用到的源文件分别复制到这两个目录下。分别设置controller节点和compute节点的yum源文件http.repo,其中http服务器地址使用主机名形式。完成后提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# cat /etc/yum.repos.d/http.repo
[centos]
name=centos
gpgcheck=0
enabled=1
baseurl=http://controller/centos
[iaas]
name=iaas
gpgcheck=0
enabled=1
baseurl=http://controller/openstack/iaas-repo
[root@controller ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@compute ~]# cat /etc/yum.repos.d/http.repo
[centos]
name=centos
gpgcheck=0
enabled=1
baseurl=http://controller/centos
[iaas]
name=iaas
gpgcheck=0
enabled=1
baseurl=http://controller/openstack/iaas-repo
【题目4】时间同步配置
在controller节点上部署chrony服务器,允许其他节点同步时间,启动服务并设置为开机启动;在compute节点上指定controller节点为上游NTP服务器,重启服务并设为开机启动。完成后提交控制节点的用户名、密码和IP地址到答题框。
iaas-pre-host.sh ##跑完这个脚本就完成了
【题目5】计算节点分区
在compute节点上利用空白分区划分2个100G分区。完成后提交计算节点的用户名、密码和IP地址到答题框。
[root@controller ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 1.8T 0 disk
├─sdb1 8:17 0 1G 0 part /boot
├─sdb2 8:18 0 1T 0 part
│ ├─centos-root 253:0 0 2.5T 0 lvm /
│ ├─centos-swap 253:1 0 15.8G 0 lvm [SWAP]
│ └─centos-home 253:2 0 600G 0 lvm /home
├─sdb3 8:19 0 100G 0 part
└─sdb4 8:20 0 100G 0 part
##这题比赛的时候有坑,一般来说2T一下用fdisk即可,可是比赛的时候fdisk不能用需要使用parted来分区
【任务2】OpenStack搭建任务[10分]
【题目1】基础安装
在控制节点和计算节点上分别安装iaas-xiandian软件包,根据表2配置两个节点脚本文件中的基本变量(配置脚本文件为/etc/xiandian/openrc.sh)。
表2 云平台配置信息
服务名称 变量 参数/密码
Mysql :
root 000000
Keystone 000000
Glance 000000
Nova 000000
Neutron 000000
Heat 000000
Zun 000000
Keystone :
DOMAIN_NAME demo
Admin 000000
Rabbit 000000
Glance 000000
Nova 000000
Neutron 000000
Heat 000000
Zun 000000
Neutron :
Metadata 000000
External Network enp9s0(外网卡名)
完成后提交控制节点的用户名、密码和IP地址到答题框。
##IP地址实际环境给
[root@controller ~]# cat /etc/xiandian/openrc.sh |egrep -v '(^#|^$)'
HOST_IP=192.168.100.10
HOST_PASS=000000
HOST_NAME=controller
HOST_IP_NODE=192.168.100.20
HOST_PASS_NODE=000000
HOST_NAME_NODE=compute
network_segment_IP=192.168.100.0/24
RABBIT_USER=openstack
RABBIT_PASS=000000
DB_PASS=000000
DOMAIN_NAME=demo
ADMIN_PASS=000000
DEMO_PASS=000000
KEYSTONE_DBPASS=000000
GLANCE_DBPASS=000000
GLANCE_PASS=000000
NOVA_DBPASS=000000
NOVA_PASS=000000
NEUTRON_DBPASS=000000
NEUTRON_PASS=000000
METADATA_SECRET=000000
INTERFACE_IP=192.168.100.10
INTERFACE_NAME=enp9s0
Physical_NAME=provider
minvlan=101
maxvlan=200 ##vlan号比赛会给的
【题目2】数据库安装
在controller节点上使用iaas-install-mysql.sh 脚本安装Mariadb、Memcached、etcd服务。
1、安装完后登入数据库中创建chinaskilldb库,在chinaskilldb库中创建表testable (id int not null primary key,Teamname varchar(50), remarks varchar(255)),在表中插入记录(1,“cloud”,“chinaskill”)。
2、将memcached的缓存大小从64Mib改成256Mib。
3、使用rabbitmq命令 创建用户,并设置Administrators限权
完成后提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# iaas-install-mysql.sh
[root@controller ~]# mysql -uroot -p000000 -e "create database chinaskilldb;"
[root@controller ~]# mysql -uroot -p000000 -e "use chinaskilldb;create table testable (id int not null primary key,Teamname varchar(50), remarks varchar(255));"
[root@controller ~]# mysql -uroot -p000000 -e "use chinaskilldb;insert into testable values(2,'cloudq','chinaskillq');"
[root@controller ~]# sed -i 's/64/256/g' /etc/sysconfig/memcached
[root@controller ~]# systemctl restart memcached
[root@controller ~]# rabbitmqctl add_user chinaskill 000000
Creating user "chinaskill"
[root@controller ~]# rabbitmqctl set_permissions chinaskill ".*" ".*" ".*"
Setting permissions for user "chinaskill" in vhost "/"
【题目3】Keystone服务安装
在controller节点上使用iaas-install-keystone.sh 脚本安装Keystone服务。创建一个用户完成后提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# iaas-install-keystone.sh
[root@controller ~]# openstack user create --domain demo --password 000000 chinaskill
【题目4】Glance安装
在controller节点上使用iaas-install-glance.sh脚本安装glance 服务。完成后上传一个镜像提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# iaas-install-glance.sh
[root@controller ~]# glance image-create --name cirros --disk-format qcow2 --container bare --progress < openstack/cirros-0.3.4-x86_64-disk.img
【题目5】Nova安装
在controller节点和compute节点上分别使用iaas-install-nova -controller.sh脚本、iaas-install-nova-compute.sh脚本安装Nova 服务。完成后创建一个实例类型提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# iaas-install-nova-controller.sh
[root@controller ~]# openstack flavor create --id 1 --disk 20 --ram 1024 test
【题目6】Neutron安装
在controller节点和compute节点上分别修改iaas-install-neutron-controller.sh脚本、iaas-install-neutron-compute.sh脚本分别安装 Neutron 服务,执行完脚本后创建云主机网络extnet,子网extsubnet,虚拟机网段为192.168.y.0/24(其中y是vlan号), 网关为192.168.y.1。完成后提交控制节点的用户名、密码和IP地址到答题框。
##命令行也行,界面也行
[root@controller ~]# iaas-install-neutron-controller.sh
[root@controller ~]# openstack network create --share --external --provider-physical-network provider --provider-network-type vlan extnet
[root@controller ~]# openstack subnet create --network extnet --gateway=192.168.200.1 --subnet-range 192.168.200.0/24 extsubnet
【题目7】Doshboard安装
在controller节点上使用iaas-install-dashboad.sh脚本安装dashboad服务。完成后提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# iaas-install-dashboad.sh
【任务3】OpenStack运维任务[10分]
【题目1】heat模板管理
在openstack私有云平台上,在/root目录下编写模板server.yaml,创建名为“m1.flavor”、 ID 为 1234、内存为1024MB、硬盘为20GB、vcpu数量为 1的云主机类型。完成后提交控制节点的用户名、密码和IP地址到答题框。(在提交信息前请准备好yaml模板执行的环境)
[root@controller ~]# cat flavor.yaml
heat_template_version: 2018-03-02
description: Simple template to deploy a single flavor
resources:
server:
type: OS::Nova::Flavor
properties:
disk: 20
flavorid: 1234
name: m1.flavor
ram: 1024
vcpus: 1
【题目2】云主机管理
在openstack私有云平台上,基于“cirros”镜像、flavor使用“m1.flavor”、extnet的网络,创建一台虚拟机VM1,启动VM1,并使用PC机能远程登录到VM1。提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# openstack server create --image cirros --flavor m1.flavor --network extnet VM1
【题目3】虚拟机调整flavor
使用OpenStack私有云平台,使用centos7.5镜像,flavor使用1vcpu/2G内存/40G硬盘,创建云主机cscc_vm,假设在使用过程中,发现该云主机配置太低,需要调整,请修改相应配置,将dashboard界面上的云主机调整实例大小可以使用,将该云主机实例大小调整为2vcpu/4G内存/40G硬盘。完成后提交所修改配置文件节点的IP地址、用户名和密码到答题框。
[root@controller ~]# cat /etc/nova/nova.conf|grep -Ev '^$|#'
allow_resize_to_same_host=True
【题目4】swift后端存储
[root@controller ~]# cat /etc/glance/glance-api.conf |egrep -v '^$|^#'
[glance_store]
stores = glance.store.swift.Store
default_store = swift
swift_store_region = RegionOne
swift_store_endpoint_type = internalURL
swift_store_container = glance
swift_store_large_object_size = 5120
swift_store_large_object_chunk_size = 200
swift_store_create_container_on_put = True
swift_store_multi_tenant = True
swift_store_admin_tenants = service
swift_store_auth_address = http://controller:5000/v3.0/
swift_store_user = glance
swift_store_key = 000000
【题目5】RabbitMQ集群
使用OpenStack私有云平台,创建三个centos7.5系统的云主机,使用附件\私有云附件\RabbitMQ目录下的软件包安装RabbitMQ服务,安装完毕后,搭建RabbitMQ集群,并打开RabbitMQ服务的图形化监控页面插件。集群使用普通集群模式,其中第一台做磁盘节点,另外两台做内存节点。完成后提交磁盘节点的用户名、密码和IP地址到答题框。
[root@node1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@node1 ...
[{
nodes,[{
disc,[rabbit@node1]},{
ram,[rabbit@node3,rabbit@node2]}]},
{
running_nodes,[rabbit@node3,rabbit@node2,rabbit@node1]},
{
cluster_name,<<"rabbit@node1">>},
{
partitions,[]}]
...done.
[root@node1 ~]# rabbitmq-plugins list|grep [E]
[E] rabbitmq_management 3.3.5
[root@node1 ~]#
##具体做法在另外一个文章里面
【题目6】主从数据库管理
使用OpenStack私有云平台,使用centos7.5系统,创建两台云主机mysql1和mysql2;在这2台云主机上安装据库(使用附件中提供的MariaDB目录下的mariadb-repo作为安装源)并配置为主从数据库(master为主节点、slave为从节点、数据库密码设置为000000);
[root@mysql2 ~]# mysql -uroot -p000000 -e "show slave status\G"
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: mysql1
Master_User: user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 1642
Relay_Log_File: mysql2-relay-bin.000002
Relay_Log_Pos: 1941
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1642
Relay_Log_Space: 2250
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 3
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: No
Gtid_IO_Pos:
Replicate_Do_Domain_Ids:
Replicate_Ignore_Domain_Ids:
Parallel_Mode: conservative
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Slave_DDL_Groups: 6
Slave_Non_Transactional_Groups: 0
Slave_Transactional_Groups: 1
##具体做法在另外一个文章里面
【题目7】数据库读写分离
用上个案例安装完成的主从数据库作为基础进行实验,使用OpenStack平台再创建一台云主机作为mycat数据库中间件,逻辑库USERDB对应数据库database为test(在部署主从数据库时已创建);设置数据库写入节点为主节点mysql1;设置数据库读取节点为从节点mysql2。
[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show @@datasource;'
【题目8】排错题
有一个错误镜像,然后排错
【题目9】zun的运维
使用OpenStack私有云平台,使用脚本完成Zun服务的安装,安装完成后,上传CentOS7_1804.tar镜像到私有云平台,命名为centos7.5-docker。然后使用该镜像启动一个名为chinaskill-container的容器。完成后提交控制节点的用户名、密码和IP地址到答题框。
【任务4】OpenStack运维开发任务[10分]
【题目1】使用python调用api
这道题肯定是有更加简便的方式的,更多做法的,这个仅作参考
python3.6和依赖库的安装,在root/目录下创建create_flavor.py文件,在该文件中编写python代码对接openstack api,要求在openstack私有云平台上创建一个云主机类型,名字为test、vcpu为1个、内存为1024m、硬盘为20G、ID为199999。执行完代码要求输出“云主机类型创建成功”。
import requests
import json
osurl = "http://192.168.100.10"
body={
"auth":{
"identity":{
"methods":["password"],
"password":{
"user":{
"id":"d618c8ee2d234997889b62ee18562ee0",
"password":"000000"
}
}
},
"scope":{
"project":{
"id":"5e7709cbbd7c4c0e8733c3f7360d1d38"
}
}
}
}
headers = {
}
def get_token():
url = osurl+":5000/v3/auth/tokens"
re = requests.post(url,headers=headers,data=json.dumps(body)).headers["X-Subject-Token"]
return re
def flavor_create():
url = osurl+":8774/v2.1/flavors"
headers["X-Auth-Token"] = get_token()
body = {
"flavor":{
"name": "centos7.8",
"id": 302,
"vcpus": 1,
"ram": 2048,
"disk": 40,
}
}
re = requests.post(url,data=json.dumps(body),headers=headers).json()
print(re)
return re
flavor_create()
【题目2】Ansible脚本开发
这道题现在也还没有完善好,是我ansible学的不好,如果是分三次执行命令的话我就知道怎么做了,以下仅作参考脚本和配置文件自己写可以参考我另外的一个文章,当然比赛可以做点小手脚做出来也是可以的,毕竟是技术人,肯定是想用正规途径做出来
在/root目录下创建example目录作为Ansible工作目录,部署的入口文件命名为cscc_install.yaml,对其他三台云主机进行安装高可用数据库集群(MariaDB_Galera_cluster,数据库密码设置为123456)的操作
[root@node ~]# cat mariadb.yaml
---
- hosts: all
tasks:
- name: cp hosts
copy: src=/etc/hosts dest=/etc/hosts
- name: rm yum
shell: rm -rf /etc/yum.repos.d/*
- name: add yum
copy: src=/etc/yum.repos.d/local.repo dest=/etc/yum.repos.d/
- name: inatell mariadb
yum:
name: "{
{ packages }}"
vars:
packages:
- mariadb
- mariadb-server
- net-tools
- name: config
copy:
src: /etc/my.cnf.d/server.cnf
dest: /etc/my.cnf.d/server.cnf
- name: start cluster
shell: "/bin/galera_new_cluster"
- name: mysql
script: /root/mysql.sh
转载:https://blog.csdn.net/qq_44823950/article/details/115618211