Windows系统VMware创建多个CentOS7虚拟机 NAT网络配置 ssh连接

news2024/11/25 4:37:49

主要目标:
1.创建3个虚拟机, centos7系统
2.虚拟机之间互相访问
3.物理机访问各虚拟机, 通过xshell建立ssh连接
4.物理机网络变化时,仍能访问

用途:
NoSQL课程使用, 课前环境搭建,个人备忘

基本信息:
物理机: windows 11 操作系统
虚拟机软件:VMware Workstation Pro 16.2.4 (之前安装,非最新版本)
虚拟机安装系统: Cent OS 7-2009

1.基础环境搭建

Windows 系统通过 VMware 搭建 CentOS 7 系统的首台虚拟机

该首台虚拟机可自定义命名, 以下用NoSQL_1 代指.

windows物理机当前环境

物理机: Windows 11 , 准备60G以上空余磁盘空间

网络: 连接Wifi, 家用无线路由器, 路由器设置IP与MAC绑定,用于环境搭建期间物理机的IP固定,方便测试; 全部搭建完成后物理机ip地址可变.

1.1 下载centos7安装文件

阿里云centos镜像站

https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.78c11b11B5M2K7

CentOS-7-x86_64-2009.iso下载地址

https://mirrors.aliyun.com/centos/7/isos/x86_64/?spm=a2c6h.25603864.0.0.5ad64511utjqH4

选择dvd或everything均可
在这里插入图片描述

1.2 Windows物理机准备

1.2.1 安装 VMware Workstation 16 Pro

下载地址:

https://customerconnect.vmware.com/cn/downloads/info/slug/desktop_end_user_computing/vmware_workstation_pro/16_0
在这里插入图片描述
下载后安装,使用超过一个月则需填写许可证秘钥

安装成功的标志有两项:

(1) win + r -> ncpa.cpl

打开控制面板网络适配器页面,出现两个虚拟接口: VMnet1VMnet8
在这里插入图片描述

(2) win + r -> services.msc

打开windows本地服务, 确认出现四个服务.

根据VMware版本不同,服务数量可能不同,本文使用vmware版本为16.2.4

将vmware的相关服务的启动类型均设置为自动
在这里插入图片描述

问题解决:

如果上述两项成功标志不满足, 可以在vmware的“编辑”下的“虚拟网络编辑器”中点击“更改设置“、”还原默认设置”,可重新将虚拟网卡还原,并需要重启物理机,然后查看是否恢复。

由于本物理机此前使用vmware安装过虚拟机,长期禁用适配器vmnet8后网络出现故障,因此进行了还原默认设置.

1.2.2 Windows防火墙设置

以下设置允许虚拟机ping物理机

Windows Defender 防火墙 -> 高级设置 -> 入站规则

找到

文件和打印机共享(回显请求-ICMPv4-In)

文件和打印机共享(回显请求-ICMPv6-In)

四项状态均调整为已启用,允许
在这里插入图片描述

windows设置中,防火墙和网络保护, 如果以后将防火墙还原为模式设置,或更改了域、专用、公用网络的防火墙状态,入站规则也会发生变化,出现问题时可检查此处。

1.3 VMware配置NAT模式

  • 配置过程可参考:

    https://blog.csdn.net/YeMaZhi/article/details/105043073

  • NAT模式原理:

    NAT(地址转换模式)

    NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。

    在NAT模式中,主机网卡与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟网关VMnet8上,主机的虚拟网卡与虚拟网关VMnet8相连,
    实现虚拟机的联网、主机与虚拟机的连接。

    物理机上的VMware Network Adapter VMnet8虚拟网卡主要是为了实现主机与虚拟机之间的通信。

  • 配置思路:

    adpter vmnet8、各centos7虚拟机、vmnet8交换机,三方保持在同一个网段,且ip不重复

例如:

VMware Network Adapter VMnet8:

IPADDR: 192.168.108.201

NETMASK:255.255.255.0

GATEWAY:192.168.108.1

DNS1: 8.8.8.8

