小言_互联网的博客

2021江苏省云计算技术与应用比赛

1458人阅读  评论(0)

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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场