OpenStack Yoga版安装笔记(七)glance练习补充

1、练习场景说明

 在OpenStack Yoga版安装笔记(五)中,glance已经在controller node虚拟机上安装完成,并且已经成功拍摄了快照。

此时,controller node虚机已经安装了keystone、keystone DB、glance、glance DB、OpenStackClient、memcache等软件:

将controller node虚机转到此快照然后开机,在这台虚机上执行openstack image list命令,观察OpenStack组件之间完整交互过程。

2、安装wireshark

controller node:

controller node root用户下执行:
apt update
apt install wiresharkroot@controller:~# wireshark --version
Wireshark 3.6.2 (Git v3.6.2 packaged as 3.6.2-2)Copyright 1998-2022 Gerald Combs <gerald@wireshark.org> and contributors.
License GPLv2+: GNU GPL version 2 or later <https://www.gnu.org/licenses/gpl-2.0.html>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.Compiled (64-bit) using GCC 11.2.0, with Qt 5.15.2, with libpcap, with POSIX
capabilities (Linux), with libnl 3, with GLib 2.71.2, with zlib 1.2.11, with Lua
5.2.4, with GnuTLS 3.7.3 and PKCS #11 support, with Gcrypt 1.9.4, with MIT
Kerberos, with MaxMind DB resolver, with nghttp2 1.43.0, with brotli, with LZ4,
with Zstandard, with Snappy, with libxml2 2.9.12, with libsmi 0.4.8, with
QtMultimedia, without automatic updates, with SpeexDSP (using system library),
with Minizip.Running on Linux 5.15.0-113-generic, with Intel(R) Core(TM) i7-10710U CPU @
1.10GHz (with SSE4.2), with 7901 MB of physical memory, with GLib 2.72.4, with
zlib 1.2.11, with Qt 5.15.3, with libpcap 1.10.1 (with TPACKET_V3), with c-ares
1.18.1, with GnuTLS 3.7.3, with Gcrypt 1.9.4, with nghttp2 1.43.0, with brotli
1.0.9, with LZ4 1.9.3, with Zstandard 1.4.8, with libsmi 0.4.8, with
LC_TYPE=C.UTF-8, binary plugins supported (0 loaded).
root@controller:~# 

建议win11(10.0.20.1)电脑上下载MobaXterm,root登录controller node(10.0.20.11),执行wireshark。

controller node 安装完成后,关闭虚机,拍摄快照,方便回退。

3、OpenStack绑定不同IP地址

controller node上安装了OpenStack不同组件,比如:keystone、keystone DB、glance、glance DB、memcache等,为了方便查看不同组件交互,可以将他们分别绑定不同的IP。

3.1 ens33配置多个相同网段地址

# This is the network config written by 'subiquity'
network:ethernets:ens33:addresses:- 10.0.20.11/24   --> 规划给keyston- 10.0.20.17/24   --> 规划给database- 10.0.20.18/24   --> 规划给glance- 10.0.20.19/24   --> 规划给memcachenameservers:addresses:- 10.0.20.2search: []routes:- to: defaultvia: 10.0.20.2ens34:dhcp4: falseversion: 2
root@controller:~#netplan apply

3.2 配置/etc/hosts文件

root@controller:~# vi /etc/hosts
root@controller:~# cat /etc/hosts
127.0.0.1 localhost
# 127.0.1.1 os-1# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters10.0.20.11 controller
10.0.20.12 compute110.0.20.17 controller-db  <--新增
10.0.20.18 controller-glance <--新增
10.0.20.19 controller-memcached <--新增

3.3 database配置修改

root@controller:~# vi /etc/mysql/mariadb.conf.d/99-openstack.cnf 
root@controller:~# cat /etc/mysql/mariadb.conf.d/99-openstack.cnf 
[mysqld]
bind-address = 10.0.20.17   <--修改default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
root@controller:~#

3.4 memcache配置修改

