1. 程式人生 > 實用技巧 >linux系統nginx四層負載均衡

linux系統nginx四層負載均衡

四層負載均衡

七層負載均衡:識別域名,是http層

四層負載均衡:不識別域名,是tcp層(相當於埠轉發)

四層負載均衡需要用到的模組

[ngx_stream_core_module]

# 官網推薦配置
worker_processes auto;

error_log /var/log/nginx/error.log info;

events {
    worker_connections  1024;
}

stream {
    upstream backend {
        hash $remote_addr consistent;

        server backend1.example.com:12345 weight=5;
        server 127.0.0.1:12345            max_fails=3 fail_timeout=30s;
        server unix:/tmp/backend3;
    }

    upstream dns {
       server 192.168.0.1:53535;
       server dns.example.com:53;
    }

    server {
        listen 12345;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass backend;
    }

    server {
        listen 127.0.0.1:53 udp reuseport;
        proxy_timeout 20s;
        proxy_pass dns;
    }

    server {
        listen [::1]:12345;
        proxy_pass unix:/tmp/stream.socket;
    }
}

環境準備

伺服器 外網IP 內網IP 安裝服務 用途
web01 10.0.0.7 172.16.1.7 nginx web伺服器
web02 10.0.0.8 172.16.1.8 nginx web伺服器
lb01 10.0.0.5 172.16.1.5 nginx 七層負載均衡
lb02 10.0.0.6 172.16.1.6 nginx 七層負載均衡
nfs 10.0.0.31 172.16.1.31 nginx 四層負載均衡

web01配置

# 下載nginx
[root@web01 ~]# yum install -y nginx
# 編輯nginx配置檔案
[root@web01 ~]# cd /etc/nginx/conf.d/

[root@web01 conf.d]# vim wzh.test.com.conf 

server {
        listen 80;
        server_name wzh.test.com;
        root /opt/wzh;
        charset "utf-8";
        access_log /var/log/nginx/test_access.log main;
        index index.html index.htm;
}
# 檢查語法
[root@web01 conf.d]# nginx -t
# 啟動nginx並加入開機自啟
[root@web01 ~]# systemctl start nginx
[root@web01 ~]# systemctl enable nginx
# 建立站點目錄
[root@web01 conf.d]# mkdir /opt/wzh
[root@web01 conf.d]# cd /opt/wzh
# 編輯頁面
[root@web01 wzh]# echo web01四層負載均衡測試 >index.html

# 域名解析

# 瀏覽器訪問

web02配置

# 下載nginx
[root@web02 ~]# yum install -y nginx
# 編輯nginx配置檔案
[root@web02 ~]# cd /etc/nginx/conf.d/

[root@web02 conf.d]# vim wzh.test.com.conf 

server {
        listen 80;
        server_name wzh.test.com;
        root /opt/wzh;
        charset "utf-8";
        access_log /var/log/nginx/test_access.log main;
        index index.html index.htm;
}
# 檢查語法
[root@web02 conf.d]# nginx -t
# 啟動nginx並加入開機自啟
[root@web02 ~]# systemctl start nginx
[root@web02 ~]# systemctl enable nginx
# 建立站點目錄
[root@web02 conf.d]# mkdir /opt/wzh
[root@web02 conf.d]# cd /opt/wzh
# 編輯頁面
[root@web02 wzh]# echo web02四層負載均衡測試 >index.html

# 域名解析

# 瀏覽器訪問

lb01七層負載均衡配置

# 下載nginx
[root@lb01 ~]# yum install -y nginx
# 編輯proxy模組優化檔案
[root@lb01 ~]# cd /etc/nginx/
[root@lb01 nginx]# vim proxy_params 

 proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
        proxy_connect_timeout 60s;
        proxy_read_timeout 60s;
        proxy_send_timeout 60s;
        proxy_buffering on;
        proxy_buffers 8 4k;
        proxy_buffer_size 4k;
          proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
# 編輯配置檔案
[root@lb01 nginx]# cd conf.d/
[root@lb01 conf.d]# vim wzh.test.com.conf 

