xq8995209 发表于 2019-1-3 08:18:15

LVS群集应用

一:LVS简介
LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立,可以实现LINUX平台下的简单负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。是一个虚拟的服务器集群系统.
可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。

LVS-NAT模型原理
用户的请求和响应都需要经过Director
源地址,目标地址都需要经过转换,而目标地址转换是透明的
这种架构的扩展有限调度器,Director将处理所有的请求,压力比较大,扩展到10个结点就不行了
要求:
1.集群节点必须在同一个物理网络中,同一个子网或者VLAN
2.DIP和RIP只能在同一个网络(子网)中,不能跨越网段
3.RIP地址通常是私有地址
4.所有的RIP,必须以DIP为网关(地址转换)
5.NAT的地址可以做端口转换(比如80--à8080)
6.任何操作系统都可以做RIP
7.Director有可能成为整个系统的瓶颈
数据传输:
通过二层(数据链路层)转发(ARP)将DR的MAC地址转换成RIP的MAC地址(不是转变,而是转发),这样就实现了数据的传输,在RSS响应后,再将RSS的MAC地址转换成RIP的MAC地址。

LVS-DR模型原理
用户的请求必须经过Director,而realserver在响应的使用直接返回请求(图有问题,有可能设的网关不同,还存在一台路由器)
需要配置iptables规则,拒绝响应MAC地址转换,或者通过修改LINUX内核响应
优点:由于它比NAT少了一个地址转换,响应速度更快
特点
1.必须处于同一个物理网络中(连在同一个交换机上)
2.RIP可以使用公网地址(建议使用)
3.Director只转发请求,而realserver直接响应请求而不转发
4.集群节点的网关,不能指向DIP
5.不能做端口转换(不支持)
6.绝大多数的操作系统都可以实现realserver,而realserver需要同一个网卡配置多个Ip地址
7.DR模式的Director比NAT模式能够带动更多的节点
数据传输:
解决数据进入:
为了避免RS直接响应,给服务器的lo:0设置VIP地址,给本地网卡设置成CIP,这样RS就不会直接响应了,隐藏了RS
解决数据出去:
而默认情况下,Linux设置数据包从哪块网卡出去,源地址设为该网卡地址,通过添加一条特殊路由信息,如果目标地址是lo的VIP地址,那么出去的时候源地址设置为lo的地址。
路由信息的原理:
添加一条主机路由,将VIP的地址自己设置成一个网段,既子网掩码为255.255.255.255,这样VIP出去的时候没有比VIP更优的了,就成为最佳IP
在互联网上性能最佳的就是DR应用,但是有一个缺点,必须要求主机间距离比较近(比如一个机房),如果发生天灾人祸,集群就完了,所以我们为了实现异地分布,要采用隧道比如***
二:案例
1. LVS负载均衡群集nat模式
拓扑图:
http://blog.运维网.com/attachment/201210/161541934.jpg
LINUX LVS配置:
# ifconfig
eth0      Link encap:Ethernet HWaddr 00:0C:29:36:75:47
          inet addr:192.168.20.100 Bcast:192.168.20.255 Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe36:7547/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          RX packets:604 errors:0 dropped:0 overruns:0 frame:0
          TX packets:356 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:63871 (62.3 KiB) TX bytes:96668 (94.4 KiB)
          Base address:0x2000 Memory:c9020000-c9040000

eth1      Link encap:Ethernet HWaddr 00:0C:29:36:75:51
          inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe36:7551/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b) TX bytes:14592 (14.2 KiB)
          Base address:0x2080 Memory:c9060000-c9080000

lo      Link encap:Local Loopback
          inet addr:127.0.0.1 Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING MTU:16436 Metric:1
          RX packets:18 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1444 (1.4 KiB) TX bytes:1444 (1.4 KiB)

# vim /etc/sysctl.conf
7 net.ipv4.ip_forward = 1
# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
# yum install ipvsadm
Installed:
ipvsadm.i386 0:1.24-10                                                                                 

Complete!
# service ipvsadm save
Saving IPVS table to /etc/sysconfig/ipvsadm:               [确定]
# service ipvsadm restart
Clearing the current IPVS table:                           [确定]
Applying IPVS configuration:                               [确定]

# ipvsadm -A -t 192.168.20.100:80 -s rr
# ipvsadm -a -t 192.168.20.100:80 -r 192.168.2.100 -m
# ipvsadm -a -t 192.168.20.100:80 -r 192.168.2.101 -m
# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP 192.168.20.100:80 rr
-> 192.168.2.101:80             Masq    1      0          0         
-> 192.168.2.100:80             Masq    1      0          0   

Realserver1配置
http://blog.运维网.com/attachment/201210/161818378.jpg
http://blog.运维网.com/attachment/201210/161841947.jpg
http://blog.运维网.com/attachment/201210/162252238.jpg
Realserver2配置
http://blog.运维网.com/attachment/201210/162513106.jpg
http://blog.运维网.com/attachment/201210/162632197.jpg
  测试:
http://blog.运维网.com/attachment/201210/162708272.jpg
http://blog.运维网.com/attachment/201210/162813808.jpg
2. LVS负载均衡群集DR模式

拓扑图:
http://blog.运维网.com/attachment/201210/162854274.jpg
Director配置

# ifconfig
eth0      Link encap:Ethernet HWaddr 00:0C:29:36:75:47
          inet addr:192.168.20.100 Bcast:192.168.20.255 Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe36:7547/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          RX packets:36 errors:0 dropped:0 overruns:0 frame:0
          TX packets:84 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4195 (4.0 KiB) TX bytes:14300 (13.9 KiB)
          Base address:0x2000 Memory:c9020000-c9040000

eth0:0    Link encap:Ethernet HWaddr 00:0C:29:36:75:47
          inet addr:192.168.20.101 Bcast:192.168.20.255 Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          Base address:0x2000 Memory:c9020000-c9040000

# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
# cd /mnt/cdrom/Cluster
# rpm -ivh ipvsadm-1.24-10.i386.rpm
# service ipvsadm save
Saving IPVS table to /etc/sysconfig/ipvsadm:               [确定]
# service ipvsadm restart
Clearing the current IPVS table:                           [确定]
Applying IPVS configuration:                               [确定]
# chkconfig ipvsadm on
# ipvsadm -A -t 192.168.20.101:80 -s rr
# ipvsadm -a -t 192.168.20.101:80 -r 192.168.20.200 -g
# ipvsadm -a -t 192.168.20.101:80 -r 192.168.20.201 -g
# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP 192.168.20.101:80 rr
-> 192.168.20.201:80            Route   1      0          0         
-> 192.168.20.200:80            Route   1      0          0   

Realserver1配置
http://blog.运维网.com/attachment/201210/163009897.jpg
# echo "net.ipv4.conf.all.arp_announce = 2" >>/etc/sysctl.conf
# echo "net.ipv4.conf.all.arp_ignore = 1" >>/etc/sysctl.conf
# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
http://blog.运维网.com/attachment/201210/163144588.jpg
http://blog.运维网.com/attachment/201210/163246330.jpg
  测试:
http://blog.运维网.com/attachment/201210/163543949.jpg
http://blog.运维网.com/attachment/201210/163601696.jpg
http://blog.运维网.com/attachment/201210/163627255.jpg



页: [1]
查看完整版本: LVS群集应用