root@controller:~# vi /etc/memcached.conf
...
-l 10.0.20.19   <--修改
...

3.5 keystone连接database信息修改

root@controller:~# vi /etc/keystone/keystone.conf [database]
# connection = sqlite:var/lib/keystone/keystone.dbconnection = mysql+pymysql://keystone:openstack@controller-db/keystone   <--修改

3.6 glance连接database信息修改

root@controller:~# vi /etc/glance/glance-api.conf
[database]
# connection = sqlite:var/lib/glance/glance.sqlite
connection = mysql+pymysql://glance:openstack@controller-db/glance  <--修改[keystone_authtoken]
memcached_servers = controller-memcached:11211   <---修改

3.7 修改db信息后,第一次重启controller node

root@controller:~#reboot

重启后,在controller node上使用openstackclient,检查keystone、glance连接db、memcached是否正常:

可以执行:
openstack user list
openstack image list (需要正常连接keystone db,keystone, glance,glance db,memcached才能正常显示)

3.8 修改glance service的endpoint

root@controller ~(admin/amdin)# openstack endpoint list --service image
+----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------+
| ID                               | Region    | Service Name | Service Type | Enabled | Interface | URL                    |
+----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------+
| 56d1454571064cb3ad3c749d18fb57e6 | RegionOne | glance       | image        | True    | admin     | http://controller:9292 |
| ae98462c8f4346f3991d693232a108d3 | RegionOne | glance       | image        | True    | internal  | http://controller:9292 |
| e047382ce61740bf9dc4219c97eff2f8 | RegionOne | glance       | image        | True    | public    | http://controller:9292 |
+----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------+
root@controller ~(admin/amdin)# openstack endpoint delete 56d1454571064cb3ad3c749d18fb57e6
root@controller ~(admin/amdin)# openstack endpoint delete ae98462c8f4346f3991d693232a108d3
root@controller ~(admin/amdin)# openstack endpoint delete e047382ce61740bf9dc4219c97eff2f8root@controller ~(admin/amdin)# openstack endpoint create --region RegionOne \
>   image public http://controller-glance:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | b700cc0526e34aaba7579fe7fc1e7bf3 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | d6a3dadf92e542289c5ebd37e3553cdd |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller-glance:9292    |
+--------------+----------------------------------+
root@controller ~(admin/amdin)# openstack endpoint create --region RegionOne \
>   image internal http://controller-glance:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 19e20f4f9f9144118f91fff2cfb2d17b |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | d6a3dadf92e542289c5ebd37e3553cdd |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller-glance:9292    |
+--------------+----------------------------------+
root@controller ~(admin/amdin)# openstack endpoint create --region RegionOne \
>   image admin http://controller-glance:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 58b83e744b9945c8930aabfac21f207a |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | d6a3dadf92e542289c5ebd37e3553cdd |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller-glance:9292    |
+--------------+----------------------------------+
root@controller ~(admin/amdin)#

3.9 修改glance endpoint信息后,第二次重启controller node

root@controller:~#reboot

controller node重启后,需检查endpoint能否正常显示:

root@controller ~(admin/amdin)# openstack endpoint list
+----------------------------------+-----------+--------------+--------------+---------+-----------+-------------------------------+
| ID                               | Region    | Service Name | Service Type | Enabled | Interface | URL                           |
+----------------------------------+-----------+--------------+--------------+---------+-----------+-------------------------------+
| 19e20f4f9f9144118f91fff2cfb2d17b | RegionOne | glance       | image        | True    | internal  | http://controller-glance:9292 |
| 58b83e744b9945c8930aabfac21f207a | RegionOne | glance       | image        | True    | admin     | http://controller-glance:9292 |
| a82bd043e133464fa863fba98b400460 | RegionOne | keystone     | identity     | True    | admin     | http://controller:5000/v3/    |
| ac109817862344c4854b783d642be412 | RegionOne | keystone     | identity     | True    | internal  | http://controller:5000/v3/    |
| b700cc0526e34aaba7579fe7fc1e7bf3 | RegionOne | glance       | image        | True    | public    | http://controller-glance:9292 |
| eaf4ddaab1b74aa59403f9fbf5fc4ac1 | RegionOne | keystone     | identity     | True    | public    | http://controller:5000/v3/    |
+----------------------------------+-----------+--------------+--------------+---------+-----------+-------------------------------+
root@controller ~(admin/amdin)# openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 429decdd-9230-49c0-b735-70364c226eb5 | cirros | active |
+--------------------------------------+--------+--------+
root@controller ~(admin/amdin)#

