设为首页 收藏本站
查看: 935|回复: 0

[经验分享] 四层负载均衡LVS-zLcxk的博客

[复制链接]

尚未签到

发表于 2019-1-5 09:51:57 | 显示全部楼层 |阅读模式
  一、LVS 简介
  LVS(Linux Virtual Server 虚拟服务器):是一个虚拟的四层路由交换器集群系统,根据目标地址和目标端口实现用户请求转发。
  LVS工作原理:
  1、当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
  2、PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
  3、IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链
  4、POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器
  二、LVS组成
  
  lvs有两段代码组成,ipvsadm和ipvs
  ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。
  ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)。
  
  三、LVS的术语
  Direstor Server(DS)
  Real Server(RS)
  VIP:virtual IP 向外部直接面向用户请求,作为用户请求的目标的IP地址。
  DIP:Director Server IP,主要用于和内部主机通讯的IP地址
  RIP:Real Server IP
  CIP:Client IP,客户端IP
  四、LVS的类型
  根据架构有4种不同的模型
  1、LVS-NAT (Network Address Translation)
  后端服务器支持数量10-20台
  使用最少两个网段
  可以说是3层负载均衡
  2、LVS-DR (Direct Routing 直接路由)
  后端服务器支持数量100+台
  使用一个网段
  可以说是2层负载均衡
  3、LVS-TUN(Tunneling 隧道)
  后端服务器支持数量100左右
  异地负载均衡  realserver必须使用公网Ip,还得需要服务器支持ip隧道协议
  4、FULL-NAT
  四、LVS-DR 配置

  1、基础环境:
  关闭所有机器防火墙,selinux
  两台RS服务器安装nginx并启动
  所有IP同一网段
  2、在DR上添加新网卡获得IP为 192.168.122.164
  # route  -n                  查看路由条目,排在下方的网卡IP设置为VIP,另外一个为DIP
  Destination             Gateway             Genmask             Flags         Metric     Ref            Use         Iface
  0.0.0.0                 192.168.122.1       0.0.0.0                     UG            100         0                  0            eth1
  0.0.0.0                 192.168.122.1       0.0.0.0                     UG            101         0                  0            ens8
  192.168.122.0       0.0.0.0             255.255.255.0             U              100         0                  0            eth1
  192.168.122.0       0.0.0.0             255.255.255.0             U              101         0                  0            ens8
  3、RS设置:
  # ip addr add dev lo 192.168.122.164/32           两台RS的网卡lo上添加子网掩码为32位的IP即为VIP
  给两台RS服务器设置内核参数:
  # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce         设置arp_announce文件的内容为2, 效果是使用本机最好的本地IP地址发送回应包(子网掩码较长即VIP)
  # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore                设置arp_ignore文件内容为1,效果是拒绝VIP作出ARG广播响应,以免与DR产生冲突
  4、DR设置:
  在DR上设置LVS路由条目
  # yum install ipvsadm  -y
  # ipvsadm   -A  -t 192.168.122.164:80  -s  rr
  # ipvsadm   -a   -t 192.168.122.164:80  -r 192.168.122.119:80  -g
  # ipvsadm   -a   -t 192.168.122.164:80  -r 192.168.122.175:80  -g
  -A 添加virtual server
  -t  指定使用tcp协议
  -s 指定调度策略为rr    轮询
  -a 添加realserver
  -r 指定realserver
  让配置永久生效
  # ip  vsadm-save > /etc/sysconfig/ipvsadm
  # systemctl enable ipvsadm
  5、验证:
  在CLIENT上   #  curl   http://192.168.122.164          指定VIP进行访问
  #  elinks   - - dump  http://192.168.122.164
  
  四、理论补充
  1. 客户端要找vip访问80端口,因为是在同一个网段,所以发arp广播找vip的mac地址通信,而RS上也存在同样的vip,所以要拒绝掉rs上vip的arg广播回应(设置文件arp_ignore的内容为1)
  1的意思是如果发来的广播包里面目标地址不是我的“进口地址”-->也就是“eth0”(对应的是非进口地址本地回环接口lo),那我就不回应这个arp广播。
  2. 当dr的vip收到这个广播之后,回应mac地址,然后得到客户端发来的80端口请求,再通过lvs分发到一个rs
  3. 那么dr如何分发到一个rs?
  dip发出arp广播询问rs的ip地址所对应的mac地址,然后发出一个目标ip为rs_vip,目标mac为rs_eth0_mac的包到rs(VIP+SIP的mac地址)
  4. 这个rs必须要使用lo设置的vip把回应包发出去(这样client收到之后一看源地址是vip,他就会相信这是正确的地址发来的包)
  5. 那么怎样让rs使用lo的vip而不使用eht0的sip?
  设置arp_announce文件的内容为2, 2的意思是使用本机最好的本地IP地址把回应包发出去
  6. 最后怎么算是最好的本地IP地址?
  同一个网段下,使用可变长度子网掩码最长的IP地址被认为是好IP,因为他更精确
  


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-659541-1-1.html 上篇帖子: ipvsadm命令参考(LVS) 下篇帖子: LB负载均衡集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表