最近刚辞掉工作,兼职做给一些小客户做一些系统维护的工作,给一个客户搭建lvs+keepalived软负载,以前都是手动做的,因为确实也很快,但是后来闲来无聊,发现其实脚本的话更快,而且也避免了人工出错的概率。keepalived似乎就是为lvs而生的,他的两大功能;healthcheck和failover分别解决了对集群的健康监测已经对备用directServer的自动切换共嫩,确实很棒!话不多说了,直接上脚本吧!keepalived的主备端的配置文件keepalived.conf,你们根据自己生产环境的实际情况自己添加吧
auto_lvsserver.sh
___________________________________________________
#!/bin/bash
# description: auto install lvs and keepalived
yum -y install popt-static kernel-develmakegcc openssl-devel lftp libnl* popt*
# website director vip.
VIP=192.168.1.181
RIP1=192.168.1.101
RIP2=192.168.1.102
#RIP3=192.168.1.103
#RIP4=192.168.1.104
verName="$(uname -r)"
ln -s /usr/src/kernels/${verName} /usr/src/linux
path=/home/tools
mkdir -p /home/tools
cd $path
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24 && make && make install
ipvsadm
ipvsadm -A -t $VIP:80 -s rr -p 20
ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
ipvsadm-save > /etc/sysconfig/ipvsadm
/etc/init.d/ipvsadm restart
echo "lvs server is install successful"
echo "#install keepalived tools---------------------------------------->"
#download keepalived
cd $path
wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
tar zxvf keepalived-1.2.7.tar.gz
cd keepalived-1.2.7
./configure
[ $? -ne 0 ] && echo "ERROR,Keepalived Configure." && exit 1
make && make install
[ $? -ne 0 ] && echo "ERROR,Keepalived Installing." && exit 1
cd
echo "#check follow file and folder--------------------->"
ls -l /usr/local/sbin/keepalived
ls -l /usr/local/etc/rc.d/init.d/keepalived
ls -l /usr/local/etc/sysconfig/keepalived
ls -l /usr/local/etc/keepalived
echo "#copy keepalived command and keepalived configuration--------------->"
mkdir -p /etc/keepalived
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
echo "set system ipv4 forward------------------------------------>"
sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g' /etc/sysctl.conf
sysctl -p
echo "start keepalived -------------------------------->"
service keepalived start
#check
ps -ef |grep keepalived
ipvsadm -L -n
service keepalived stop
#END
------------------------------------------------------------------------------
后端RealServer的本地回环地址需要绑定VIP地址,同时又要抑制arp,放到/etc/init.d/lvs下
chmod 755 /etc/init.d/lvs
#!/bin/bash
# Written by jerry
# description: Config realserver lo and apply noarp
VIP=192.168.1.181
. /etc/init.d/functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP 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
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
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"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop}"
esac
exit 1
-------------------------------------------------------------------------------
keepalived.conf配置文件,路径在/etc/keepailved/keepalived.conf
---------------------------------------------------------------------------------
! Configuration File for keepalived
global_defs {
notification_email {
64782575@qq.com
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS01
}
vrrp_instance VI_1 {
state MASTER #备份服务器上MASTER为BACKUP
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 51
priority 100 #备份服务上优先级要低于100,如改为90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.181
}
}
#
virtual_server 192.168.1.181 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
#persistence_timeout 50
protocol TCP
real_server 192.168.1.101 80 {
weight 1
TCP_CHECK {
connect_timeout 8
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.1.102 80 {
weight 1
TCP_CHECK {
connect_timeout 8
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
特别提醒
刷新没切换页面,可以查这两个原因:
1)ipvsadm是否使用persistent,使用ipvsadm -ln就可以查看到。
2)绝大部分是因为浏览器keep-alive造成的,也就是长连接。你可以使用firefox来测试,在地址栏输入about:config,进去之后修改network.http.keep-alive=false,取消长连接。这样你每次刷新都会看到不同的页面。
转载于:https://blog.51cto.com/jinyan2049/1034924
本文介绍如何使用脚本自动化部署LVS和Keepalived进行软负载均衡,包括安装、配置和验证过程,以实现高效、稳定的集群服务。
6824

被折叠的 条评论
为什么被折叠?