虚拟机1: nosql01

IPADDR:192.168.108.11

NETMASK:255.255.255.0

GATEWAY:192.168.108.1

DNS1: 8.8.8.8

DNS2: 114.114.114.114

虚拟机2: nosql02

IPADDR:192.168.108.x


此处的x不能与网关、其他虚拟机、Adapter VMnet8的ip地址冲突,且不能为0或255
NETMASK,GATEWAY,DNS1,DNS2 设置相同

注意:

(1)虚拟机的网络设置可采用三种网络模式Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。三种模式的区别可参考: https://blog.csdn.net/zhang33565417/article/details/97779579

(2)vmware中的虚拟网络编辑器,可针对三种网络模式分别配置各自对应的虚拟交换机VMnet0(桥接模式)、VMnet1(仅主机模式)、VMnet8(NAT模式)

(3)本次搭建采用NAT网络模式,VMware Network Adapter VMnet8的作用是主机与虚拟机之间的通信,用于远程连接虚拟机.

(4)虚拟机的子网段不应和物理机网段相同.

本次搭建的网络结构:
在这里插入图片描述
如已经成功安装了1个虚拟机, 并熟悉vmware的设置、linux常用命令,可按照上图配置, 然后克隆虚拟机完成网络配置.
下文为详细步骤.

1.3.1 设置vmnet8虚拟交换机

vmware 编辑->虚拟网络编辑器->选中 vmnet8 ->更改设置
在这里插入图片描述

修改:

子网IP: 192.168.108.0, 该网段与物理机不在同一网段

子网掩码:255.255.255.0

继续点击->NAT设置

在这里插入图片描述

修改

网关IP: 192.168.108.1 此处与刚才设置的vmnet8的子网段处于同一网段(108),末尾设置为1

记住这个网关IP: 192.168.108.1,作为vmnet8虚拟网关的IP,用于虚拟机与外部通信

修改完成后->确定->返回虚拟网络编辑器窗口->应用->确定

1.3.2 固定adpter vmnet8虚拟网卡的IP

win + r -> ncpa.cpl

选择 VMware Virtual Ethernet Adapter for VMnet8 -> 右键->属性->选中 Internet协议版本4(TCP/IPv4)

在这里插入图片描述

填写固定ip地址

IPADDR: 192.168.108.201

ip地址不能冲突,与vmnet8虚拟网关在一个网段

NETMASK:255.255.255.0

GATEWAY:192.168.108.1

网关为vmnet8虚拟网关的ip地址

DNS1: 8.8.8.8

至此VMware端的网络配置完成, 完成后再安装CentOS7

1.4 VMwareWorkstation安装CentOS7

1.4.1 新建空的虚拟机

VMware新建虚拟机
在这里插入图片描述

自定义(高级)
在这里插入图片描述
在这里插入图片描述

选择稍后安装操作系统
在这里插入图片描述
在这里插入图片描述

虚拟机名称
可自定义虚拟机名称, 此处命名为 NoSQL_1
选择虚拟机保存的位置
在这里插入图片描述

1核
在这里插入图片描述
1024MB内存
在这里插入图片描述

使用NAT
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建新磁盘
最大磁盘大小:建议20G, 但本机的剩余空间不多,此处选择10G
虚拟磁盘拆分成多个文件
在这里插入图片描述
在这里插入图片描述

创建空的虚拟机完成
下一步安装CentOS7

1.4.2 安装CentOS7

虚拟机NoSQL_1 -> 编辑虚拟机设置
在这里插入图片描述

cd/dvd -> 使用ISO映像文件 -> 浏览 -> 选择已下载好的centos7 iso安装文件
在这里插入图片描述

确定 -> 开启此虚拟机
在这里插入图片描述

开始安装centos7
语言: english 或 chinese
在这里插入图片描述

时区:Asia/Shanghai
在这里插入图片描述
在这里插入图片描述

安装位置: 默认自动分区
在这里插入图片描述
在这里插入图片描述

网络和主机名:
在这里插入图片描述

