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

[经验分享] LVS配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-14 10:55:28 | 显示全部楼层 |阅读模式
官方文档:http://www.linuxvirtualserver.org/zh

[lvs准备]

[iyunv@ceshiapp ~]# lsmod | grep ip_vs

[iyunv@ceshiapp ~]#

lsmod是检查内核运行状况,表明没有运行ipvsadm

[iyunv@ceshiapp ~]# uname -r

3.10.0-327.el7.x86_64

[iyunv@ceshiapp ~]# ln -s/usr/src/kernels/3.10.0-327.13.1.el7.x86_64/ /usr/src/linux

注意:1.lvs安装一定要设定这个软连接,否则编译的时候会报错。
    2.在/usr/src/kernel/下没有内核版本信息,则需要安装kernel-devel包,并且内核信息一定跟uname -r 对应。
   3.编译安装前 yum install -y libnl* popt*

[lvs安装]

CentOS-5.x版本的推荐安装ipvsadm-1.24版本。

CentOS-6.x版本的推荐安装ipvsadm-1.26版本。

这里在CentOS-7.x下就下载最新的一个版本

[iyunv@ceshiapp srv]# tar xf ipvsadm-1.26.tar.gz

[iyunv@ceshiapp ipvsadm-1.26]# make

[iyunv@ceshiapp ipvsadm-1.26]# make install

编译安装,如果失败,缺包就yum install-y libnl* popt*;

注意此时在lsmod | grep ip_vs依旧是没有的,因为ipvsadm并没有运行

[iyunv@ceshiapp ipvsadm-1.26]# ipvsadm

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  ->RemoteAddress:Port           ForwardWeight ActiveConn InActConn

[iyunv@ceshiapp ipvsadm-1.26]# lsmod | grep ip_vs

ip_vs                140944  0

nf_conntrack         105745  1 ip_vs

libcrc32c             12644  2 xfs,ip_vs

ipvsadm运行接下来配置。

[lvs配置]
lvs配置主要用ipvsadm管理,这里以DR模式为例子设置lvs

[ipvsadm使用说明]
Usage:

①  ipvsadm -A|E -t|u|f service-address [-s scheduler][-p [timeout]] [-M netmask] [--pe persistence_engine]

这里的t|u|f 表示tcp、udp、iptables标记,下面与这里一致

[iyunv@ceshiapp lvs]# ipvsadm-A -t 192.168.131.200:80 -s wlc

  [iyunv@ceshiapp lvs]# ipvsadm -E -t192.168.131.200:80 -s wwc

②  ipvsadm -D -t|u|f service-address

[iyunv@ceshiapp lvs]# ipvsadm -L

IP Virtual Server version1.2.1 (size=4096)

ProtLocalAddress:Port Scheduler Flags

   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.131.200:http wlc

[iyunv@ceshiapp lvs]# ipvsadm-D -t 192.168.131.200:80

[iyunv@ceshiapp lvs]# ipvsadm-L

IP Virtual Server version 1.2.1(size=4096)

Prot LocalAddress:Port SchedulerFlags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

  ③ ipvsadm -C

清除所有规则,注意是所有,与iptables -F功能类似

[iyunv@ceshiapp lvs]# ipvsadm-L

IP Virtual Server version1.2.1 (size=4096)

Prot LocalAddress:PortScheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.131.200:http wlc

[iyunv@ceshiapp lvs]# ipvsadm-C

[iyunv@ceshiapp lvs]# ipvsadm-L

IP Virtual Server version1.2.1 (size=4096)

Prot LocalAddress:PortScheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

  ④ ipvsadm -R

  载入保存在文件中的规则

  [iyunv@ceshiapp lvs]#ipvsadm -L

IP Virtual Server version1.2.1 (size=4096)

Prot LocalAddress:PortScheduler Flags

   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

[iyunv@ceshiapp lvs]# ipvsadm-R < a

[iyunv@ceshiapp lvs]# ipvsadm-L

IP Virtual Server version1.2.1 (size=4096)

Prot LocalAddress:PortScheduler Flags

   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.131.200:http wlc

  ⑤ ipvsadm -S [-n]

  保存规则到指定文件

  [iyunv@ceshiapp lvs]#ipvsadm -L

IP Virtual Server version1.2.1 (size=4096)

Prot LocalAddress:PortScheduler Flags

   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.131.200:http wlc

[iyunv@ceshiapp lvs]# > a

[iyunv@ceshiapp lvs]# cat a

[iyunv@ceshiapp lvs]# ipvsadm-S > a

[iyunv@ceshiapp lvs]# cat a

-A -t 192.168.131.200:http -swlc

⑥  ipvsadm -a|e -t|u|f service-address -rserver-address [options]

添加RS节点。-a为添加,-e为编辑,与-E类似这里就不对-e进行专门的说明了。

[iyunv@ceshiapp lvs]# ipvsadm -a -t 192.168.131.200:80-r 192.168.131.133 -g -w 5

[iyunv@ceshiapp lvs]# ipvsadm -L   

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  ->RemoteAddress:Port           ForwardWeight ActiveConn InActConn