upstream wzh {
        server 172.16.1.7;
        server 172.16.1.8;
}
        server {
        listen  80;
        server_name wzh.test.com;

        location / {
        proxy_pass http://wzh;
        include proxy_params;
}
}
# 檢查語法
[root@lb01 conf.d]# nginx -t
# 啟動nginx並加入開機自啟
[root@lb01 conf.d]# systemctl start nginx && systemctl enable nginx
# 域名解析

# 瀏覽器訪問

![image-20200530215326831](C:\Users\admin\AppData\Roaming\Typor
a\typora-user-images\image-20200530215326831.png)

重新整理

lb02七層負載均衡配置

# 下載nginx
[root@lb02 ~]# yum install -y nginx
# 編輯proxy模組優化檔案
[root@lb02 ~]# cd /etc/nginx/
[root@lb02 nginx]# vim proxy_params 

 proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
        proxy_connect_timeout 60s;
        proxy_read_timeout 60s;
        proxy_send_timeout 60s;
        proxy_buffering on;
        proxy_buffers 8 4k;
        proxy_buffer_size 4k;
          proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
# 編輯配置檔案
[root@lb02 nginx]# cd conf.d/
[root@lb02 conf.d]# vim wzh.test.com.conf 

upstream wzh {
        server 172.16.1.7;
        server 172.16.1.8;
}
        server {
        listen  80;
        server_name wzh.test.com;

        location / {
        proxy_pass http://wzh;
        include proxy_params;
}
}
# 檢查語法
[root@lb02 conf.d]# nginx -t
# 啟動nginx並加入開機自啟
[root@lb01 conf.d]# systemctl start nginx && systemctl enable nginx
# 域名解析

# 瀏覽器訪問

重新整理

nfs四層負載均衡配置

