设为首页 收藏本站

运维网

查看: 519|回复: 3

[经验分享] LVS负载均衡简单配置

[复制链接]

尚未签到

发表于 2018-1-22 13:24:38 | 显示全部楼层 |阅读模式
LVS的安装与使用
第1章 LVS原理及介绍1.1 LVS简介
LVS是Linux Virtual Server的简写,意思就是Linux虚拟服务器,是一个虚拟的服务器集群系统,可以在UNIX/LINUX平台下实现负载均衡集群功能。该项目在1998年5月由章文嵩博士组织成立,是中国国内最早出现的自由软件项目之一。
LVS项目介绍:
LVS项目主页:http://www.linuxvirtualserver.org/
LVS项目介绍:http://www.linuxvirtualserver.org/zh/lvs1.html
LVS集群的体系结构:http://www.linuxvirtualserver.org/zh/lvs2.html
LVS集群中的IP负载均衡技术:http://www.linuxvirtualserver.org/zh/lvs3.html
LVS集群的负载调度:http://www.linuxvirtualserver.org/zh/lvs4.html
LVS负载均衡调度技术是在Linux内核中实现的,因此,被称之为Linux虚拟服务器(Linux Virtual Server)。我们使用该软件配置LVS时候,不能直接配置内核中的ipvs,而需要使用ipvs的管理工具ipvsadm进行管理。
q  LVS技术点小结:
1、真正实现调度的工具是IPVS,工作在Linux内核层面。
2、LVS自带的IPVS命令行管理工具是ipvsadm。
3、keepalived实现管理IPVS及负载均衡器的高可用。
4、Red hat工具Piranha WEB管理实现调度的工具IPVS。
1.2 简单术语介绍
术语简写
术语含义
CIP
客户端的IP地址,client ip
DIP
负载均衡器对应的实际IP地址
VIP
需在均衡器提供服务的地址
RIP
提供服务的节点地址
LB
负载均衡服务器
RS
节点服务器,Real   Server
1.3 DR模式介绍(Direct Routing)1、通过在调度器LB上修改数据包的目的MAC地址实现转发,注意,源IP地址任然是CIP,目的地址任然是VIP。
2、请求报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此,并发访问量大时使用效率很高(和NAT模式比)。
3、因DR模式是通过MAC地址的改写机制实现的转发,因此,所有的RS节点和调度器LB只能在一个局域网LAN中(小缺点)。
4、需要注意RS节点的VIP的绑定(lo:vip/32,lo1:vip/32)和ARP抑制问题。
5、强调下:RS节点的默认网关不需要是调度器LB的DIP,而是直接IDC机房分配的上级路由器的IP(这是RS带有外网IP地址的情况),理论讲:只要RS可以出网即可,不是必须要配置外网IP。
6、由于DR模式的调度器仅进行了目的的MAC地址的改写,因此,调度器LB无法改变请求报文的目的端口(和NAT要区别)。
7、当前,调度器LB支持几乎所有的UNIX,LINUX系统,但目前不支持WINDOWS系统。真实服务器RS节点可以是WINDOWS系统。
8、总的来说DR模式效率很高,但是配置也比较麻烦,因此,访问量不是特别大的情况下可以用haproxy或者nginx取代。这符合运维的原则:简单、易用、高效。日1000-2000W PV或并发1万以下都可以考虑使用haproxy/nginx(LVS NAT模式)。
9、直接对外的访问业务,例如:web服务做RS节点,RS最好用公网IP地址。如果不直接对外的业务,例如:MySQL,存储系统RS节点,最好只用内部IP地址。
注:直接路由,最大的特点是不更改源IP和目标IP,改变的是MAC地址
1.4 LVS集群算法
算法
说明
rr
轮循调度(Round-Robin),它将请求依次分配不同的RS节点,也就是在RS节点中均摊请求。这种算法很简单,但是只适合于RS节点处理性能相差不大的情况。
wrr
加权轮循调度(Weighted   Round-Robin),它将依据不同的RS节点的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值较低的RS节点更多。相同权值的RS得到相同数目的连接数。
wlc
加权最小连接数调度(Weighted   Least-Connection)假设各台RS的权值依次为Wi(I=1..n),当前的TCP连接次数依次为Ti(I=1..n),依次选取Ti/Wi为最小的RS作为下一个分配的RS。
dh
目的地址哈希调度,以目的地址为关键字查找一个静态hash表来获得需要的RS。
sh
源地址哈希调度,以源地址为关键字查找一个静态hash表来获得需要的RS。
第2章 LVS的安装与配置2.1 服务规划2.1.1 服务器规划表
LVS服务器
2台
负载转发四层TCP请求
HTTP服务器
2台
负载提供HTTP服务
说明:总共需要4台服务器完成本次项目
2.1.2 主机IP规划表
服务器说明
IP地址
主机名称规则
LVS服务器
10.0.0.18/24
lb01
LVS服务器
10.0.0.19/24
lb02
Nginx服务器
10.0.0.16/24
nginx
Apache服务器
10.0.0.17/24
apache
10.0.0.21/24
虚拟IP地址
2.1.3 主机名解析172.16.1.16    nginx
172.16.1.17    apache
172.16.1.18    lb01
172.16.1.19    lb02
2.2 安装环境
q  操作系统版本
1
2
3
4
5
6
[iyunv@server ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
[iyunv@server ~]# uname -r
2.6.32-431.el6.x86_64
[iyunv@server ~]# uname -m
x86_64



q  LVS软件版本
1
2
[iyunv@lb02 ~]# rpm -qa ipvsadm
ipvsadm-1.26-4.el6.x86_64



2.3 软件安装2.3.1 安装LVS服务
LVS可以通过yum命令安装,或者通过源码编译的方式安装,在此选择yum安装。分别在两台LVS服务器安装LVS服务,安装过程如下:
q  查看是否已安装inotify
1
2
[iyunv@lb02 ~]# rpm -qa ipvsadm
[iyunv@lb02 ~]#



#<==这里如果没有任何返回值就表明没有安装
q  使用yum命令安装软件
1
2
3
4
5
6
7
8
9
10
[iyunv@nginx ~]# yum -y install ipvsadm
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
*****自动安装过程略****  
Installed:
  ipvsadm.x86_64 0:1.26-4.el6                                                                                                                                                

Complete!    #<==安装完成
[iyunv@lb01 ~]# ln -s /usr/src/kernels/2.6.32-431.el6.x86_64/ /usr/src/linux    #<==创立软链接
[iyunv@lb01 ~]# ll /usr/src/linux



注:如果没有/usr/src/kernels/2.6.32-431.el6.x86_64路径,可能是因为缺少kernel-devel-2.6.18-164.el5软件包,可以通过命令yum -y install kernerl-devel 安装。
q  检测是否安装完毕
1
2
[iyunv@lb02 ~]# rpm -qa ipvsadm
ipvsadm-1.26-4.el6.x86_64



q  查看内核是否有ip_vs服务运行
1
2
3
4
[iyunv@lb01 ~]# lsmod | grep ip_vs
ip_vs                 125220  0
libcrc32c               1246  1 ip_vs
ipv6                  317340  285 ip_vs



注:如果没有以上三个输出,可以使用命令ipvsadm或者modprobe ip_vs重新加载。
2.3.2 安装其他服务
1)在nginx服务器安装nginx服务,能正常提供访问;
2)在apache服务器安装apache服务,能正常提供访问;
3)在lb01和lb02安装keepalived服务。
1
2
3
4
[iyunv@lb02 ~]# curl nginx
www
[iyunv@lb02 ~]# curl apache
apache.www