TCP 192.168.131.200:http wlc

  ->192.168.131.133:http         Route   5     0          0

⑦      ipvsadm -d -t|u|f service-address -r server-address

  这里表示删除一个RS节点。

[iyunv@ceshiapp lvs]# ipvsadm-L   

IP Virtual Server version1.2.1 (size=4096)

Prot LocalAddress:PortScheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.131.200:http wlc

   -> 192.168.131.133:http         Route  5      0          0        

[iyunv@ceshiapp lvs]# ipvsadm-d -t 192.168.131.200:80 -r 192.168.131.133

[iyunv@ceshiapp lvs]# ipvsadm-L

IP Virtual Server version1.2.1 (size=4096)

Prot LocalAddress:PortScheduler Flags

   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.131.200:http wlc

⑧      ipvsadm -L|l [options]

  显示虚拟服务器信息

  常用的选项[options]:

-n  数字格式显示主机地址和端口

--stats  统计数据

--rate  速率

--timeout  显示tcp、tcpfin、udp的会话超时时长

-c 显示当前ipvs连接情况
⑨  ipvsadm -Z [-t|u|f service-address]
⑩      ipvsadm --set tcp tcpfin udp

  设置tcptcpfinudp的超时时间

      ipvsadm --start-daemon state [--mcast-interfaceinterface] [--syncid sid]
      ipvsadm --stop-daemon state
      ipvsadm -h

查看ipvsadm的帮助信息




[lvs实战]

①  配置DNS

按照实际的配置,这里会涉及到DNS解析的问题。一般会自建立DNS服务器或者购买域名,由于时间关系,这里提及一下。之后的访问以IP为主。

②  配置LVS虚拟IP VIP

[iyunv@ceshiapp lvs]# ifconfig eno16777736:0192.168.131.200/24 up

[iyunv@ceshiapp lvs]# ifconfig

eno16777736:0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet192.168.131.200  netmask255.255.255.0  broadcast 192.168.131.255

        ether00:0c:29:68:85:ca  txqueuelen 1000  (Ethernet)

#特别提示:ifconfigeno16777736:0 192.168.131.200 netmask 255.255.255.0 up或或者网上也有添加主机路由的方法         

route add -host 192.168.131.200 dev eno16777736
ping测试,如果Ping通,说明配置OK了。      
③  手工添加2台RS

服务端配置:

[iyunv@ceshiapplvs]# ipvsadm -C

[iyunv@ceshiapplvs]# ipvsadm --set 30 5 60                     

[iyunv@ceshiapplvs]# ipvsadm -A -t 192.168.131.200:80 -s rr -p 20

[iyunv@ceshiapplvs]# ipvsadm -a -t 192.168.131.200:80 -r 192.168.131.133 -g -w 3

[iyunv@ceshiapplvs]# ipvsadm -a -t 192.168.131.200:80 -r 192.168.131.135 -g -w 3

[iyunv@ceshiapplvs]# ipvsadm -L -n

IPVirtual Server version 1.2.1 (size=4096)

ProtLocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.131.200:80 rr persistent 20

  -> 192.168.131.133:80           Route   3     0          0        

  -> 192.168.131.135:80           Route   3     0          0     

RS配置:

[iyunv@ceshiapp_master~]# ifconfig lo:0 192.168.131.200/32 up

routeadd -host 192.168.131.200 dev lo  

在LVS-DR模式中,负载均衡服务器与真实服务器在同一个局域网内,所以必须要抑制真实服务器的ARP广播,不然会导致用户无法访问,造成严重的后果。
④  抑制ARP

抑制方法如下:

echo"1">/proc/sys/net/ipv4/conf/lo/arp_ignore

echo"2">/proc/sys/net/ipv4/conf/lo/arp_announce

echo"1">/proc/sys/net/ipv4/conf/all/arp_ignore

echo"2">/proc/sys/net/ipv4/conf/all/arp_announce

arp_ignore: 定义对目标地址为本地的IP的ARP询问不同的应答模式;

  0(默认值):只要本地配置的有相应地址,就给予响应;

1:仅在请求的目标地址配置在到达的接口上的时候,才给予响应;DR模型使用;

2:仅响应目标IP地址是来访问网络接口本地地址的ARP查询请求,且IP必须在该网络接口的子网段内。
arp_announce:对网络接口上,本地IP地址的发出的ARP回应做出相应级别的限制;

    0(默认):将本地任何接口上的任何地址向外通告;

    1:试图仅向目标网络通告与其网络匹配的地址;

    2:仅向与本地接口上地址匹配的网络进行通告;DR模型使用

⑤  测试LVS服务的转发

首先在客户端浏览器访问RS地址是否正常,然后访问DR的VIP地址,多次测试出现不同的结果说明LVS服务正常。

提示:测试过程中,会话保持的时间,浏览器缓存等可能会影响测试。


运维网声明 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-243963-1-1.html 上篇帖子: Piranha+LVS+IIS--Windows作为后端真实主机的设置方法 下篇帖子: 集群负载技术之LVS应用详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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