2023金砖云盘算样题(自用)

打印 上一主题 下一主题

主题 1035|帖子 1035|积分 3105

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
A模块题目:OpenStack 平台摆设与运维

业务场景:
某企业拟利用OpenStack搭建一个企业云平台,用于摆设各类企业应用对外对内服务。云平台可实现I
T资源池化、弹性分配、会合管理、性能优化以及统一安全认证等。系统结构如下图:
企业云平台的搭建利用竞赛平台提供的两台云服务器,配置如下表:
装备名称主机名接口IP地址云服务器1controllereth0公网IP:******** 私网IP:192.168.100.*/24eth1私网IP:192.168.200. */24云服务器2computeeth0公网IP:******** 私网IP:192.168.100. */24eth1私网IP:192.168.200. */24 说明:
1.选手自行检查工位pc机硬件及网络是否正常;
2.竞赛利用集群模式举行,给每个参赛队提供华为云账号和暗码及测验系统的账号和暗码。选手通过用户名与暗码分别登录华为云和测验系统;
3.竞赛用到的软件包都在云主机/root下。
4.表1中的公网IP和私网IP以自己云主机显示为准,每个人的公网IP和私网IP不同。利用第三方软件远程连接云主机,利用公网IP连接。

使命 1 私有云平台情况初始化(5 分)
1. 配置主机名

把controller节点主机名设置为controller, compute节点主机名设置为compute,修改 hosts文件将IP地址映射为主机名。 在controller节点将cat /etc/hosts下令的返回结果提交到答题框。【1分】
  1. vi /etc/hosts
  2. ```
  3. <controller ip> controller
  4. <compute ip> compute
  5. ```
复制代码
2. 挂载光盘镜像