3.10 关闭虚机,拍摄快照

4、Wireshark抓包

4.1 抓包目的

通过执行openstack image list查看OpenStack各组件之间的完整交互情况。

4.2 抓包方式

1、建议win11(10.0.20.1)上用MobaXterm软件,登录10.0.20.11,运行wireshark,抓取“Loopback: lo”端口流量:

 

2、win11(10.0.20.1)用SecureCRT软件ssh登录10.0.20.11,监控TCP建立情况:

1、显示keystone、memcached、glance监听端口的进程信息,如进程ID和进程名称:root@controller:~# ss -lp | grep -E '(:5000|:11211|:9292|:3306)'
tcp   LISTEN 0      1024                                   10.0.20.19:11211                    0.0.0.0:*    users:(("memcached",pid=816,fd=22))                                                                                                                                
tcp   LISTEN 0      4096                                   10.0.20.18:9292                     0.0.0.0:*    users:(("glance-api",pid=1226,fd=4),("glance-api",pid=1225,fd=4),("glance-api",pid=1223,fd=4),("glance-api",pid=1222,fd=4),("glance-api",pid=1210,fd=4))           
tcp   LISTEN 0      511                                             *:5000                           *:*    users:(("apache2",pid=874,fd=6),("apache2",pid=873,fd=6),("apache2",pid=867,fd=6))                                                                                 
root@controller:~# 2、查看与端口5000、11211、9292和3306相关的TCP连接,需要在执行openstack image list时,同时执行此命令:
root@controller:~# ss -p | grep -E '(:5000|:11211|:9292|:3306)'

3、执行openstack image list命令

win11(10.0.20.1)用SecureCRT软件新开窗口,ssh登录10.0.20.11,在osclient上,执行:openstack image list

root@controller:~# . admin-openrc 
root@controller ~(admin/amdin)# openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 429decdd-9230-49c0-b735-70364c226eb5 | cirros | active |
+--------------------------------------+--------+--------+

4、停止抓包,进行分析

4.3 抓包分析

4.3.1 TCP连接建立信息

记录执行openstack image list命令过程中,TCP连接信息,用于查看TCP连接的两端信息。

root@controller:~# ss -p | grep -E '(:5000|:11211|:9292|:3306)'
tcp   ESTAB      0      0                              10.0.20.11:53046              10.0.20.11:5000  users:(("glance-api",pid=1225,fd=7))                                                                                                                                                                                                                                                                     
tcp   CLOSE-WAIT 1      0                              10.0.20.11:53034              10.0.20.11:5000  users:(("openstack",pid=1467,fd=3))                                                                                                                                                                                                                                                                      
tcp   ESTAB      0      0                              10.0.20.11:43508              10.0.20.19:11211 users:(("glance-api",pid=1225,fd=6))                                                                                                                                                                                                                                                                     
tcp   ESTAB      0      0                              10.0.20.19:11211              10.0.20.11:43508 users:(("memcached",pid=816,fd=23))                                                                                                                                                                                                                                                                      
tcp   ESTAB      0      0                              10.0.20.11:59804              10.0.20.18:9292  users:(("openstack",pid=1467,fd=4))                                                                                                                                                                                                                                                                      
tcp   ESTAB      0      0                              10.0.20.18:9292               10.0.20.11:59804 users:(("glance-api",pid=1225,fd=5))