打开网络连接, 设置主机名为 nosql01,应用, 作为首台虚拟机的主机名, Done(完成)
在这里插入图片描述

开始安装
在这里插入图片描述

安装期间, 可设置root密码
在这里插入图片描述

设置用户名密码, 并熟记密码

按两次 Done
在这里插入图片描述

等待安装完成, 重启
在这里插入图片描述

重启后默认进入第一个系统

输入登录的用户名:root

输入密码: 输入的密码屏幕不显示,请确保输入正确

在这里插入图片描述

备注:

软件选择的是最小安装 minimal install, 包含的软件包少

用户:root

密码:刚才输入的密码

1.5 CentOS7虚拟机设置固定IP

进入到网卡编辑目录 可通过tab键补全

cd /etc/sysconfig/network-scripts/

查看文件列表

ls
在这里插入图片描述

不同的centos,网卡文件名会有不同,但开头都是ifcfg- ,此处显示ifcfg-ens33.

ifcfg-lo是本地回环接口,不是实际的网卡

编辑网卡

vi ifcfg-ens33

输入 i 进入编辑模式

编辑完成后

按ESC键 进入命令模式

输入 :wq 保存并退出

在这里插入图片描述

注意以上红框部分

ipaddr需在vmnet8虚拟网关的同一网段108

gateway设置成vmnet8虚拟网关的IP

dns设置两个

此时网卡配置完成, 但未生效

重启网卡使其生效

systemctl restart network.service

查看各网卡的ip地址

ip addr

在这里插入图片描述

ip已固定,ping测试外网和物理机

测试ping外网

ping www.baidu.com

看到有正常的输出则ctrl + c 终止

测试ping物理机

ping 192.168.0.102

这个192.168.0.102是物理机的ip地址

看到有正常的输出则ctrl + c 中断

在这里插入图片描述

[!note]

注意:windows物理机的ip地址查看方式

win + r -> cmd

如果物理机连接的是有线网,则看以太网适配器

如果物理机连接的是无线网,则看无线局域网适配器WLAN

在这里插入图片描述

1.6 关闭虚拟机防火墙

查看防火墙状态:

systemctl status firewalld

关闭正在运行的防火墙:

systemctl stop firewalld

禁止防火墙服务, 重启后不再自动开启:

systemctl disable firewalld

如果成功禁止则显示removed ....等信息

关闭selinux安全子系统

vi /etc/selinux/config

修改SELINUX=disabled

重启使修改生效

reboot
在这里插入图片描述

1.7 修改虚拟机主机名

在安装centos时已经修改了hostname

若想再次修改, 可使用如下命令

查看当前主机名:

hostname

设置即使重启后也生效的主机名:

格式为hostnamectl set-hostname 主机名

此处设置为:

hostnamectl set-hostname nosql01

该虚拟机作为nosql集群的第一台机器

1.8 保存快照

虚拟机 右键->快照->拍摄快照
在这里插入图片描述
在这里插入图片描述

[!warning]

网络配置完成,测试ping命令成功后,一定要保存快照,用于保存虚拟机状态, 出现问题时快速恢复

1.9 SSH远程连接虚拟机

安装XShell7

安装完成后, 解决数字小键盘不能输入数字的问题

文件->默认会话属性

初始数字键盘模式->设置为普通

在这里插入图片描述

连接虚拟机

文件->新建
在这里插入图片描述

用户名和密码填写虚拟机root用户的信息

在这里插入图片描述

成功连接后,可执行命令,效果:

在这里插入图片描述

当虚拟机开启后, 就可通过远程连接工具连接使用

测试成功后, vmware的客户机(虚拟机)以后可挂起,保持当前状态, 不要轻易关闭
如果虚拟机挂起后还要关机, 则开启虚拟机后,在centos系统内部进行关机, 不要在vmware中进行外部关机

2.虚拟机克隆生成NoSQL_2

2.1 克隆虚拟机NoSQL_1

关闭首台虚拟机NoSQL_1

