DR模式
lvs的三种模式
nat:地址转换
DR模式:直接路由模式
tun:隧道模式
DR模式的特点
调度器在整个lvs集群当中是最重要的,在nat模式下,即负责接受请求,同时根据负载均衡的算法转发流量,响应发送给客户端
DR模式:调度器依然负责接收请求,同时也根据负载均衡算法转发到流量到RS,响应直接由RS响应给客户端
直接路由 Direct Routing 是一种二层转发模式,二层转发的是数据帧。根据原mac地址和目的mac地址进行转发
不会修改数据包源ip和目的ip,根据数据包mac地址进行转发
DR模式下,lvs也是维护一个虚拟的IP地址,所有请求都是发送到这个vip,既然是走二层转发,当客户端请求到达调度之后,根据负载均衡的算法选择一个RS,修改vip服务器的目的mac地址,RS处理完请求之后,根据报文当中客户端的源mac地址直接把响应发送到客户端即可,不需要走调度器了
1、调度器配置了vip,RS上也配置了vip地址
vip地址冲突,调度器和RS都在同一网段,ARP通信紊乱,因为整个局域网广播,所有设备都收到了
怎么把lo这个回环的响应把它屏蔽掉,只有本机的物理ip地址响应
修改内核参数
arp_ignore=1
系统的物理IP地址才会响应ARP请求,咯不会响应ARP请求
2、返回报文时,VIP地址还在,怎么样让客户端来接收到响应
arp_announce=2
系统不适用IP数据包的源地址来响应ARP请求,直接发送物理接口的IP地址。
节点服务器的配置:
DR模式的实现:
需要两台服务器
一个vip
一个调度器地址
一个客户端
安装ipvsadm
修改网卡
关闭转发功能
修改配置文件
etc/sysctl.cof
编辑的内容
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
设置策略
先保存再重启
修改配置文件重新导出
在原有的基础上修改
修改vip的轮询算法和权重
修改两台服务器的显示内容
修改回环地址
route add-host 20.0.0.100 dev lo:0
设置ip地址为20.0.0.100添加到回环接口,作为lvs的vip。通过路由的模式转发到RS.能让vip识别到真实的服务器
-p让它生效
简述lvs的三种模式和他们的区别
lvs的三种工作模式:
NAT* | DR* | TUN | |
---|---|---|---|
优点 | 地址转换,配置简单 | 性能最好 | WAN,可以实现较远距离数据包转送 |
缺点 | 性能瓶颈 | 不支持跨网段 | 专用通道需要开通VPN(花钱) |
RS要求 | 无限制 | 必须要禁止非物理接口的ARP响应 | 要支持隧道模式 |
RS数量 | 10-20台 | 100台 | 100台 |
在原有的基础上修改
修改vip的轮询算法和权重
lvs和nginx做负载均衡的区别
lvs是四层转发 内核态 ip+端口 四层代理
nginx 四层转发 也可以七层代理
lvs(DR模式)+nginx+tomcat
lvs实现四层转发+nginx实现四层转发(动态)
访问lvs的vip地址可以实现动静分离
实验
实现一主一备
两台机器
systemctl stop firewalld
[root@test2 ~]# setenforce 0
[root@test2 ~]# vim /etc/sysctl.conf
[root@test2 ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
安装两个服务
yum -y install ipvsadm keepalived
添加策略更改权重
vim /etc/sysconfig/ipvsadm
[root@test2 ~]# systemctl restart ipvsadm
ipvsadm -e -t 20.0.0.100:80 -r 20.0.0.80:80 -w 3
[root@test2 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 20.0.0.100:80 rr-> 20.0.0.80:80 Route 3 0 0 -> 20.0.0.85:80 Route 1 0 0
修改配置文件
pwd
/etc/keepalived
[root@test2 keepalived]# ls
keepalived.conf
[root@test2 keepalived]#
可将58行以下全部删除
8 }9 notification_email_from Alexandre.Cassen@firewall.loc10 smtp_server 192.168.200.111 smtp_connect_timeout 3012 router_id lvs_01 修改名字可任意13 vrrp_skip_check_adv_addr14 vrrp_strict15 vrrp_garp_interval 016 vrrp_gna_interval 019 vrrp_instance VI_1 {20 state MASTER21 interface ens33 修改网卡22 virtual_router_id 10 主备保持一致23 priority 120 设置优先级24 advert_int 125 authentication {26 auth_type PASS27 auth_pass 111128 } 29 virtual_ipaddress {30 20.0.0.100 修改vip地址31 } 32 }
34 virtual_server 20.0.0.100 80 { 修改到服务器端口35 delay_loop 636 lb_algo rr 37 lb_kind DR 将模式修改为DR38 persistence_timeout 5039 protocol TCP