没做的以后看情况会补上
【任务1】基础运维任务[5分]
【适用平台】私有云
【题目1】基础环境配置[1分]
使用提供的两台云主机,按以下要求配置服务器:
(1)设置控制节点主机名为controller,设置计算节点主机名为compute;
- hostnamectl
(2)修改hosts文件将IP地址映射为主机名;
- vim /etc/hosts
完成后提交控制节点的用户名、密码(默认Abc@1234)和IP地址到答题框。
【题目2】Yum源配置[1分]
使用提供的http服务地址,在http服务下,存在centos7.9和iaas的网络yum源,使用该http源作为安装iaas平台的网络源。分别设置controller节点和compute节点的yum源文件http.repo。
- 基础知识暂不讲解
【题目3】计算节点分区[1分]
在compute节点上利用空白分区划分3个10G分区。完成后提交计算节点的用户名、密码(默认Abc@1234)和IP地址到答题框。
- fdisk
【题目4】配置无秘钥ssh[1分]
配置controller节点可以无秘钥访问compute节点,配置完成后,尝试ssh连接compute节点的hostname进行测试。完成后提交controller节点的用户名、密码和IP地址到答题框。
- ssh-keygen
【题目5】配置主机禁ping[1分]
修改controller节点的/etc/sysctl.conf文件,配置controller节点禁止其他节点可以ping它,配置完之后。完成后提交controller节点的用户名、密码和IP地址到答题框。
- net.ipv4.icmp_echo_ignore_all = 1
【任务2】OpenStack搭建任务[10分]
【适用平台】私有云
【题目1】基础安装[1分]
在控制节点和计算节点上分别安装openstack-iaas软件包,根据表2配置两个节点脚本文件中的基本变量(配置脚本文件为/etc/openstack/openrc.sh)。
表2 云平台配置信息
服务名称
变量
参数/密码
Mysql
root
Abc@1234
Keystone
000000
demo
Glance
000000
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Keystone
DOMAIN_NAME
Admin
000000
Rabbit
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Neutron
Metadata
External Network
enp9s0(以实际为准)
云主机网段
10.24.192.0/20
完成后提交控制节点的用户名、密码和IP地址到答题框。
【题目2】数据库与基础服务安装[1分]
在controller节点上使用iaas-install-mysql.sh 脚本安装Mariadb、Memcached、RabbitMQ等服务。安装服务完毕后,完成下列题目。
1.登录数据库服务,创建库test,并在库test中创建表company(表结构如(id int not null primary key,name varchar(50),addr varchar(255))所示),在表company中插入一条数据(1,“alibaba”,“china”)。
[root@controller ~]# mysql -uroot -p000000
MariaDB [(none)]> use test;
Database changed
MariaDB [test]> show tables;
Empty set (0.000 sec)
MariaDB [test]> create table company(id int not null primary key,name varchar(50),addr varchar(255));
Query OK, 0 rows affected (0.146 sec)
MariaDB [test]> select * from company;
Empty set (0.001 sec)
MariaDB [test]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| company |
+----------------+
1 row in set (0.000 sec)
MariaDB [test]> insert into company values(1,"alibaba","china");
Query OK, 1 row affected (0.001 sec)
MariaDB [test]> select * from company
-> ;
+----+---------+-------+
| id | name | addr |
+----+---------+-------+
| 1 | alibaba | china |
+----+---------+-------+
1 row in set (0.000 sec)
MariaDB [test]>
2.使用RabbitMQ服务的相关命令创建用户chinaskill,密码为chinapd,并赋予该用户administrator权限。
[root@controller ~]# rabbitmqctl add_user chinaskill chinapd
Creating user "chinaskill"
[root@controller ~]# rabbitmqctl set_user_tags chinaskill ?administrator
Setting tags for user "chinaskill" to ['?administrator']
[root@controller ~]#
添加用户 rabbitmqctl add_user {username} {password}
rabbitmqctl add_user admin 123456
修改用户密码 rabbitmqctl change_password {username} {newpassword}
rabbitmqctl change_password admin 123456#验证用户密码 rabbitmqctl authenticate_user admin 123456
#删除用户 rabbitmqctl delete_user admin
#列出用户 rabbitmqctl list_users
给用户设置标签 none management monitoring administrator 多个用,分隔
#rabbitmqctl set_user_tags {username} {tag …} rabbitmqctl
set_user_tags admin administrator#rabbitmqctl set_permissions [-p host] {user} {conf} {write} {read}
#vhost 授予用户访问权限的vhost名称 默认 / #user 可以访问指定vhost的用户名 #conf 一个用于匹配用户在那些资源上拥有可配置的正则表达式 #write 一个用于匹配用户在那些资源上拥有可写的正则表达式 #read
一个用于匹配用户在那些资源上拥有可读的正则表达式#授予admin用户可访问虚拟主机testhost,并在所有的资源上具备可配置、可写及可读的权限 rabbitmqctl
set_permissions -p /testhost admin “.*" ".*” “.*”#授予admin用户可访问虚拟主机testhost1,在以queue开头的资源上具备可配置权限、并在所有的资源上可写及可读的权限
rabbitmqctl set_permissions -p /testhost1 admin “^queue.*" ".*” “.*”#清除权限 rabbitmqctl clear_permissions -p /testhost admin
#虚拟主机的权限 rabbitmqctl list_permissions -p /testhost
#用户权限 rabbitmqctl list_user_permissions admin
3.对mencached服务进行操作,使memcached的缓存由64MB变为256MB。
完成后提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# vi /etc/sysconfig/memcached
[root@controller ~]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="256"#64
OPTIONS="-l 127.0.0.1,::1,controller"
【题目3】Keystone服务安装[1分]
在controller节点上使用iaas-install-keystone.sh脚本安装Keystone服务。安装完成后,使用keystone相关命令,创建用户chinaskill,密码为000000。完成后提交控制节点的用户名、密码和IP地址到答题框。
keystone user-create --name chinaskill --pass 000000
【题目4】Glance安装[1分]
在controller节点上使用iaas-install-glance.sh脚本安装glance 服务。使用命令将提供的cirros-0.3.4-x86_64-disk.img镜像上传至平台,命名为cirros,并设置最小启动需要的硬盘为10G,最小启动需要的内存为1G。完成后提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# source /etc/keystone/admin-openrc.sh
[root@controller ~]# glance image-create --name cirros --min-ram 1024 --min-disk 10 --disk-format qcow2 --container-format bare --file /opt/images/cirros-0.3.4-x86_64-disk.img
+------------------+----------------------------------------------------------------------------------+
| Property | Value |
+------------------+----------------------------------------------------------------------------------+
| checksum | ee1eca47dc88f4879d8a229cc70a07c6 |
| container_format | bare |
| created_at | 2022-10-27T20:12:39Z |
| disk_format | qcow2 |
| id | df8862af-1bb7-4e96-be2a-81b8879a2ea2 |
| min_disk | 10 |
| min_ram | 1024 |
| name | cirros |
| os_hash_algo | sha512 |
| os_hash_value | 1b03ca1bc3fafe448b90583c12f367949f8b0e665685979d95b004e48574b953316799e23240f4f7 |
| | 39d1b5eb4c4ca24d38fdc6f4f9d8247a2bc64db25d6bbdb2 |
| os_hidden | False |
| owner | 487896f7f58f4271a7fba8da32517aed |
| protected | False |
| size | 13287936 |
| status | active |
| tags | [] |
| updated_at | 2022-10-27T20:12:39Z |
| virtual_size | Not available |
| visibility | shared |
+------------------+----------------------------------------------------------------------------------+
[root@controller ~]#
【题目5】Glance服务调优[1分]
glance服务安装完毕后,修改glance响应最大返回项数,该参数默认设置过短,可能导致响应数据被截断,镜像上传失败,修改该参数为1000。完成后提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# vi /etc/glance/glance-api.conf
[root@controller ~]#
#修改
limit_param_default = 1000 #25
【题目6】Nova安装[1分]
在controller节点和compute节点上分别使用iaas-install-nova -controller.sh脚本、iaas-install-nova-compute.sh脚本安装Nova 服务。安装完成后,修改云平台中默认每个tenant的实例配额为20个。完成后提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# vi /etc/nova/nova.conf
[root@controller ~]#
#修改
5022 instances=20 #10
【题目7】修改Nova启动策略[1分]
在平时使用OpenStack平台的时候,当同时启动大量虚拟机时,会出现排队现象,导致虚拟机启动超时从而获取不到IP地址而报错失败,请修改nova相关配置文件,使虚拟机可以在启动完成后获取IP地址,不会因为超时而报错。配置完成后提交controller点的用户名、密码和IP地址到答题框。
[root@controller ~]# cat /etc/nova/nova.conf | grep vif_plugging_is_fatal
95 #vif_plugging_is_fatal=true
[root@controller ~]# vi /etc/nova/nova.conf
[root@controller ~]# cat /etc/nova/nova.conf | grep vif_plugging_is_fatal
#vif_plugging_is_fatal=false
【题目8】Neutron安装[1分]
使用提供的脚本iaas-install-neutron-controller.sh和iaas-install-neutron-compute.sh,在controller和compute节点上安装neutron服务。完成后提交控制节点的用户名、密码和IP地址到答题框。
创建两个网络
Ext-net 外部网络 segmentid 30 网络模式 vlan 物理适配器provider ip地址段 10.0.1.0/24 ip池10.0.1.100-10.0.1.200
[root@controller ~]# openstack network create --provider-network-type vlan --provider-physical-network provider --provider-segment 30 Ext-net
+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2022-10-28T10:39:27Z |
| description | |
| dns_domain | None |
| id | f440c753-c456-45f8-8a74-53e1deab3722 |
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| is_default | False |
| is_vlan_transparent | None |
| location | cloud='', project.domain_id=, project.domain_name='demo', project.id='487896f7f58f4271a7fba8da32517aed', project.name='admin', region_name='', zone= |
| mtu | 1500 |
| name | Ext-net |
| port_security_enabled | True |
| project_id | 487896f7f58f4271a7fba8da32517aed |
| provider:network_type | vlan |
| provider:physical_network | provider |
| provider:segmentation_id | 30 |
| qos_policy_id | None |
| revision_number | 1 |
| router:external | Internal |
| segments | None |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
| updated_at | 2022-10-28T10:39:28Z |
+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
#创建子网
[root@controller ~]# openstack subnet create --network Ext-net --allocation-poo start=10.0.1.100,end=10.0.1.200 --subnet-range 10.0.1.0/24 ext-subnet
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| allocation_pools | 10.0.1.100-10.0.1.200 |
| cidr | 10.0.1.0/24 |
| created_at | 2022-10-28T10:48:04Z |
| description | |
| dns_nameservers | |
| enable_dhcp | True |
| gateway_ip | 10.0.1.1 |
| host_routes | |
| id | 06462ec4-4cbf-4262-a282-287514f070b2 |
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| location | cloud='', project.domain_id=, project.domain_name='demo', project.id='487896f7f58f4271a7fba8da32517aed', project.name='admin', region_name='', zone= |
| name | ext-subnet |
| network_id | f440c753-c456-45f8-8a74-53e1deab3722 |
| prefix_length | None |
| project_id | 487896f7f58f4271a7fba8da32517aed |
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | None |
| tags | |
| updated_at | 2022-10-28T10:48:04Z |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
Int-net内部网络 segmentid 40 网络模式 vlan 物理适配器provider ip地址段 10.0.2.0/24 ip池10.0.2.100-10.0.2.200
[root@controller ~]# openstack network create --provider-network-type vlan --provider-physical-network provider --provider-segment 40 int-net
+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2022-10-28T10:50:09Z |
| description | |
| dns_domain | None |
| id | a84b7340-2053-431f-9da4-d65a27866a0a |
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| is_default | False |
| is_vlan_transparent | None |
| location | cloud='', project.domain_id=, project.domain_name='demo', project.id='487896f7f58f4271a7fba8da32517aed', project.name='admin', region_name='', zone= |
| mtu | 1500 |
| name | int-net |
| port_security_enabled | True |
| project_id | 487896f7f58f4271a7fba8da32517aed |
| provider:network_type | vlan |
| provider:physical_network | provider |
| provider:segmentation_id | 40 |
| qos_policy_id | None |
| revision_number | 1 |
| router:external | Internal |
| segments | None |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
| updated_at | 2022-10-28T10:50:09Z |
+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
#创建子网
[root@controller ~]# openstack subnet create --network int-net --allocation-poo start=10.0.2.100,end=10.0.2.200 --subnet-range 10.0.2.0/24 int-subnet
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| allocation_pools | 10.0.2.100-10.0.2.200 |
| cidr | 10.0.2.0/24 |
| created_at | 2022-10-28T10:51:42Z |
| description | |
| dns_nameservers | |
| enable_dhcp | True |
| gateway_ip | 10.0.2.1 |
| host_routes | |
| id | a5dffcbb-84cb-4123-9ea8-52244a717227 |
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| location | cloud='', project.domain_id=, project.domain_name='demo', project.id='487896f7f58f4271a7fba8da32517aed', project.name='admin', region_name='', zone= |
| name | int-subnet |
| network_id | a84b7340-2053-431f-9da4-d65a27866a0a |
| prefix_length | None |
| project_id | 487896f7f58f4271a7fba8da32517aed |
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | None |
| tags | |
| updated_at | 2022-10-28T10:51:42Z |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
【题目9】Doshboard安装[1分]
在controller节点上使用iaas-install-dashboad.sh脚本安装dashboad服务。安装完成后,将Dashboard中的Djingo数据修改为存储在文件中(此种修改解决了ALL-in-one快照在其他云平台Dashboard不能访问的问题)。完成后提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# cat /etc/openstack-dashboard/local_settings |grep SESSION_ENGINE
SESSION_ENGINE = 'django.contrib.sessions.backends.file' #cache
[root@controller ~]#
【题目10】Swift安装[1分]
在控制节点和计算节点上分别使用iaas-install-swift-controller.sh和iaas-install-swift-compute.sh脚本安装Swift服务。安装完成后,使用命令创建一个名叫examcontainer的容器,将cirros-0.3.4-x86_64-disk.img镜像上传到examcontainer容器中,并设置分段存放,每一段大小为10M。完成后提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# source /etc/keystone/admin-openrc.sh
[root@controller ~]# openstack container create examcontainer
+---------------------------------------+---------------+------------------------------------+
| account | container | x-trans-id |
+---------------------------------------+---------------+------------------------------------+
| AUTH_42cccf869e154dab8de63e88b2dc44a2 | examcontainer | tx92c7fe8803cb46af91419-00635bf356 |
+---------------------------------------+---------------+------------------------------------+
[root@controller ~]# openstack container list
+---------------+
| Name |
+---------------+
| examcontainer |
+---------------+
[root@controller images]# ls
amphora-x64-haproxy.qcow2 CentOS7_1804.tar CentOS-7-x86_64-2009.qcow2 cirros-0.3.4-x86_64-disk.img MySQL_5.6_XD.qcow2
[root@controller images]# swift upload examcontainer -S 10000000 cirros-0.3.4-x86_64-disk.img
cirros-0.3.4-x86_64-disk.img segment 0
cirros-0.3.4-x86_64-disk.img segment 1
cirros-0.3.4-x86_64-disk.img
[root@controller images]# swift stat examcontainer cirros-0.3.4-x86_64-disk.img
Account: AUTH_42cccf869e154dab8de63e88b2dc44a2
Container: examcontainer
Object: cirros-0.3.4-x86_64-disk.img
Content Type: application/octet-stream
Content Length: 13287936
Last Modified: Fri, 28 Oct 2022 15:26:00 GMT
ETag: "cca17a689bfcd70118fabc833af0d033"
Manifest: examcontainer_segments/cirros-0.3.4-x86_64-disk.img/1666970635.039041/13287936/10000000/
Meta Mtime: 1666970635.039041
Accept-Ranges: bytes
X-Timestamp: 1666970759.11679
X-Trans-Id: tx946c67852fe24c1aa884b-00635bf4a6
X-Openstack-Request-Id: tx946c67852fe24c1aa884b-00635bf4a6
【题目11】Cinder创建硬盘[1分]
在控制节点和计算节点分别使用iaas-install-cinder-controller.sh、iaas-install-cinder-compute.sh脚本安装Cinder服务,请在计算节点,对块存储进行扩容操作,即在计算节点再分出一个5G的分区,加入到cinder块存储的后端存储中去。完成后提交计算节点的用户名、密码和IP地址到答题框。
#创建物理卷
pvcreate /dev/vdb4
#扩展cinder-volume卷组
vgextend cinder-volumes /dev/vdb4
#验证
[root@compute ~]# vgdisplay
【题目12】Heat安装[1分]
在控制节点上使用iaas-install-heat.sh脚本安装Heat服务。完成后提交控制节点的用户名、密码和IP地址到答题框。
- iaas-install-heat.sh
【题目13】manila安装[1分]
在控制和计算节点上分别使用iaas-install-manila-controller.sh和iaas-install-manila-compute.sh脚本安装manila服务。安装服务后创建default_share_type共享类型(不使用驱动程序支持),接着创建一个大小为2G的共享存储名为share01。最后提交控制节点的用户名、密码和IP地址到答题框。
#创建default_share_type共享类型
[root@controller ~]# manila type-create default_share_type False
+----------------------+--------------------------------------+
| Property | Value |
+----------------------+--------------------------------------+
| required_extra_specs | driver_handles_share_servers : False |
| Name | default_share_type |
| Visibility | public |
| is_default | YES |
| ID | 80d4c294-de7f-4ce5-8c96-171d9dbca43d |
| optional_extra_specs | |
| Description | None |
+----------------------+--------------------------------------+
#创建大小为2g得共享储存
[root@controller ~]# manila create NFS 2 --name share01
+---------------------------------------+--------------------------------------+
| Property | Value |
+---------------------------------------+--------------------------------------+
| status | creating |
| share_type_name | default_share_type |
| description | None |
| availability_zone | None |
| share_network_id | None |
| share_server_id | None |
| share_group_id | None |
| host | |
| revert_to_snapshot_support | False |
| access_rules_status | active |
| snapshot_id | None |
| create_share_from_snapshot_support | False |
| is_public | False |
| task_state | None |
| snapshot_support | False |
| id | 320aac20-4c98-4842-8897-df742a8c87f0 |
| size | 2 |
| source_share_group_snapshot_member_id | None |
| user_id | e811502e17624732859917b6a5317657 |
| name | share01 |
| share_type | 80d4c294-de7f-4ce5-8c96-171d9dbca43d |
| has_replicas | False |
| replication_type | None |
| created_at | 2022-10-28T15:48:38.000000 |
| share_proto | NFS |
| mount_snapshot_support | False |
| project_id | 42cccf869e154dab8de63e88b2dc44a2 |
| metadata | {} |
+---------------------------------------+--------------------------------------+
[root@controller ~]# manila list
+--------------------------------------+---------+------+-------------+-----------+-----------+--------------------+-----------------------------+-------------------+
| ID | Name | Size | Share Proto | Status | Is Public | Share Type Name | Host | Availability Zone |
+--------------------------------------+---------+------+-------------+-----------+-----------+--------------------+-----------------------------+-------------------+
| 320aac20-4c98-4842-8897-df742a8c87f0 | share01 | 2 | NFS | available | False | default_share_type | compute@lvm#lvm-single-pool | nova |
+--------------------------------------+---------+------+-------------+-----------+-----------+--------------------+-----------------------------+-------------------+
【题目14】OpenStack平台内存优化[1分]
搭建完OpenStack平台后,关闭系统的内存共享,打开透明大页。完成后提交控制节点的用户名、密码和IP地址到答题框。
------------+-------------------+
[root@controller ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
[root@controller ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
【任务3】OpenStack运维任务[16分]
【适用平台】私有云
【题目1】开放镜像[1分]
使用自己搭建的OpenStack私有云平台,在OpenStack平台的admin项目中使用cirros-0.3.4-x86_64-disk.img镜像文件创建名为glance-cirros的镜像,通过OpenStack命令将glance-cirros镜像指定demo项目进行共享使用。配置完成后提交controller点的用户名、密码和IP地址到答题框。
#source /etc/keystone/admin-openrc.sh 进入admin租户
[root@controller ~]# glance image-create --name glance-image --disk-format qcow2 --container-format bare --file /opt/images/cirros-0.3.4-x86_64-disk.img
+------------------+----------------------------------------------------------------------------------+
| Property | Value |
+------------------+----------------------------------------------------------------------------------+
| checksum | ee1eca47dc88f4879d8a229cc70a07c6 |
| container_format | bare |
| created_at | 2022-10-28T16:03:20Z |
| disk_format | qcow2 |
| id | a726d651-832f-4a4e-8309-566c19a9df00 |
| min_disk | 0 |
| min_ram | 0 |
| name | glance-image |
| os_hash_algo | sha512 |
| os_hash_value | 1b03ca1bc3fafe448b90583c12f367949f8b0e665685979d95b004e48574b953316799e23240f4f7 |
| | 39d1b5eb4c4ca24d38fdc6f4f9d8247a2bc64db25d6bbdb2 |
| os_hidden | False |
| owner | 42cccf869e154dab8de63e88b2dc44a2 |
| protected | False |
| size | 13287936 |
| status | active |
| tags | [] |
| updated_at | 2022-10-28T16:03:29Z |
| virtual_size | Not available |
| visibility | shared |
+------------------+----------------------------------------------------------------------------------+
#查看镜像
[root@controller ~]# glance image-list
+--------------------------------------+--------------+
| ID | Name |
+--------------------------------------+--------------+
| a726d651-832f-4a4e-8309-566c19a9df00 | glance-image |
+--------------------------------------+--------------+
#查看租户id
[root@controller ~]# openstack project list
+----------------------------------+---------+
| ID | Name |
+----------------------------------+---------+
| 42cccf869e154dab8de63e88b2dc44a2 | admin |
| 63af74d099304175a7e70b204597c4a1 | demo |
| b9612e37cd484a869c82cfa5fc4b9f01 | service |
+----------------------------------+---------+
#进入demo租户
source /etc/keystone/demo-openrc.sh
[root@controller ~]# glance image-list
+----+------+
| ID | Name |
+----+------+
+----+------+
#在admin租户中使用member共享
[root@controller ~]# glance member-create a726d651-832f-4a4e-8309-566c19a9df00 63af74d099304175a7e70b204597c4a1
+--------------------------------------+----------------------------------+---------+
| Image ID | Member ID | Status |
+--------------------------------------+----------------------------------+---------+
| a726d651-832f-4a4e-8309-566c19a9df00 | 63af74d099304175a7e70b204597c4a1 | pending |
+--------------------------------------+----------------------------------+---------+
#demo确认更新镜像状态 glance member-update <IMAGE_ID> <MEMBER_ID> <MEMBER_STATUS>
[root@controller ~]# glance member-update a726d651-832f-4a4e-8309-566c19a9df00 63af74d099304175a7e70b204597c4a1 accepted
+--------------------------------------+----------------------------------+----------+
| Image ID | Member ID | Status |
+--------------------------------------+----------------------------------+----------+
| a726d651-832f-4a4e-8309-566c19a9df00 | 63af74d099304175a7e70b204597c4a1 | accepted |
+--------------------------------------+----------------------------------+----------+
[root@controller ~]# glance image-list
+--------------------------------------+--------------+
| ID | Name |
+--------------------------------------+--------------+
| a726d651-832f-4a4e-8309-566c19a9df00 | glance-image |
+--------------------------------------+--------------+
[root@controller ~]#
【题目2】OpenStack参数调优[1分]
OpenStack各服务内部通信都是通过RPC来交互,各agent都需要去连接RabbitMQ;随着各服务agent增多,MQ的连接数会随之增多,最终可能会到达上限,成为瓶颈。使用自行搭建的OpenStack私有云平台,分别通过用户级别、系统级别、配置文件来设置RabbitMQ服务的最大连接数为10240,配置完成后提交修改节点的用户名、密码和IP地址到答题框。
#系统级别修改 在文件中添加 fs.file-max = 10240
[root@controller ~]# vi /etc/sysctl.conf
[root@controller ~]# sysctl -p
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
fs.file-max = 10240
#用户级别修改
[root@controller ~]# vi /etc/security/limits.conf
添加 openstack soft nofile 10240
openstack hard nofile 10240
#修改rabbitmq配置文件
vi /usr/lib/systemd/system/rabbitmq-server.service
#在[Service]下添加一行参数如下:
LimitNOFILE=10240
重启服务
[root@controller ~]# systemctl daemon-reload
[root@controller ~]# systemctl restart rabbitmq-server
#查看rabbitmq最大连接数
[root@controller ~]# rabbitmqctl status
Status of node rabbit@controller
[{pid,4561},
{running_applications,
..........
{file_descriptors,
[{total_limit,10140}, #已经有100个连接数,可以看到当前的RabbitMQ已被修改
{total_used,77},
{sockets_limit,9124},
{sockets_used,75}]},
{processes,[{limit,1048576},{used,1150}]},
{run_queue,0},
{uptime,40},
{kernel,{net_ticktime,60}}]
【题目3】OpenStack Glance运维:调整响应时间[1分]
在Glance服务的配置文件中,有一个glance响应最大返回项数,该参数默认设置过短,可能导致响应数据被截断,修改该参数为1000。完成后提交控制节点的用户名、密码和IP地址到答题框。
[root@controller ~]# cat /etc/glance/glance-api.conf | grep 1000
#limit_param_default = 1000 #25
【题目4】OpenStack Glance镜像压缩[1分]
使用自行搭建的OpenStack平台。在HTTP服务中存在一个镜像为CentOS7.5-compress.qcow2的镜像,请使用qemu相关命令,对该镜像进行压缩,压缩后的镜像命名为chinaskill-js-compress.qcow2并存放在/root目录下。完成后提交controller点的用户名、密码和IP地址到答题框。
[root@controller ~]# qemu-img convert /opt/images/CentOS-7-x86_64-2009.qcow2 /root/chinaskill-js-compress.qcow2..
报错就是内存不够了
【题目5】swift配置glance后端存储[1分]
使用OpenStack私有云平台,使用Swift对象存储服务,修改相应的配置文件,使对象存储Swift作为glance镜像服务的后端存储,使默认上传的镜像会在swift中创建chinaskill_glance容器。配置完成后上传镜像测试。成功后提交控制节点的用户名、密码和IP地址到答题框。
【题目6】快照管理[1分]
在openstack私有云平台上,创建云主机VM1,镜像使用CentOS7.5,flavor使用2vcpu/4G内存/40G硬盘。创建成功后,将云主机打快照并保存到controller节点/root/cloudsave目录下,保存名字为csccvm.qcow2。最后使用qemu-img相关命令,将镜像的campat版本修改为0.10(该操作是为了适配某些低版本的云平台)。完成后提交控制节点的用户名、密码和IP地址到答题框。
【题目7】OpenStack Nova清除缓存[1分]
在OpenStack平台的一台计算节点创建虚拟机,若是第一次在该节点创建次虚拟机,会先将镜像文件复制到该计算节点目录/var/lib/nova/instances/_base。长期下来,该目录会占用比较大的磁盘空间而要清理。可以通过修改nova的配置文件来自动清理该缓存目录,即在该节点没有使用某镜像启动的云主机,那么这个镜像在过一定的时间后会被自动删除。配置完成后提交改动节点的用户名、密码和IP地址到答题框。
【题目8】OpenStack Python运维脚本开发:使用Restful API方式创建用户 [3分]
在提供的OpenStack私有云平台上,使用T版本的“openstack- python-dev ”镜像创建1台云主机,云主机类型使用4vCPU/12G内存/100G硬盘。该主机中已经默认安装了所需的开发环境,登录默认账号密码为“root/Abc@1234”。使用python request库和OpenStack Restful APIs,在/root目录下,创建api_manager_identity.py文件,编写python代码,代码实现以下任务:
(1)首先实现查询用户,如果用户名称“user_demo”已经存在,先删除。
(2)如果不存在“user_demo”,创建该用户,密码设置为“1DY@2022”。
(3)创建完成后,查询该用户信息,查询的body部分内容控制台输出,同时json格式的输出到文件当前目录下的user_demo.json文件中,json格式要求indent=4。
编写完成后,提交allinone节点的用户名、密码和IP地址到答题框。
【题目9】OpenStack Python运维脚本开发:使用SDK方式创建镜像[3分]
在提供的OpenStack私有云平台上,使用T版本的“openstack- python-dev ”镜像创建1台云主机,云主机类型使用4vCPU/12G内存/100G硬盘。该主机中已经默认安装了所需的开发环境,登录默认账号密码为“root/Abc@1234”。使用“openstacksdk”python库,在/root目录下创建sdk_manager_image.py文件,编写python代码,代码实现以下任务:
(1)先检查OpenStack镜像“cirros-image”名称是否存在?如果存在,先完成删除该镜像;
(2)如果不存在“cirros-image”名称,使用文件服务器上“cirros-0.3.4-x86_64-disk.img”文件创建镜像;
(3)创建完成后,查询该镜像信息,查询的body部分内容控制台输出,同时json格式的输出到文件当前目录下的image_demo.json文件中,json格式要求indent=4。
编写完成后,提交allinone节点的用户名、密码和IP地址到答题框。
【题目10】Ansible部署openstack集群
mysql主从配置
(1)修改主机名
将172.30.11.12主机名修改为mysql1;172.30.11.13主机名修改为mysql2,命令如下:
mysql1节点:
[root@localhost ~]# hostnamectl set-hostname mysql1
[root@localhost ~]# logout
[root@mysql1 ~]# hostnamectl
Static hostname: mysql1
Icon name: computer-vm
Chassis: vm
Machine ID: 622ba110a69e24eda2dca57e4d306baa
Boot ID: 859720a14f8f4b5e836f5a0fae7097e0
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.2.3.el7.x86_64
Architecture: x86-64
mysql2节点:
[root@localhost ~]# hostnamectl set-hostname mysql2
[root@localhost ~]# logout
[root@mysql2 ~]# hostnamectl
Static hostname: mysql2
Icon name: computer-vm
Chassis: vm
Machine ID: 622ba110a69e24eda2dca57e4d306baa
Boot ID: 5e41c48c85704016ad0bd940500cc255
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.2.3.el7.x86_64
Architecture: x86-64
(2)关闭防火墙及SELinux服务
两个节点关闭防火墙firewalld及SELinux服务,命令如下:
# setenforce 0
# systemctl stop firewalld
(3)配置hosts文件
两个节点配置/etc/hosts文件,修改为如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.30.11.12 mysql1
172.30.11.13 mysql2
(4)配置YUM源
两个节点均使用提供的mariadb–10.3.23-repo.tar.gz的压缩包,解压并放在/opt目录下,进入/etc/yum.repos.d目录下,将原来的repo文件移除,新建local.repo文件并编辑内容,具体操作命令如下:
【】
# curl -O http://10.24.1.82/training/mariadb-10.3.23-repo.tar.gz
# curl -O http://10.24.1.82/training/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
# tar -zxvf mariadb-10.3.23-repo.tar.gz -C /opt/
# cd /etc/yum.repos.d/
# mv * /media/
# vi local.repo
# cat local.repo
[mariadb]
name=mariadb
baseurl=file:///opt/
gpgcheck=0
enabled=1
查看配置的YUM源是否可用,命令如下:
# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
mariadb mariadb 19
repolist: 19
查看到repolist数量,即YUM源配置成功。
(5)安装数据库服务并启动
配置完毕后,两个节点安装数据库服务,命令如下:
# yum install -y mariadb mariadb-server
两个节点启动数据库服务并设置开机自启,命令如下:
# systemctl start mariadb
# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
2. 初始化数据库并配置主从服务
(1)初始化数据库
两个节点初始化数据库,配置数据库root密码为000000,命令如下:
# mysql_secure_installation
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): #默认按Enter键
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password: #输入数据库root密码000000
Re-enter new password: #再次输入密码000000
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] n
... skipping.
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
(2)配置mysql1主节点
修改mysql1节点的数据库配置文件,在配置文件/etc/my.cnf.d/server.cnf中的[mysqld]增添如下内容。
[root@mysql1 ~]# cat /etc/my.cnf.d/server.cnf
... ...
[mysqld]
log_bin = mysql-bin #记录操作日志
binlog_ignore_db = mysql #不同步MySQL系统数据库
server_id = 12 #数据库集群中的每个节点id都要不同,一般使用IP地址的最后段的数字,例如172.30.11.12,server_id就写12
... ...
重启数据库服务,并进入数据库,命令如下:
[root@mysql1 ~]# systemctl restart mariadb
[root@mysql1 ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.23-MariaDB-log MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
在mysql1节点,授权在任何客户端机器上可以以root用户登录到数据库,然后在主节点上创建一个user用户连接节点mysql2,并赋予从节点同步主节点数据库的权限。命令如下:
MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by "000000";
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant replication slave on *.* to 'user'@'mysql2' identified by '000000';
Query OK, 0 rows affected (0.00 sec)
(3)配置mysql2从节点
修改mysql2节点的数据库配置文件,在配置文件/etc/my.cnf.d/server.cnf中的[mysqld]增添如下内容。
[root@mysql2 ~]# cat /etc/my.cnf.d/server.cnf
... ...
[mysqld]
log_bin = mysql-bin #记录操作日志
binlog_ignore_db = mysql #不同步MySQL系统数据库
server_id = 13 #数据库集群中的每个节点id都要不同,一般使用IP地址的最后段的数字,例如172.30.11.13,server_id就写13
... ...
修改完配置文件后,重启数据库服务,并在从节点mysql2上登录MariaDB数据库,配置从节点连接主节点的连接信息。master_host为主节点主机名mysql1,master_user为上一步中创建的用户user,命令如下:
[root@mysql2 ~]# systemctl restart mariadb
[root@mysql2 ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.23-MariaDB-log MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> change master to master_host='mysql1',master_user='user',master_password='000000';
Query OK, 0 rows affected (0.01 sec)
配置完毕主从数据库之间的连接信息之后,开启从节点服务。使用show slave status\G命令,并查看从节点服务状态,如果Slave_IO_Running和Slave_SQL_Running的状态都为YES,则从节点服务开启成功。命令如下:
MariaDB [(none)]> start slave;
MariaDB [(none)]> 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: 705
Relay_Log_File: mysql2-relay-bin.000002
Relay_Log_Pos: 1004
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: 705
Relay_Log_Space: 1314
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: 12
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: 2
Slave_Non_Transactional_Groups: 0
Slave_Transactional_Groups: 0
1 row in set (0.000 sec)
可以看到Slave_IO_Running和Slave_SQL_Running的状态都是Yes,配置数据库主从集群成功。
3. 验证数据库主从服务
(1)主节点创建数据库
先在主节点mysql1中创建库test,并在库test中创建表company,插入表数据,创建完成后,查看表company数据,命令如下:
[root@mysql1 ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.3.23-MariaDB-log MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database test;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> use test;
Database changed
MariaDB [test]> create table company(id int not null primary key,name varchar(50),addr varchar(255));
Query OK, 0 rows affected (0.01 sec)
MariaDB [test]> insert into company values(1,"alibaba","china");
Query OK, 1 row affected (0.01 sec)
MariaDB [test]> select * from company;
+----+---------+-------+
| id | name | addr |
+----+---------+-------+
| 1 | alibaba | china |
+----+---------+-------+
1 row in set (0.00 sec)
(2)从节点验证复制功能
登录mysql2节点的数据库,查看数据库列表。找到test数据库,查询表,并查询内容验证从数据库的复制功能,命令如下:
[root@mysql2 ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.3.23-MariaDB-log MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [(none)]> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [test]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| company |
+----------------+
1 row in set (0.00 sec)
MariaDB [test]> select * from company;
+----+---------+-------+
| id | name | addr |
+----+---------+-------+
| 1 | alibaba | china |
+----+---------+-------+
1 row in set (0.00 sec)
可以查看到主数据库中刚刚创建的库、表、信息,验证从数据库的复制功能成功。
部署读写分离数据库
部署读写分离数据库
1. 基础环境安装数据库读写分离-实操.mp4
(1)修改主机名
将172.30.11.14的主机名修改为mycat,命令如下:
# hostnamectl set-hostname mycat
# logout
[root@mycat ~]# hostnamectl
Static hostname: mycat
Icon name: computer-vm
Chassis: vm
Machine ID: 622ba110a69e24eda2dca57e4d306baa
Boot ID: c9e345d94abb4f0684ce75726c39dbcf
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.2.3.el7.x86_64
Architecture: x86-64
(2)安装JDK环境
在mycat节点安装Java JDK环境,具体操作步骤如下:
使用提供的mariadb-10.3.23-repo.tar.gz包上传至mycat节点的/root目录下,解压并配置成本地yum源,命令如下:
[root@mycat ~]# curl -O http://10.24.1.82/training/mariadb-10.3.23-repo.tar.gz
[root@mycat ~]# tar -zxvf mariadb-10.3.23-repo.tar.gz -C /opt
[root@mycat ~]# mv /etc/yum.repos.d/* /media/
[root@mycat ~]# vi /etc/yum.repos.d/local.repo
[root@mycat ~]# cat /etc/yum.repos.d/local.repo
[mariadb]
name=mariadb
baseurl=file:///opt/
gpgcheck=0
enabled=1
配置完yum源之后,进行安装Java JDK环境,命令如下:
[root@mycat ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
... ...
安装完之后,可以使用命令查看Java JDK环境,命令如下:
[root@mycat ~]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
2. 部署Mycat读写分离中间件服务
(1)安装Mycat服务
将Mycat服务的二进制软件包Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz上传到Mycat虚拟机的/root目录下,并将软件包解压到/use/local目录中。赋予解压后的Mycat目录权限。
[root@mycat ~]# curl -O http://10.24.1.82/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
[root@mycat ~]# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
[root@mycat ~]# chmod -R 777 /usr/local/mycat/
(2)编辑Mycat的逻辑库配置文件
配置Mycat服务读写分离的schema.xml配置文件在/usr/local/mycat/conf/目录下,可以在文件中定义一个逻辑库,使用户可以通过Mycat服务管理该逻辑库对应的MariaDB数据库。在这里定义一个逻辑库schema,name为USERDB;该逻辑库USERDB对应数据库database为test(在部署主从数据库时已创建);设置数据库写入节点为主节点mysql1;设置数据库读取节点为从节点mysql2。(可以直接删除原来schema.xml的内容,替换为如下。)
注意:IP需要修改成实际的IP地址。
[root@mycat ~]# cat /usr/local/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="USERDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"></schema>
<dataNode name="dn1" dataHost="localhost1" database="test" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" dbType="mysql" dbDriver="native" writeType="0" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="172.30.11.12:3306" user="root" password="000000">
<readHost host="hostS1" url="172.30.11.13:3306" user="root" password="000000" />
</writeHost>
</dataHost>
</mycat:schema>
代码说明:
sqlMaxLimit:配置默认查询数量。
database:为真实数据库名。
balance=“0”:不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
balance=“1”:全部的readHost与stand by writeHost参与select语句的负载均衡,简单来说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2、S1、S2都参与select语句的负载均衡。
balance=“2”:所有读操作都随机的在writeHost、readhost上分发。
balance=“3”:所有读请求随机地分发到wiriterHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3版本没有。
writeType=“0”:所有写操作发送到配置的第一个writeHost,第一个挂了需要切换到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件dnindex.properties中。
writeType=“1”:所有写操作都随机的发送到配置的writeHost。
(3)修改配置文件权限
修改schema.xml的用户权限,命令如下:
[root@mycat ~]# chown root:root /usr/local/mycat/conf/schema.xml
(4)编辑mycat的访问用户
修改/usr/local/mycat/conf/目录下的server.xml文件,修改root用户的访问密码与数据库,密码设置为000000,访问Mycat的逻辑库为USERDB,命令如下。
[root@mycat ~]# cat /usr/local/mycat/conf/server.xml
在配置文件的最后部分,
<user name="root">
<property name="password">000000</property>
<property name="schemas">USERDB</property>
然后删除如下几行:
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
保存并退出server.xml配置文件。
(5)启动Mycat服务
通过命令启动Mycat数据库中间件服务,启动后使用netstat -ntpl命令查看虚拟机端口开放情况,如果有开放8066和9066端口,则表示Mycat服务开启成功。端口查询情况如图2-1所示。
[root@mycat ~]# /bin/bash /usr/local/mycat/bin/mycat start
21.png
图2-1 端口查询情况
3. 验证数据库集群服务读写分离功能
(1)用Mycat服务查询数据库信息
先在Mycat虚拟机上使用Yum安装mariadb-client服务。
[root@mycat ~]# yum install -y MariaDB-client
在Mycat虚拟机上使用mysql命令查看Mycat服务的逻辑库USERDB,因为Mycat的逻辑库USERDB对应数据库test(在部署主从数据库时已安装),所以可以查看库中已经创建的表company。命令如下。
[root@mycat ~]# mysql -h127.0.0.1 -P8066 -uroot -p000000
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| USERDB |
+----------+
1 row in set (0.001 sec)
MySQL [(none)]> use USERDB
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MySQL [USERDB]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| company |
+----------------+
1 row in set (0.003 sec)
MySQL [USERDB]> select * from company;
+----+---------+-------+
| id | name | addr |
+----+---------+-------+
| 1 | alibaba | china |
+----+---------+-------+
1 row in set (0.005 sec)
(2)用Mycat服务添加表数据
在Mycat虚拟机上使用mysql命令对表company添加一条数据(2,“basketball”,“usa”),添加完毕后查看表信息。命令如下。
MySQL [USERDB]> insert into company values(2,"bastetball","usa");
Query OK, 1 row affected (0.050 sec)
MySQL [USERDB]> select * from company;
+----+------------+-------+
| id | name | addr |
+----+------------+-------+
| 1 | alibaba | china |
| 2 | bastetball | usa |
+----+------------+-------+
2 rows in set (0.003 sec)
(3)验证Mycat服务对数据库读写操作分离
在Mycat虚拟机节点使用mysql命令,通过9066端口查询对数据库读写操作的分离信息。可以看到所有的写入操作WRITE_LOAD数都在mysql1主数据库节点上,所有的读取操作READ_LOAD数都在mysql2主数据库节点上。由此可见,数据库读写操作已经分离到mysql1和mysql2节点上了。命令如下。
[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show @@datasource;'
查询结果如图2-2所示。
22.png
图2-2 查询结果
至此,Mycat读写分离数据库案例完成。
nfs做glance后端储存
[root@controller ~]# rpm -qa | grep nfs-utils
nfs-utils-1.3.0-0.68.el7.x86_64
[root@controller ~]# rpm -qa | grep rpcbind
rpcbind-0.2.0-49.el7.x86_64
[root@controller~]# mkdir /mnt/test
[root@controller ~]# ll /mnt/
总用量 0
drwxr-xr-x 2 root root 6 11月 11 14:49 test
[root@controller ~]# cat /etc/exports
/mnt/test/ 192.168.100.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
[root@controller ~]# systemctl start nfs
[root@controller ~]# systemctl start rpcbind
[root@controller ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@controller ~]# systemctl enable rpcbind
[root@controller ~]# showmount -e 192.168.100.10
Export list for 192.168.100.10:
test 192.168.100.0/24
#glance镜像储存位置为 /var/lib/glance/images/
#把nfs文件夹挂载到glance镜像储存位置
[root@controller ~]# mount -t nfs 192.168.100.10/mnt/test /var/lib/glance/images/
[root@controller ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 21M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 4.4G 13G 26% /
/dev/sda1 1014M 152M 863M 15% /boot
tmpfs 781M 0 781M 0% /run/user/0
192.168.100.10:/mnt/test 17G 2.6G 15G 16% /var/lib/glance/imag
【任务4】容器云平台搭建[5分]
【适用平台】私有云
【题目1】部署容器云平台[2分]
使用提供的两台云主机,完成Kubernetes 1.22.1集群的搭建。
完成后提交master节点的用户名、密码和IP到答题框。
[root@master ~]# ls
anaconda-ks.cfg chinaskills_cloud_paas_v2.0.2.iso
#挂载镜像[root@master ~]# mount -o loop chinaskills_cloud_paas_v2.0.2.iso /mnt/
mount: /dev/loop0 写保护,将以只读方式挂载
#将镜像内容复制到opt目录下[root@master ~]# cp -rvf /mnt/* /opt/#取消挂载[root@master ~]# umount /mnt/#安装kubeeasy工具并下相关依赖[root@master ~]# mv /opt/kubeeasy /usr/bin/kubeeasy[root@master ~]# kubeeasy install depend \> --host 192.168.100.11,192.168.100.12 \> --user root \> --password 000000 \> --offline-file /opt/dependencies/base-rpms.tar.gz
#测试连通性[root@master ~]# kubeeasy check ssh \> --master 192.168.100.11 \> --worker 192.168.100.12 \> --user root --password 000000
#创建无密钥连接[root@master ~]# kubeeasy create ssh-keygen --master 192.168.100.11 --worker 192.168.100.12 --user root --password 000000#安装kubernetes集群[root@master ~]# kubeeasy install kubernetes \> --master 192.168.100.11 \> --worker 192.168.100.12 \> --user root --password 000000 \> --version 1.22.1 \> --offline-file /opt/kubernetes.tar.gz
【题目2】部署Istio服务网格[1分]
在Kubernetes集群上完成Istio服务网格环境的安装,含可视化插件Grafana、Prometheus、Jaeger和Kiali。
完成后提交master节点的用户名、密码和IP到答题框。
[root@k8s-master-node1 ~]# kubeeasy add --istio istio
【题目3】部署KubeVirt虚拟化[1分]
在Kubernetes集群上完成KubeVirt虚拟化环境的安装。
完成后提交master节点的用户名、密码和IP到答题框。
kubeeasy add --virt kubevirt
【题目4】部署Harbor镜像仓库[1分]
在master节点上完成Harbor镜像仓库的部署。
完成后提交master节点的用户名、密码和IP到答题框。
kubeeasy add --registry harbor
【任务5】基于Docker Compose编排部署DjangoBlog博客系统[7分]
【适用平台】私有云
【题目1】容器化Memcached服务[1分]
在master节点/root/DjangoBlog目录下编写Dockerfile-memcached文件构建blog-memcached:v1.0镜像,具体要求如下:(需要用到的软件包:Django.tar.gz)
(1)基础镜像:centos:7.9.2009;
(2)完成memcached服务的安装;
(3)声明端口:11211;
(4)设置服务开机自启。
完成后构建镜像,并提交master节点的用户名、密码和IP地址到答题框。
【题目2】容器化Mariadb服务[1分]
在master节点/root/DjangoBlog目录下编写Dockerfile-mariadb文件构建blog-mysql:v1.0镜像,具体要求如下:(需要用到的软件包:Django.tar.gz)
(1)基础镜像:centos:7.9.2009;
(2)安装MariaDB服务并设置root用户的密码为root;
(3)创建数据库djangoblog并将sqlfile.sql导入该数据库;
(4)声明端口:3306;
(5)设置服务开机自启。
完成后构建镜像,并提交master节点的用户名、密码和IP地址到答题框。
【题目3】容器化前端服务[1分]
在master节点/root/DjangoBlog目录下编写Dockerfile-nginx文件构建blog-nginx:v1.0镜像,具体要求如下:(需要用到的软件包:Django.tar.gz)
(1)基础镜像:centos:7.9.2009;
(2)安装nginx服务;
(3)使用提供的nginx.conf作为默认的配置文件;
(3)声明端口:80;
(4)设置服务开机自启。
完成后构建镜像,并提交master节点的用户名、密码和IP地址到答题框。
【题目4】容器化Blog服务[2分]
在master节点/root/DjangoBlog目录下编写Dockerfile-blog文件构建blog-service:v1.0镜像,具体要求如下:(需要用到的软件包:Django.tar.gz)
(1)基础镜像:centos:7.9.2009;
(2)安装Python3.6环境;
(3)使用pip3工具离线安装requirements.txt中的软件包;
(4)安装DjangoBlog服务;
(5)声明端口:8000;
(6)设置DjangoBlog服务开机自启。
完成后构建镜像,并提交master节点的用户名、密码和IP地址到答题框。
【题目5】编排部署博客系统[3分]
在master节点/root/DjangoBlog目录下编写docker-compose.yaml文件,具体要求如下:
(1)容器1名称:blog-memcached;镜像:blog-memcached:v1.0;端口映射:11211:11211;
(2)容器2名称:blog-mysql;镜像:blog-mysql:v1.0;端口映射:3306:3306;
(3)容器3名称:blog-nginx;镜像:blog-nginx:v1.0;端口映射:80:8888;
(4)容器4名称:blog-service;镜像:blog-service:v1.0;端口映射:8000:8000。
完成后编排部署该博客系统,并提交master节点的用户名、密码和IP地址到答题框。
【任务6】基于Kubernetes + GitLab CI构建持续集成[10分]
【适用平台】私有云
【题目1】安装GitLab环境[2分]
在Kubernetes集群中新建命名空间kube-ops,将GitLab部署到该命名空间下,Deployment和Service名称均为gitlab,以NodePort方式将80端口对外暴露为30880,并设置GitLab服务root用户的密码为admin123456。
完成后提交master节点的用户名、密码和IP地址到答题框。(需要用到的软件包路径CICD-Runner.tar.gz)
【题目2】部署GitLab Runner[2分]
在Kubernetes集群kube-ops命名空间下使用StatefulSet资源对象完成GitLab Runner的部署,StatefulSet名称为gitlab-ci-runner,副本数为2,并完成GitLab Runner在GitLab中的注册。
完成后提交master节点的用户名、密码和IP地址到答题框。(需要用到的软件包路径CICD-Runner.tar.gz)
【题目3】配置GitLab[2分]
在GitLab中新建公开项目springcloud,然后将Kubernetes集群添加到GitLab中,项目命名空间选择gitlab。
完成后提交master节点的用户名、密码和IP地址到答题框。(需要用到的软件包路径CICD-Runner.tar.gz)
【题目4】构建CICD[4分]
将提供的代码推送到GitLab项目springcloud中,编写流水线脚本.gitlab-ci.yml触发自动构建,要求完成构建代码、构建镜像springcloud:master、推送镜像到library项目并发布服务到gitlab命名空间下。
完成后提交master节点的用户名、密码和IP地址到答题框。(需要用到的软件包路径CICD-Runner.tar.gz)
【任务7】容器云运维 [17分]
【适用平台】私有云
【题目1】Pod管理–设置环境变量[1分]
在default命名空间下使用nginx:latest镜像启动一个名为env-demo的Pod,为该Pod的容器配置环境变量DEMO_GREETING,其值为“Hello from the environment”。
完成后提交master节点的IP地址、用户名和密码到答题框。
【题目2】参数调优–修改NodePort端口范围[1分]
Kubernetes以NodePort方式暴露服务默认的端口范围为30000-32767,请将NodePort的端口范围修改为20000-65535。完成后提交master节点的用户名、密码和IP到答题框。
【题目3】RBAC管理–创建角色并绑定[2分]
创建一个名为deployment-clusterrole的clusterrole,并且对该clusterrole只绑定对Deployment、Daemonset、Statefulset的创建权限。在指定命名空间exam创建一个名为exam-user的serviceaccount,并且将上一步创建clusterrole和该serviceaccount绑定。
完成后提交master节点的用户名、密码和IP地址到答题框。
【题目4】资源配额管理[2分]
创建命名空间quota-example,在master节点/root目录下编写YAML文件quota.yaml,具体要求如下:
(1)ResourceQuota名称:compute-resources;
(2)命名空间:quota-example;
(3)命名空间内所有Pod数量不超过4;
(4)命名空间内所有容器内存申请总和不得超过1G;
(5)命名空间内所有内存限制不得超过2G;
(6)命名空间内所有容器申请的CPU不得超过1;
(7)命名空间内所有容器限制的CPU不得超过2。
完成后使用该YAML文件创建ResourceQuota,并提交master节点的用户名、密码和IP到答题框。
【题目5】Pod管理–创建多容器Pod[1分]
在default命名空间下创建一个名为multus的Pod,要求该Pod内运行四个容器:nginx(镜像nginx:latest)、redis(镜像redis:latest)、memcached(镜像memcached)和consul(consul:latest)。(http://10.24.1.46/multus-pod.tar)
完成后提交master节点的IP地址、用户名和密码到答题框。
【题目6】VM管理–创建VM[3分]
使用镜像fedora-virt:v1.0在default命名空间下创建一台vm,名称为vm-fedora,内存为1G。
完成后提交master节点的IP地址、用户名和密码到答题框。(http://10.24.1.46/fedora-virt_v1.0.tar)
【题目7】节点选择器[1分]
为worker节点打上标签“disktype=ssd”,在default命名空间下使用nginx:latest镜像创建一个名为nginx的Pod,将其调度到有“disktype=ssd”标签的节点上。
完成后提交master节点的IP、用户名和密码到答题框。
【题目8】服务网格–创建Ingress Gateway[3分]
使用提供的软件包ServiceMesh.tar.gz将Bookinfo应用部署到default命名空间下,使用Istio Gateway可以实现应用程序从外部访问,请为Bookinfo应用创建一个名为bookinfo-gateway的网关,指定所有HTTP流量通过80端口流入网格,然后将网关绑定到虚拟服务bookinfo上。
完成后提交master节点的IP地址、用户名和密码到答题框。
【题目9】服务网格–创建默认目标规则[3分]
为Bookinfo应用的四个微服务设置默认目标规则,名称分别为productpage、reviews、ratings和details。定义好可用的版本,productpage服务可用的版本为v1,reviews服务可用的版本为v1、v2、v3,ratings服务可用的版本为v1、v2,details服务可用的版本为v1、v2。
完成后提交master节点的IP地址、用户名和密码到答题框。
[root@controller ~]#
[root@controller images]# ls
amphora-x64-haproxy.qcow2 CentOS7_1804.tar CentOS-7-x86_64-2009.qcow2 cirros-0.3.4-x86_64-disk.img MySQL_5.6_XD.qcow2
[root@controller images]# swift upload examcontainer -S 10000000 cirros-0.3.4-x86_64-disk.img
cirros-0.3.4-x86_64-disk.img segment 0
cirros-0.3.4-x86_64-disk.img segment 1
cirros-0.3.4-x86_64-disk.img
[root@controller images]# swift stat examcontainer cirros-0.3.4-x86_64-disk.img
Account: AUTH_42cccf869e154dab8de63e88b2dc44a2
Container: examcontainer
Object: cirros-0.3.4-x86_64-disk.img
Content Type: application/octet-stream
Content Length: 13287936
Last Modified: Fri, 28 Oct 2022 15:26:00 GMT
ETag: "cca17a689bfcd70118fabc833af0d033"
Manifest: examcontainer_segments/cirros-0.3.4-x86_64-disk.img/1666970635.039041/13287936/10000000/
Meta Mtime: 1666970635.039041
Accept-Ranges: bytes
X-Timestamp: 1666970759.11679
X-Trans-Id: tx946c67852fe24c1aa884b-00635bf4a6
X-Openstack-Request-Id: tx946c67852fe24c1aa884b-00635bf4a6
[root@controller ~]# vi /etc/sysctl.conf [root@controller ~]# sysctl -p net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 fs.file-max = 10240
版权归原作者 请叫我不待 所有, 如有侵权,请联系我们删除。