發(fā)布時間: 2018-05-10 17:46:09
CentOS7 搭建LVS+keepalived負載均衡(二)
一、本次搭建的系統(tǒng)架構圖
- 虛擬機:VirtualBox
- virtaulbox host-only的IP地址:192.168.137.1
- 所用系統(tǒng):CentOS7
- 真實web服務器(RS1):192.168.137.5
- 真實web服務器(RS2):192.168.137.6
- Master負載均衡服務器:192.168.137.101
- backup負載均衡服務器:192.168.137.102
- 系統(tǒng)對外虛擬IP:192.168.137.100
二、Keepalived的安裝配置過程
兩臺負載均衡服務器上均需要安裝、配置Keepalived
2.1 安裝Keepalived
$ yum -y install keepalived
2.2 配置Keepalived
$ vim /etc/keepalived/keepalived.conf
配置信息如下
! Configuration File for keepalived
global_defs {
notification_email {
[email protected] #設置報警郵件地址,可以設置多個,每行一個。
[email protected] #需開啟本機的sendmail服務
}
notification_email_from [email protected] #設置郵件的發(fā)送地址
smtp_server
127.0.0.1 #設置smtp server地址
smtp_connect_timeout 30 #設置連接smtp server的超時時間
router_id
LVS_DEVEL #表示運行keepalived服務器的一個標識。發(fā)郵件時顯示在郵件主題的信息
}
vrrp_instance VI_1 {
state
MASTER #指定keepalived的角色,MASTER表示此主機是主服務器,BACKUP表示此主機是備用服務器
interface
enp0s3 #指定HA監(jiān)測網絡的接口
virtual_router_id 51 #虛擬路由標識,這個標識是一個數字,同一個vrrp實例使用唯一的標識。即同一vrrp_instance下,MASTER和BACKUP必須是一致的
priority
100 #定義優(yōu)先級,數字越大,優(yōu)先級越高,在同一個vrrp_instance下,MASTER的優(yōu)先級必須大于BACKUP的優(yōu)先級
advert_int
1 #設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
authentication
{ #設置驗證類型和密碼
auth_type
PASS #設置驗證類型,主要有PASS和AH兩種
auth_pass
1111 #設置驗證密碼,在同一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信
}
virtual_ipaddress { #設置虛擬IP地址,可以設置多個虛擬IP地址,每行一個
192.168.137.100
}
}
virtual_server 192.168.137.100 80 { #設置虛擬服務器,需要指定虛擬IP地址和服務端口,IP與端口之間用空格隔開
delay_loop
6 #設置運行情況檢查時間,單位是秒
lb_algo rr #設置負載調度算法,這里設置為rr,即輪詢算法
lb_kind DR #設置LVS實現負載均衡的機制,有NAT、TUN、DR三個模式可選
nat_mask
255.255.255.0
persistence_timeout 0 #會話保持時間,單位是秒。這個選項對動態(tài)網頁是非常有用的,為集群系統(tǒng)中的session共享提供了一個很好的解決方案。
#有了這個會話保持功能,用戶的請求會被一直分發(fā)到某個服務節(jié)點,直到超過這個會話的保持時間。
#需要注意的是,這個會話保持時間是較大無響應超時時間,也就是說,用戶在操作動態(tài)頁面時,如果50秒內沒有執(zhí)行任何操作
#那么接下來的操作會被分發(fā)到另外的節(jié)點,但是如果用戶一直在操作動態(tài)頁面,則不受50秒的時間限制
protocol
TCP #指定轉發(fā)協(xié)議類型,有TCP和UDP兩種
real_server
192.168.137.5 80 { #配置服務節(jié)點1,需要指定real server的真實IP地址和端口,IP與端口之間用空格隔開
weight
1 #配置服務節(jié)點的權值,權值大小用數字表示,數字越大,權值越高,設置權值大小可以為不同性能的服務器
#分配不同的負載,可以為性能高的服務器設置較高的權值,而為性能較低的服務器設置相對較低的權值,這樣才能合理地利用和分配系統(tǒng)資源
TCP_CHECK
{ #realserver的狀態(tài)檢測設置部分,單位是秒
connect_timeout 3 #表示3秒無響應超時
nb_get_retry 3 #表示重試次數
delay_before_retry 3 #表示重試間隔
connect_port 8066
}
}
real_server
192.168.137.6 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 8066
}
}
}
要注意的地方:
interface
enp0s3:這里的enp0s3是我的網卡名稱,想要查看自己網卡名稱的話,在/etc/sysconfig/network-scripts/ifcfg-e(敲下TAB)persistence_timeout
0:指的是在一定的時間內來自同一IP的連接將會被轉發(fā)到同一realserver中。而不是嚴格意義上的輪詢。默認為50s,因此在測試負載均衡是否可以正常輪詢時,最好先把值設置為0,方便查看TCP_CHECK { :注意TCK_CHECK和 {之間有一個空格,忘記打這個空格的話,可能會出現后面用ipvsadm查看時,某個RS查看不到
另外一個臺備用服務器上Keepavlied的配置類似,只是把MASTER改為backup,把priority設置為比MASTER低
2.3 兩臺RS上為lo:0綁定VIP地址、抑制ARP廣播
在兩臺RS上編寫以下腳本文件realserver.sh
#!/bin/bash
#description: Config realserver
VIP=192.168.137.100
/etc/rc.d/init.d/functions
case "$1" in
start)
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route
add -host $VIP dev lo:0
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
echo
"RealServer Start OK"
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/route
del $VIP >/dev/null 2>&1
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}"
exit 1
esac
exit 0
在兩臺RS上分別執(zhí)行腳本
$ sh realserver.sh start
2.4 啟用Keepavlied
$ service keepalived start
之后通過ipvsadm -L命令可以查看VIP是否已經成功映射到兩臺RS,如果發(fā)現有問題,可以通過/var/log/message查看錯誤原因
接下來就可以測試可用性了
2.4.1 測試負載均衡
2.4.2測試keepalived的監(jiān)控檢測
停掉RS1的nginx,然后在MASTER負載均衡服務器上可以到看VIP映射關系中已經剔除了192.168.137.5
(1)停掉RS1的nginx
上一篇: {紅帽 RHCE} Makefile