在controller节点的root目录下有CentOS-7-x86_64-DVD-2009.iso和openstack-trai n.tar.gz,在/opt下创建centos目录,将镜像文件CentOS-7-x86_64-DVD-2009.iso挂载到/ opt/centos下,将openstack-train.tar.gz解压到/opt目录下,并创建当地yum源local.repo。
在controller节点将yum list | grep glance下令的返回结果提交到答题框。【1分】
  1. # 在/opt下创建centos目录
  2. mkdir /opt/centos
  3. # 将镜像文件临时挂载到/mnt目录下
  4. mount -o loop CentOS-7-x86_64-DVD-2009.iso
  5. # 复制/mnt目录下的文件到/opt/centos
  6. cp -rfv /mnt/* /opt/centos
  7. # 取消挂载CentOS-7-x86_64-DVD-2009.iso
  8. umount /mnt
  9. # 将openstack-train.tar.gz解压到/opt目录下
  10. tar -zxvf openstack-train.tar.gz -C /opt
  11. # 创建本地yum源local.repo
  12. vi /etc/yum.repos.d/local.repo
  13. ```
  14. [centos]
  15. name=centos
  16. baseurl=file:///opt/centos
  17. gpgcheck=0
  18. enabled=1
  19. [iaas]
  20. name=iaas
  21. baseurl=file:///opt/iaas/iaas-repo
  22. gpgcheck=0
  23. enabled=1
  24. ```
复制代码
3. 搭建ftp服务器

在controller节点上安装vsftp服务,将/opt目录设为共享,并设置为开机自启动,然
后重启服务生效;在compute节点创建FTP源ftp.repo,利用controller节点为FTP服务器,配置文件中的FTP地址利用主机名。
在compute节点将cat /etc/yum.repos.d/ftp.repo下令的返回结果提交到答题框。【1
分】
  1. # 在controller节点上安装vsftp服务
  2. yum insatll -y vsftpd
  3. # 将/opt目录设为共享
  4. vi /etc/vsftpd/vsftpd.conf
  5. ```
  6. anon_root=/opt
  7. ```
  8. # 设置为开机自启动,然后重启服务生效
  9. systemctl enable vsftpd && systemctl restart vsftpd
  10. # 在compute节点创建FTP源ftp.repo,使用controller节点为FTP服务器,配置文件中的FTP地址使用主机名。
  11. vi /etc/yum.repos.d/ftp.repo
  12. ```
  13. [centos]
  14. name=centos
  15. baseurl=ftp://controller/centos
  16. gpgcheck=0
  17. enabled=1
  18. [iaas]
  19. name=iaas
  20. baseurl=ftp://controller/iaas/iaas-repo
  21. gpgcheck=0
  22. enabled=1
  23. ```
复制代码
4. 分区

在compute节点将sdb分为两个区分别为sdb1和sdb2,巨细自定义。要求分区格式为gp
t,利用mkfs.xfs下令对文件系统格式化。将lsblk -f下令的返回结果提交到答题框。【1分】
  1. gdisk /dev/sdb
  2. mkfs.xfs /dev/sdb1
  3. mkfs.xfs /dev/sdb2
复制代码
5. 系统调优-脏数据回写

Linux系统内存中会存在脏数据,一般系统默认脏数据占用内存30%时会回写磁盘,修改系统配置文件,要求将回写磁盘的巨细调整为60%。
在controller节点将sysctl -p下令的返回结果提交到答题框。【1分】
  1. 要将 Linux 系统默认脏数据回写磁盘的阈值从 30% 调整为 60%,你需要修改系统的参数配置文件。在大多数 Linux 发行版中,这个配置文件是 “/etc/sysctl.conf”。
  2. 下面是一般的修改步骤:
  3. 打开终端或命令行窗口,以管理员权限登录系统。
  4. 执行以下命令以编辑 “/etc/sysctl.conf” 配置文件:
  5. sudo nano /etc/sysctl.conf
  6. 如果你喜欢其他编辑器,也可以将 “nano” 替换为你喜欢的编辑器的命令。
  7. 在配置文件中,找到或添加以下行:
  8. vm.dirty_ratio = 60
  9. 这将设置脏数据回写磁盘的阈值为 60%。
  10. 保存文件并退出编辑器。
  11. 执行以下命令以使系统加载新的配置:
  12. sudo sysctl -p
  13. 这将重新加载系统配置文件,并应用新的脏数据回写磁盘的阈值。
  14. 现在,系统的脏数据回写磁盘的阈值应该已经调整为 60%。请注意,这是一个全局的系统参数设置,可能会影响整个系统中的所有进程。确保在进行这样的修改之前对系统做好适当的备份,并了解修改明确的后果和风险。
复制代码
使命 2 OpenStack 搭建使命(10 分)
1. 修改脚本文件

在controller节点和compute节点分别安装sh-guoji软件包,修改脚本文件基本变量(脚本文件为/root/variable.sh),修改完成后利用下令生效该脚本文件并更换到compute节点对应位置。
在controller节点请将下令的返回结果提交到答题
框。【1分】
  1. vi /root/variable.sh
  2. ```
  3. #--------------------system Config--------------------##
  4. #Controller Server Manager IP. example:x.x.x.x
  5. HOST_IP=<controller ip>
  6. #Controller HOST Password. example:000000
  7. HOST_PASS=000000
  8. #Controller Server hostname. example:controller
  9. HOST_NAME=controller
  10. #Compute Node Manager IP. example:x.x.x.x
  11. HOST_IP_NODE=<compute ip>
  12. #Compute HOST Password. example:000000
  13. HOST_PASS_NODE=000000
  14. #Compute Node hostname. example:compute
  15. HOST_NAME_NODE=compute
  16. #--------------------Chrony Config-------------------##
  17. #Controller network segment IP.  example:x.x.0.0/16(x.x.x.0/24)
  18. network_segment_IP=<x.x.0.0/16>
  19. #--------------------Rabbit Config ------------------##
  20. #user for rabbit. example:openstack
  21. RABBIT_USER=openstack
  22. #Password for rabbit user .example:000000
  23. RABBIT_PASS=000000
  24. #--------------------MySQL Config---------------------##
  25. #Password for MySQL root user . exmaple:000000
  26. DB_PASS=000000
  27. #--------------------Keystone Config------------------##
  28. #Password for Keystore admin user. exmaple:000000
  29. DOMAIN_NAME=demo
  30. ADMIN_PASS=000000
  31. DEMO_PASS=000000
  32. #Password for Mysql keystore user. exmaple:000000
  33. KEYSTONE_DBPASS=000000
  34. #--------------------Glance Config--------------------##
  35. #Password for Mysql glance user. exmaple:000000
  36. GLANCE_DBPASS=000000
  37. #Password for Keystore glance user. exmaple:000000
  38. GLANCE_PASS=000000
  39. #--------------------Nova Config----------------------##
  40. #Password for Mysql nova user. exmaple:000000
  41. NOVA_DBPASS=000000
  42. #Password for Keystore nova user. exmaple:000000
  43. NOVA_PASS=000000
  44. #--------------------Neturon Config-------------------##
  45. #Password for Mysql neutron user. exmaple:000000
  46. NEUTRON_DBPASS=000000
  47. #Password for Keystore neutron user. exmaple:000000
  48. NEUTRON_PASS=000000
  49. #metadata secret for neutron. exmaple:000000
  50. METADATA_SECRET=000000
  51. #Tunnel Network Interface. example:x.x.x.x
  52. INTERFACE_IP=<localhost ip>
  53. #External Network Interface. example:eth1
  54. INTERFACE_NAME=eth1
  55. #External Network The Physical Adapter. example:provider
  56. Physical_NAME=provider
  57. #First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
  58. minvlan=1
  59. #Last Vlan ID in VLAN RANGE for VLAN Network. example:200
  60. maxvlan=4000
  61. #--------------------Cinder Config--------------------##
  62. #Password for Mysql cinder user. exmaple:000000
  63. CINDER_DBPASS=000000
  64. #Password for Keystore cinder user. exmaple:000000
  65. CINDER_PASS=000000
  66. #Cinder Block Disk. example:md126p3
  67. BLOCK_DISK=sdb1
  68. #--------------------Swift Config---------------------##
  69. #Password for Keystore swift user. exmaple:000000
  70. SWIFT_PASS=000000
  71. #The NODE Object Disk for Swift. example:md126p4.
  72. OBJECT_DISK=sdb2
  73. #The NODE IP for Swift Storage Network. example:x.x.x.x.
  74. STORAGE_LOCAL_NET_IP=<compute ip>
  75. #--------------------Heat Config----------------------##
  76. #Password for Mysql heat user. exmaple:000000
  77. HEAT_DBPASS=000000
  78. #Password for Keystore heat user. exmaple:000000
  79. HEAT_PASS=000000
  80. #--------------------Zun Config-----------------------##
  81. #Password for Mysql Zun user. exmaple:000000
  82. ZUN_DBPASS=000000
  83. #Password for Keystore Zun user. exmaple:000000
  84. ZUN_PASS=000000
  85. #Password for Mysql Kuryr user. exmaple:000000
  86. KURYR_DBPASS=000000
  87. #Password for Keystore Kuryr user. exmaple:000000
  88. KURYR_PASS=000000
  89. #--------------------Ceilometer Config----------------##
  90. #Password for Gnocchi ceilometer user. exmaple:000000
  91. CEILOMETER_DBPASS=000000
  92. #Password for Keystore ceilometer user. exmaple:000000
  93. CEILOMETER_PASS=000000
  94. #--------------------AODH Config----------------##
  95. #Password for Mysql AODH user. exmaple:000000
  96. AODH_DBPASS=000000
  97. #Password for Keystore AODH user. exmaple:000000
  98. AODH_PASS=000000
  99. #--------------------Barbican Config----------------##
  100. #Password for Mysql Barbican user. exmaple:000000
  101. BARBICAN_DBPASS=000000
  102. #Password for Keystore Barbican user. exmaple:000000
  103. BARBICAN_PASS=000000
  104. ```
复制代码
2. 安装openstack底子组件

分别在controller节点和compute节点执行openstack-completion.sh文件(执行完闭需重连终端)。在controller节点将openstack --version下令的返回结果提交到答题框。【1分】
3. 搭建数据库组件

在controller节点执行openstack-controller-mysql.sh脚本,会自行安装mariadb、m
emcached、rabbitmq等服务和完成干系配置。执行完成后修改配置文件将缓存CACHESIZE修改为128,并重启相应服务。
将ps aux|grep memcached下令的返回结果提交到答题框。【1分】
  1. vi /etc/sysconfig/memcached
  2. ```
  3. CACHESIZE="128"
  4. ```
  5. # 重启memcached服务
  6. systemctl restart memcached
复制代码
4. 搭建认证服务组件

在controller节点执行openstack-controller-keystone.sh脚本,会自行安装keystone服务和完成干系配置。利用openstack下令,创建一个名为tom的账户,暗码为tompasswo rd123,邮箱为tom@example.com。
将openstack user show tom下令的返回结果提交到答题框。【1分】
  1. openstack user create --domain demo --password tompassword123 --email tom@example.com tom
复制代码
5. 搭建镜像服务组件

在controller节点执行openstack-controller-glance.sh脚本,会自行安装glance服
务和完成干系配置。完成后利用openstack下令,创建一个qcow2格式,名为cirros_0.3.4 的镜像,镜像文件利用cirros-0.3.4-x86_64-disk.img。
将openstack image show cirros_0.3.4下令的返回结果提交到答题框。【1分】
  1. glance image-create --name "cirros_0.3.4" --disk-format qcow2 --container-format bare --progress < ./cirros-0.3.4-x86_64-disk.img
复制代码
6. 搭建盘算服务组件

在controller节点执行openstack-controller-nova.sh,compute节点执行openstackcompute-nova.sh,会自行安装nova服务和完成干系配置。利用openstack下令创建一个名为 m1,ID为56,内存为2048MB,磁盘容量为20GB,vCPU数量为2的云主机类型。在controller节点将openstack flavor show m1下令的返回结果提交到答题框。【1分】
  1. # 使用openstack命令创建一个名为 m1,ID为56,内存为2048MB,磁盘容量为20GB,vCPU数量为2的云主机类型
  2. openstack flavor create --id 56 --ram 2048 --disk 20 --vcpus 2 m1
复制代码
7. 搭建网络组件并初始化网络

在controller节点执行openstack-controller-neutron.sh,compute节点执行openstac k-compute-neutron.sh,会自行安装neutron服务并完成配置。创建云主机外部网络ext-net,子网为ext-subnet,云主机浮动 IP 可用网段为 192.168.200.100~192.168.200.200,网关为 192.168.200.1。在controller节点将openstack subnet show ext-subnet下令的返回结果提交到答题框。
【2分】
  1. openstack network create --external --provider-network-type flat --provider-physical-network provider ext-net
  2. openstack subnet create --network ext-net --allocation-pool start=192.168.200.100,end=192.168.200.200 --subnet-range 192.168.200.0/24 --gateway 192.168.200.1 ext-subnet
复制代码
8. 搭建图形化界面

在 controller节点执行openstack-controller-dashboard.sh脚本,会自行安装 dashboard服务并完成配置。请修改compute节点nova配置文件,使之后创建的实例可以在网页通过公网访问控制台页面。
在compute节点请将cat /etc/nova/nova.conf | grep 公网IP 下令的返回结果提交到
答题框。(例:cat /etc/nova/nova.conf | grep 121.36.12.138)【2分】
  1. vi /etc/nova/nova.conf
  2. ```
  3. 添加以下配置项,以允许实例的 VNC 控制台通过公网访问。确保将 <controller_public_IP> 替换为实际的 Controller 节点的公网 IP 地址。
  4. [vnc]
  5. novncproxy_base_url = http://<controller_public_IP>:6080/vnc_auto.html
  6. xvpvncproxy_base_url = http://<controller_public_IP>:6081/console
  7. novncproxy_port = 6080
  8. xvpvncproxy_port = 6081
  9. vncserver_listen = 0.0.0.0
  10. vncserver_proxyclient_address = <compute_node_IP>
  11. ```
  12. # 重启compute节点nova服务
  13. systemctl restart openstack-nova-compute
复制代码
使命 3 OpenStack 运维使命(20 分)
某公司构建了一套内部私有云系统,这套私有云系统将为公司内部提供盘算服务。你将作为该私有云的维护职员,请完成以下运维工作。
1. 数据库管理

请利用数据库下令将全部数据库备份到/root路径下,备份文件名为openstack.sql,完成
后利用下令查看文件属性此中文件巨细以mb显示。请将全部下令和返回结果提交到答题框。【1分】
  1. # 使用数据库命令将所有数据库备份到/root路径下,备份文件名为openstack.sql
  2. mysqldump -uroot -p000000 --all-databases > /root/openstack.sql
  3. # 使用命令查看文件属性其中文件大小以mb显示
  4. ll -h /root/openstack.sql
复制代码
2. 数据库管理

进入数据库,创建当地用户examuser,暗码为 000000,然后查询mysql数据库中的 use
r 表的user,host,password字段。然后赋予这个用户全部数据库的“查询”“删除”“更新” “创建”的权限。
将select User, Select_priv,Update_priv,Delete_priv,Create_priv from user;下令的返回结果提交到答题框。【1分】
  1. # 进入数据库
  2. mysql -uroot -p000000
  3. # 创建本地用户examuser,密码为 000000
  4. CREATE USER 'examuser'@'localhost' IDENTIFIED BY '000000';
  5. # 赋予这个用户所有数据库的“查询”“删除”“更新” “创建”的权限
  6. GRANT SELECT, UPDATE, DELETE, CREATE ON *.* TO 'examuser'@'localhost';
  7. # 查询用户权限
  8. use mysql;
  9. select User,Select_priv,Update_priv,Delete_priv,Create_priv from user;
复制代码
3. 安全组管理

利用openstack下令创建名称为group_web的安全组该安全组的描述为”Custom securi
ty group”,用openstack下令为安全组添加icmp规则和ssh规则允许任意ip地址访问web, 完成后利用openstack下令查看该安全组的详细信息。
将openstack security group show group_web下令的返回结果提交到答题框。【2分】
  1. # 使用openstack命令创建名称为group_web的安全组该安全组的描述为”Custom security group”
  2. openstack security group create group_web --description "Custom security group"
  3. # 允许 ICMP 规则:
  4. openstack security group rule create --proto icmp group_web
  5. # 允许 SSH 规则:
  6. openstack security group rule create --proto tcp --dst-port 22 group_web
复制代码
4. 项目管理

在 keystone 中利用openstack创建shop项目添加描述为”Hello shop”,完成后利用openstack下令禁用该项目,然后利用openstack下令查看该项目的详细信息。将openstack project show shop下令的返回结果提交到答题框。【2分】
  1. # 在keystone 中使用openstack创建shop项目添加描述为”Hello shop”
  2. openstack project create --description --domain demo "Hello shop" shop
复制代码
5. 用户管理

利用openstack下令查看admin租户的当前配额值、将admin租户的实例配额提升到13,
然后查看修改后admin租户的配额值。
将openstack quota show admin下令的返回结果提交到答题框。【2分】
  1. # 使用openstack命令查看admin租户的当前配额值
  2. openstack quota show admin
  3. # 将admin租户的实例配额提升到13
  4. openstack quota set --instances 13 admin
复制代码
6. heat模板管理

执行脚本openstack-controller-heat.sh安装完heat服务后,编写Heat模板create_f
lavor.yaml,创建名为“m2.flavor”、ID为 1234、内存为1024MB、硬盘为20GB、vcpu数量为1的云主机类型,创建完成后利用openstack下令查看堆栈列表。将openstack stack list下令的返回结果提交到答题框。【2分】 、
  1. # 编写Heat模板create_flavor.yaml
  2. vi create_flavor.yaml
  3. ```
  4. heat_template_version: 2013-05-23
  5. resources:
  6.   m2_flavor:
  7.     type: OS::Nova::Flavor
  8.     properties:
  9.       name: m2.flavor
  10.       flavorid: 1234
  11.       ram: 1024
  12.       vcpus: 1
  13.       disk: 20
  14. ```
  15. # 使用Heat创建堆栈
  16. openstack stack create -t create_flavor.yaml m2-flavor-stack
复制代码
7. 后端配置文件管理

修改glance后端配置文件,将项目的映像存储限制为10GB,完成后重启glance服务。
将cat /etc/glance/glance-api.conf |grep _quota下令的返回结果提交到答题框。【2 分】
  1. vi /etc/glance/glance-api.conf
  2. ```
  3. image_size_cap = 10485760
  4. ```
  5. # 重启glance服务
  6. systemctl restart openstack-glance-api
复制代码
8. 存储服务管理

在controller节点执行openstack-controller-cinder.sh,compute节点执行openstack -compute-cinder.sh,在controller和compute节点上会自行安装cinder服务并完成配置。利用openstack下令创建一个名为lvm的卷类型,利用cinder下令创建该类型规格键值对,要求lvm卷类型对应cinder后端驱动lvm所管理的存储资源,名字lvm_test,巨细1G的云硬盘并查询该云硬盘的详细信息。
将cinder show lvm_test下令的返回结果提交到答题框。【2分】
  1. # 创建名为lvm的卷类型
  2. openstack volume type create lvm
  3. # 使用cinder命令创建规格键值对
  4. cinder type-key lvm set volume_backend_name=lvm
  5. # 创建1G大小的云硬盘
  6. openstack volume create --size 1 --type lvm lvm_test
  7. # 查询云硬盘的详细信息
  8. openstack volume show lvm_test
复制代码
9. 存储管理

为了减缓来自实例的数据访问速度的变慢,OpenStack Block Storage 支持对卷数据复制带宽的速率限制。请修改cinder后端配置文件将卷复制带脱期制为最高100MiB/s(对应数值修改为104857600)。
将cat /etc/cinder/cinder.conf | grep 104857600下令的返回结果提交到答题框。【2 分】
  1. vi /etc/cinder/cinder.conf
  2. ```
  3. [DEFAULT]
  4. replication_bandwidth = 104857600
  5. ```
  6. # 重启cinder服务
  7. systemctl restart openstack-cinder-*
复制代码
10. 存储管理

在controller节点执行openstack-controller-swift.sh,compute节点执行openstack-
compute-swift.sh,在controller和compute节点上会自行安装swift服务并完成配置。利用swift下令创建一个名为file的容器并查看,然后把cirros-0.3.4-x86_64-disk.img上传到file容器中。将swift stat file下令的返回结果提交到答题框。【2分】
  1. # 用swift命令创建一个名为file的容器
  2. swift post file
  3. # 把cirros-0.3.4-x86_64-disk.img上传到file容器中
  4. swift upload file cirros-0.3.4-x86_64-disk.img
  5. # 查看刚创建的swift容器
  6. swift stat file
复制代码
11. OpenStack API 管理

利用curl的方式获取admin用户token值;利用已获取的token值通过curl的方式获取
domain为default全部用户名(ip利用主机名)。将获取到的全部用户名提交到答题框。【2分】
  1. [/code] 使命四 [b]OpenStack[/b] 架构使命([b]15[/b] 分)
  2. [size=5]1. 安装python3情况[/size]
  3. 在controller节点安装python3情况。安装完之后查看python3版本,利用提供的whl文件安装依赖。将pip3 list下令的返回结果提交到答题框。【5分】
  4. [code]# 安装python
  5. yum install -y epel-release
  6. yum install -y python3 python3-pip
  7. # 使用提供的 whl 文件安装依赖
  8. pip3 install example.whl
  9. # 查看已安装的 Python 包列表
  10. pip3 list
复制代码
2. python对接OpenStack API创建image镜像

编写python代码对接OpenStack API,完成镜像的上传。在controller节点的/root目录下创建create_image.py文件,在该文件中编写python代码对接openstack api(需在py 文件中获取token),要求在openstack私有云平台中上传镜像cirros-0.3.4-x86_64-disk.i mg,名字为cirros001,disk_format为qcow2,container_format为bare。执行完代码要求输出“创建镜像乐成,id为:xxxxxx”。
分别将cat /root/create_image.py下令和python3 create_image.py下令的返回结果提交到答题框。【5分】
3. python对接OpenStack API创建用户

编写python代码对接OpenStack API,完成用户的创建。在controller节点的/root目
录下创建create_user.py文件,在该文件中编写python代码对接openstack api(需在py 文件中获取token),要求在openstack私有云平台中创建用户guojibeisheng。
将cat /root/create_user.py下令的返回结果提交到答题框。【5分】
B模块题目:容器的编排与运维
某企业计划利用 k8s 平台搭建微服务系统,如今先利用简单的微服务项目举行测试,请按照要求完成相应使命。
表 1 IP 地址规划
装备名称主机名接口IP地址说明云服务器1mastereth0公网 IP:******** 私网IP:192.168.100.*/24Harbor也是利用该云服务器云服务器2nodeeth0公网 IP:******** 私网IP:192.168.100.*/24 说明:
1.表1中的公网IP和私网IP以自己云主机显示为准,每个人的公网IP和私网IP不同。利用第三方软件远程连接云主机,利用公网IP连接。
2.华为云中云主机名字已命好,直接利用对应名字的云主机即可。
3.全部的软件包存放于/root目录。

