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

[经验分享] 服务负载之LVS

[复制链接]

尚未签到

发表于 2019-1-4 10:21:59 | 显示全部楼层 |阅读模式
  duang!duang!duang!今天开始写服务高可用之lvs。
  回顾一下,我们一般服务集群可分为以下三种:
    1.负载均衡集群,如lvs,nginx(7层负载),haproxy(4层,7层都可以)等
    2.高可用集群,如keepalive,heartbeat组成的高可用,数据自身的主从高可用,主主高可用
    3.高性能集群,如某些运算工作站

  LVSLinux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。lvs是根据TCP/IP4层协议,依赖内核的netfilter,工作在INPUT链上,实现4层负载,突破了套接字的限制,具有强大的并发能力。由于它不关心服务是否可用,在轮询等算法中,前端访问服务时,会出现固定比例的访问不可达,没有冗余功能。
  lvs工作模式可分为:

    1.nat,多目标DNAT,顾名思义,目标地址转换,修改请求报文的目标地址(有时也会修改端口),转发给后端服务器。

    2.dr,直接路由,修改请求报文的目标mac地址,转发给同网段服务器。
    3.tun,隧道,不修改请求报文的IP首部,在原有的IP首部上,再封装一个IP首部,有可能会突破mut的限制,可能有一些手段限制请求包的大小。

  lvs支持的算法:
    1.rr,轮询,根据ipvsadm管理表里面的次序,依次循环分配请求,绝对公平

    2.wrr,加权轮询,根据服务性能设置权重,根据权重比例分配请求,手握权重,我优先
    3.sh,源地址hash,把来自同一IP的请求始终分配同一RS主机,可以实现类似session会话保持功能

    4.dh,目标地址hash,对同一目标请求始终分配给同一RS主机,实现类似提高缓存命中功能

  上面4种为静态算法。何为静态呢?是指,前端负载,不管后端服务的性能差异,始终我行我素的按照规则分配,根据现实社会规律,当人数太多,而每个人的能力强弱不一样,平均分配会使能力差的人不太公平,古人云,能者多劳。于是有了下面的算法;
    5.lc,最少链接,最少的家伙优先分配,公式:活动链接数*256+非活动链接数之和
    6.wlc,加权最少链接,lc升级版,权重大的优先分配,公式:(活动链接数*256+非活动链接数)/权重
    7.sed,最短期望延迟,公式:(活动链接数+1)*256/权重
    8.nq,按照权重大小一次分配,再按照sed算法

    9.lblc,基于本地最小链接的目标地址hash,即为动态DH算法,先LC,再DH,目前主要用于Cache集群系统
    10.lblcr,带复制功能的LBLC
  ipvs管理工具:ipvsadm
  常用命令:
添加服务:ipvsadm -A -t 192.168.0.50:80 -s rr
修改服务:ipvsadm -E -t192.168.0.50:80 -s wrr
保存服务:ipvsadm-save = ipvsadm -S
载入服务:ipvsadm-restore =ipvsadm -R
添加RS:ipvsadm -a -t 192.168.0.50:80 -r 172.16.1.90 -m -w 1 (-m为nat工作模式)
修改RS:ipvsadm -e -t 192.168.0.50:80 -r 172.16.1.90 -g -w 1 (-g为dr工作模式)
显示链接报文数: ipvsadm -L -n --stats
  由于ipvs是工作在内核上的,我们只需要安装ipvsadm,往ipvs上面写规则就是了。
  yum install -y ipvsadm
  基于nat工作模式的lvs
  在lvs服务端,清空iptables规则,准备2台httpd服务器
  在服务端添加
  iptables -F
  ipvsadm -A -t172.16.2.10:80 -s rr
ipvsadm -a -t172.16.2.10:80 -r 172.16.1.90 -g -w 1
ipvsadm -a -t172.16.2.10:80 -r 172.16.1.91 -g -w 1




基于dr工作模式lvs
服务端配置:
iptables -F
ifconfig eth0:0 10.0.0.50 up
route add -host 10.0.0.50 dev eth0:0
添加ipvs命令
ipvsadm -A -t 172.16.2.10:80 -s rr
ipvsadm -a -t 172.16.2.10:80 -r 172.16.1.90 -g -w 1
ipvsadm -a -t 172.16.2.10:80 -r 172.16.1.91 -g -w 1


所有客户端配置:
先定义参数:
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore
在lo上配置ip别名

ifconfiglo:0 10.0.0.50/32 broadcast 10.0.0.50 up
添加lo到网卡的路由

route add-host 10.0.0.50 dev lo:0


路由设置:
echo 1 > /proc/sys/net/ipv4/ip_forward

route add default gw 192.168.0.37

  





运维网声明 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-659228-1-1.html 上篇帖子: LVS NA模型 下篇帖子: 利用LVS调整目录空间
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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