1:原理圖
底層原理
2:負載集合的功能:
1)客戶端傳過來的請求,在負載均衡那里,根據算法,把用戶的請求給指定的服務器,
2)如果負載均衡主機宕機了,備機馬上接手,如果主機恢復了,備機馬上退后
3)如果某個服務器掛了,該服務器馬上被踢出去,負載均衡轉發請求不發該服務器,如果服務器恢復了,馬上添加進來,添加到負載均衡的服務器群中。
3:負載均衡搭建
3.1准備4台虛擬機,2台作為負載均衡主從機,2台作為httpd服務器
3.2獲取2台服務器的ip
[root@fei etc]# ifconfig
eth1
inet addr:192.168.163.130
[root@fei etc]# ifconfig
eth1
inet addr:192.168.163.131
3.3分別為2台服務器配置vip
[root@fei ~]# cd /etc/init.d/
[root@fei ~]#touch realserver
[root@fei ~]#vim realserver
SNS_VIP=192.168.163.150
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_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)
ifconfig lo:0 down
route del $SNS_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
為realserver文件配置權限
chmod 750 realserver
//啟動
[root@fei init.d]# service realserver start
RealServer Start OK
//效果
[root@fei ~]# ipconfig
lo:0 Link encap:Local Loopback
inet addr:192.168.163.150 Mask:255.255.255.255
UP LOOPBACK RUNNING MTU:65536 Metric:1
//2台服務器配置默認訪問頁面
[root@fei html]# vim /var/www/html/index.html
130 130 130
[root@fei html]# vim /var/www/html/index.html
130 130 131
//分別開啟2台httpdf服務器
[root@fei html]# service httpd start
正在啟動 httpd:
效果如下
以上參數說明
SNS_VIP=192.168.163.150 #定義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 #表示進程非正常退出
1):安裝 keepalived
yum –y install keepalived
2):配置 keepalived
> /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf
global_defs {
# notification_email {
# admin@toxingwang.com
# }
# notification_email_from master@toxingwang.com
# smtp_server smtp.exmail.qq.com
# smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.163.150
}
}
virtual_server 192.168.163.150 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.163.130 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.163.131 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
啟動並查看日志
[root@fei keepalived]# service keepalived start
正在啟動 keepalived: [確定]
[root@fei keepalived]# tail -f /var/log/messages
ar 26 05:37:06 fei Keepalived_vrrp[37022]: VRRP_Instance(VI_1) Transition to MASTER STATE
Mar 26 05:37:06 fei Keepalived_vrrp[37022]: VRRP_Instance(VI_1) Received lower prio advert, forcing new election
Mar 26 05:37:07 fei Keepalived_vrrp[37022]: VRRP_Instance(VI_1) Entering MASTER STATE
以上就把主機的負載均衡配置好了。
3.5 重復3.4,在另外一台虛擬機上配置負載均衡備機
配置說明
global_defs { ##全局配置部分
# notification_email { ##下面幾行均為全局通知配置,可以實現出現問題后報警
# admin@toxingwang.com
# }
# notification_email_from 2637282556@qq.com
# 2637282556.qq.com
# smtp_connect_timeout 30
router_id LVS_DEVEL ##設置lvs的id,在一個網絡內應該是唯一的
}
vrrp_instance VI_1 { ##設置vrrp組,唯一且同一LVS服務器組要相同
state MASTER ##備份LVS服務器設置為BACKUP
interface eth0 # #設置對外服務的接口,如果虛擬機是復制的,該接口可能是eth1
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.163.150
}
}
virtual_server 192.168.163.150 80 {/
delay_loop 6 ##健康檢查時間間隔,單位s,查看httpd服務器還在不
lb_algo wrr ##負載均衡調度算法設置為加權輪叫
lb_kind DR ##負載均衡轉發規則
nat_mask 255.255.255.0 ##網絡掩碼,DR模式要保障真實服務器和lvs在同一網段
persistence_timeout 50 ##會話保持時間,單位s,就是與httpd服務器保持的時間,在該時間段的,所有請求都跳轉到該hhtpd的服務器,(session計算規則,最后一次服務器請求的時間作為開始時間)
protocol TCP ##協議
real_server 192.168.163.130 80 { ##真實服務器配置,80表示端口
weight 3 ##權重
TCP_CHECK { ##服務器檢測方式設置 keepalived的健康檢查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
connect_timeout 0 ##連接超時時間
nb_get_retry 3 ##失敗重試次數
delay_before_retry 3 ##失敗重試的間隔時間
connect_port 80 ##連接的后端端口
}
}
real_server 192.168.163.131 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}