使命 1容器云平台情况初始化(10.5分)
1.容器云平台的初始化

master 节点主机名设置为 master、node 节点主机名设置为 node,全部节点 root 暗码设置为 000000,全部
节点关闭 swap,并配置 hosts 映射。
请在 master 节点将 ping node -c 3 下令的返回结果提交到答题框。【1.5 分】
  1. # 在Master节点上执行以下命令以设置主机名为"master":
  2. hostnamectl set-hostname master
  3. # 在Node节点上执行以下命令以设置主机名为"node":
  4. hostnamectl set-hostnmae node
  5. # 所有节点 root 密码设置为 000000
  6. sudo passwd root
  7. # 关闭Swap:
  8. swapoff -a
  9. # 在系统重启后保持Swap被禁用,您需要编辑 /etc/fstab 文件并注释掉包含Swap的行
  10. # 配置hosts映射
  11. vi /etc/hosts
  12. ```
  13. <master ip> master
  14. <node ip> node
  15. ```
  16. #在Master节点上执行以下命令以测试与Node节点的连接:
  17. ping node -c 3
复制代码
2.镜像文件的复制

/root 目录存放有 CentOS-7-x86_64-DVD-2009.iso 和 kubernetes_V1.2.iso 光盘镜像文件,在/opt 目录下利用下令创建 centos 目录,并将镜像文件 CentOS-7-x86_64-DVD-2009.iso 中的内容复制到 centos 目录下,将镜像文件 kubernetes_V1.2.iso 中的内容复制到 /opt 目录下。请在 master 节点将 du -h /opt/ --max-depth=1 下令的返回结果提交到答题框。【1.5 分】
  1. # 创建 centos 目录
  2. mkdir /opt/centos
  3. # 将镜像文件 CentOS-7-x86_64-DVD-2009.iso 中的内容复制到 centos 目录下
  4. mount -o loop CentOS-7-x86_64-DVD-2009.iso /mnt
  5. cp -rfv /mnt/* /opt/centos
  6. umount /mnt
  7. # 复制kubernetes镜像内容
  8. mount -o loop kubernetes_V1.2.iso /mnt
  9. cp -rfv /mnt/* /opt
  10. umount /mnt
复制代码
3.Yum源的编写

在 master 节点起首将系统自带的 yum 源移动到/home 目录,然后为 master 节点配置当地 yum 源,yum 源文件名为 local.repo。
将 yum repolist 下令的返回结果提交到答题框。【1.5 分】
  1. #将系统自带的 yum 源移动到/home 目录
  2. mv /etc/yum.repos.d/* /home
  3. #为 master 节点配置本地 yum 源,yum 源文件名为 local.repo
  4. vi /etc/yum.repos.d/local.repo
  5. ```
  6. [centos]
  7. name=centos
  8. baseurl=file:///opt/centos
  9. gpgcheck=0
  10. enabled=1
  11. [kubernetes]
  12. name=kubernetes
  13. baseurl=file:///opt/kubernetes-repo
  14. gpgcheck=0
  15. enabled=1
  16. ```
复制代码
4.安装ftp服务

在 master 节点安装 ftp 服务,将 ftp 共享目录设置为 /opt。
将 ps -ef | grep ftp 下令的返回结果提交到答题框。【1.5 分】
  1. # 安装ftp服务
  2. yum install -y vsftpd
  3. # 将ftp共享目录设置为/opt
  4. vi /etc/vsftpd/vsftpd.conf
  5. ```
  6. anon_root=/opt
  7. ```
  8. # 重启ftp服务
  9. systemctl enable vsftpd && systemctl restart vsftpd
复制代码
5.ftp源的编写

为 node 节点配置 ftp 源,ftp 源文件名称为 ftp.repo,此中 ftp 服务器地址为 master 节点,配置 ftp 源时不
要写 IP 地址。
在 node 节点请将 curl ftp://master 下令的返回结果提交到答题框。【1.5 分】
  1. # 为 node 节点配置 ftp 源,ftp 源文件名称为 ftp.repo
  2. mv /etc/yum.repos.d/* /home
  3. vi /etc/yum.repos.d/ftp.repo
  4. ```
  5. [centos]
  6. name=centos
  7. baseurl=ftp://master/centos
  8. gpgcheck=0
  9. enabled=1
  10. [kubernetes]
  11. name=kubernetes
  12. baseurl=ftp://master/kubernetes-repo
  13. gpgcheck=0
  14. enabled=1
  15. ```
复制代码
6.设置时间同步服务器

在 master 节点上摆设 chrony 服务器,允许其它节点同步时间,启动服务并设置为开机自启动;在其他节点上指定 master 节点为上游 NTP 服务器,重启服务并设为开机自启动。(配置文件 IP 用盘算机名代替)在 node 节点将 chronyc sources 下令的返回结果提交到答题框。【1.5 分】
  1. # 在Master节点上执行以下步骤:
  2. # 安装Chrony服务:
  3. yum install -y chrony
  4. # 编辑Chrony配置文件:
  5. vi /etc/chrony/chrony.conf
  6. ```
  7. allow <node ip>
  8. ```
  9. # 启动Chrony服务并设置为开机自启动:
  10. systemctl start chronyd
  11. systemctl enable chronyd
  12. # 在node上执行以下步骤:
  13. yum install -y chrony
  14. # 编辑Chrony配置文件:
  15. vi /etc/chrony/chrony.conf
  16. ```
  17. server <master ip> iburst
  18. ```
  19. # 重启Chrony服务并设置为开机自启动:
  20. systemctl restart chronyd
  21. systemctl enable chronyd
  22. # 查看Chrony的时间同步源:
  23. chronyc sources
复制代码
7.设置免密登录

为两台台服务器设置免密登录,保证服务器之间能够互相免密登录。
在 master 节点将 ssh node 下令的返回结果提交到答题框。【1.5 分】
  1. # 在本地主机上创建公钥和密钥
  2. ssh-keygen
  3. # 用 ssh-copy-id 把公钥复制到远程主机
  4. ssh-copy-id root@<远程主机 ip>
  5. # 直接登录远程主机
  6. ssh <远程主机 ip>
复制代码
使命2 k8s搭建使命(19.5分)
1.安装docker应用

在全部节点上安装 dokcer-ce,并设置为开机自启动。在 master 节点请将 docker version 下令的返回结果提交到答题框。【1.5 分】
  1. # 安装docker-ce
  2. yum install -y docker-ce
  3. # 启动Docker服务并设置为开机自启动:
  4. systemctl start docker
  5. systemctl enable docker
  6. # 查看Docker版本信息:
  7. docker version
复制代码
2.安装docker应用

全部节点配置阿里云镜像加速地址(https://d8b3zdiw.mirror.aliyuncs.com)并把启动引擎设置为 systemd,配置乐成后加载配置文件并重启 docker 服务。
将 docker pull ubuntu 下令的返回结果提交到答题框。【1.5 分】
  1. # 编辑dockers配置文件
  2. vi /etc/docker/daemon.json
  3. ```
  4. {
  5.   "insecure-registries" : ["0.0.0.0/0"],
  6.   "registry-mirrors": ["https://d8b3zdiw.mirror.aliyuncs.com"],
  7.    "exec-opts": ["native.cgroupdriver=systemd"]
  8. }
  9. ```
  10. # 加载配置文件并重启Docker服务:
  11. systemctl daemon-reload
  12. systemctl restart docker
复制代码
3.载入镜像

在 master 节点/opt/images 目录下利用 tar 归档文件载入镜像。 将 docker images | grep mysql 下令的返回结果提交到答题框。【1.5 分】
  1. # 在 master 节点/opt/images 目录下使用 tar 归档文件载入镜像
  2. cd /opt/images
  3. docker load -i /opt/images/images.tar
  4. # 查看Docker镜像中是否存在MySQL镜像:
  5. docker images | grep mysql
复制代码
4.安装docker-compose

在 master 节点利用 /opt/docker-compose/v2.10.2-docker-compose-linux-x86_64 文件安装 docker-compose。安装完成后执行 docker-compose version 下令。将 docker-compose version 下令的返回结果提交到答题框。【1.5 分】
  1. # 赋予二进制文件运行权限
  2. chmod +x /opt/docker-compose/v2.10.2-docker-compose-linux-x86_64
  3. # 创建软连接
  4. ln -s /opt/docker-compose/v2.10.2-docker-compose-linux-x86_64 /usr/local/bin/docker-compose
  5. # 查看docker-compose的版本信息
  6. docker-compose version
复制代码
5.搭建harbor堆栈

在 master 节点解压/opt/harbor/ harbor-offline-installer-v2.5.3.tgz离线安装包,然后安装 harbor 堆栈,并修改相应的 yml 文件,使各节点默认 docker 堆栈为 harbor 堆栈地址。
在 master 节点请将 docker-compose ps 下令的返回结果提交到答题框。【1.5 分】
  1. # 在 master 节点解压/opt/harbor/ harbor-offline-installer-v2.5.3.tgz离线安装包
  2. tar -zxvf /opt/harbor/harbor-offline-installer-v2.5.3.tgz -C /opt/harbor/
  3. # 安装Harbor仓库:
  4. cd /opt/harbor/harbor
  5. ./prepare
  6. ./install.sh --with-clair
  7. # 修改配置文件,将各节点的默认Docker仓库地址设置为Harbor仓库地址:
  8. vi /opt/harbor/harbor/harbor.yml
  9. ```
  10. hostname: harbor.example.com
  11. harbor_admin_password: your_password
  12. ```
  13. # 重新启动Harbor:
  14. ./install.sh
  15. # 查看Docker Compose容器状态:
  16. docker-compose -f /opt/harbor/harbor/docker-compose.yml ps
复制代码
6.上传docker镜像

在 master 节点执行/opt/k8s_image_push.sh 将全部镜像上传至 docker 堆栈。
将 docker login master 下令的返回结果提交到答题框(填写完整提示输入的内容)。【1.5 分】
7.摆设Kubeadm、containerd、nerdctl和buildkit

执行/opt/k8s_con_ner_bui_install.sh 摆设 Kubeadm、containerd、nerdctl 和 buildkit。
将 ctr version 下令的返回结果提交到答题框。【1.5 分】
  1. # 在Master节点上运行脚本部署所需组件:
  2. sh /opt/k8s_con_ner_bui_install.sh
  3. ctr version
复制代码
8.初始化集群

在 master 节点kubeadm下令初始化集群,利用当地 Harbor 堆栈。 将 kubectl get nodes 下令的返回结果提交到答题框。【1.5 分】
  1. kubeadm init \
  2.         --apiserver-advertise-address=<master ip> \
  3.         --image-repository <harbor仓库 地址> \
  4.         --kubernetes-version=<k8s 版本> \
  5.         --service-cidr=10.96.0.0/12 \
  6.         --pod-network-cidr=10.244.0.0/16
  7. # master设置kubectl的配置:
  8. mkdir -p $HOME/.kube
  9. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  10. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  11. # 检查集群状态和节点:
  12. kubectl get nodes
复制代码
9.安装kubernetes网络插件

修改提供的/opt/yaml/flannel/kube-flannel.yaml,使其镜像泉源为当地 Harbor 堆栈,然后安装 kubernetes 网络插件,安装完成后利用下令查看节点状态。
将 kubectl get pods -A 下令的返回结果提交到答题框。【1.5 分】
  1. vi /opt/yaml/flannel/kube-flannel.yaml
  2. ```
  3. containers:
  4. - name: kube-flannel
  5.   image: <harbor仓库 地址> /kube-flannel:v0.14.0
  6. ```
  7. # master节点上运行安装网络插件:
  8. kubectl apply -f /opt/yaml/flannel/kube-flannel.yaml
  9. # 查看节点状态:
  10. kubectl get pods -A
复制代码
10.创建证书

给 kubernetes 创建证书,命名空间为 kubernetes-dashboard,涉及到的全部文件命名为 dashboard 比方 dashboard.crt。
将 kubectl get csr 下令的返回结果提交到答题框。【1.5 分】
  1. # 创建命名空间
  2. kubectl create namespace kubernetes-dashboard
  3. # 创建证书Secret
  4. kubectl create secret generic dashboard-certs --from-file=dashboard.crt --from-file=dashboard.key -n kubernetes-dashboard
  5. # 查看证书签名请求(CSR):
  6. kubectl get csr
复制代码
11.kubernetes 图形化界面的安装

修改/opt/yaml/dashboard/recommended.yaml 的镜像泉源为当地 Harbor 堆栈,然后利用/opt/yaml/dashboa
rd/recommended.yaml 和/opt/yaml/dashboard/dashadmin-user.yaml安装 kubernetes dashboard 界面,完成后查看首页。
将 kubectl get svc -n kubernetes-dashboard 下令的返回结果提交到答题框。【1.5 分】
  1. # 修改/opt/yaml/dashboard/recommended.yaml 的镜像来源为本地 Harbor 仓库
  2. vi /opt/yaml/doshboard/recommended.yaml
  3. ```
  4. image: <harbor仓库 ip>/kubernetesui/dashboard:v2.3.1
  5. ```
  6. # 安装 kubernetes dashboard 界面
  7. kubectl apply -f /opt/yaml/dashboard/recommended.yaml
  8. kubectl apply -f /opt/yaml/dashboard/dashadmin-user.yaml
  9. # 查看Dashboard首页:
  10. kubectl get svc -n kubernetes-dashboard
复制代码
12.删除污点

为了能使 pod 调度到 master 节点,用下令删除污点。在浏览器访问 dashboard(https://IP:30001)
将 kubectl describe nodes master | grep Taints 下令的返回结果提交到答题框。【1.5 分】
  1. # 删除污点
  2. kubectl taint nodes master node-role.kubernetes.io/master-
  3. # 访问Dashboard:
  4. 浏览器中访问https://<master ip>:30001
  5. # 查看节点污点
  6. kubectl describe nodes master | grep Taints
复制代码
13.扩展盘算节点

在 node 节点执行 k8s_node_install.sh,将该节点到场 kubernetes 集群。完成后在 master 节点上查看全部节点状态。
在 master 节点请将 kubectl get nodes 下令的返回结果提交到答题框。【1.5 分】
使命3摆设Owncloud网盘服务(20 分)

ownCloud 是一个开源免费专业的私有云存储项目,它能帮你快速在个人电脑或服务器上架设一套专属
的私有云文件同步网盘,可以像 百度云那样实现文件跨平台同步、共享、版本控制、团队协作等。
1.创建PV和PVC

编写 yaml 文件(文件名自定义)创建 PV 和 PVC 来提供持久化存储,以便保存 ownCloud 服务中的文件和数据。
要求:PV(访问模式为读写,只能被单个节点挂载;存储为 5Gi;存储类型为 hostPath,存储路径自定义) PVC(访问模式为读写,只能被单个节点挂载;申请存储空间巨细为 5Gi) 将 kubectl get pv,pvc 下令的返回结果提交到答题框。【4 分】
  1. # 编写yaml文件
  2. vi pv.yaml
  3. ```
  4. apiVersion: v1
  5. kind: PersistentVolume
  6. metadata:
  7.   name: owncloud-pv
  8. spec:
  9.   capacity:
  10.     storage: 5Gi
  11.   volumeMode: Filesystem
  12.   accessModes:
  13.     - ReadWriteOnce
  14.   hostPath:
  15.     path: /your/custom/path # 请将此路径替换为实际路径
  16. ```
  17. vi pvc.yaml
  18. ```
  19. apiVersion: v1
  20. kind: PersistentVolumeClaim
  21. metadata:
  22.   name: owncloud-pvc
  23. spec:
  24.   accessModes:
  25.     - ReadWriteOnce
  26.   resources:
  27.     requests:
  28.       storage: 5Gi
  29. ```
  30. # 应用创建PV和PVC:
  31. kubectl apply -f pv.yaml
  32. kubectl apply -f pvc.yaml
  33. # 查看PV和PVC:
  34. kubectl get pv,pvc
复制代码
2. 配置ConfigMap

编写 yaml 文件(文件名自定义)创建一个 configMap 对象,指定 OwnCloud 的情况变量。登录账号对应的情况变量为OWNCLOUD_ADMIN_USERNAME,暗码对应的情况变量为OWNCLOUD_ADMIN_PASSWORD。
(变量值自定义)
将 kubectl get ConfigMap 下令的返回结果提交到答题框。【4 分】
  1. vi configmap.yaml
  2. ```
  3. apiVersion: v1
  4. kind: ConfigMap
  5. metadata:
  6.   name: owncloud-config
  7. data:
  8.   OWNCLOUD_ADMIN_USERNAME: your_admin_username
  9.   OWNCLOUD_ADMIN_PASSWORD: your_admin_password
  10. ```
  11. # 应用创建的ConfigMap:
  12. kubectl apply -f configmap.yaml
  13. # 查看ConfigMap:
  14. kubectl get cm
复制代码
3.创建Secret

编写 yaml 文件(文件名自定义)创建一个 Secret 对象,以保存 OwnCloud 数据库的暗码。对原始暗码采用 b
ase64 编码格式举行加密。 将 kubectl get Secret 下令的返回结果提交到答题框。【4 分】
  1. vi secret.yaml
  2. ```
  3. apiVersion: v1
  4. kind: Secret
  5. metadata:
  6.   name: owncloud-secret
  7. type: Opaque
  8. data:
  9.   DB_PASSWORD: encoded_base64_password
  10. ```
  11. # 应用创建的Secret:
  12. kubectl apply -f secret.yaml
  13. # 查看Secret:
  14. kubectl get Secret
复制代码
4.摆设owncloud Deployment应用

编写 yaml 文件(文件名自定义) 创建 Deployment 对象, 指定 OwnCloud 的容器和干系的情况变量。(De ployment 资源命名为 owncloud-deployment,镜像为 Harbor 堆栈中的 owncloud:latest,存储的挂载路径为/var/ www/html,其它根据详细情况举行配置)
将 kubectl describe pod 下令的返回结果提交到答题框。【4 分】
  1. vi owncloud-deployment.yaml
  2. ```
  3. apiVersion: apps/v1
  4. kind: Deployment
  5. metadata:
  6.   name: owncloud-deployment
  7. spec:
  8.   replicas: 1
  9.   selector:
  10.     matchLabels:
  11.       app: owncloud
  12.   template:
  13.     metadata:
  14.       labels:
  15.         app: owncloud
  16.     spec:
  17.       containers:
  18.       - name: owncloud
  19.         image: <harbor仓库 ip>/owncloud:latest
  20.         ports:
  21.         - containerPort: 80
  22.         volumeMounts:
  23.         - name: owncloud-storage
  24.           mountPath: /var/www/html
  25.       volumes:
  26.       - name: owncloud-storage
  27.         persistentVolumeClaim:
  28.           claimName: owncloud-pvc
  29.       env:
  30.       - name: OWNCLOUD_ADMIN_USERNAME
  31.         valueFrom:
  32.           configMapKeyRef:
  33.             name: owncloud-config
  34.             key: OWNCLOUD_ADMIN_USERNAME
  35.       - name: OWNCLOUD_ADMIN_PASSWORD
  36.         valueFrom:
  37.           configMapKeyRef:
  38.             name: owncloud-config
  39.             key: OWNCLOUD_ADMIN_PASSWORD
  40.       - name: DB_PASSWORD
  41.         valueFrom:
  42.           secretKeyRef:
  43.             name: owncloud-secret
  44.             key: DB_PASSWORD
  45. ```
  46. # 应用创建的Deployment:
  47. kubectl apply -f owncloud-deployment.yaml
  48. # 查看Pod描述:
  49. kubectl describe pod -l app=owncloud
复制代码
5.创建Service

编写 yaml 文件(文件名自定义)创建一个 Service 对象将 OwnCloud 公开到集群外部。通过 http://IP:端标语可查看 owncloud。【4 分】
将 kubectl get svc -A 下令的返回结果提交到答题框。
  1. vi owncloud-service.yaml
  2. ```
  3. apiVersion: v1
  4. kind: Service
  5. metadata:
  6.   name: owncloud-service
  7. spec:
  8.   selector:
  9.     app: owncloud
  10.   ports:
  11.   - protocol: TCP
  12.     port: 80
  13.     targetPort: 80
  14.   type: NodePort
  15. ```
  16. # 应用创建的Service:
  17. kubectl apply -f owncloud-service.yam
复制代码
C模块题目:企业级应用的自动化摆设和运维
虚拟机与情况规划
表3
装备名称主机名接口IP地址脚色云服务器1ansibleeth0公网 IP:******** 私网IP:192.168.100.*/24云服务器2host1eth0公网 IP:******** 私网IP:192.168.100.*/24云服务器3host2eth0公网 IP:******** 私网IP:192.168.100.*/24 \1. 上表中的公网IP以自己云主机显示为准,每个人的公网IP不同。利用第三方软件远程连接云主机,利用公网IP连接。
2.华为云中云主机名字已命好,直接利用对应名字的云主机即可。
使命 1 企业级应用的自动化摆设(15分)
\1. Ansible 自动化运维工具摆设主从数据库
(1) 修改主机名 ansible 节点主机名为 ansible,host1 节点主机名为 host1,host2 节点主机名为 host2,请利用提供的软件包在 ansible 节点安装 ansible。
将 ansible --version 下令的返回结果提交到答题框。
  1. # 在ansible节点上执行:
  2. hostname set-hostname ansible
  3. # 在host1节点上执行:
  4. hostname set-hostname host1
  5. # 在host2节点上执行:
  6. hostnamectl set-hostname host2
  7. # 在ansible节点上安装Ansible:
  8. yum install /path/to/ansible.rpm
