日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

高性能业务架构解决方案(LVS+Keepalived)

發布時間:2025/3/17 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高性能业务架构解决方案(LVS+Keepalived) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

高性能業務架構解決方案(LVS+Keepalived)

一、?概況2

????1.1?應用場景2

????1.2 LVS/Nginx/HAProxy特點3

二、?相關理論4

????2.1 Keepalived工作原理4

????2.2 LVS工作原理4

三、?架構拓撲5

四、?資源規劃5

五、?實施部署5

????5.1初始化配置6

????5.2 LVS配置6

????5.3 Keepalived部署7

????????5.3.1 Keepalived的安裝8

????????5.3.2?配置keepalived8

????5.4?后端WEB服務器10

????5.5?共享存儲11

????5.6?測試11

????????5.6.1?負載均衡測試12

????????5.6.2?高可用測試13

六、?注意事項15

????6.1 LVS安裝注意事項15

????6.2?將相關開機自啟服務16

????6.3?腳本16

?

高性能業務架構解決方案(LVS+Keepalived

一、概況

1.1?應用場景

Nginx/LVS/HAProxy的基于Linux的開源免費的負載均衡軟件。對于大型的,需要進行高并發的網站或者對網絡不太嚴格的場景,可以使用Nginx;對于大型的Web服務器的時候可以使用Haproxy;對性能有嚴格要求的時候可以使用LVS,就單純從負載均衡的角度來說,LVS也許會成為主流,更適合現在大型的互聯網公司。本文采用LVS+keepalived方案來解決業務架構高可用。

1.2 LVS/Nginx/HAProxy特點

名稱

特點

LVS

1)?抗負載能力強、是工作在網絡4層之上僅作分發之用,沒有流量的產生,這個特點也決定了它在負載均衡軟件里的性能最強的;

2)?配置性比較低,這是一個缺點也是一個優點,因為沒有可太多配置的東西,所以并不需要太多接觸,大大減少了人為出錯的幾率;

3)?工作穩定,自身有完整的雙機熱備方案,如LVS+KeepalivedLVS+Heartbeat,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived

4)?無流量,保證了均衡器IO的性能不會收到大流量的影響;

5)?應用范圍比較廣,可以對所有應用做負載均衡;

6)?軟件本身不支持正則處理,不能做動靜分離,這個就比較遺憾了;其實現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在。

7)?如果是網站應用比較龐大的話,實施LVS/DR+Keepalived起來就比較復雜了,特別后面有Windows Server應用的機器的話,如果實施及配置還有維護過程就比較復雜了

Nginx

1)?工作在網絡的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構,它的正則規則比HAProxy更為強大和靈活,這也是許多朋友喜歡它的原因之一;

2)?Nginx對網絡的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢所在;

3)?Nginx安裝和配置比較簡單,測試起來比較方便;

4)?也可以承擔高的負載壓力且穩定,一般能支撐超過幾萬次的并發量;

5)?Nginx可以通過端口檢測到服務器內部的故障,比如根據服務器處理網頁返回的狀態碼、超時等等,并且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支持url來檢測;

6)?Nginx僅能支持httpEmail,這樣就在適用范圍上面小很多,這個它的弱勢;

7)?Nginx不僅僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器。LNMP現在也是非常流行的web架構,大有和以前最流行的LAMP架構分庭抗爭之勢,在高流量的環境中也有很好的效果。

8)?Nginx現在作為Web反向加速緩存越來越成熟了,很多朋友都已在生產環境下投入生產了,而且反映效果不錯,速度比傳統的Squid服務器更快,有興趣的朋友可以考慮用其作為反向代理加速器。

HAProxy

1)?HAProxy是支持虛擬主機的,以前有朋友說這個不支持虛擬主機,我這里特此更正一下。

2)?能夠補充Nginx的一些缺點比如Session的保持,Cookie的引導等工作

3)?支持url檢測后端的服務器出問題的檢測會有很好的幫助。

4)?它跟LVS一樣,本身僅僅就只是一款負載均衡軟件;單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度,在并發處理上也是優于Nginx的。

5)?HAProxy可以對Mysql讀進行負載均衡,對后端的MySQL節點進行檢測和負載均衡,不過在后端的MySQL slaves數量超過10臺時性能不如LVS,所以我向大家推薦LVS+Keepalived

6)?HAProxy的算法現在也越來越多了,算法特別靈活

二、相關理論

2.1 Keepalived工作原理

