LVS+Keepalived实现高可用集群
LVS+Keepalived介紹
LVS
LVS是LinuxVirtual Server的簡(jiǎn)寫(xiě),意即Linux虛擬服務(wù)器,是一個(gè)虛擬的服務(wù)器集群系統(tǒng)本項(xiàng)目在1998年5月由章文嵩博士成立,是中國(guó)國(guó)內(nèi)最早出現(xiàn)的自由軟件項(xiàng)目之一。目前有三種IP負(fù)載均衡技術(shù)(VS/NAT、VS/TUN和VS/DR);十種調(diào)度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。
Keepalvied
Keepalived在這里主要用作RealServer的健康狀態(tài)檢查以及LoadBalance主機(jī)和BackUP主機(jī)之間failover的實(shí)現(xiàn)
IP配置信息:
LVS-DR-Master ? ? master.director ? ? ? 192.168.88.147
LVS-DR-BACKUP ? ?slave.director ? ? ? ? 192.168.88.148
LVS-DR-VIP ? ? ? ?lo:0 ? ? ? ? ? ? ? ? 192.168.88.100
WEB1-Realserver ?webo.davy ? ? ? ? ? 192.168.88.134
WEB2-Realserver ?web0.davy ? ? ? ? ? 192.168.88.138
GateWay ? ? ? ? ? ? ? ? ? ? ? ? ? ? 192.168.88.253
主從director安裝LVS和Keepalvied軟件包
1. 下載相關(guān)軟件包
#mkdir/usr/local/src/lvs
#cd/usr/local/src/lvs
#wgethttp://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
#wgethttp://www.keepalived.org/software/keepalived-1.1.15.tar.gz
2. 安裝LVS和Keepalived
#lsmod|grep ip_vs
#uname-r
2.6.18-53.el5PAE
#ln -s/usr/src/kernels/2.6.18-53.el5PAE-i686/ /usr/src/linux
#tarzxvf ipvsadm-1.24.tar.gz
#cdipvsadm-1.24
#make&& make install
#find /-name ipvsadm ?# 查看ipvsadm的位置
#tarzxvf keepalived-1.1.15.tar.gz
#cdkeepalived-1.1.15
#./configure ?&& make && make install
#find /-name keepalived ?# 查看keepalived位置
#cp/usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
#cp/usr/local/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir/etc/keepalived
#cp/usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
#cp/usr/local/sbin/keepalived /usr/sbin/
#servicekeepalived start|stop ? ? #做成系統(tǒng)啟動(dòng)服務(wù)方便管理.
3.在主負(fù)載均衡服務(wù)器上配置keepalived.conf
主調(diào)度器
#vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
? ? ?notification_email {
? ? ?acassen@firewall.loc
? ? ?failover@firewall.loc
sysadmin@firewall.loc
? ?}
? ?notification_email_from
Alexandre.Cassen@firewall.loc
? ?smtp_server 127.0.0.1
? ?smtp_connect_timeout 30
? ?router_id LVS_DEVEL
}
vrrp_instance VI_1 {
? ? state MASTER
? ? interface eth0
? ? virtual_router_id 51
? ? priority 100
? ? advert_int 1
? ? authentication {
? ? ? ? auth_type PASS
? ? ? ? auth_pass 1111
? ? }
? ? virtual_ipaddress {
? ? ? ? 192.168.88.100
? ? }
}
virtual_server 192.168.88.100 80 {
? ? delay_loop 6
? ? lb_algo wrr
? ? lb_kind DR
? ? persistence_timeout 60
? ? protocol TCP
? ? real_server 192.168.88.134 80 {
? ? ? ? weight 3 ? ? ? ? ? ?
? ? ? ? TCP_CHECK {
? ? ? ? connect_timeout 10 ?
? ? ? ? nb_get_retry 3
? ? ? ? delay_before_retry 3
? ? ? ? connect_port 80
}
? ? }
? ? real_server 192.168.88.138 80 {
? ? ? ? weight 3
? ? ? ? TCP_CHECK {
? ? ? ? connect_timeout 10
? ? ? ? nb_get_retry 3
? ? ? ? delay_before_retry 3
? ? ? ? connect_port 80
? ? ? ? }
? ? ?}
}
從服務(wù)器
#vi/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
? ? ?notification_email{
? ? ?acassen@firewall.loc
? ? ?failover@firewall.loc
? ? ?sysadmin@firewall.loc
? ?}
? ?notification_email_from
Alexandre.Cassen@firewall.loc
? ?smtp_server 127.0.0.1
? ?smtp_connect_timeout 30
? ?router_id LVS_DEVEL
}
vrrp_instance VI_1 {
? ? state BACKUP
? ? interface eth0
? ? virtual_router_id 51
? ? priority 99
? ? advert_int 1
? ? authentication {
? ? ? ? auth_type PASS
? ? ? ? auth_pass 1111
? ? }
? ? virtual_ipaddress {
192.168.2.170
? ? }
}
virtual_server 192.168.2.17080 {
? ? delay_loop 6
? ? lb_algo wrr
? ? lb_kind DR
? ? persistence_timeout 60
? ? protocol TCP
? ? real_server 192.168.2.171 80 {
? ? ? ? weight 3 ? ? ? ? ? ?
? ? ? ? TCP_CHECK {
? ? ? ? connect_timeout 10 ?
? ? ? ? nb_get_retry 3
? ? ? ? delay_before_retry 3
? ? ? ? connect_port 80
}
? ? }
? ? real_server 192.168.2.17280 {
? ? ? ? weight 3
? ? ? ? TCP_CHECK {
? ? ? ? connect_timeout 10
? ? ? ? nb_get_retry 3
? ? ? ? delay_before_retry 3
? ? ? ? connect_port 80
? ? ? ? }
? ? ?}
}
? #/etc/init.d/keepalived start ?啟動(dòng)keepalived 服務(wù),keepalived就能利用keepalived.conf配置文件,實(shí)現(xiàn)負(fù)載均衡和高可用.
配置Realserver腳本.
#!/bin/bash
# Written by NetSeek
# description: Config realserver lo and applynoarp
WEB_VIP=192.168.88.100
. /etc/rc.d/init.d/functions
case "$1" in
start)
? ? ? ?ifconfig lo:0 $WEB_VIP netmask255.255.255.255 broadcast $WEB_VIP
? ? ? ?/sbin/route add -host $WEB_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 $WEB_VIP >/dev/null2>&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"
? ? ? ?;;
status)
? ? ? ? # Status of LVS-DR real server.
? ? ? ? islothere=`/sbin/ifconfig lo:0 | grep$WEB_VIP`
? ? ? ? isrothere=`netstat -rn | grep"lo:0" | grep $web_VIP`
? ? ? ? if [ ! "$islothere" -o !"isrothere" ];then
? ? ? ? ? ? # Either the route or the lo:0device
? ? ? ? ? ? # not found.
? ? ? ? ? ? echo "LVS-DR real serverStopped."
? ? ? ? else
? ? ? ? ? ? echo "LVS-DR Running."
? ? ? ? fi
;;
*)
? ? ? ? # Invalid entry.
? ? ? ? echo "$0: Usage: $0{start|status|stop}"
? ? ? ? exit 1
;;
esac
exit 0
賦給權(quán)限 chmod 755realserver.sh
附上realserver機(jī)上的/etc/sysctl.conf:
# Kernel sysctl configuration file for Red HatLinux
#
# For binary values, 0 is disabled, 1 isenabled. ?See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debuggingfunctionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append thePID to the core filename.
# Useful for debugging multi-threadedapplications.
kernel.core_uses_pid = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
或者采用secondary ipaddress方式配置
# vi/etc/sysctl.conf
添加以下內(nèi)容如上所示:
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
#sysctl –p
#ip addr add 61.164.122.8/32 dev lo
#ip add list 查看是否綁定
啟動(dòng)realserver啟本,在DR上可以查看LVS當(dāng)前狀態(tài):
查看lvs服務(wù)是否正常
#watch ipvsadm –ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddressort Scheduler Flags
? -> RemoteAddressort ? ? ? ? ? Forward Weight ActiveConn InActConn
TCP 61.164.122.8:80 wrr persistent 60
? -> 61.164.122.10:80 ? ? ? ? ? ?Route ? 3 ? ? 0 ? ? ? ? ?0
? -> 61.164.122.9:80 ? ? ? ? ? ? Route ? 3 ? ? 0 ? ? ? ? ?0
#tail –f/var/log/message ?監(jiān)聽(tīng)日志,查看狀態(tài),測(cè)試LVS負(fù)載均衡及高可用性是否有效。
轉(zhuǎn)載于:https://blog.51cto.com/davideylee/1386475
總結(jié)
以上是生活随笔為你收集整理的LVS+Keepalived实现高可用集群的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux中下载文件的命令
- 下一篇: 【斗医】【11】Web应用开发20天