复制代码
(2) 配置主机清单文件,创建 mysql 主机组,mysql 主机组内添加 host1 和 host2 主机;创建 mysql1 主机组,mysql1 组内添加 host1 主机;创建 mysql2 主机组,mysql2 组内添加 host2 主机,并配置免密登录。
将 ansible all -m ping 下令的返回结果提交到答题框。
  1. # 在ansible节点上
  2. vi /etc/ansible/hosts
  3. ```
  4. [mysql]
  5. <host1 ip> host1
  6. <host2 ip>host2
  7. [mysql1]
  8. <host1> host1
  9. [mysql2]
  10. <host2> host2
  11. ```
  12. # 运行ansible命令进行主机连接测试:
  13. ansible all -m ping
复制代码
(3)mysql 主机组内全部主机安装 mariadb 数据库,启动数据库并设置为开机自启动。
在 host1 节点将 systemctl status mariadb 下令的返回结果提交到答题框。
  1. # 安装MariaDB并启动:
  2. vi install_mariadb.yml
  3. ```
  4. ---
  5. - name: Install and start MariaDB
  6.   hosts: mysql
  7.   become: yes
  8.   tasks:
  9.     - name: Install MariaDB
  10.       yum:
  11.         name: mariadb-server
  12.         state: present
  13.     - name: Start and enable MariaDB
  14.       systemd:
  15.         name: mariadb
  16.         state: started
  17.         enabled: yes
  18. ```
  19. # 运行Playbook来执行安装和启动操作:
  20. ansible-playbook install_mariadb.yml
  21. # 检查MariaDB状态:
  22. systemctl status mariadb
