keepalived 負載均衡的 搭建

高併發網站的解決方案  html

①類   程序設計上 優化措施    由 網頁靜態化   圖片服務器   緩存技術  等 方式linux

②類  服務器進行負載均衡部署概略圖   用戶請求的虛擬網絡服務器  進行IP包裝 映射到真實服務器IP  而後進行返回ios

  

1:轉發請求
2:故障移除
3:恢復添加算法

負載均衡種類shell

1)一種是經過硬件來進行解決,常見的硬件有NetScaler、F五、Radware和Array等商用的負載均衡器,可是它們是比較昂貴的
2)一種是經過軟件來進行解決的,常見的軟件有LVS、Nginx、apache等,它們是基於Linux系統而且開源的負載均衡策略apache

第一種 :Virtual Server via Network Address Translation(VS/NAT)   windows

經過網絡地址轉換,調度器重寫請求報文的目標地址,根據預設的調度算法,將請求分派給後端真實服務器;真實服務器的響應報文經過調度器時,報文源地址被重寫再返回給客戶,完成整個負載調度過程。  後端

但一般在流量比較大的狀況下會形成調度器的瓶頸。由於服務數據的返回必須經過調度器出去。  (網絡帶寬)緩存

第二種Virtual Server via IP Tunneling(VS/TUN)   採用NAT技術時,因爲請求和響應報文都必須通過調度器地址重寫,當客戶請求愈來愈多時,調度器的處理能力將成爲瓶頸。爲了解決這個問題,調度器 把請求報文經過IP隧道轉發至真實服務器,而真實服務器將響應直接返回給客戶,因此調度器只處理請求報文。因爲通常網絡服務應答比請求報文大許多,採用 VS/TUN技術後,集羣系統的最大吞吐量能夠提升10倍。可是目前支持TUN 只有Linux系統bash

第三種:Virtual Server via Direct Routing(VS/DR)   VS/DR經過改寫請求報文的MAC地址,將請求發送到真實服務器,而真實服務器將響應直接返回給客戶。同VS/TUN技術同樣,VS/DR技術 可極大地提升集羣系統的伸縮性。這種方法沒有IP隧道的開銷,對集羣中的真實服務器也沒有必須支持IP隧道協議的要求,可是要求調度器與真實服務器都有一 塊網卡連在同一物理網段上。也就是說,在這種結構中,數據從外部到內部真實服務器的訪問會經過調度器進來,可是真實服務器對其的應答不是經過調度器出去。 即在大多數狀況下,真實服務器能夠經過各自的網關或者專用的網關對數據進行外發,從而下降調度器負載。

 

---------------------LVS-----------------------
LVS的英文全稱是Linux Virtual Server,即Linux虛擬服務器。它是咱們國家的章文嵩博士的一個開源項目。在linux內核2.6中,它已經成爲內核的一部分,在此以前的內核版本則須要從新編譯內核。

1:輪叫調度(Round-Robin Scheduling)   均勻訪問 每臺服務器   A一次 B一次
2: 加權輪叫調度(Weighted Round-Robin Scheduling)   A服務器 轉發1次   B 服務器 轉發2次
3:最小鏈接調度(Least-Connection Scheduling)    na那臺服務器鏈接數量最小 就轉發到哪臺服務器
4:加權最小鏈接調度(Weighted Least-Connection Scheduling)
5:基於局部性的最少連接(Locality-Based Least Connections Scheduling)
6:帶複製的基於局部性最少連接(Locality-Based Least Connections with Replication Scheduling)
7:目標地址散列調度(Destination Hashing Scheduling)
8:源地址散列調度(Source Hashing Scheduling)
9:最短預期延時調度(Shortest Expected Delay Scheduling)
10:不排隊調度(Never Queue Scheduling)
對應: rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq

 

 

----------------------------windows7 +虛擬機 搭建負載均衡 - 以及備用機器------------------------------------------------

負載均衡服務器 IP地址爲 192.168.1.5   主機ip地址 爲  192.168.1.6 和 192.168.1.7  備用機 ip爲192.168.1.8

 

因爲是虛擬機  在啓動 httpd 服務時 出現錯誤   此錯誤緣由 因爲IP地址是動態獲取  Apache服務不能進行映射致使

[wenbo@192 Desktop]$ service httpd start
Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

錯誤解決  vi /etc/sysconfig/network-scripts/ifcfg-eth0  進入 編輯系統信息文件

 

