keepalive+lvs负载均衡配置

相关原理不做过多说明,下面主要是结合我自己的笔记,对相关的操作步骤进行的整理,中间插入了一些备注,主要是我在实际部署过程中遇到的问题,以及解决办法,也一并记录下来,希望对各位有帮助。
说明:MASTER IP:172.20.10.6 BACK_UP IP:172.20.10.4 VIP:172.20.10.100
1、同时在master和backup上安装keepalived
1.1安装keepalived的相关依赖包,避免安装keepalived过程中报错。
yum install gcc openssl-devel libnl-devel libnfnetlink-devel ipvsadm -y
gcc openssl-devel libnl-devel libnfnetlink-devel 均为keepalived 的依赖包,ipadmin为lvs管理工具
1.2安装keepalived
解压
tar xvf keepalived-1.3.9.tar.gz
注意:直接使用yum安装,1.3.5版本的keepalived,安装配置完成后一直报错,无奈改用1.3.9后正常,相关原因暂时还没弄清楚,所以我这边推荐直接下载1.3.9版本进行安装。
安装
依次执行命令:
cd keepalived-1.3.9
./configure --prefix=/usr/local/keepalived
make && make install
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin
mkdir /etc/keepalived/
ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

2、同时在master和backup上修改keepalived的配置文件
master和backup配置除了 priority和state的参数不同,其他的都相同。
vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs { #全局定义
notification_email { #定义邮件
[email protected] #定义邮件地址
}
notification_email_from [email protected] #定义邮件地址
smtp_server mail.126.com #邮件服务器
smtp_connect_timeout 30 #邮件超时时间
router_id LVS_DEVEL #route_id标识

}
vrrp_instance VI_1 { #定义VRR组,
state MASTER #定义
interface ens33 #对外访问的网络接口
virtual_router_id 100 #虚拟路由标识。注意主从要一致
priority 150 #主从优先级,主的优先级要高于从。
advert_int 2 #:广播周期秒数
authentication {
auth_type PASS
auth_pass 2209
}
virtual_ipaddress {
172.20.10.100 #:虚拟VIP地址
}
}
virtual_server 172.20.10.100 8080 { #:虚拟VIP地址 与 端口,DR架构WEB端口要和虚拟端口监听一致。否则将无法访问
delay_loop 6 #健康检查时间间隔,单位是秒
lb_algo rr #调用算法为RR
lb_kind DR #调用架构模式为DR
persistence_timeout 50 #:同一IP 50秒内的请求都发到同个real server
protocol TCP #使用TCP协议
real_server 172.20.10.6 8080 {#:真实WEB服务器地址与端口
weight 1 #:转发伐值,越高调用的越多
TCP_CHECK {
connect_timeout 10 #:连接超时为10秒
# nb_get_retry 3
delay_before_retry 3
connect_port 8080 #连接端口为8080,要和上面的保持一致
}
}

real_server 172.20.10.4 8080 {
    weight 1
    TCP_CHECK {
    connect_timeout 10
    #nb_get_retry 3
    delay_before_retry 3
    connect_port 8080

    }

 }

}

4、新增一个realserver.sh配置脚本:vi realserver.sh
#!/bin/bash
#written by netseek
#description: Config realserver lo and apply noarp
WEB_VIP=“172.20.10.100” #:修改VIP,其它的地方不动,

. /etc/rc.d/init.d/functions

case “$1” in
start)
ifconfig lo:0 $WEB_VIP netmask 255.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/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”
;;

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
echo “LVS-DR real server Stopped.”
else
echo “LVS-DR Running.”
fi
;;

*)
# Invalid entry.
echo “$0: Usage: $0 {start|status|stop}”
exit 1
;;
esac
exit 0

5、执行./realserver.sh start 启动。
注意:启动过程中可能会提示没有执行权限,执行以下命令,赋权
chmod +x “realserver.sh”
因为脚本中用到了ifconfig命令,但是很多虚拟机是没有安装ifconfig的,执行脚本时可能会导致报错。执行以下命令:
yum install net-tools

6、设置开机自启
systemctl enable keepalived
7、启动keepalived
systemctl start keepalived
8、验证
查看日志
tail -100f /var/log/messages
打开 172.20.10.100:8080 能正常打开
杀掉172.20.10.6:8080 172.20.10.100:8080能正常打开,查看日志,节点跳转到172.20.10.4
杀掉172.20.10.4:8080 172.20.10.100:8080不能正常打开
启动172.20.10.6:8080 172.20.10.100:8080能正常打开,查看日志,节点跳转到172.20.10.6

你可能感兴趣的:(keepalive+lvs负载均衡配置)