keepalived:顧名思義是保持存活,常用來搭建設備的高可用,防止業務核心設備出現單點故障。keepalived基于VRRP協議來實現高可用主要用作realserver的健康檢查以及負載均衡主機和backup主機之間的故障漂移。如果將TCP/IP劃分為5Keepalived就是一個類似于3~5層交換機制的軟件,具有3~5層交換功能,其主要作用是檢測web服務器的狀態,如果某臺web服務器故障,Keepalived將檢測到并將其從系統中剔除,當該web服務器工作正常后Keepalived自動將其加入到服務器群中,這些工作全部自動完成,而不需要人工干預,只需要人工修復故障的web服務器即可。

層機理是發送ICMP數據包即PING給某臺服務器,如果不,則認為其故障,并從服務器群中剔除層機理是檢測TCP端口號狀態來判斷某臺服務器是否故障,如果檢測端口存在異常,則從服務器群中剔除層機理是根據用戶的設定檢查某個服務器應用程序是否正常運行,如果不正常,則從服務器群中剔除。

2.2 LVS工作原理

LVS工作在網絡層。通過控制IP來實現負載均衡。IPVS是其具體的實現模塊。IPVS的主要作用:安裝在Director Server上面,在Director Server虛擬一個對外訪問的IPVIP)。用戶訪問VIP,到達Director ServerDirector Server根據一定的規則選擇一個Real Server,處理完成后然后返回給客戶端數據。這些步驟產生了一些具體的問題,比如如何選擇具體的Real ServerReal Server如果返回給客戶端數據等等。IPVS為此有三種機制:

n?VS/NAT(Virtual Server via Network Address Translation),即網絡地址翻轉技術實現虛擬服務器。當請求來到時,Diretor server上處理的程序將數據報文中的目標地址(即虛擬IP地址)改成具體的某臺Real Server,端口也改成Real Server的端口,然后把報文發給Real ServerReal Server處理完數據后,需要返回給Diretor Server,然后Diretor server將數據包中的源地址和源端口改成VIP的地址和端口,最后把數據發送出去。由此可以看出,用戶的請求和返回都要經過Diretor Server,如果數據過多,Diretor Server肯定會不堪重負。

n?VS/TUNVirtual Server via IP Tunneling,IP隧道技術實現虛擬服務器。它跟VS/NAT基本一樣,但是Real server是直接返回數據給客戶端,不需要經過Diretor server,這大大降低了Diretor server的壓力。

n?VS/DRVirtual Server via Direct Routing),即用直接路由技術實現虛擬服務器。跟前面兩種方式,它的報文轉發方法有所不同,VS/DR通過改寫請求報文的MAC地址,將請求發送到Real Server,而Real Server將響應直接返回給客戶,免去了VS/TUN中的IP隧道開銷。這種方式是三種負載調度機制中性能最高最好的,但是必須要求Director ServerReal Server都有一塊網卡連在同一物理網段上

三、架構拓撲

?


四、資源規劃

主機名稱

內網IP

操作系統

LVS-Master

10.10.10.2

Centos 6.5 64

LVS-Backup

10.10.10.3

Centos 6.5 64

WEB01

10.10.10.11

Centos 6.5 64

WEB02

10.10.10.12

Centos 6.5 64

WEB03

10.10.10.13

Centos 6.5 64

NFS-server

10.10.10.20

Centos 6.5 64

VIP

10.10.10.100

\

五、實施部署

5.1?初始化配置

l?getenforce 0關閉SeLinux

l?修改主機名

l?防火墻開放22/80端口

l?測試網絡連通性

l?更新YUM

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

wget -O /etc/yum.repos.d/CentOS-Base.repo?http://mirrors.aliyun.com/repo/Centos-6.repo

yum makecache ??????????#生成緩存

?

5.2?LVS配置

masterbackup上面同時配置

安裝可采用yum直接安裝,或下載tar包編譯安裝。

yum install ipvsadm

/etc/init.d/ipvsadm save

/etc/init.d/ipvsadm start

查看ipvsadm狀態

/etc/init.d/ipvsadm -ln

#?開啟icmp包重定向

echo "1" > /proc/sys/net/ipv4/conf/all/send_redirects

echo "1" > /proc/sys/net/ipv4/conf/default/send_redirects

echo "1" > /proc/sys/net/ipv4/conf/eth0/send_redirects

#添加路由

route add -host 10.10.10.100 dev eth1

#清除LVS規則

ipvsadm -C

#?添加一條虛擬服務器記錄

# -p指定一定的時間內將相同的客戶端分配到同一臺后端服務器解決session問題

ipvsadm -A -t 10.10.10.100:80 -s wlc -p

#?添加真實服務器記錄

ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.11:80 -g -w 1

ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.12:80 -g -w 1

ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.13:80 -g -w 1

#設置tcp tcpfin udp超市連接值

ipvsadm --set 30 120 300

Ipvsadm

配置完成后,查看ipvsadm狀態與主機路由

5.3 Keepalived部署

