LVS(DR模式)+keepalived+tomcat架构

机器列表

项目 Value
LVS1 192.168.99.109
LVS2 192.168.99.110
real server 1 192.168.99.120:8080
real server2 192.168.99.121:8080
VIP 192.168.99.199

tomcat安装

tomcat安装

keepalived安装配置

`yum install keepalived`

配置

vrrp_instance VI_1 {
    state BACKUP #master实例就配置为MASTER
    interface ens33 # 端口名称根据需求修改
    virtual_router_id 100 #主从必须一致
    priority 90 #从实例要小于主实例
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111 #主从连接的默认密码
    }
    virtual_ipaddress {
        192.168.99.199/24 dev ens33 label  ens33:3 #这个ip配置在lvs的master的网卡上
    }
}
realserver 192.168.99.199 80 {
	delay_loop 6
    lb_algo wrr
	lb_kind DR
	net_mask 255.255.255.0
	persistence_timeout 0 #这个是在多少秒内同一个客户端的请求都会负载到同一个服务器
	protocol TCP
	real_server 192.168.99.120 80 {  #配置的后端服务器端口要和虚拟ip映射的端口一致,不然不能正常工作
		weight 1
		HTTP_GET {
			url {
			  path /
			  status_code 200
		}
	}	

    real_server 192.168.99.121 80 {
        weight 1
		HTTP_GET {
			url {
			  path /
			  status_code 200
		}  
    }  
}

LVS配置

1.安装LVS

`yum install ipvsadm`

2.关闭arp_ignore和arp_announce
因为后端服务器的lo网卡配置了vip,所以必须要将lo网卡对网络中的其他机器隐藏起来,所以要先关闭其他网卡的arp_ignore和arp_announce,不然其他网卡会泄露lo网卡的信息

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce  #注意这里关闭的是realserver的ens33端口。lo网口的这个参数不能关闭
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore   #同上

3.vip配置
(1)lvs的vip配置,只需要配置在主实例上即可掩码是24位

ifconfig ens33:3 192.168.99.199 netmask 255.255.255.0  

(2)后端服务器的vip配置在lo网口上,并且掩码是32位,所有的后端服务器都要配置

ifconfig lo 192.168.99.199 netmask 255.255.255.255  #这里的掩码是32位

4.负载策略配置

ipvsadm -A -t 192.168.99.199 -s rr #配置负载均衡器,ip为vip

ipvsadm -a -t 192.168.99.199:80 -r 192.168.99.120 -g -w 1 #后端服务器起的端口要和负载均衡器的一致
ipvsadm -a -t 192.168.99.199:80 -r 192.168.99.121 -g -w 1

5.排错
(1)查看转发策略

~]# 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.99.199:80 rr
  -> 192.168.99.120:80            Route   1      0          0         
  -> 192.168.99.121:80            Route   1      0          0     
# 这里的后端服务器端口默认和负载均衡器的一致,因此,后端服务器的端口也要与负载均衡器的一致    

(2)查看转发的连接

~]# ipvsadm -lnc #通常是下面这样的,连接上的或者快要断开连接的。
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:50  FIN_WAIT    192.168.99.1:51087 192.168.99.199:80  192.168.99.120:80
TCP 14:42  ESTABLISHED 192.168.99.1:51086 192.168.99.199:80  192.168.99.121:80

如果发现大量的SYN_RECV状态的连接,说明后端服务器路由配置有问题,只是收到了SYN包,但是无法发出来。大概率是lo网口配置有问题,比如配置成了24位掩码
解决方案

1.将lo网口掩码配置成32位,防止路由出现异常
2.lo网口的ip配置为vip

你可能感兴趣的:(linux基础知识,lvs,tomcat,运维)