進入 cd  /var/www/html/ 目錄 建立 index.html文件  將本機的ip 地址寫入到 index.html中  

在每一臺服務器都建立index.html 文件  並 進行 訪問   直接訪問IP地址  確承認以訪問

在每臺服務器 上安裝 keepalived 

yum -y install keepalived   在線安裝  -y表示 安裝過程有須要確認的信息 所有贊成

倆臺主機上分別建立realserver 服務  

進入 根目錄  cd /

在/etc/init.d/文件夾下建立realserver

touch realserver  進行編輯-----------------下面爲配置參數

#!/bin/bash
#chkconfig: 2345 79 20
#description:realserver
SNS_VIP=192.168.1.10            #定義VIP變量 也就是客戶端訪問地址
. /etc/rc.d/init.d/functions #導腳本庫
case "$1" in #case語句 $1傳遞給該shell腳本的第一個參數
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP #設置Lo:0 VIP netmask 及廣播
/sbin/route add -host $SNS_VIP dev lo:0 ##route del 增長本地路由
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1 # -p <file> (default /etc/sysctl.conf) 將標準信息輸入設備空文件
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1 #route del 刪除本地路由
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
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}" #$0 是腳本自己的名字
exit 1 #表示進程正常退出
esac #case結束
exit 0 #表示進程非正常退出

 

建立以後 可能沒有執行權限  進行權限設置

chmod 775 /etc/init.d/realserver 

而後執行這個腳本 

realserver start

檢查網絡端口 

 

 

 配置負載均衡服務器

-----------------------配置    /etc/keepalived/keepalived.conf文件-------------------------------------

global_defs { ##全局配置部分
# notification_email { ##下面幾行均爲全局通知配置,能夠實現出現問題後報警,但功能有限,所以註釋掉,並採用Nagios監視lvs運行狀況
# admin@toxingwang.com
# }
# notification_email_from master@toxingwang.com
# smtp_server smtp.exmail.qq.com
# smtp_connect_timeout 30 ##會話保持時間,單位s
router_id LVS_DEVEL ##設置lvs的id,在一個網絡內應該是惟一的
}
vrrp_instance VI_1 { ##設置vrrp組,惟一且同一LVS服務器組要相同
state MASTER ##備份LVS服務器設置爲BACKUP
interface eth0 # #設置對外服務的接口
virtual_router_id 51 ##設置虛擬路由標識
priority 100 #設置優先級,數值越大,優先級越高,backup設置爲99,這樣就能實現當master宕機後自動將backup變爲master,而當原master恢復正常時,則如今的master再次變爲backup。
advert_int 1 ##設置同步時間間隔
authentication { ##設置驗證類型和密碼,master和buckup必定要設置同樣
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { ##設置VIP,能夠多個,每一個佔一行
192.168.1.10
}
}
virtual_server 192.168.1.10 80 { ##真實服務器IP配置,80表示端口
delay_loop 6 ##健康檢查時間間隔,單位s
lb_algo wrr ##負載均衡調度算法設置爲加權輪叫
lb_kind DR ##負載均衡轉發規則
nat_mask 255.255.255.0 ##網絡掩碼,DR模式要保障真實服務器和lvs在同一網段
persistence_timeout 50 ##會話保持時間,單位s     此處測試應該設置爲0 不然看不到調度結果
protocol TCP ##協議
real_server 192.168.1.6 80 { ##真實服務器配置,80表示端口
weight 3 ##權重
TCP_CHECK { ##服務器檢測方式設置 keepalived的健康檢查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
connect_timeout 5 ##鏈接超時時間
nb_get_retry 3 ##失敗重試次數
delay_before_retry 3 ##失敗重試的間隔時間
connect_port 80 ##鏈接的後端端口
}
}

real_server 192.168.1.7 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

配置完成後  啓動  keepalived  

service keepalived start

查看日誌 tail -f /var/log/messages

此時 已經完成基本的負載均衡調度服務

 

----------------------------備用服務器 ----------------

 

與主機 基本一致  可是 在 /etc/keepalived/keepalived.conf文件中

state MASTER ##備份LVS服務器設置爲 BACKUP

priority 100 #設置優先級,數值越大,優先級越高,backup設置爲99   優先必定要小於主機的優先權   不然主機復活後 沒法接管 服務

 

相關文章
相關標籤/搜索