基础环境
两台web服务器
nginx-1:192.168.26.130
nginx-2:192.168.26.131
image.png
lvs四层负载均衡
lvs模式:
nat模式 (替换原ip)
后端服务器支持数量10-20台
使用最少两个网段
可以说是3层负载均衡
dr模式(直接路由模式): ///基本公司都用dr模式 源ip永远不会变,变得是目标ip(nat模式除外)
后端服务器支持数量100+台
使用一个网段
可以说是2层负载均衡
tunnel隧道模式 (必须要用公网ip)///适用于异地
后端服务器支持数量100左右
异地负载均衡 realserver必须使用公网Ip,还得需要服务器支持ip隧道协议
full-nat
在同一台机器上出现两块同一网段的网卡,数据包出去的时候,谁的路由条目在上面,就走哪块网卡
ipvsadm -A -t vip:80 -s rr
ipvsadm -a -t vim:80 -r rip1:80 -g
ipvsadm -a -t vim:80 -r rip2:80 -g
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 防止ip冲突,不回应arp广播
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 用最精确的32位子网掩码发包
配置
dr模式
数据链路层负载均衡
顾名思义,数据链路层负载均衡是指在通信协议的数据链路层修改mac地址进行负载均衡。
这种数据传输方式又称作三角传输模式,负载均衡数据分发过程中不修改IP地址,只修改目的mac地址,通过配置真实物理服务器集群所有机器虚拟IP和负载均衡服务器IP地址一致,从而达到不修改数据包的源地址和目的地址就可以进行数据分发的目的,由于实际处理请求的真实物理服务器IP和数据请求目的IP一致,不需要通过负载均衡服务器进行地址转换,可将相应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽成为瓶颈。这种负载均衡方式又称作直接路由方式(DR)。
使用三角传输模式的链路层负载均衡时目前大型网站使用最广的一种负载均衡手段。在linux平台上最好的链路层负载均衡开源产品是LVS(linux virtual server)
→→→→→→ client cip23
↑ ↓
↑ ↓------->vip 30
↑ dr
↑ ↓------->dip 20
↑ +----------+
←←←←↓ ↓
rs1 rs2----->rip
21 22
设置vip30/32 设置vip30/32
1.两个rs上部署web服务
2. 给两个web服务器的lo网卡设置子网掩码为32位vip (在这之前先确定一下谁是VIP)
lo网卡:loopback netcard 本地回环网卡 负责机器操作系统内部网络进程之间通信
设临时启动放到开机启动,不要修改配置文件:工作中也是
rs1:
ifconfig lo:0 192.168.26.200/32 设置32位
rs2:
ifconfig lo:0 192.168.26.200/32
3.给两个web服务器设置内核参数
为了让vip发包出去
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
忽略arp响应 防止ip冲突 view-server配置
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
4.保证dr这台机器数据包是从dip发出去的
如何判断:route -n
谁的路由条目在上面,谁就是dip,另一个就是vip
5.在dr上设置lvs路由条目
yum install ipvsadm -y ipvasdm:用户态工具,用户通过此工具将设置传递给内核
ipvsadm -A -t 192.128.26.200:80 -s rr
ipvsadm -a -t 192.128.26.200:80 -r 192.128.26.130:80 -g
ipvsadm -a -t 192.168.26.200:80 -r 192.128.26.131:80 -g
-A 添加virtual server 添加虚拟服务器vip
-t 指定使用tcp协议
-s 指定调度策略为rr //负载均衡算法
-a 添加realserver //添加真实服务器
-r 指定realserver是谁 -r 后接真实服务器 //把真实服务器添加到虚拟服务器
让配置永久生效:
# ipvsadm-save > /etc/sysconfig/ipvsadm
# systemctl enable ipvsadm
ipvsadm -C :重新配置
网友评论