NoSQL_1 右键->管理->克隆

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过克隆NoSQL_1,生成NoSQL_2, 开启NoSQL_2,进行其他配置

2.2 配置NoSQL_2

更改主机名

hostnamectl set-hostname nosql02

重启生效

reboot

分别查看NoSQL_1和NoSQL_2网卡的uuid

nmcli con show

在这里插入图片描述

发现两台虚拟机的uuid相同

接下来使用uuidgen命令,为NoSQL_2生成uuid并写入网卡文件

先查看网卡名称

cd /etc/sysconfig/network-scripts/

ls

在这里插入图片描述

确认网卡名称是ifcfg-ens33

使用uuidgen命令生成uuid并写入网卡文件ifcfg-ens33

sed -i '/UUID=/c\UUID='`uuidgen`'' /etc/sysconfig/network-scripts/ifcfg-ens33


重启生效
reboot

重启后查看ifcfg-ens33网卡文件中uuid是否已被修改

先查看网卡名称

cd /etc/sysconfig/network-scripts/

ls

修改该网卡文件

vi ifcfg-ens33

在这里插入图片描述

uuid已发生变化,但ip地址仍是nosql01主机的ip,接下来继续修改IP地址IPADDR

按 i 进入编辑模式

修改IPADDR字段, 与NoSQL_1的ip地址不能重复

完成修改后, 按 ESC 进入命令模式

输入 :wq 保存并退出

在这里插入图片描述

重启网卡使其生效

systemctl restart network

查看各网卡的ip地址

ip addr

在这里插入图片描述

测试连接公网

ping baidu.com

测试连接物理机

ping 192.168.0.102
在这里插入图片描述

此时xshell已经可以远程连接
在这里插入图片描述

其他命令

ctrl + l 清屏

rpm -qa | grep ssh 查看是否已安装ssh服务

ps -e | grep sshd 查看是否已开启sshd服务

windows远程连接工具:

SecureCRT

XShell

2.3 配置hosts

配置IP映射

vi /etc/hosts

按 i 进入编辑模式

添加两行:

192.168.108.11 nosql01
192.168.108.12 nosql02

按 ESC 进入命令模式, 输入 :wq 保存并退出

重启网络使修改生效

systemctl restart network
在这里插入图片描述

[!note]

添加其他虚拟机节点后,可修改每一台虚拟机的host文件,添加各个节点的ip地址

虚拟机保存快照

克隆其他虚拟机过程与上述步骤同理

3.创建系统目录结构

以NoSQL_2为例, 创建系统目录结构

在/opt目录下创建software目录存放软件,servers目录存放数据库

cd /opt

mkdir /software

mkdir /servers

列出当前文件或目录的详细信息, 查看是否创建成功

ll

继续创建存放不同数据库的目录

mkdir /opt/servers/mongodb_demo
mkdir /opt/servers/hbase_demo
mkdir /opt/servers/redis_demo
mkdir /opt/servers/neo4j_demo

列出当前文件或目录的详细信息, 查看是否创建成功

ll

虚拟机保存快照

4.虚拟机克隆生成NoSQL_3

NoSQL_2 -> 管理 -> 克隆-> 完整克隆 -> 命名: NoSQL_3

更改主机名

hostnamectl set-hostname nosql03

reboot

生成并更新uuid

查看当前uuid, 记忆尾号, 网卡名称
nmcli con show

核实网卡名称
cd /etc/sysconfig/network-scripts/
ls

生成uuid并更新到网卡配置文件中
sed -i '/UUID=/c\UUID='`uuidgen`'' /etc/sysconfig/network-scripts/ifcfg-ens33
reboot

修改网卡配置:

cd /etc/sysconfig/network-scripts/
ls

vi ifcfg-ens33

核实uuid已经更新

修改IPADDR192.168.108.13, 保持唯一性

在这里插入图片描述

systemctl restart network

ip addr

核实网卡地址已经更新

测试网络:

分别连接外网, 连接物理机, 物理机ip使用宿主机的实际ip

ping baidu.com

ping 192.168.0.102

