准备shell
三台机器,须要三台机器的公网IP,而且须要一个VIP。后端
调度器IP:192.168.42.128浏览器
服务器rs1 IP:192.168.42.129bash
服务器rs2 IP:192.168.42.130服务器
VIP:192.168.42.200架构
在调度器上编写一个shell脚本/usr.local/sbin/lvs_dr.sh:负载均衡
#! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward ipv=/usr/sbin/ipvsadm vip=192.168.42.200 rs1=192.168.42.129 rs2=192.168.42.130 #注意这里的网卡名字 ifdown ens33 ifup ens33 ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip dev ens33:2 $ipv -C $ipv -A -t $vip:80 -s wrr $ipv -a -t $vip:80 -r $rs1:80 -g -w 1 $ipv -a -t $vip:80 -r $rs2:80 -g -w 1
在两台服务器上编写一个脚本 /usr/local/sbin/lvs_re.sh:测试
#/bin/bash vip=192.168.42.200 #把vip绑定在lo上,是为了实现rs直接把结果返回给客户端 ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 #如下操做为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端 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
在三台机器上执行各自的脚本spa
测试rest
浏览器访问VIP
LVS架构中,不管是NAT模式仍是DR模式,当后端的真实服务器宕掉的时候,调度器依然会把请求转发给宕掉的服务器上,这样的结果并非咱们想要看到的。使用keepalived就能够解决这个问题,keepalived不只有高可用功能,还有负载均衡的功能。在调度器上安装了keepalived,就不用再安装ipvsadm,一不用编写LVS相关的脚本,由于keepalived已经嵌入了LVS功能。完整的keepalived+LVS架构须要两台调度器实现高可用,提供调度服务的须要一台,另一台作备用。
准备
为节省资源,值设置一台调度器上安装keepalived,而且准备两台服务器和准备一个VIP。
主keepalived:192.168.42.128
服务器rs1:192.268.42.129
服务器rs2:192.168.42.130
VIP:192.168.42.200
编辑keepalived配置文件 /etc/keepalived/keepalived.conf
须要更改里面ip信息,
若是之前执行过LVS的脚本就须要执行一些操做:
ipvsadm -C
systemctl restart network
两台服务器上都执行设置DR模式的脚本
调度器上启动keepalived
systemctl start keepalived
查看有没有keepalived进程
ps aux |grep keepalived
在浏览器上访问vip来检验是否成功,而后把其中一台服务器的Nginx关闭,而后刷新浏览器查看结果。
使用ipvsadm -ln查看链接数