4.3.2 抓包结果

为观察数据流方便,过滤掉大量的kestone和keyston dbglance和glance db交互的MySql数据包,只保留每次login信息和每次最后一个response packet。

OpenStackClient、keystone api、glance api之间主要信息都是http,过滤掉大量的维护tcp连接的packets。

使用filter:

http or tcp.port == 11211 or mysql.user == "keystone" or mysql.user == "glance" or frame.number == 3784 or frame.number == 4684 or frame.number == 5431 or frame.number == 5477

抓包显示了OpenStackClient、keystone、keyston db、glance、glance DB之间的交互情况,参考前面的TCP连接的端口信息和PID信息,可以得出连接顺序为:

  1. OpenStackClient(tcp:53024) --> keystone(tcp:5000),keystone-->keystone db,认证user admin身份,取得user admin的token
  2. OpenStackClient(tcp:59804) --> glance(tcp:9292),请求image list
    1. glance(tcp:43508) --> MEMCACHE,检查是否有user admin的token
    2. glance(tcp: 53046) --> keystone(tcp:5000), keystone-->keystone db,认证uer glance身份,取得user glance的token
    3. glance(tcp:53046) --> keystone(tcp:5000), keystone-->keystone db,使用验过的glance身份(user glance的token)去认证uer admin的token,并成功
    4. glance(tcp:43508) --> MEMCACHE,存储admin token
    5. glance --> glance db,查询glance DB,取得image元数据
  3. glance(tcp:9292) --> OpenStackClient(tcp:59804),返回查询结果

4.3.3 抓包的流量图

这里使用的是keystone密码认证,用户通过用户名和密码向 Keystone 提交凭证(Credentials),Keystone 验证用户的用户名和密码,验证通过后会生成一个令牌(Token)并发送给用户,用户拿到令牌后,可以使用这个令牌访问 OpenStack 的其他服务,示意如下:

用户 -> (用户名/密码) -> Keystone -> (令牌) -> 用户

比如,这里user admin取得令牌后,访问OpenStack glance service。

glance service要继续对admin token进行验证,首先glance service自己作为用户向keystone认证,获得glance token,然后使用glance token,访问keystone服务,验证admin token。admin token验证通过后,再执行后续动作(查询glance db,返回查询结果给OpenStackClient)

5、Mermaid绘制时序图

可以用mermaid绘制时序图,方便查看:

 附mermaid code:

sequenceDiagramautonumberparticipant C as OpenStackClientparticipant K as keystoneparticipant KD as keystone DBparticipant G as glanceparticipant GD as glance DB participant M as memcachedC ->> K: user admin scope to project admin, 发送username:admin/password:xxxxNote left of C: 命令行中输入: <br/> openstack image listK ->> KD: Keystone 查询user admin的身份KD ->> K: okK ->> C: user admin身份验证成功,Keystone生成admin tokenC ->> G: user admin向 glance service请求image list,请求中包含之前从 Keystone 获取的admin tokenG ->> M: glance服务接收到请求,去memcache检查请求中的admin tokenNote right of M: 先检查memcached是否有admin tokenM ->> G: 没有,继续去keystone检查G ->> K: user glance scope to project service,发送username:glance/password:xxxxNote right of G: glance首先要认证自己的身份!K ->> KD: Keystone 查询user glance的身份KD ->> K: okK ->> G: glance的身份验证成功,Keystone 生成glance tokenG ->> K: glance服务将admin token发送回 Keystone,请求验证admin token的有效性,请求中包含之前从 Keystone 获取的glance tokenNote right of G: glance拿着自己的token,去验证admin tokenK ->> KD: Keystone 查询admin tokenKD ->> K: okK ->> G: admin token有效,Keystone 返回给glance serviceG ->> M: please store admin tokenNote right of M: 保存一份到memcacheM ->> G: storedG ->> GD: glance service根据用户的权限和角色,检索glance dbGD ->> G: 返回镜像列表G ->> C: 返回镜像列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/875112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