xshell连接NoSQL_3的ip:192.168.108.13

配置hosts文件的IP映射:

添加现有的3个虚拟机节点, 更新hosts

vi /etc/hosts

末尾添加为:

192.168.108.11 nosql01

192.168.108.12 nosql02

192.168.108.13 nosql03

systemctl restart network

5.其他虚拟机更新hosts

修改hosts文件

vi /etc/hosts

末尾更新为:

192.168.108.11 nosql01

192.168.108.12 nosql02

192.168.108.13 nosql03

systemctl restart network

至此虚拟机之间可实现便捷的互相访问

ping nosql01

ping nosql02

ping nosql03

各虚拟机保存快照

6.其他问题

物理机重启后,xshell无法远程登录

确认以下项目:

(1)services.msc中vmware相关服务已启动

(2)ncpa.cpl中vmnet8的ip使用的是配置的固定ip\子网掩码\网关\dns

(3)防火墙高级设置的入栈规则 ICMP允许\已启用

(4)物理机能正常访问网络

以上均无问题,可依次采取下列不同方案:

(1)虚拟机已经启动后,再等1-2分钟,xshell能正常连接,问题解决

(2)仍未解决,则将虚拟机恢复到上一个快照(该快照需确保当时远程连接成功),问题解决

注意事项:

(1)虚拟机关机采用centos系统内部关闭, 例如init 0,减少问题发生概率

(2)虚拟机挂起后,不要通过vmware再去关闭, 需要虚拟机开机后, 在其centos系统内部进行关机

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

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

相关文章

前端工程化面试题 | 10.精选前端工程化高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

OpenCV Mat实例详解 三

OpenCV Mat实例详解 一、二介绍了,OpenCV Mat类构造函数及其公共属性。下面继续介绍OpenCV Mat类公有静态成员函数 OpenCV Mat类公有静态成员函数(Static Public Member Functions) static CV_NODISCARD_STD Mat diag (const Mat &d)&…

CSP-201903-2-二十四点

CSP-201903-2-二十四点 一、中缀表达式转后缀表达式 中缀表达式是一种常见的数学表达式书写方式,其中操作符位于相关的操作数之间,如 A B。而后缀表达式(逆波兰表示法)则是一种没有括号,操作符跟随操作数之后的表示…

TIM输出比较 P2