复制代码
(4) 编写一名称为 mariadb.sh 的 shell 脚本,该脚本具有完成 mariadb 数据库的初始化功能(要求数据库用户名为 root,暗码为 123456),通过 ansible 对应模块执行 mariadb.sh 完成对 mysql 主机组下的全部节点举行数据库初始化。
在 node1 节点,将 mysql -uroot -p123456 下令的返回结果提交到答题框。
  1. vi init_mariadb.yml
  2. ```
  3. ---
  4. - name: Initialize MariaDB
  5.   hosts: mysql
  6.   become: yes
  7.   tasks:
  8.     - name: Copy mariadb.sh script
  9.       copy:
  10.         src: /path/to/mariadb.sh
  11.         dest: /tmp/mariadb.sh
  12.         mode: 0755
  13.     - name: Execute mariadb.sh script
  14.       shell: /tmp/mariadb.sh
  15. ```
  16. # 运行Playbook来执行脚本在mysql主机组内的所有节点上初始化数据库:
  17. ansible-playbook init_mariadb.yml
  18. # 连接到MariaDB数据库:
  19. mysql -uroot -p123456
复制代码
(5) 创建主机变量,全部主机组中 host1 节点创建变量 id=20,hots2 节点创建变量 id=30。
将 cat /etc/ansible/hosts | grep id 下令的返回结果提交到答题框。
  1. # 编辑主机变量:
  2. vi /etc/ansible/hosts
  3. [mysql]
  4. host1 id=20
  5. host2 id=30
  6. [mysql1]
  7. host1 id=20
  8. [mysql2]
  9. host2 id=30
  10. # 检查主机变量设置:
  11. cat /etc/ansible/hosts | grep id
