标签归档:linux

vmware引导U盘/移动硬盘中的系统

看到标题会不会觉得有点扯?哈哈,我自己也觉得有点扯,但事实就如标题那样,至于为什么要这样操作,我简单解释下:

我平时用Windows主机工作,偶尔会在Linux下干点活,然后我突发奇想将Linux系统安装在了移动硬盘上,平时需要的时候就重启电脑,然后选择安装了Linux系统的移动硬盘进行引导进入Linux系统。。。(这里大家可能就疑惑了,直接在Windows装个虚拟机不就得了?还需要这样折腾?)哈哈哈,确实,简单的事被我弄复杂了,不过也确实有原因,物理机的Linux性能肯定比虚拟机好,所以有一个出发点就是为了完全发挥硬件性能才这样做的,同时为了方便移动就安装在移动硬盘上了。

直到今天,我突然想把Linux系统上的某个数据文件复制出来使用,由于我是远程连接的Windows主机,所以没办法在重启的时候选择移动硬盘进行引导(其实最好的办法是弄个IPKVM设备来解决,这里不讨论~)我就突发奇想想在VMware中引导移动硬盘中的系统。(其实可以用一些磁盘工具直接读移动硬盘里面的数据~)

那么怎么操作呢?先说下我移动硬盘里面安装的什么系统。我安装的是ubuntu 24.02 64位,并且在物理机上使用的是UEFI(敲黑板)引导。

首先在VMware中创建虚拟机,创建时选择“稍后创建系统”

客户机操作系统选择和移动硬盘中一样的系统

到“选择磁盘”这一步我们需要选择“使用物理磁盘(适用于高级用户)”

接下来就是选择你的U盘/移动硬盘,这里大家可能不知道哪个才是自己的移动硬盘,可以在下面的“使用情况”中选择单个分区,然后在弹出的分区选择框中通过分区数量、大小、文件系统来辨别。

创建好虚拟机后,我们把虚拟机改为UEFI启动,这里在上面提过了,因为移动硬盘里面的系统在物理机上是UEFI引导的。

设置好之后我们就可以启动虚拟机了,我这里就出现了grub引导的界面了

至此,整个过程完结。

Debian Linux 下安装和配置HAProxy

HAProxy简介

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全地整合进用户当前的架构中, 同时可以保护用户的web服务器不被暴露到网络上。
HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
包括 GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、Twitter和 Tuenti在内的知名网站,及亚马逊网络服务系统都使用了HAProxy。摘自百度百科

debian 下安装 HAProxy

本次安装基于debian 12版本进行,并且HAProxy基于2.6.19版本

通过apt安装(推荐)

Bash
sudo apt install haproxy -y

通过源码编译

Bash
# 安装编译所需的依赖库
sudo apt install wget make build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev -y

# 下载源码
sudo wget https://www.haproxy.org/download/2.6/src/haproxy-2.6.19.tar.gz

# 解压
sudo tar -zxvf haproxy-2.6.19.tar.gz

# 编译
sudo make TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 -j

// 编译参数解释
* TARGET=linux-glibc
    * 指定要编译的目标平台。
    * linux-glibc 表示目标平台是使用 GNU C 库(glibc)的 Linux 系统。不同的平台可能需要不同的目标设置。
* USE_PCRE=1
    * 启用 PCRE(Perl Compatible Regular Expressions)库的支持。
    * PCRE 用于正则表达式处理,HAProxy 使用它来支持高级模式匹配和正则表达式功能。
    * 设置为 1 表示在编译时启用此功能。
* USE_OPENSSL=1
    * 启用 OpenSSL 库的支持。
    * OpenSSL 提供了加密和 SSL/TLS 功能,HAProxy 使用它来支持 HTTPS 和其他加密通信。
    * 设置为 1 表示在编译时启用此功能。
* USE_ZLIB=1
    * 启用 Zlib 库的支持。
    * Zlib 用于压缩和解压缩数据,HAProxy 使用它来支持 HTTP 压缩(如 gzip)。
    * 设置为 1 表示在编译时启用此功能。

# 安装
sudo make install PREFIX=/usr/local/bin
// 参数解释
* PREFIX=/usr/local/bin
    * 指定安装目录。

配置HAProxy

通过apt安装的配置文件默认在 /etc/haproxy/haproxy.cfg

通过源码编译的需要手动创建配置文件

配置文件内容示例

Bash
global
    # 配置 HAProxy 使用系统日志服务
    log /var/log/logfile local0
    log /var/log/logfil local1 notice
    chroot /var/lib/haproxy # 将 HAProxy 进程的根目录更改为 /var/lib/haproxy
    #创建一个 Unix 套接字,允许使用 haproxy 管理命令。mode 660 设置文件权限,level admin 指定管理权限。
    stats socket /run/haproxy/admin.sock mode 660 level admin 
    #设置管理接口的超时时间为 120 秒
    stats timeout 120s
    user haproxy  # 设置运行 HAProxy 的用户和组。
    group haproxy  # 设置运行 HAProxy 的用户和组。
    daemon # 让 HAProxy 以后台进程方式运行。
    maxconn 4096 #设置 HAProxy 允许的最大并发连接数为 4096。

defaults
    log global # 继承 global 部分的日志设置。
    timeout connect 30s # 连接超时设置为 30秒
    timeout client 30s # 客户端超时设置 30秒
    timeout server 300s # 服务器超时设置300秒
    errorfile 400 /etc/haproxy/errors/400.http # 设置 http 400 错误模板
    errorfile 403 /etc/haproxy/errors/403.http # 设置 http 403 错误模板
    errorfile 408 /etc/haproxy/errors/408.http # 设置 http 408 错误模板
    errorfile 500 /etc/haproxy/errors/500.http # 设置 http 500 错误模板
    errorfile 502 /etc/haproxy/errors/502.http # 设置 http 502 错误模板
    errorfile 503 /etc/haproxy/errors/503.http # 设置 http 503 错误模板
    errorfile 504 /etc/haproxy/errors/504.http # 设置 http 504 错误模板

frontend http-in
    bind *:8001  # : 绑定到所有网络接口的 80 端口
    mode tcp  # 配置 HAProxy 以 HTTP 模式工作。或者https或者tcp
    use_backend servers
backend servers
    server server1 192.168.33.125:8081 maxconn 32 # 最大连接数为 32。

验证配置文件

Bash
haproxy -c -f /etc/haproxy/haproxy.cfg

输出Configuration file is valid就表示配置文件正常

启动HAProxy

通过apt安装的只需要重启一下HAProxy

Bash
sudo server haproxy restart

通过源码编译的启动,下面的haproxy要替换为你实际安装haproxy的绝对路径,在上面的编译过程中,我将haproxy的安装目录设置为了/usr/local/bin,所以下面的代码是可以正常运行的。

Bash
haproxy -f /etc/haproxy/haproxy.cfg