第3章 配置LVS集群3.1 手动配置LVS服务3.1.1 服务端配置为LVS服务器添加一个虚拟IP地址:
ip addr add 10.0.0.21/24 dev eth0 label eth0:0
清空以前的旧配置:
1
2
ipvsadm --help          #<==查看ipvsadm的配置参数
ipvsadm -C              #<==清空所有配置



添加一个虚拟vserver:
ipvsadm -A -t 10.0.0.21:80 -s wrr
参数说明:
-A:--add-service,表示添加一个虚拟服务器
-t:--tcp-service,指定这是一个tcp的虚拟服务器
-u:--udp-service,指定这是一个udp的虚拟服务器
10.0.0.21:80:表示提供服务的ip地址以及端口号
-s:--scheduler,指定调度器,“rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq”选择一种,默认是wlc
为服务器添加real server:
1
2
ipvsadm -a -t 10.0.0.21:80 -r 10.0.0.16:80 -g -w 1
ipvsadm -a -t 10.0.0.21:80 -r 10.0.0.17:80 -g -w 1



3.1.2 节点端配置需要添加到LVS负载均衡器的节点都需做如下配置:
q  绑定VIP
在网卡lo绑定虚拟IP,该虚拟IP同LVS服务器的虚拟IP,即10.0.0.21/24
1
2
ip addr add 10.0.0.21/32 dev lo label lo:0
route add -host 10.0.0.21 dev lo