复制代码
(6) 根据 mysql 配置文件创建 mysql 的 Janja2 模板文件命名为 my.cnf.j2,编写 mariadb.yaml 文件实现主从数据库的配置和权限设置。
在 host2 节点进入数据库将 show slave status \G 下令的返回结果提交到答题框。
  1. # 创建一个名为my.cnf.j2的文件
  2. vi my.cnf.j2
  3. ```
  4. [mysqld]
  5. server-id={{ server_id }}
  6. log-bin=mysql-bin
  7. binlog-do-db=mydb
  8. ```
  9. # 编写mariadb.yaml配置文件:
  10. vi mariadb.yaml
  11. ```
  12. ---
  13. - name: Configure MySQL replication and privileges
  14.   hosts: host1,host2
  15.   become: yes
  16.   vars:
  17.     server_id: 1  # Set appropriate server ID for each host
  18.   tasks:
  19.     - name: Copy my.cnf.j2 template
  20.       template:
  21.         src: /path/to/my.cnf.j2
  22.         dest: /etc/my.cnf
  23.       notify:
  24.         - restart mysql
  25.     - name: Start MySQL service
  26.       service:
  27.         name: mariadb
  28.         state: started
  29.     - name: Set MySQL root password
  30.       mysql_user:
  31.         name: root
  32.         password: 123456
  33.         login_unix_socket: /var/lib/mysql/mysql.sock
  34.     # Additional tasks for setting up replication
  35.     # ...
  36.   handlers:
  37.     - name: restart mysql
  38.       service:
  39.         name: mariadb
  40.         state: restarted
  41. ```
  42. # 运行配置Playbook
  43. ansible-playbook mariadb.yaml
  44. # 连接到数据库并查看从数据库状态:
  45. mysql -uroot -p123456 -e "show slave status \G"