5.3.1 Keepalived的安裝

masterbackup上面均需要配置

安裝開發組環境工具

yum groupinstall "Development tools" -y

安裝相應軟件包

yum install openssl-devel popt-devel -y

ln -s /usr/src/kernels/2.6.32-642.1.1.el6.x86_64?/usr/src/linux ??#此處要根據實際操作系統最高版本的kernel?為準

如果/usr/src/kernels/下面沒文件使用yum?安裝?kernel-devel

#下載keepalive

wget?http://www.keepalived.org/software/keepalived-1.2.24.tar.gz

tar?zxvf?keepalived-1.2.24.tar.gz

cd?keepalived-1.2.24

./configure?--with-kernel-dir=/usr/src/kernels/2.6.32-642.1.1.el6.x86_64

?

(注意這個步驟要看到以下字樣才是正常的)

Use IPVS Framework : Yes

IPVS sync daemon support : Yes

?

make?&&?make?install

cp?/usr/local/etc/rc.d/init.d/keepalived?/etc/rc.d/init.d/

cp?/usr/local/etc/sysconfig/keepalived?/etc/sysconfig/

mkdir?/etc/keepalived

cp?/usr/local/etc/keepalived/keepalived.conf?/etc/keepalived/

cp?/usr/local/sbin/keepalived?/usr/sbin/

chkconfig?--add?keepalived

chkconfig?--level?2345?keepalived?on

/etc/init.d/keepalived start

至此keepalive就已經安裝完畢。

?

注意:主要backup服務器之上修改兩點即可

1state MASTER ?backup服務器需要更改為BACKUP

2priority 100小于master的優先級

?

5.3.2?配置keepalived

編輯keepalived.conf

! Configuration File for keepalived

?

global_defs {

???notification_email {

xuel@51idc.com

???}

???notification_email_from Alexandre.Cassen@firewall.loc

???smtp_server 127.0.0.1

???smtp_connect_timeout 30

???router_id LVS_DEVEL

}

?

vrrp_instance VI_1 {

????state MASTER?#backup主機配置為BACKUP

????interface eth0????#實例綁定的網卡

????virtual_router_id 51????# VRID?標記(?0...255?

????priority 100#backup主機配置優先級小于100,如配置90

????advert_int 1#檢查間隔,默認?1s

????authentication {

????????auth_type PASS

????????auth_pass 1111

????}

????virtual_ipaddress {

????????10.10.10.100#VIP地址,如果有多個?VIP?,繼續換行填寫

????}

}

?

virtual_server 10.10.10.100 80 { ????#設置?VIP及監聽后端服務端口

????delay_loop 6

????lb_algo wrr#LVS調度算法?rr|wrr|lc|wlc|sh|dh|lblc

????lb_kind DR#LVS實現負載均衡的機制?NAT|DR|TUN

????nat_mask 255.255.255.0

????persistence_timeout 50#?會話保持時間

????protocol TCP

?

????real_server 10.10.10.11 80 {

weight 3

??????????TCP_CHECK {#tcp健康檢查

?????????????connect_timeout 10#連接超時時間

?????????????nb_get_retry 3#重連次數

?????????????delay_before_retry 3#重連間隔時間

?????????????connect_port 80#健康檢查端口

??????????}

??????}

?????real_server 10.10.10.12 80 {

?????weight 3

??????????TCP_CHECK {

?????????????connect_timeout 10

?????????????nb_get_retry 3

?????????????delay_before_retry 3

?????????????connect_port 80

??????????}

??????}

?????real_server 10.10.10.13 80 {

?????weight 3

??????????TCP_CHECK {

?????????????connect_timeout 10

?????????????nb_get_retry 3

?????????????delay_before_retry 3

?????????????connect_port 80

??????????}

??????}

}

5.4?后端WEB服務器

安裝httpd,并寫測試頁

yum install httpd

chkconfig httpd on

?

WEB01WEB02同時配置

echo "1">/proc/sys/net/ipv4/conf/default/arp_ignore

echo "2">/proc/sys/net/ipv4/conf/default/arp_announce

echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

?

arp_ignore:定義對目標地址為本地IPARP詢問不同的應答模式0?

0?-?(默認值):?回應任何網絡接口上對任何本地IP地址的arp查詢請求?

1?-?只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求?

2?-只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求,且來訪IP必須在該網絡接口的子網段內?

3?-?不回應該網絡界面的arp請求,而只對設置的唯一和連接地址做出回應?

4-7?-?保留未使用?

8?-不回應所有(本地地址)的arp查詢

?

arp_announce:對網絡接口上,本地IP地址的發出的,ARP回應,作出相應級別的限制:?確定不同程度的限制,宣布對來自本地源IP地址發出Arp請求的接口?