q  设置ARP抑制
1
2
3
4
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



q  抑制参数说明
arp_ignore:定义目标地址为本地IP的ARP询问不同的应答模式
0
默认值,回应任何网络接口上对任何本地IP地址的arp查询请求
1
只回答目标IP地址是来访网络接口本地地址的ARP查询请求
2
只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内。
3
不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应。
4-7
保留未使用。
8
不回应所有(本地地址)的arp查询

arp_announce:对网络接口上,本地IP地址发出的,ARP回应,作出相应级别的限制。确定不同程序的限制,宣布对来自本地源IP地址发出的ARP请求接口。
0
默认值,在任意网络接口(eth0,eth1,lo)上任何本地地址。
1
尽量避免不在该网络子网段的地址作出arp回应。当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用,此时会检查来访IP是否为所有接口上的子网段内IP之一。如果该来访者IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理。
2
对查询目标使用最适当的本地地址,在此模式下忽略这个IP数据包的源地址并尝试选择能与该地址通信的本地地址,首要是选择所有网络接口的子网中外出访问子网中包目标IP地址的本地地址。如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送,限制了使用本地VIP地址作为优先的网络接口
3.1.3 结果服务验证访问10.0.0.21:80,查看结果是否轮循。
1
2
3
4
5
6
7
8
[iyunv@lb02 ~]# curl 10.0.0.21:80
apache.www
[iyunv@lb02 ~]# curl 10.0.0.21:80
www
[iyunv@lb02 ~]# curl 10.0.0.21:80
apache.www
[iyunv@lb02 ~]# curl 10.0.0.21:80
www



3.2 keepalived配置LVS服务
除了手动配置LVS服务器之外,使用keepalived管理LVS是一种更好的选择。keepalived默认就集成了管理LVS的功能,其配置LVS虚拟服务器内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
###############################
#      LVS的配置部分        #
###############################
virtual_server 10.0.0.21 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 10.0.0.16 80 {
        weight 1
        TCP_CHECK {
        connect_timeout 5
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
          }
        }

    real_server 10.0.0.17 80 {
        weight 1
        TCP_CHECK {
        connect_timeout 5
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
          }
        }
}






运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

点击关注更多内容
累计签到:4 天
连续签到:1 天
发表于 2018-1-31 09:19:33 | 显示全部楼层
这个挺实用的

运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

回复 支持 反对

使用道具 举报

累计签到:4 天
连续签到:1 天
发表于 2018-1-31 22:48:35 | 显示全部楼层
这个还不错

运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

回复 支持 反对

使用道具 举报

累计签到:167 天
连续签到:4 天
发表于 2018-3-21 10:52:58 | 显示全部楼层
不错,十分的详细

运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则  允许回帖邮件提醒楼主

关注运维网官方微信X

关注运维网官方微信

扫描二维码关注运维网官方微信,最新一手资源尽在官方微信!快快关注我们吧...

扫描微信二维码查看详情

客服 E-mail:kefu@yunvn.com

本站由青云提供云计算服务

运维网--中国最专业的运维工程师交流社区

京ICP备14039699号-1 Copyright © 2012-2018

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

Good good study day day up !


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


独家合作伙伴: 青云cloud

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