学习目标
- 理解本节涉及的核心主题:高级 Linux 管理、虚拟化技术、配置与管理虚拟机、高可用性与负载均衡。
- 能够结合示例完成常见操作,并理解关键参数、使用场景与结果差异。
- 能够识别本节相关的常见风险、易错点或排查思路。
学习重点
- 主题范围:高级 Linux 管理、虚拟化技术、配置与管理虚拟机、高可用性与负载均衡、配置 Nginx 或 HAProxy 实现负载均衡
- 学习重点:命令用途、关键参数、典型场景、与相近命令的区别
- 复习方式:先理解场景,再动手练习,最后对照结果检查
高级 Linux 管理
虚拟化技术
配置与管理虚拟机
虚拟化技术允许在单一物理服务器上运行多个虚拟机(VM),每个虚拟机都有独立的操作系统和资源。常见的虚拟化解决方案包括 KVM、VirtualBox 和 VMware。
KVM(Kernel-based Virtual Machine)
KVM 是 Linux 内核内置的虚拟化模块,提供高性能和强大的虚拟化功能。
安装与配置 KVM(qemu-kvm, libvirt)
-
安装 KVM 相关包
sudo apt update sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager说明:
qemu-kvm:KVM 虚拟化模块。libvirt:管理虚拟化环境的工具。bridge-utils:配置网络桥接。virt-manager:图形化虚拟机管理工具。
-
添加当前用户到
libvirt和kvm组sudo usermod -aG libvirt $(whoami) sudo usermod -aG kvm $(whoami)说明:
- 使当前用户具有管理虚拟机的权限,需重新登录或重启系统以生效。
-
启动并启用
libvirtd服务sudo systemctl enable libvirtd sudo systemctl start libvirtd
创建与管理虚拟机(使用 virt-manager, virsh 命令)
- 使用
virt-manager创建虚拟机- 启动
virt-managervirt-manager - 创建新虚拟机
- 点击 "Create a new virtual machine"。
- 选择安装介质(ISO 镜像、本地媒体等)。
- 配置虚拟机名称、操作系统类型和版本。
- 分配内存和 CPU 核心数。
- 配置存储空间。
- 完成安装过程。
- 启动
- 使用
virsh命令行工具管理虚拟机- 列出所有虚拟机
virsh list --all - 启动虚拟机
virsh start vm_name - 停止虚拟机
virsh shutdown vm_name - 强制关闭虚拟机
virsh destroy vm_name - 创建虚拟机
使用 XML 配置文件创建虚拟机:virsh define /path/to/vm_config.xml virsh start vm_name
- 列出所有虚拟机
网络与存储配置
- 网络配置
KVM 支持多种网络模式,如 NAT、桥接和独立网络。- 桥接网络(Bridged Networking)
允许虚拟机直接连接到物理网络,获得独立的 IP 地址。
配置桥接网络- 编辑网络配置文件
sudo nano /etc/netplan/01-netcfg.yaml - 添加桥接配置
network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no bridges: br0: interfaces: [eth0] dhcp4: yes parameters: stp: false forward-delay: 0 - 应用网络配置
sudo netplan apply - 验证桥接网络
ip addr show br0
- 编辑网络配置文件
- 存储配置
使用virt-manager或virsh配置虚拟机的磁盘存储,可以选择使用文件镜像、块设备或 LVM 卷。
- 桥接网络(Bridged Networking)
示例与应用场景
- 运行多种操作系统
在 KVM 上运行不同的操作系统,如 Windows、Ubuntu、CentOS,满足开发、测试和生产需求。 - 资源隔离与优化
为不同应用分配独立的资源,避免资源竞争,提高系统整体性能。 - 高性能计算(HPC)
利用 KVM 的高性能特性,支持计算密集型应用和大规模虚拟化环境。
VirtualBox
VirtualBox 是一款跨平台的开源虚拟化软件,适用于个人用户和小型企业,提供图形化界面和丰富的功能。
安装与配置 VirtualBox
-
添加 Oracle VirtualBox 仓库并导入 GPG 密钥
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" -
安装 VirtualBox
sudo apt update sudo apt install virtualbox-6.1说明:
- 替换
6.1为最新版本号。
- 替换
-
安装 VirtualBox Extension Pack(可选)
提供额外功能,如 USB 3.0 支持和远程桌面协议。wget https://download.virtualbox.org/virtualbox/6.1.26/Oracle_VM_VirtualBox_Extension_Pack-6.1.26.vbox-extpack sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.26.vbox-extpack
创建与管理虚拟机
- 使用图形化界面创建虚拟机
- 启动 VirtualBox
virtualbox - 创建新虚拟机
- 点击 "New"。
- 输入虚拟机名称,选择操作系统类型和版本。
- 分配内存大小。
- 创建虚拟硬盘(VDI、VHD、VMDK 格式)。
- 完成安装过程。
- 启动 VirtualBox
- 使用命令行工具管理虚拟机
VirtualBox 提供VBoxManage工具,支持脚本化和自动化管理。- 列出所有虚拟机
VBoxManage list vms - 启动虚拟机
VBoxManage startvm "vm_name" --type headless - 停止虚拟机
VBoxManage controlvm "vm_name" acpipowerbutton - 删除虚拟机
VBoxManage unregistervm "vm_name" --delete
- 列出所有虚拟机
常用操作与管理工具
- 快照管理
快照允许保存虚拟机的当前状态,便于后续恢复。VBoxManage snapshot "vm_name" take "snapshot_name" VBoxManage snapshot "vm_name" restore "snapshot_name" VBoxManage snapshot "vm_name" delete "snapshot_name" - 网络配置
配置虚拟机的网络模式,如 NAT、桥接、仅主机网络等。VBoxManage modifyvm "vm_name" --nic1 bridged --bridgeadapter1 eth0 - 共享文件夹
在宿主机和虚拟机之间共享目录。VBoxManage sharedfolder add "vm_name" --name "shared" --hostpath "/home/user/shared" --automount
示例与应用场景
- 桌面虚拟化
在同一台物理机上运行多个操作系统,便于测试和开发。 - 教育与培训
为学生和培训人员提供多样化的实验环境,无需额外硬件资源。 - 应用兼容性测试
在不同操作系统和配置下测试应用程序的兼容性和稳定性。
VMware
VMware 提供了一系列虚拟化解决方案,包括桌面虚拟化的 VMware Workstation 和企业级的 VMware ESXi。VMware 虚拟化产品以其高性能、稳定性和丰富的功能著称。
安装与配置 VMware Workstation/ESXi
- VMware Workstation(桌面版)
- 下载 VMware Workstation
从 VMware 官方网站 下载适用于 Linux 的安装包。 - 赋予安装包执行权限
chmod +x VMware-Workstation-Full-*.bundle - 运行安装程序
sudo ./VMware-Workstation-Full-*.bundle - 按照安装向导完成安装
- 下载 VMware Workstation
- VMware ESXi(企业级)
- 下载 VMware ESXi
从 VMware 官方网站 下载 ESXi ISO 镜像。 - 创建可启动安装介质
将 ISO 镜像烧录到 USB 闪存盘或刻录到光盘。 - 启动服务器并安装 ESXi
将安装介质插入服务器,启动并按照安装向导完成安装。
- 下载 VMware ESXi
创建与管理虚拟机
- 使用 VMware Workstation 创建虚拟机
- 启动 VMware Workstation
vmware - 创建新虚拟机
- 点击 "Create a New Virtual Machine"。
- 选择安装介质(ISO 镜像、本地媒体等)。
- 配置虚拟机名称、操作系统类型和版本。
- 分配内存、CPU 和存储资源。
- 完成安装过程。
- 启动 VMware Workstation
- 使用
virsh管理 VMware ESXi 虚拟机
VMware ESXi 使用专有的管理工具,如 vSphere Client 和esxcli命令行工具。以下是使用 vSphere Client 管理虚拟机的基本步骤:- 连接到 ESXi 主机
打开 vSphere Client,输入 ESXi 主机的 IP 地址和凭据。 - 创建新虚拟机
- 右键点击 ESXi 主机,选择 "Create/Register VM"。
- 选择 "Create a new virtual machine"。
- 配置虚拟机名称、操作系统类型和版本。
- 分配资源(内存、CPU、存储等)。
- 配置网络和存储设置。
- 完成虚拟机创建并启动。
- 连接到 ESXi 主机
高级功能与管理
- 快照与克隆
VMware 提供了快照和克隆功能,允许创建虚拟机的时间点副本或完整复制。- 创建快照
在 VMware Workstation 中:VM > Snapshot > Take Snapshot... - 克隆虚拟机
在 VMware ESXi 中:VM > Clone > Clone to Template 或 Clone to Virtual Machine
- 创建快照
- 资源调度与管理
VMware 提供了高级的资源调度功能,如资源池、分布式资源调度(DRS)和高可用性(HA),确保虚拟机的高性能和可靠性。 - 网络与存储高级配置
配置虚拟网络交换机、存储网络和共享存储,实现复杂的网络拓扑和高效的存储管理。
示例与应用场景
- 企业级虚拟化
使用 VMware ESXi 部署大规模虚拟化环境,支持企业级应用和服务。 - 开发与测试
利用 VMware Workstation 创建多样化的测试环境,进行软件开发和测试。 - 灾难恢复
通过虚拟机的快照和克隆功能,实现快速的灾难恢复和业务连续性。
高可用性与负载均衡
高可用性(High Availability, HA)和负载均衡(Load Balancing)是确保系统稳定性和性能的重要措施。通过合理配置 HA 集群和负载均衡器,可以实现服务的高可用性和资源的高效利用。
配置 Nginx 或 HAProxy 实现负载均衡
负载均衡器在多个服务器之间分配流量,提升系统的处理能力和可靠性。Nginx 和 HAProxy 是两款常用的负载均衡软件,各自具有不同的优势和配置方式。
Nginx 负载均衡配置
Nginx 是一款高性能的 HTTP 和反向代理服务器,广泛用于负载均衡和内容分发。
安装 Nginx
sudo apt update
sudo apt install nginx
配置上游服务器(upstream 块)
编辑 Nginx 配置文件(如 /etc/nginx/sites-available/default):
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
配置负载均衡策略(如轮询、最少连接)
- 轮询(Round Robin):默认负载均衡策略,按顺序依次分配请求。
upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } - 最少连接(Least Connections):将请求分配给连接数最少的服务器。
upstream backend { least_conn; server backend1.example.com; server backend2.example.com; server backend3.example.com; }
配置健康检查与故障转移
通过 Nginx 的健康检查模块,可以定期检查后端服务器的健康状态,自动剔除故障服务器。
示例配置:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
keepalive 32;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 健康检查
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
}
}
高级健康检查(需要第三方模块)
Nginx 原生不支持高级健康检查,可以使用 Nginx Plus 或第三方模块(如 nginx_upstream_check_module)实现。
示例配置文件
以下是一个完整的 Nginx 负载均衡配置示例:
http {
upstream backend {
least_conn;
server backend1.example.com:80 max_fails=3 fail_timeout=30s;
server backend2.example.com:80 max_fails=3 fail_timeout=30s;
server backend3.example.com:80 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
说明:
least_conn:使用最少连接策略。max_fails=3:允许最大失败次数。fail_timeout=30s:故障超时时间。
启用并重启 Nginx
sudo nginx -t
sudo systemctl restart nginx
HAProxy 负载均衡配置
HAProxy 是一款高性能的 TCP/HTTP 负载均衡器,广泛应用于高流量网站和应用中,支持高级负载均衡策略和健康检查。
安装 HAProxy
sudo apt update
sudo apt install haproxy
配置前端与后端(frontend, backend 块)
编辑 HAProxy 配置文件(如 /etc/haproxy/haproxy.cfg):
global
log /dev/log local0
log /dev/log local1 notice
daemon
maxconn 2000
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http_front
bind *:80
default_backend http_back
backend http_back
balance roundrobin
server backend1 backend1.example.com:80 check
server backend2 backend2.example.com:80 check
server backend3 backend3.example.com:80 check
配置负载均衡算法(如 roundrobin, leastconn)
- 轮询(Round Robin)
balance roundrobin - 最少连接(Least Connections)
balance leastconn - 源地址哈希(Source Hashing)
balance source
配置健康检查与故障转移
HAProxy 内置了强大的健康检查功能,可以实时监测后端服务器的健康状态,自动剔除故障服务器。
示例配置:
backend http_back
balance leastconn
option httpchk GET /health
server backend1 backend1.example.com:80 check inter 5000 rise 2 fall 3
server backend2 backend2.example.com:80 check inter 5000 rise 2 fall 3
server backend3 backend3.example.com:80 check inter 5000 rise 2 fall 3
说明:
option httpchk GET /health:使用 HTTP GET 请求检查后端服务器的健康状态。inter 5000:健康检查间隔为5000毫秒。rise 2:连续2次成功的健康检查将服务器标记为可用。fall 3:连续3次失败的健康检查将服务器标记为不可用。
示例配置文件
以下是一个完整的 HAProxy 负载均衡配置示例:
global
log /dev/log local0
log /dev/log local1 notice
daemon
maxconn 3000
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http_front
bind *:80
default_backend http_back
backend http_back
balance leastconn
option httpchk GET /health
server backend1 backend1.example.com:80 check inter 5000 rise 2 fall 3
server backend2 backend2.example.com:80 check inter 5000 rise 2 fall 3
server backend3 backend3.example.com:80 check inter 5000 rise 2 fall 3
启用并重启 HAProxy
sudo systemctl restart haproxy
sudo systemctl enable haproxy
本节总结
- 本节主要围绕 高级 Linux 管理、虚拟化技术、配置与管理虚拟机、高可用性与负载均衡、配置 Nginx 或 HAProxy 实现负载均衡 展开。
- 学习时应优先抓住「命令解决什么问题、在什么场景下使用、执行后会产生什么结果」。
- 对涉及权限、覆盖、网络、系统服务、删除或安全配置的操作,建议先在测试环境练习。
复习建议
- 先用自己的话复述本节每个主题或命令的作用,避免只记参数不懂用途。
- 按原文示例至少手敲一遍典型命令,并观察输出变化。
- 对高风险操作先确认路径、权限和目标对象,再执行实际命令。