ipvsadm详解

一、ipvsadm概述

ipvsadm是一个Linux内核中的IP负载均衡工具,它对应的用户控制程序是ipvsadm。

使用ipvsadm可以配置4层负载均衡,并支持多种负载均衡算法,还可以基于策略路由、NAT等技术对请求进行转发。ipvsadm支持TCP和UDP协议,并可扩展到7层负载均衡。

ipvsadm配置文件路径:/etc/sysconfig/ipvsadm

二、ipvsadm命令

1、ipvsadm -L

该命令用于列出所有的虚拟服务和服务器。可以通过“-n”选项来只显示IP地址而不解析为域名,通过“-t”选项来只显示TCP虚拟服务和服务器,通过“-u”选项来只显示UDP虚拟服务和服务器。

ipvsadm -L [-n] [-t] [-u]

2、ipvsadm -A

该命令用于添加虚拟服务或者服务器。需要指定虚拟服务的协议(TCP或UDP)、IP地址和端口,以及在哪些真实服务器中进行转发。

在每台真实服务器上需要先开启IP_forwarding功能。

ipvsadm -A -t|u vip_address:port -s scheduling -p [real_server:porti] -g [real_server_group_name]

3、ipvsadm -R

该命令用于修改虚拟服务或真实服务器的参数配置。

ipvsadm -R [-t|u] vip_address:port -s scheduling -p [real_server:port] -g [real_server_group_name] 

4、ipvsadm -D

该命令用于删除虚拟服务或者真实服务器。

ipvsadm -D [-t|u] vip_address:port [-r real_server:port] [-g real_server_group_name]

5、ipvsadm -C

该命令用于清空所有虚拟服务及服务器。

ipvsadm -C

三、ipvsadm负载均衡算法

1、轮询(RR)

算法描述:轮询算法采用轮询的方式依次将请求分发到不同的服务器上,它是一种简单易理解的算法,每个服务器均匀分配请求。

示例代码:

#添加虚拟服务
ipvsadm -A -t 192.168.1.100:80 -s rr

#添加真实服务器
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -m
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -m
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -m

2、最小连接数(LC)

算法描述:最小连接数算法将请求发送给当前活跃连接数最少的服务器,它的优点是可以进行动态平衡,但在短时间内出现的请求波动时,它可能会将请求分配给当前使用状况较好的服务器,而非负载较低的服务器。

示例代码:

#添加虚拟服务
ipvsadm -A -t 192.168.1.100:80 -s lc

#添加真实服务器
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -m
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -m
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -m

3、源地址哈希(SH)

算法描述:源地址哈希算法根据请求源IP地址,从预先分配的服务器群中选择一台服务器来处理请求。

示例代码:

#添加虚拟服务
ipvsadm -A -t 192.168.1.100:80 -s sh

#添加真实服务器
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -m
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -m
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -m

四、ipvsadm高可用设置

1、LVS + Keepalived

通过LVS + Keepalived的方式可以实现高可用的负载均衡,自动探测故障服务器,并将请求转发到健康的服务器。

示例代码:

#配置实时同步组网
ipvsadm -A -t 192.168.0.100:80 -s rr
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.101:80 -g w1
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.102:80 -g w1
ipvsadm -G w1 -p 120 -u 3600 -t 300

#配置keepalived
vrrp_script chk_server {
        script "/usr/local/keepalived/sh/check_server.sh"
        interval 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.100/24 brd 192.168.0.255 dev eth1
    }
    track_script {
        chk_server
    }
}

2、LVS + HAProxy

通过LVS + HAProxy的方式可以实现双重负载均衡,LVS作为前端负责物理层面上的负载均衡,HAProxy作为后端,负责对具体的资源请求进行分发。

示例代码:

#配置LVS
ipvsadm -A -t 192.168.0.100:80 -s rr
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.101:80 -m
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.102:80 -m

#配置HAProxy
listen web 192.168.0.100:80
    bind *:80
    mode http
    stats enable
    stats uri /haproxy?stats
    option httplog
    option forwardfor
    balance roundrobin
    server one 192.168.0.101:80 check inter 1000 rise 1 fall 2
    server two 192.168.0.102:80 check inter 1000 rise 1 fall 2

五、ipvsadm其他参数设置

1、nat模式

在nat模式下,请求通过虚拟IP地址发送到LVS机器上,然后再被返回到客户端。

#添加虚拟服务
ipvsadm -A -t 192.168.1.100:80 -s rr -m

#添加真实服务器
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -m
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -m
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -m

2、tunnel模式

在tunnel模式下,LVS通过隧道将请求转发到目标服务器,目标服务器返回数据也通过隧道经过LVS返回。

#添加虚拟服务
ipvsadm -A -t 192.168.1.100:80 -s rr -m --tunnel-id 100

#添加真实服务器
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -m --tunnel-id 100
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -m --tunnel-id 100
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -m --tunnel-id 100

3、DR模式

在DR模式下,LVS完成转发后,请求和响应数据不经过LVS返回,而是直接返回到客户端和服务器之间。

#添加虚拟服务
ipvsadm -A -t 192.168.1.100:80 -s rr --dr

#添加真实服务器
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -g w1 -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -g w2 -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -g w3 -w 1
ipvsadm -G w1 -N 1 -l
ipvsadm -G w2 -N 1 -l
ipvsadm -G w3 -N 1 -l

六、小结

ipvsadm是一款功能强大、配置灵活的负载均衡工具,支持多种负载均衡算法和配置模式,通过对负载均衡的控制,可以有效地提高服务的可用性和性能。

原创文章,作者:OUQMG,如若转载,请注明出处:https://www.506064.com/n/332774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
OUQMGOUQMG
上一篇 2025-01-27 13:34
下一篇 2025-01-27 13:34

相关推荐

  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • C语言贪吃蛇详解

    一、数据结构和算法 C语言贪吃蛇主要运用了以下数据结构和算法: 1. 链表 typedef struct body { int x; int y; struct body *nex…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25

发表回复

登录后才能评论