复制代码
2.Mycat 读写分离摆设
(1)在 ansible 节点,安装 Java 的运行情况。 将 java –version 下令的返回结果提交到答题框。
  1. # 安装java的运行环境
  2. yum install java-1.8.0-openjdk
  3. # 检查Java安装结果:
  4. java -version
复制代码
(2) 在主机清单创建 ansible 主机组并添加 ansible 节点。把 Mycat-server-1.6-RELEASE-linux.tar.gz 解压到/usr/local 目录下,并完成干系配置。将 cat /etc/profile | grep mycat 下令的返回结果提交到到答题框。
  1. # 编辑主机清单
  2. vi /etc/ansible/hosts
  3. ```
  4. [ansible]
  5. <ansible ip> ansible
  6. ```
  7. # 把 Mycat-server-1.6-RELEASE-linux.tar.gz 解压到/usr/local 目录下
  8. tar -zxvf Mycat-server-1.6-RELEASE-linux.tar.gz -C /usr/local
  9. # 进入Mycat目录
  10. cd /usr/local/Mycat-server-1.6-RELEASE
  11. # 编辑Mycat配置文件,根据需要进行配置
  12. vi conf/server.xml
  13. # 更新环境变量:
  14. source /etc/profile
复制代码
(3) 编辑 mycat 服务读写分离的 schema.xml 配置文件,配置数据库 host1 为写节点,host2 为读节点。编辑 m ycat 服务的 sever.xml 配置文件,配置 mycat 的逻辑库以及 root 用户的暗码为 123456。通过 mycat 启动脚本文件启动 mycat 并验证 mycat 监听端标语是否被监听。将 netstat –ntpl 下令的返回结果提交到答题框。
  1. vi conf/schema.xml
  2. ```
  3. <dataHost name="host1" ... writeType="true">
  4.     <!-- 写节点配置 -->
  5.     ...
  6. </dataHost>
  7. <dataHost name="host2" ... writeType="false">
  8.     <!-- 读节点配置 -->
  9.     ...
  10. </dataHost>
  11. ```
  12. vi server.xml
  13. ```
  14. <user name="root" defaultAccount="true">
  15.     <property name="password">123456</property>
  16. </user>
  17. ```
  18. # 启动Mycat并验证监听端口:
  19.   # 进入Mycat目录
  20.   cd /usr/local/Mycat-server-1.6-RELEASE
  21.   # 启动Mycat
  22.   ./bin/mycat start
  23.   # 查看监听端口情况
  24.   netstat -ntpl | grep java
复制代码

  • Ansible 自动化运维工具摆设 zookeeper 集群
zookeeper 是一个分布式服务框架,是 Apache Hadoop 的一个子项目,重要是用来办理分布式应用中常常碰到的一些数据管理题目,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。 gpmall 商城系统中用到了 kafka 消息队列,kafka 集群的搭建依赖 zookeeper 集群来举行元数据的管理。
(1) 编写主机清单文件,创建 zookeeper 主机组,zookeeper 主机组内添加 ansible、host1 和 host2 主机,分别创建主机变量 zk_id=私有 IP 末了一个数字。
  1. vi /etc/ansible/hosts
  2. ```
  3. [zookeeper]
  4. ansible zk_id=1
  5. host1 zk_id=2
  6. host2 zk_id=3
  7. ```
  8. # 编写ansible playbook:
  9. vi deploy_zookeeper.yml
  10. ```
  11. ---
  12. - name: Deploy ZooKeeper Cluster
  13.   hosts: zookeeper
  14.   become: yes
  15.   tasks:
  16.     - name: Install Java
  17.       yum:
  18.         name: java-1.8.0-openjdk
  19.         state: present
  20.     - name: Create ZooKeeper data directory
  21.       file:
  22.         path: /opt/zookeeper/data
  23.         state: directory
  24.         owner: zookeeper
  25.         group: zookeeper
  26.     - name: Download and extract ZooKeeper
  27.       unarchive:
  28.         src: http://apache.mirrors.pair.com/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
  29.         dest: /opt
  30.         remote_src: yes
  31.     - name: Configure ZooKeeper
  32.       template:
  33.         src: zoo.cfg.j2
  34.         dest: /opt/apache-zookeeper-3.6.3-bin/conf/zoo.cfg
  35.     - name: Start ZooKeeper service
  36.       systemd:
  37.         name: zookeeper
  38.         enabled: yes
  39.         state: started
  40. ```
  41. # 在上面的Playbook中,您需要将zoo.cfg.j2替换为ZooKeeper配置文件的Jinja2模板。
  42. # 运行Playbook:
  43. ansible-playbook deploy_zookeeper.yml
复制代码
将 ansible all -a "id"下令的返回结果提交到答题框。
(2) 在 ansible 节点,利用提供的 zookeeper-3.4.14.tar.gz 软件包,编写 zookeeper.yaml 文件,实现 zookeeper 集群搭建,创建使命清单实现 zookeeper 安装包批量解压、通过 Janja2 模板文件配置 zookeeper、创建 zooke eper 的 myid 文件和批量启动 zookeeper 功能。在三个节点相应的目录利用./zkServer.sh status 下令查看三个 Zookeeper 节点的状态。将 jps 下令的返回结果提交到答题框。
vi zookeeper.yaml
  1. ---
  2. - name: Deploy ZooKeeper Cluster
  3.   hosts: zookeeper
  4.   become: yes
  5.   tasks:
  6.     - name: Copy ZooKeeper installation files
  7.       copy:
  8.         src: /path/to/zookeeper-3.4.14.tar.gz
  9.         dest: /tmp
  10.     - name: Extract ZooKeeper
  11.       unarchive:
  12.         src: /tmp/zookeeper-3.4.14.tar.gz
  13.         dest: /opt
  14.         creates: /opt/zookeeper-3.4.14
  15.     - name: Configure ZooKeeper
  16.       template:
  17.         src: zoo.cfg.j2
  18.         dest:
  19. 创建Jinja2模板
  20. vi zoo.cfg.j2
  21. ```
  22. tickTime=2000
  23. dataDir=/opt/zookeeper-3.4.14/data
  24. clientPort=2181
  25. {% for host in groups['zookeeper'] %}
  26. server.{{ hostvars[host]['ansible_zk_id'] }}={{ host }}:2888:3888
  27. {% endfor %}
  28. ```
  29. # 运行Playbook:
  30. ansible-playbook zookeeper.yaml
  31. # 查看ZooKeeper节点的状态:
  32. ansible-playbook zookeeper.yaml --tags "Check ZooKeeper Cluster Status"