# 下載nginx
[root@nfs ~]# yum install -y nginx
# 編輯主配置檔案
[root@nfs nginx]# cat nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}
include /etc/nginx/stream/*.conf;
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

#    server {
#        listen       80 default_server;
#        listen       [::]:80 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }
#
# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}

# 建立include目錄
[root@nfs nginx]# mkdir /etc/nginx/stream/
#  編輯配置檔案
[root@nfs nginx]# !v
vim stream/wzh.test.com.conf 

stream{
        upstream lb_07 {
                server 172.16.1.5:80;
                server 172.16.1.6:80;
        }
        server {
                listen 80;
                proxy_pass lb_07;
                proxy_connect_timeout 3s;
                proxy_timeout 3s;
        }
}
# 檢測語法
[root@nfs nginx]# nginx -t
# 啟動並加入開機自啟
[root@nfs nginx]# systemctl start nginx && systemctl enable nginx

# 域名解析
# 瀏覽器訪問

重新整理

修改埠

# web 01
[root@web01 nginx]# vim conf.d/wzh.test.com.conf 
server {
        listen 8007;
        server_name wzh.test.com;
        root /opt/wzh;
        charset "utf-8";
        access_log /var/log/nginx/test_access.log main;
        index index.html index.htm;
}
[root@web01 nginx]# nginx -t
[root@web01 nginx]# systemctl reload nginx
# web 02
[root@web02 conf.d]# vim wzh.test.com.conf 

server {
        listen 8008;
        server_name wzh.test.com;
        root /opt/wzh;
        charset "utf-8";
        access_log /var/log/nginx/test_access.log main;
        index index.html index.htm html;
}
# 檢測配置檔案
[root@web02 conf.d]# nginx -t

# 重新載入
[root@web02 conf.d]# systemctl reload nginx
#  lb01
[root@lb01 conf.d]# vim wzh.test.com.conf 

upstream wzh {
        server 172.16.1.7:8007;
        server 172.16.1.8:8008;
}
        server {
        listen  8005;
        server_name wzh.test.com;

        location / {
        proxy_pass http://wzh;
        include proxy_params;
}
}
[root@lb01 conf.d]# nginx -t
[root@lb01 conf.d]# systemctl reload nginx

# lb02
[root@lb02 conf.d]# vim wzh.test.com.conf 

upstream wzh {
        server 172.16.1.7:8007;
        server 172.16.1.8:8008;
}
        server {
        listen  8006;
        server_name wzh.test.com;

        location / {
        proxy_pass http://wzh;
        include proxy_params;
}
}
[root@lb02 conf.d]# nginx -t
[root@lb02 conf.d]# systemctl reload nginx

# nfs
[root@nfs nginx]# !v
vim stream/wzh.test.com.conf 

stream{
        upstream lb_07 {
                server 172.16.1.5:8005;
                server 172.16.1.6:8006;
        }
        server {
                listen 80;
                proxy_pass lb_07;
                proxy_connect_timeout 3s;
                proxy_timeout 3s;
        }
}
[root@nfs nginx]# nginx -t
[root@nfs nginx]# systemctl reload nginx
# 瀏覽器訪問

重新整理

理論轉載IP

*【負載均衡概念】*

​ 負載均衡(Load Balance)建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬、增加吞吐量、加強網路資料處理能力、提高網路的靈活性和可用性。負載均衡有兩方面的含義:首先,大量的併發訪問或資料流量分擔到多臺節點裝置上分別處理,減少使用者等待響應的時間;其次,單個重負載的運算分擔到多臺節點裝置上做並行處理,每個節點裝置處理結束後,將結果彙總,返回給使用者,系統處理能力得到大幅度提高。

​ 簡單來說就是:其一是將大量的併發處理轉發給後端多個節點處理,減少工作響應時間;其二是將單個繁重的工作轉發給後端多個節點處理,處理完再返回給負載均衡中心,再返回給使用者。目前負載均衡技術大多數是用於提高諸如在Web伺服器、FTP伺服器和其它關鍵任務伺服器上的Internet伺服器程式的可用性和可伸縮性。

【四層和七層負載均衡】

根據OSI模型可將負載均衡分為二層負載均衡(一般是用虛擬mac地址方式,外部對虛擬MAC地址請求,負載均衡接收後分配後端實際的MAC地址響應),三層負載均衡(一般採用虛擬IP地址方式,外部對虛擬的ip地址請求,負載均衡接收後分配後端實際的IP地址響應),四層負載均衡(在三次負載均衡的基礎上,用 ip+port 接收請求,再轉發到對應的機器),七層負載均衡(根據虛擬的url或是IP,主機名接收請求,再轉向相應的處理伺服器)。下面介紹最常見的四層和七層負載均衡:

1、四層負載均衡

四層的負載均衡就是基於IP+埠的負載均衡:在三層負載均衡的基礎上,通過釋出三層的IP地址(VIP),然後加四層的埠號,來決定哪些流量需要做負載均衡,對需要處理的流量進行NAT處理,轉發至後臺伺服器,並記錄下這個TCP或者UDP的流量是由哪臺伺服器處理的,後續這個連線的所有流量都同樣轉發到同一臺伺服器處理。

​ 對應的負載均衡器稱為四層交換機(L4 switch),主要分析IP層及TCP/UDP層,實現四層負載均衡。此種負載均衡器不理解應用協議(如HTTP/FTP/MySQL等等),常見例子有:LVS,F5。

2、七層負載均衡

七層的負載均衡就是基於虛擬的URL或主機IP的負載均衡:在四層負載均衡的基礎上(沒有四層是絕對不可能有七層的),再考慮應用層的特徵,比如同一個Web伺服器的負載均衡,除了根據VIP加80埠辨別是否需要處理的流量,還可根據七層的URL、瀏覽器類別、語言來決定是否要進行負載均衡。舉個例子,如果你的Web伺服器分成兩組,一組是中文語言的,一組是英文語言的,那麼七層負載均衡就可以當用戶來訪問你的域名時,自動辨別使用者語言,然後選擇對應的語言伺服器組進行負載均衡處理。

​ 對應的負載均衡器稱為七層交換機(L7 switch),除了支援四層負載均衡以外,還有分析應用層的資訊,如HTTP協議URI或Cookie資訊,實現七層負載均衡。此種負載均衡器能理解應用協議,常見例子有: haproxy,MySQL Proxy。

【四層和七層的區別】

1、技術原理上的區別
  所謂四層負載均衡,也就是主要通過報文中的目標地址和埠,再加上負載均衡裝置設定的伺服器選擇方式,決定最終選擇的內部伺服器。

以常見的TCP為例,負載均衡裝置在接收到第一個來自客戶端的SYN 請求時,即通過上述方式選擇一個最佳的伺服器,並對報文中目標IP地址進行修改(改為後端伺服器IP),直接轉發給該伺服器。TCP的連線建立,即三次握手是客戶端和伺服器直接建立的,負載均衡裝置只是起到一個類似路由器的轉發動作。在某些部署情況下,為保證伺服器回包可以正確返回給負載均衡裝置,在轉發報文的同時可能還會對報文原來的源地址進行修改。

​ 所謂七層負載均衡,也稱為“內容交換”,也就是主要通過報文中的真正有意義的應用層內容,再加上負載均衡裝置設定的伺服器選擇方式,決定最終選擇的內部伺服器。
  以常見的TCP為例,負載均衡裝置如果要根據真正的應用層內容再選擇伺服器,只能先代理最終的伺服器和客戶端建立連線(三次握手)後,才可能接受到客戶端傳送的真正應用層內容的報文,然後再根據該報文中的特定欄位,再加上負載均衡裝置設定的伺服器選擇方式,決定最終選擇的內部伺服器。負載均衡裝置在這種情況下,更類似於一個代理伺服器。負載均衡和前端的客戶端以及後端的伺服器會分別建立TCP連線。所以從這個技術原理上來看,七層負載均衡明顯的對負載均衡裝置的要求更高,處理七層的能力也必然會低於四層模式的部署方式。

2、應用場景的需求
  七層應用負載的好處,是使得整個網路更"智慧化"。參考這篇利用負載均衡優化和加速HTTP應用,就可以基本上了解這種方式的優勢所在。例如訪問一個網站的使用者流量,可以通過七層的方式,將對圖片類的請求轉發到特定的圖片伺服器並可以使用快取技術;將對文字類的請求可以轉發到特定的文字伺服器並可以使用壓縮技術。當然這只是七層應用的一個小案例,從技術原理上,這種方式可以對客戶端的請求和伺服器的響應進行任意意義上的修改,極大的提升了應用系統在網路層的靈活性。很多在後臺,例如Nginx或者Apache上部署的功能可以前移到負載均衡裝置上,例如客戶請求中的Header重寫,伺服器響應中的關鍵字過濾或者內容插入等功能。
  另外一個常常被提到功能就是安全性。網路中最常見的SYN Flood攻擊,即黑客控制眾多源客戶端,使用虛假IP地址對同一目標傳送SYN攻擊,通常這種攻擊會大量傳送SYN報文,耗盡伺服器上的相關資源,以達到Denial of Service(DoS)的目的。從技術原理上也可以看出,四層模式下這些SYN攻擊都會被轉發到後端的伺服器上;而七層模式下這些SYN攻擊自然在負載均衡裝置上就截止,不會影響後臺伺服器的正常運營。另外負載均衡裝置可以在七層層面設定多種策略,過濾特定報文,例如SQL Injection等應用層面的特定攻擊手段,從應用層面進一步提高系統整體安全。
  現在的7層負載均衡,主要還是著重於應用HTTP協議,所以其應用範圍主要是眾多的網站或者內部資訊平臺等基於B/S開發的系統。 4層負載均衡則對應其他TCP應用,例如基於C/S開發的ERP等系統。

3、七層應用需要考慮的問題
  (1)是否真的必要。七層應用的確可以提高流量智慧化,同時必不可免的帶來裝置配置複雜,負載均衡壓力增高以及故障排查上的複雜性等問題。在設計系統時需要考慮四層七層同時應用的混雜情況。
  (2)是否真的可以提高安全性。例如SYN Flood攻擊,七層模式的確將這些流量從伺服器遮蔽,但負載均衡裝置本身要有強大的抗DDoS能力,否則即使伺服器正常而作為中樞排程的負載均衡裝置故障也會導致整個應用的崩潰。
  (3)是否有足夠的靈活度。七層應用的優勢是可以讓整個應用的流量智慧化,但是負載均衡裝置需要提供完善的七層功能,滿足客戶根據不同情況的基於應用的排程。最簡單的一個考核就是能否取代後臺Nginx或者Apache等伺服器上的排程功能。能夠提供一個七層應用開發介面的負載均衡裝置,可以讓客戶根據需求任意設定功能,才真正有可能提供強大的靈活性和智慧性。

4、總體對比

(1)智慧性
七層負載均衡由於具備OIS七層的所有功能,所以在處理使用者需求上能更加靈活,從理論上講,七層模型能對使用者的所有跟服務端的請求進行修改。例如對檔案header新增資訊,根據不同的檔案型別進行分類轉發。四層模型僅支援基於網路層的需求轉發,不能修改使用者請求的內容。
(2)安全性
七層負載均衡由於具有OSI模型的全部功能,能更容易抵禦來自網路的攻擊;四層模型從原理上講,會直接將使用者的請求轉發給後端節點,無法直接抵禦網路攻擊。
(3)複雜度
四層模型一般比較簡單的架構,容易管理,容易定位問題;七層模型架構比較複雜,通常也需要考慮結合四層模型的混用情況,出現問題定位比較複雜。
(4)效率比
四層模型基於更底層的設定,通常效率更高,但應用範圍有限;七層模型需要更多的資源損耗,在理論上講比四層模型有更強的功能,現在的實現更多是基於http應用。

負載均衡演算法

(1)輪循均衡(Round Robin):每一次來自網路的請求輪流分配給內部中的伺服器,從1至N然後重新開始。此種均衡演算法適合於伺服器組中的所有伺服器都有相同的軟硬體配置並且平均服務請求相對均衡的情況。
(2)權重輪循均衡(Weighted Round Robin):根據伺服器的不同處理能力,給每個伺服器分配不同的權值,使其能夠接受相應權值數的服務請求。例如:伺服器A的權值被設計成1,B的權值是 3,C的權值是6,則伺服器A、B、C將分別接受到10%、30%、60%的服務請求。此種均衡演算法能確保高效能的伺服器得到更多的使用率,避免低效能的伺服器負載過重。
(3)隨機均衡(Random):把來自網路的請求隨機分配給內部中的多個伺服器。
  (4)權重隨機均衡(Weighted Random):此種均衡演算法類似於權重輪循演算法,不過在處理請求分擔時是個隨機選擇的過程。
  (5)響應速度均衡(Response Time):負載均衡裝置對內部各伺服器發出一個探測請求(例如Ping),然後根據內部中各伺服器對探測請求的最快響應時間來決定哪一臺伺服器來響應客戶端的服務請求。此種均衡演算法能較好的反映伺服器的當前執行狀態,但這最快響應時間僅僅指的是負載均衡裝置與伺服器間的最快響應時間,而不是客戶端與伺服器間的最快響應時間。
  (6)最少連線數均衡(Least Connection):客戶端的每一次請求服務在伺服器停留的時間可能會有較大的差異,隨著工作時間加長,如果採用簡單的輪循或隨機均衡演算法,每一臺伺服器上的連線程序可能會產生極大的不同,並沒有達到真正的負載均衡。最少連線數均衡演算法對內部中需負載的每一臺伺服器都有一個數據記錄,記錄當前該伺服器正在處理的連線數量,當有新的服務連線請求時,將把當前請求分配給連線數最少的伺服器,使均衡更加符合實際情況,負載更加均衡。此種均衡演算法適合長時處理的請求服務,如FTP。
  (7)處理能力均衡:此種均衡演算法將把服務請求分配給內部中處理負荷(根據伺服器CPU型號、CPU數量、記憶體大小及當前連線數等換算而成)最輕的伺服器,由於考慮到了內部伺服器的處理能力及當前網路執行狀況,所以此種均衡演算法相對來說更加精確,尤其適合運用到第七層(應用層)負載均衡的情況下。
  (8)DNS響應均衡(Flash DNS):在Internet上,無論是HTTP、FTP或是其它的服務請求,客戶端一般都是通過域名解析來找到伺服器確切的IP地址的。在此均衡演算法下,分處在不同地理位置的負載均衡裝置收到同一個客戶端的域名解析請求,並在同一時間內把此域名解析成各自相對應伺服器的IP地址(即與此負載均衡裝置在同一位地理位置的伺服器的IP地址)並返回給客戶端,則客戶端將以最先收到的域名解析IP地址來繼續請求服務,而忽略其它的IP地址響應。在種均衡策略適合應用在全域性負載均衡的情況下,對本地負載均衡是沒有意義的。

【負載均衡實施要素】

1、效能

效能是我們在引入均衡方案時需要重點考慮的問題,但也是一個最難把握的問題。衡量效能時可將每秒鐘通過網路的資料包數目做為一個引數,另一個引數是均衡方案中伺服器群所能處理的最大併發連線數目,但是,假設一個均衡系統能處理百萬計的併發連線數,可是卻只能以每秒2個包的速率轉發,這顯然是沒有任何作用的。效能的優劣與負載均衡裝置的處理能力、採用的均衡策略息息相關,並且有兩點需要注意:一、均衡方案對伺服器群整體的效能,這是響應客戶端連線請求速度的關鍵;二、負載均衡裝置自身的效能,避免有大量連線請求時自身效能不足而成為服務瓶頸。有時我們也可以考慮採用混合型負載均衡策略來提升伺服器群的總體效能,如DNS負載均衡與NAT負載均衡相結合。另外,針對有大量靜態文件請求的站點,也可以考慮採用快取記憶體技術,相對來說更節省費用,更能提高響應效能;對有大量ssl/xml內容傳輸的站點,更應考慮採用ssl/xml加速技術。

2、可擴充套件性

​ IT技術日新月異,一年以前最新的產品,現在或許已是網路中效能最低的產品;業務量的急速上升,一年前的網路,現在需要新一輪的擴充套件。合適的均衡解決方案應能滿足這些需求,能均衡不同作業系統和硬體平臺之間的負載,能均衡HTTP、郵件、新聞、代理、資料庫、防火牆和 Cache等不同伺服器的負載,並且能以對客戶端完全透明的方式動態增加或刪除某些資源。
3、靈活性

均衡解決方案應能靈活地提供不同的應用需求,滿足應用需求的不斷變化。在不同的伺服器群有不同的應用需求時,應有多樣的均衡策略提供更廣泛的選擇。
4、可靠性

在對服務質量要求較高的站點,負載均衡解決方案應能為伺服器群提供完全的容錯性和高可用性。但在負載均衡裝置自身出現故障時,應該有良好的冗餘解決方案,提高可靠性。使用冗餘時,處於同一個冗餘單元的多個負載均衡裝置必須具有有效的方式以便互相進行監控,保護系統儘可能地避免遭受到重大故障的損失。
5、易管理性

不管是通過軟體還是硬體方式的均衡解決方案,我們都希望它有靈活、直觀和安全的管理方式,這樣便於安裝、配置、維護和監控,提高工作效率,避免差錯。在硬體負載均衡裝置上,目前主要有三種管理方式可供選擇:一、命令列介面(CLI:Command Line Interface),可通過超級終端連線負載均衡裝置序列介面來管理,也能telnet遠端登入管理,在初始化配置時,往往要用到前者;二、圖形使用者介面(GUI:Graphical User Interfaces),有基於普通web頁的管理,也有通過Java Applet 進行安全管理,一般都需要管理端安裝有某個版本的瀏覽器;三、SNMP(Simple Network Management Protocol,簡單網路管理協議)支援,通過第三方網路管理軟體對符合SNMP標準的裝置進行管理。