欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

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

程序员文章站 2022-03-03 12:05:18
机器列表项目ValueLVS1192.168.99.109LVS2192.168.99.110real server 1192.168.99.120:8080real server2192.168.99.121:8080VIP192.168.99.199tomcat安装tomcat安装keepalived安装配置`yum install keepalived`配置vrrp_instance VI_1 { state BACKU...

机器列表

项目 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

本文地址:https://blog.csdn.net/weixin_42768584/article/details/107346811

相关标签: linux基础知识