LVS框架:php
三層結構:
網絡 (LVS--linux) (WWW , FTP ,STML) (GFS,OCFS2)
用戶 -- > Director Server ---> Real Server1
Real Server2 --> 集羣文件系統
Real Server3
軟件:
瀏覽器 ipvsadm httpd
↑
heartbeat(ldirectord) (腳本:lvsrc)
keepalivedhtml
Director Server :
LVS : Linux Virtual Server 虛擬服務器,章文嵩,高吞吐量,高穩定。node
IPVS:IP負載均衡核心軟件,虛擬一個IP,維持一個Real Server路由表。
轉發請求到Real Server,Real Server如何返回數據
配置方法:1.ipvsadm命令
2:第三方插件或工具如ldirectord
3.:Redhat界面工具piranhalinux
相關技術:
一、IP負載均衡技術:
VS/NAT :Virtual Server via Network Address Translation---網絡地址轉換
每次必須通過DR服務器。
VS/TUN :Virtual Server via IP Tunneling--- IP隧道
VS/DR:Virtual Server via Direct Routing--直接路由算法
二、負載調度算法
輪叫調度:rr(Tound Robin):1:1調度
加權輪叫調度:wrr(Werghted Round Robin)
最少鏈接調度:Least Connections
加權最少鏈接調度:Weighted Least Connectionscentos
3.高可用
heartbeat主要模塊:
heartbeat負責檢測director server節點是否存在 ,通常經過使用廣播ping對方
配置文件:/etc/ha.d/ha.cf
資源文件:/etc/ha.d/haresource
認證文件:/etc/ha.d/authkeys
ldirectord 1.其配置文件能配置ipvs,並調用ipvsadm實現負載均衡
2.檢測real server看是否存在,維護ipvsadm的路由表。
配置文件:/etc/ha.d/ldirectord.cf
日誌文件:/var/log/ldirectord.log
stonith:(shut the other node in the head)不能檢測到心跳時,經過串口鏈接的對方的stonith設備關斷對方電源防止腦裂。(雙方的服務都在開啓同時使用資源)瀏覽器
keepalived
piranha:bash
----部署流程---服務器
*************************安裝IPVS**************************網絡
1.modprobe -l |grep ipvs 查看內核是否支持LVS的IPVS模塊
/lib/modules/2.6.18-308.el5/kernel/net/ipv4/ipvs/ip_vs.ko
/lib/modules/2.6.18-308.el5/kernel/net/ipv4/ipvs/ip_vs_dh.ko
/lib/modules/2.6.18-308.el5/kernel/net/ipv4/ipvs/ip_vs_ftp.ko
/lib/modules/2.6.18-308.el5/kernel/net/ipv4/ipvs/ip_vs_lblc.ko
/lib/modules/2.6.18-308.el5/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko
/lib/modules/2.6.18-308.el5/kernel/net/ipv4/ipvs/ip_vs_lc.ko
/lib/modules/2.6.18-308.el5/kernel/net/ipv4/ipvs/ip_vs_nq.ko
/lib/modules/2.6.18-308.el5/kernel/net/ipv4/ipvs/ip_vs_rr.ko
/lib/modules/2.6.18-308.el5/kernel/net/ipv4/ipvs/ip_vs_sed.ko
/lib/modules/2.6.18-308.el5/kernel/net/ipv4/ipvs/ip_vs_sh.ko
/lib/modules/2.6.18-308.el5/kernel/net/ipv4/ipvs/ip_vs_wlc.ko
/lib/modules/2.6.18-308.el5/kernel/net/ipv4/ipvs/ip_vs_wrr.ko
2.rpm -ivh ipvsadm-1.24-13.el5.x86_64.rpm
也能夠經過源碼安裝。
3.使用ipvsadm命令查看當前狀態:
ipvsadm
*************************heartbeart**************************
director server安裝heeatbeat
rpm包:
下載地址:pkgs.org/centos-5/centos-extras-x86_64/
heartbeat-2.1.3-3.el5.centos.x86_64.rpm
heartbeat-devel-2.1.3-3.el5.centos.x86_64.rpm
heartbeat-gui-2.1.3-3.el5.centos.x86_64.rpm
heartbeat-ldirectord-2.1.3-3.el5.centos.x86_64.rpm
heartbeat-pils-2.1.3-3.el5.centos.x86_64.rpm
heartbeat-stonith-2.1.3-3.el5.centos.x86_64.rpm
依賴包:
下載地址:rpm.pbone.net
配置heartbeat:
vi /etc/ha.d/ldirectord.cf
# Global Directives
checktimeout=20
checkinterval=10
#fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
#logfile="local0"
#emailalert="admin@x.y.z"
#emailalertfreq=3600
#emailalertstatus=all
quiescent=no
# Sample for an http virtual service
virtual=192.168.12.200:80
real=192.168.12.132:80 gate
real=192.168.12.133:80 gate
fallback=127.0.0.1:80 gate
service=http
request="index.html"
receive="Test Page"
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80
virtualhost=www.liaoyi.net
vi /etc/ha.d/ha.cf
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
bcast eth1 # Linux
auto_failback on
node DR1
node DR2
ping 192.168.12.1
respawn hacluster /usr/lib/heartbeat/ipfail
vi /etc/ha.d/haresources
DR1 IPaddr::192.168.12.200/24/eth0 ldirectord
vi /etc/ha.d/authkeys
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!
---Real Server配置---
增長虛擬ip腳本:
#!/bin/bash
#description : Start Real Server
VIP=192.168.12.200
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo "Start LVS of Real Server"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
echo "Close LVS Director Server"
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 "Usage: $0 {start|stop}"
exit 1
esac
*************************keepalived***************************
director server上安裝keepalived
rpm -ivh e2fsprogs-devel-1.39-33.el5.x86_64.rpm
rpm -ivh keyutils-libs-devel-1.2-1.el5.x86_64.rpm
rpm -ivh libsepol-devel-1.15.2-3.el5.x86_64.rpm
rpm -ivh libselinux-devel-1.33.4-5.7.el5.x86_64.rpm
rpm -ivh krb5-devel-1.6.1-70.el5.x86_64.rpm
rpm -ivh zlib-devel-1.2.3-4.el5.x86_64.rpm
rpm -ivh openssl-devel-0.9.8e-22.el5.x86_64.rpm
*************************piranha***************************
安裝piranha:
rpm -ivh php-common-5.3.3-3.el6_2.8.x86_64.rpm rpm -ivh php-cli-5.3.3-3.el6_2.8.x86_64.rpm rpm -ivh php-5.3.3-3.el6_2.8.x86_64.rpm rpm -ivh piranha-0.8.5-19.el6.x86_64.rpm