决策树的概念

决策树的概念 决策树是一种监督学习算法&#xff0c;主要用于分类任务。它通过构建一棵树结构模型来进行预测&#xff0c;其中每个内部节点表示一个特征属性上的判断条件&#xff0c;每条边代表一个判断结果对应的分支&#xff0c;而叶节点则代表最终的类别标签。 应用领域 …

MySQL中的MVCC(多版本并发控制)

MySQL中的MVCC&#xff08;多版本并发控制&#xff09; MySQL中的多版本并发控制&#xff08;MVCC&#xff09;是一种重要的机制&#xff0c;它允许多个事务并发地读取和修改数据库&#xff0c;同时保持数据的一致性和隔离性。MVCC通过维护数据的多个版本&#xff0c;使事务能…

Leetcode滑动窗口的使用

1.滑动窗口 文章目录 1.滑动窗口1.1 什么是滑动窗口&#xff1f;1.2 解题思路1.3 扩展 1.1 什么是滑动窗口&#xff1f; 滑动窗口是一种处理数组或序列数据时常用的数据结构和算法思想。在计算机科学中&#xff0c;它通常涉及在数组上设置一个可变的窗口&#xff0c;该窗口可以…

PCL-基于FPFH的SAC-IA结合ICP的点云配准方法

目录 一、相关方法原理1.凸包方法2.FPFH特征描述3.SAC-IA概述4.ICP概述 二、实验代码三、实验结果 一、相关方法原理 点云是在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合&#xff0c;在获取物体表面每个采样点的空间坐标后&#xff0c;得到的是点的集合&…

【java技术】xxl-job的实现

Xxl-Job 是一个轻量级的分布式任务调度平台&#xff0c;它支持定时任务的创建、管理、执行和监控。Xxl-Job 的设计理念是简单易用、轻量级、高性能&#xff0c;适合于微服务架构下的任务调度场景。 Xxl-Job 的实现原理涉及到几个关键组件和技术细节。下面是 Xxl-Job 的核心组件…

构建智能运维系统:创新架构与效率优化

随着信息技术的迅猛发展&#xff0c;企业对于运维效率和服务质量的要求越来越高。智能运维系统的设计和实施&#xff0c;不仅能够提升系统可靠性和响应速度&#xff0c;还能有效降低成本和人力投入。本文将深入探讨智能运维系统的架构设计原则和关键技术&#xff0c;为企业在运…

数据结构重置版(概念篇)

本篇文章是对数据结构的重置&#xff0c;且只涉及概念 顺序表与链表的区别 不同点 顺序表 链表 存储空间上 物理上一定连续 逻辑上连续&#xff0c;但物理上不一定连续…

MYSQL(2) 高级查询

文章目录 概述高级查询基础查询条件查询范围查询判空查询模糊查询分页查询查询后排序分组查询 小结 概述 接上篇&#xff0c;上篇写到增删改查。这篇继续。 高级查询 基础查询 -- 全部查询 select * from student; -- 只查询部分字段 select sname, class_id from student;…

.env.local 配置本地环境变量 用于团队开发

.env.local 用途&#xff1a;.env.local 通常用于存储本地开发环境中的环境变量。这些变量可能包括敏感数据或特定于单个开发者的设置&#xff0c;不应该被提交到版本控制系统中。优先级&#xff1a;在大多数框架中&#xff0c;.env.local 文件中的变量会覆盖其他 .env 文件中…

Java唯一订单编号生成

在Java中生成唯一的订单编号通常需要结合时间戳、随机数和/或序列号等元素来确保唯一性。下面是一个简单的示例&#xff0c;使用当前时间的毫秒值加上一个随机数来生成订单号。为了简化&#xff0c;我们将使用​​java.util.UUID​​类来生成一个全局唯一的UUID&#xff0c;并将…

