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/zh-hk/n/332774.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
OUQMG的頭像OUQMG
上一篇 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

發表回復

登錄後才能評論