复制代码

  • Ansible 自动化运维工具摆设 kafka 集群
Apache Kafka 是分布式发布-订阅消息系统,是一种快速、可扩展的、计划内涵就是分布式的,分区的和可复制的提交日记服务。gpmall 商城系统利用了 kafka 消息队列框架来缓存消息。在 ansible 节点,利用提供的 kafka_2.11-1.1.1.tgz 软件包,编写 ansible-playbook 文件实现 kafka 集群搭建,创建使命清单实现 kaf ka 安装包批量解压、通过 Janja2 模板文件批量配置 kafka 和批量启动 kafka 功能。将 jps –ml 下令的返回结果提交到答题框。
  1. vi kafka.yaml
  2. ```
  3. ---
  4. - name: Deploy and Start Kafka Cluster
  5.   hosts: kafka
  6.   become: yes
  7.   tasks:
  8.     - name: Copy Kafka installation files
  9.       copy:
  10.         src: /path/to/kafka_2.11-1.1.1.tgz
  11.         dest: /tmp
  12.     - name: Extract Kafka
  13.       unarchive:
  14.         src: /tmp/kafka_2.11-1.1.1.tgz
  15.         dest: /opt
  16.         creates: /opt/kafka_2.11-1.1.1
  17.     - name: Configure Kafka
  18.       template:
  19.         src: server.properties.j2
  20.         dest: /opt/kafka_2.11-1.1.1/config/server.properties
  21.     - name: Start Kafka service
  22.       shell: /opt/kafka_2.11-1.1.1/bin/kafka-server-start.sh -daemon /opt/kafka_2.11-1.1.1/config/server.properties
  23. - name: Check Kafka Cluster Status
  24.   hosts: kafka
  25.   tasks:
  26.     - name: Check Kafka status
  27.       shell: jps -ml | grep kafka.Kafka
  28. ```
  29. # 创建Jinja2模板(例如server.properties.j2):
  30. vi server.properties.j2
  31. ```
  32. broker.id={{ ansible_play_hosts.index(inventory_hostname) }}
  33. listeners=PLAINTEXT://{{ ansible_host }}:9092
  34. advertised.listeners=PLAINTEXT://{{ ansible_host }}:9092
  35. log.dirs=/opt/kafka_2.11-1.1.1/logs
  36. ```
  37. # 运行Playbook:
  38. ansible-playbook -i hosts.ini kafka.yaml
  39. # 使用以下命令查看Kafka节点的状态:
  40. ansible-playbook kafka.yaml --tags "Check Kafka Cluster Status"
复制代码
使命2 应用商城系统摆设
1.在 ansible 节点,利用提供的 gpmall-cluster 软件包,完成集群应用系统摆设。摆设完成后,举行登录,末了利用 curl 下令去获取商城首页的返回信息,
将 curl -l http://EIP:80下令的返回结果提交到答题框。
  1. vi gpmall.yaml
  2. ```
  3. ---
  4. - name: Deploy gpmall Cluster
  5.   hosts: ansible  # Use the appropriate host group or hostname
  6.   become: yes
  7.   tasks:
  8.     - name: Copy gpmall-cluster software package
  9.       copy:
  10.         src: /path/to/gpmall-cluster
  11.         dest: /tmp
  12.     - name: Extract gpmall-cluster
  13.       unarchive:
  14.         src: /tmp/gpmall-cluster
  15.         dest: /opt
  16.         creates: /opt/gpmall-cluster
  17.     - name: Start gpmall-cluster services
  18.       shell: /opt/gpmall-cluster/start.sh
  19. - name: Get gpmall Homepage
  20.   hosts: ansible  # Use the appropriate host group or hostname
  21.   tasks:
  22.     - name: Get gpmall homepage
  23.       shell: curl -s http://EIP[:80]
  24.       register: homepage_response
  25.     - debug:
  26.         var: homepage_response.stdout
  27. ```
  28. # 运行Playbook:
  29. ansible-playbook gpmall.yaml
复制代码
使命3 Prometheus监控Mariadb主从数据库
1.Prometheus 及 Grafana 搭建
根据 grafana-enterprise-8.3.6.linux-amd64.tar.gz、prometheus-2.37.0.linux-amd64.tar.gz、node_exporter-1.3.
1.linux-amd64.tar.gz 资源包,安装 prometheus-2.37.0、node_exporter 服务并启动,安装 grafana 服务并测试浏览器登陆。
  1. # 安装和配置Prometheus:
  2. tar -zxvf prometheus-2.37.0.linux-amd64.tar.gz
  3. mv prometheus-2.37.0.linux-amd64 prometheus
  4. cd prometheus
  5. ./prometheus --config.file=prometheus.yml
  6. # 这将在默认端口9090上启动Prometheus。
  7. # 安装和启动Node Exporter:
  8. tar -xzvf node_exporter-1.3.1.linux-amd64.tar.gz
  9. cd node_exporter-1.3.1.linux-amd64
  10. ./node_exporter
  11. # Node Exporter将在默认端口9100上启动。
  12. # 安装和配置Grafana:
  13. tar -xzvf grafana-enterprise-8.3.6.linux-amd64.tar.gz
  14. mv grafana-8.3.6 grafana
  15. cd grafana/bin
  16. ./grafana-server
  17. # Grafana将在3000端口上启动。您可以在浏览器中访问http://服务器IP:3000来登录Grafana,默认用户名和密码都是admin。
  18. # 配置数据源和Dashboard:
  19.   登录Grafana后,点击左侧的“齿轮”图标,选择“Data Sources”。
  20.   点击“Add data source”。
  21.   选择“Prometheus”作为数据源类型,配置URL为http://localhost:9090(如果Prometheus在其他服务器上,请   替换为相应的URL)。
  22.   点击“Save & Test”以保存和测试数据源配置。
  23. # 导入Mariadb监控Dashboard:
  24.   在Grafana中,点击左侧的“+”图标,选择“Import”。
  25.   使用Dashboard ID(如https://grafana.com/grafana/dashboards/7362)或者上传JSON文件导入Mariadb   监控Dashboard。
  26.   
复制代码
2.Prometheus 配置自定义监控项、mysqld_exporter 安装及配置
根据 mysqld_exporter-0.12.1.linux-amd64.tar.gz 安装 mysqld_exporter,并创建/修改 mysqld_exporter-0.12.
1.linux-amd64/my.cnf 文件添加被监控数据库用户名暗码,修改 prometheus.yml 文件,添加两个使命:mysql -ansible-slave、nodes,抓取间隔都设置 5s,分别监控主从节点的 mysqld_exporter、node_exporter 端口,重启 prometheus 并刷新 prometheus 页面。
  1. # 安装和配置 mysqld_exporter:
  2. tar -xzvf mysqld_exporter-0.12.1.linux-amd64.tar.gz
  3. cd mysqld_exporter-0.12.1.linux-amd64
  4. # 编辑my.cnf文件,添加被监控数据库用户名密码
  5. cp my.cnf.example my.cnf
  6. vi my.cnf
  7. # 启动 mysqld_exporter
  8. ./mysqld_exporter
  9. # 修改 Prometheus 配置:添加以下内容以监控mysqld_exporter和node_exporter:
  10. vi prometheus.yml
  11. ```
  12. global:
  13.   scrape_interval: 5s
  14. scrape_configs:
  15.   - job_name: 'mysql-ansible-slave'
  16.     static_configs:
  17.       - targets: ['host1:9104', 'host2:9104'] # 替换为实际的主从节点IP
  18.   - job_name: 'nodes'
  19.     static_configs:
  20.       - targets: ['host1:9100', 'host2:9100'] # 替换为实际的主从节点IP
  21. ```
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户云卷云舒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表