分类模型的完整流程及Python实现

1、加载函数和数据集 import numpy as np from sklearn.datasets import load_breast_cancer from sklearn.svm import SVC from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt cancer…

linux系统查历史cpu使用数据(使用sar 查询cpu和网络占用最近1个月历史数据)。

一 sar 指令介绍 在 Linux 系统中&#xff0c;sar 是 System Activity Reporter 的缩写&#xff0c;是一个用于收集、报告和保存系统活动信息的工具。它是 sysstat 软件包的一部分&#xff0c;提供了丰富的系统性能数据&#xff0c;包括 CPU、内存、网络、磁盘等使用情况&am…

Jdk有哪些版本

JDK(Java Development Kit)是Java编程语言的软件开发工具包,其版本随着Java语言的不断发展而更新。以下是JDK的一些主要版本及其相关信息: JDK 8(发布于2014年3月):引入了一系列新功能,如Lambda表达式、函数式接口、Stream API和新的日期/时间API等。是Java历史上一个…

SQL中的LEFT JOIN、RIGHT JOIN和INNER JOIN

在SQL中&#xff0c;JOIN操作是连接两个或多个数据库表&#xff0c;并根据两个表之间的共同列&#xff08;通常是主键和外键&#xff09;返回数据的重要方法。其中&#xff0c;LEFT JOIN&#xff08;左连接&#xff09;、RIGHT JOIN&#xff08;右连接&#xff09;和INNER JOIN…

《JavaEE篇》--多线程(2)

《JavaEE篇》--多线程(1) 线程安全 线程不安全 我们先来观察一个线程不安全的案例&#xff1a; public class Demo {private static int count 0;public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(() -> {//让count自增5W次…

HarmonyOS网络请求的简单用法,HttpUtil简单封装

请求网络获取数据 点击按钮发送一个post请求&#xff0c;发送一条string由于此处的返回result.data本身就是一个string&#xff0c;因此不需要转换类型 Button(请求网络).margin({ top: 10 }).fontSize(24).fontWeight(FontWeight.Bold).onClick(() > {httpRequestPost(http…

JVM 内存结构、垃圾回收机制与并发容器

目录 一、JVM 内存结构 1. 程序计数器&#xff08;Program Counter Register&#xff09;&#xff1a; 2. Java 虚拟机栈&#xff08;JVM Stack&#xff09;&#xff1a; 3.本地方法栈&#xff08;Native Method Stack&#xff09;&#xff1a; 4.堆&#xff08;Heap&#xff…

Android笔试面试题AI答之控件Views(6)

答案来着文心一言&#xff0c;仅供参考 目录 1.简述什么是RemoteViews?使用场景有哪些?RemoteViews的特性使用场景总结 2.获取View宽高的几种方法?1. 在onWindowFocusChanged方法中获取2. 使用ViewTreeObserver.OnGlobalLayoutListener3. 使用ViewTreeObserver.OnPreDrawLi…

风格迁移开发记录(DCT-Net)

1.DCT-Net部署 阿里旗下的 modelscope社区&#xff0c;丰富的开源风格迁移算法模型 DCT-Net GitHub链接 git clone https://github.com/menyifang/DCT-Net.git cd DCT-Netpython run_sdk.py下载不同风格的模型如下图每个文件夹代表一种风格&#xff0c;有cartoon_bg.pb, car…

C++STL详解(一)——String接口详解(上)!!!

目录 一.string类介绍 二.string类的构造赋值 2.1string类的拷贝和构造函数 2.2深拷贝 三.string类的插入 3.1push_back 3.2append 3.3操作符 3.4insert 四.string的删除 4.1pop_back 4.2erase 五.string的查找 5.1find 5.2rfind 六.string的比较 6.1compare函…