0?-?(默認)?在任意網絡接口(eth0,eth1lo)上的任何本地地址?

1?-盡量避免不在該網絡接口子網段的本地地址做出arp回應.?當發起ARP請求的源IP地址是被設置應該經由路由達到此網絡接口的時候很有用.此時會檢查來訪IP是否為所有接口上的子網段內ip之一.如果改來訪IP不屬于各個網絡接口上的子網段內,那么將采用級別2的方式來進行處理.?

2?-?對查詢目標使用最適當的本地地址.在此模式下將忽略這個IP數據包的源地址并嘗試選擇與能與該地址通信的本地地址.首要是選擇所有的網絡接口的子網中外出訪問子網中包含該目標IP地址的本地地址.?如果沒有合適的地址被發現,將選擇當前的發送網絡接口或其他的有可能接受到該ARP回應的網絡接口來進行發送.

關于對arp_announce?理解的一點補充

?

sysctl -p

添加VIP地址與路由

ifconfig lo:0 10.10.10.100?broadcast 10.10.10.100 netmask 255.255.255.255 up

route add -host 10.10.10.100 dev lo:0

?

5.5?共享存儲

yum -y install nfs-utils rpcbind

service nfs start

chkconfig nfs on

vim /etc/exprots

echo?“This is NFS-share test page!”>/NFSshare

后端WEB掛載共享存儲

mount 10.10.10.20:/NFSshare /var/www/html/

測試訪問VIP

5.6?測試

為測試方便,在后端WEB服務器上,寫入對用文件

?

5.6.1?負載均衡測試

停止WEB02 httpd

?

再停止WEB03 httpd

?

5.6.2?高可用測試

?

停止LVS-Master?keepalived服務

?

此時VIP已經漂移到LVS-Backup上面

?

后端web已經正常對外提供服務。

啟動Master之上的KeepalivedVIP成功漂移會MASTER之上

恢復郵件

六、注意事項

6.1 LVS安裝注意事項

ln -s /usr/src/kernels/2.6.32-642.1.1.el6.x86_64?/usr/src/linux ??#此處要根據實際操作系統最高版本的kernel?為準

./configure?--with-kernel-dir=/usr/src/kernels/2.6.32-642.1.1.el6.x86_64

(注意這個步驟要看到以下字樣才是正常的)

Use IPVS Framework : Yes

IPVS sync daemon support : Yes

6.2?將相關開機自啟服務

開機自啟服務

開機自啟腳本

開機NFS自動掛載

6.3?腳本

為方便配置,目前已經寫了兩個腳本,方便運行安裝。

MasterBackup之上配置

LVS-MB-ipvsadm.sh

#!/bin/bash

VIP=10.10.10.100

RIPS1=10.10.10.11

RIPS2=10.10.10.12

RIPS3=10.10.10.13

SERVICE=80

. /etc/rc.d/init.d/functions

case "$1" in

start)

echo "Start LVS of DR Mode"

echo "1" > /proc/sys/net/ipv4/conf/all/send_redirects

echo "1" > /proc/sys/net/ipv4/conf/default/send_redirects

echo "1" > /proc/sys/net/ipv4/conf/eth0/send_redirects

route add -host $VIP dev eth0

ipvsadm -C

ipvsadm -A -t $VIP:$SERVICE -s wlc -p

ipvsadm -a -t $VIP:$SERVICE -r $RIPS1:$SERVICE -g -w 1

ipvsadm -a -t $VIP:$SERVICE -r $RIPS2:$SERVICE -g -w 1

ipvsadm -a -t $VIP:$SERVICE -r $RIPS3:$SERVICE -g -w 1

ipvsadm --set 30 120 300

ipvsadm

;;

stop)

echo "Stop LVS DR"

ifconfig eth1 down

ipvsadm -C

;;

*)

echo "Usage:$0 {start ? stop}"

exit 1

esac

?

在后端WEB01WEB02之上配置

LVS-RS-WEB.sh

#!/bin/bash

VIP=172.16.16.100

. /etc/init.d/functions

case "$1" in

start)

echo "Start LVS of RS"

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

/sbin/route add -host $VIP dev lo:0

echo "1">/proc/sys/net/ipv4/conf/default/arp_ignore

echo "2">/proc/sys/net/ipv4/conf/default/arp_announce

echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p

;;

stop)

/sbin/ifconfig lo:0 down

echo "Close LVS of RS"

echo "0">/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0">/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p

;;

*)

echo "Usage:$0{start|stop}"

exit 1

esac











本文轉自 KaliArch 51CTO博客,原文鏈接:http://blog.51cto.com/kaliarch/1897042,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的高性能业务架构解决方案(LVS+Keepalived)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。