CentOS負載均衡配置
環境:
192.168.2.254 VIP
192.168.2.8 Master-LVS-Director
192.168.2.9 Backup-LVS-Director
192.168.2.6 RealServer1
192.168.2.7 RealServer2
注意:VIP(192.168.2.200)不能被佔用!
一、配置LVS
1、安裝ipvsadm
# yum install -y ipvsadm
2、安裝keepalived
確認當前運行的內核
# ls -1 /usr/src/kernels
2.6.32-358.2.1.el6.x86_64
如果沒有請安裝linux內核請執行下面命令安裝
# yum install -y kernel-devel
安裝keepalived
# wget //www.keepalived.org/software/keepalived-1.2.7.tar.gz
# tar -zxvf keepalived-1.2.7.tar.gz
# cd keepalived-1.2.7
#./configure --sysconfdir=/etc/ --sbindir=/usr/sbin/ --with-kernel-dir=/usr/src/kernels/2.6.32-358.2.1.el6.x86_64
Configure中錯誤彙總:
1)無GCC等編譯工具
2)無openssl-devel支持
3)未安裝popt的開發包
keepalived出現configure: error: Popt libraries is required的解決方法
解決方法:
#yum install popt-devel
當一切正常,顯示如下信息
Keepalived configuration
------------------------
Keepalived version : 1.2.7
Compiler : gcc
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
IPVS use libnl : No
Use VRRP Framework : Yes
Use VRRP VMAC : No
SNMP support : No
Use Debug flags : No
# make && make install
# /usr/sbin/keepalived --version
Keepalived v1.2.7 (4/12,2013)
這樣keepalived就安裝成功了
3、配置keepalived
# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
# 全局定義
global_defs {
notification_email {
}
#notification_email_from [email protected]
#smtp主機地址
smtp_server 127.0.0.1
smtp_connect_timeout 30
#運行Keepalived服務器的一個標識
#發郵件時顯示在郵件標題中的信息
#Router_id LVS_MASTER
}
#VIP
vrrp_instance VI_1 {
#指定實例的初始狀態(角色)。在兩臺都啟動時系統會馬上選擇priority值高的作為MASTER
state MASTER
#VT_1 實例綁定的網卡
interface eth0
#VRID 標記(0-255)
virtual_router_id 51
#優先級,BACKUP的值一定要低於MASTER
priority 100
#檢查間隔
advert_int 1
#設置認證
authentication {
#認證類型
auth_type PASS
#認證密碼
auth_pass 123456
}
#VIP 這個IP在發生MASTER 到 BACKUP切換時會隨之add或del,所以每臺服務器上可以不綁定
#虛擬地址,而都放入virtual_ipaddress塊中(可以多個),keepalived會自動使用ip地址進
#行綁定(不需要依賴ifcfg-eth0),利用ip add show eth0可以看到加入的VIP
virtual_ipaddress {
192.168.2.254
}
}
#定義virtual_server (TOMCAT | 90)
virtual_server 192.168.2.254 90 {
delay_loop 6 # service polling的delay時間
lb_algo wlc # 調度算法
lb_kind DR # LVS工作方式
persistence_timeout 50 # 會話保持時間
protocol TCP # 協議類型(TCP|UDP)
#定義rs1,每一個rs都需要下面的一個配置段
real_server 192.168.2.6 90 {
weight 1 # 權值 默認1,0為失效
# inhibit_on_failure # 在服務器健康檢查失敗後不從IPVS中刪除而將其權值標記為0
# TCP方式的健康檢查
TCP_CHECK {
connect_timeout 10 # 連接超時時間
nb_get_retry 3 # 重試次數
delay_before_retry 3 # 重試間隔
connect_port 90 # 健康檢查端口
}
}
# 定義rs2
real_server 192.168.2.7 90 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 90
}
}
}
在Backup-LVS-Director(192.168.2.9)上執行上面相同的操作!
不過需要修改state MASTER為state BACKUP,並修改priority的值小於MASTER的,router_id也要調整以和MASTER區別!
二、配置RealServer
為了方便起見,在RealServer上編寫一個啟動腳本,如下:
# vim rs_start.sh
#!/bin/bash
#Description : RealServer Start!
#Last Modefiy : 2013/4/12
VIP=192.168.2.254
LVS_TYPE=DR
startrs()
{
echo "start LVS of REALServer"
if [ "$LVS_TYPE" == "DR" ];then
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
else
/sbin/ifconfig tunl0 $VIP netmask 255.255.255.255 broadcast $VIP up
/sbin/route add -host $VIP dev tunl0
fi
#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
}
stoprs()
{
if [ "$LVS_TYPE" == "DR" ];then
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
else
/sbin/ifconfig tunl0 down
echo "close LVS Tunnel server"
fi
#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
}
# ============ Main ===========
case $1 in
"start")
startrs;;
"stop")
stoprs;;
"*")
echo "Usage $0 {start|stop}"
exit 1
esac
該腳本默認啟動LVS/DR模式,通過修改腳本變量可以實現LVS/Tunnel模式的切換。
運行腳本進行rs1設置後執行相關的服務
# sh rs_start.sh start
啟動Tomcat
rs2也執行與上面相同的操作。
啟動之後查看ifconfig信息:
# ifconfig lo:0
lo:0 Link encap:Local Loopback
inet addr:192.168.2.254 Mask:255.255.255.255
UP LOOPBACK RUNNING MTU:16436 Metric:1
如果看到上面有虛擬IP的信息inet addr: 192.168.2.254說明RealServer啟動成功!
三、啟動LVS
Master/Backup LVS啟動keepalived服務
# service keepalived start
Backup-LVS 同樣執行如上命令啟動keepalived
查看Master-LVS上eth0接口在啟動keepalived前後變化
啟動keepalived之前
# ip add show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:46:cb:e4 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.8/24 brd 172.1.1.255 scope global eth0
inet6 fe80::20c:29ff:fe46:cbe4/64 scope link
valid_lft forever preferred_lft forever
啟動keepalived之後
# ip add show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:46:cb:e4 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.8/24 brd 172.1.1.255 scope global eth0
inet 192.168.2.254/32 scope global eth0
inet6 fe80::20c:29ff:fe46:cbe4/64 scope link
valid_lft forever preferred_lft forever
查看LVS運行情況
# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.254:90 wlc persistent 50
-> 192.168.6.254:90 Route 1 0 0
-> 192.168.7.254:90 Route 1 0 0
這樣LVS就全部啟動成功了!