D触发器? 一、输出比较 二、PWM 1、简介 2、结构 三、外部设备 1.舵机 2.直流电机 我的理解是xO1 xIN1 & PWMx; xO2 xIN2 & PWMx;引入PWMx可以更方便的控制特定的电路。 四、函数学习 /*****单独设置输出比较极性*****/ void TIM_OC1PolarityConfig(…

CSS篇--transform

CSS篇–transform 使用transform属性实现元素的位移、旋转、缩放等效果 位移 // 语法 transform:translate(水平移动距离,垂直移动距离) translate() 如果只给一个值,表示x轴方法移动距离 单独设置某个方向的移动距离:translateX() transla…

Rust 基本环境安装

rust 基本介绍请看上一篇文章:rust 介绍 rustup 介绍 rustup 是 Rust 语言的安装器和版本管理工具。通过 rustup,可以轻松地安装 Rust 编译器(rustc)、标准库和文档。它也允许你切换不同的 Rust 版本或目标平台,以及…

Compose 自定义 - 数据转UI的三阶段(组合、布局、绘制)

一、概念 Compose 通过三个阶段把数据转化为UI:组合(要显示什么)、布局(要显示在哪里)、绘制(如何渲染)。 组合阶段 Compisition 界面首次渲染时会将可组合函数转化为一个个布局节点 Layout Nod…

【打工日常】使用docker部署linux-command解析搜索工具

一、linux-command介绍 linux-command工具是一个非盈利性的工具,里面记录了550 个 Linux 命令,内容包含 Linux 命令手册、详解、学习,是值得收藏的 Linux 命令速查手册。内容来自网络和网友的补充。 二、本次实践介绍 1. 本次实践简介 本次…

Flume(二)【Flume 进阶使用】

前言 学数仓的时候发现 flume 落了一点,赶紧补齐。 1、Flume 事务 Source 在往 Channel 发送数据之前会开启一个 Put 事务: doPut:将批量数据写入临时缓冲区 putList(当 source 中的数据达到 batchsize 或者 超过特定的时间就会…

qt-C++笔记之捕获鼠标滚轮事件并输出滚轮角度增量

qt-C笔记之捕获鼠标滚轮事件并输出滚轮角度增量 code review! 文章目录 qt-C笔记之捕获鼠标滚轮事件并输出滚轮角度增量1.运行2.main.cpp3.main.pro 1.运行 2.main.cpp #include <QApplication> #include <QWidget> #include <QWheelEvent> #include <…

.NET Core MongoDB数据仓储和工作单元模式封装

前言 上一章我们把系统所需要的MongoDB集合设计好了&#xff0c;这一章我们的主要任务是使用.NET Core应用程序连接MongoDB并且封装MongoDB数据仓储和工作单元模式&#xff0c;因为本章内容涵盖的有点多关于仓储和工作单元的使用就放到下一章节中讲解了。仓储模式&#xff08;R…

java的面向对象编程(oop)——认识枚举

前言 打好基础&#xff0c;daydayup! 枚举 1&#xff0c;认识枚举&#xff1a; 枚举是一种特殊类&#xff0c;用enum语句修饰。与普通类不同的是&#xff1a;枚举类的第一行只能写一些合法的标识符&#xff08;名称&#xff09;&#xff0c;多个名称用逗号隔开。这些标识符&a…

相机图像质量研究(16)常见问题总结:光学结构对成像的影响--IRCUT

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

原型模式-Prototype Pattern

原文地址:https://jaune162.blog/design-pattern/prototype-pattern/ 引言 在Java中如果我们想要拷贝一个对象应该怎么做?第一种方法是使用 getter和setter方法一个字段一个字段设置。或者使用 BeanUtils.copyProperties() 方法。这种方式不仅能实现相同类型之间对象的拷贝,…

第三百四十九回

文章目录 1. 概念介绍2. 原理与方法2.1 知识对比2.2 使用方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"加密包crypto"相关的内容&#xff0c;本章回中将介绍characters包.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 在项目中会遇到获取字…

解决vscode报错,在赋值前使用了变量“XXX“

问题&#xff1a;如图所示 解决方法&#xff1a; 法一&#xff1a; 补全函数使其完整 法二&#xff1a; 使用断言

Python算法探索:从经典到现代

目录 引言 一、经典算法&#xff1a;快速排序 示例代码&#xff1a; 二、经典算法&#xff1a;二分查找 示例代码&#xff1a; 三、现代算法&#xff1a;支持向量机&#xff08;SVM&#xff09; 示例代码&#xff1a; 四、现代算法&#xff1a;神经网络 示例代码&…

从汇编分析C语言可变参数的原理,并实现一个简单的sprintf函数

C语言可变参数 使用printf等函数的时候函数原型是printf(const char* fmt, ...), 这一类参数的个数不限的函数是可变参数 使用 使用一个头文件stdarg.h, 主要使用以下的宏 typedef char * va_list;// 把 n 圆整到 sizeof(int) 的倍数 #define _INTSIZEOF(n) ( (sizeo…

STM32 USART串口通信

目录 USART串口 串口发送 串口发送接收 串口收发HEX数据包 串口收发文本数据包 USART串口 串口发送 Serial.c #include "stm32f10x.h" // Device header #include "stdio.h" #include "stdarg.h"/*** brief 初始化串口以…

leetcode:96.不同的二叉搜索树

解题思路&#xff1a; 输入n3 n 0 1个 n 1 1个 n 2 2个 头1头2头3 头1 左子树0节点&#xff08;个数&#xff09;x右子树2个节点&#xff08;个数&#xff09; 头2 左子树1节点&#xff08;个数&#xff09;x右子树1个节点&#xff08;个数&#xff09; 头3 左子…