首页 技术 正文
技术 2022年11月10日
0 收藏 367 点赞 3,280 浏览 3449 个字

LVS:Linux Virtual Server 

  一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。

  现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。

  LVS是LB集群的一种软件实现方案,类似的有haproxy,nginx,ats(apache traffice server),perbal等。

           硬件实现方法:F5公司的BIG-IP(中高端60W+一台),Citrix的Netscaler,A10公司的A10等。

LVS的组成:ipvs/ipvsadm

  ipvs:工作于内核空间netfilter中的INPUT链上的程序,可根据用户定义的集群实现请求转发

  ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的real server

    ipvsadm命令的用法:由于此命令的选项很多,可归纳为两类,

      ①管理集群服务:

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
/*
-A:添加
-E:修改
-t:TCP
-u:UDP
-f:firewall mark
service-address:
-t,tcp,vip:port
-u,udp,vip:port
-f,fwm,mark
-s scheduler:调度方法,默认是wlc
*/
ipvsadm -D -t|u|f service-address
// -D:删除

      ②管理集群上的RS:

ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
/*
-a:增加
-e:修改
-r server-address:RS的地址,rip[:port]
-g:gateway,dr(默认)
-i:ipip,tun
-m:masquerade,nat
*/

      ③查看

ipvsadm -L|l [options]
/*
-n,--numeric:数字格式显示IP和PORT
--exact:精确值
-c,--connection:显示IPVS连接
--stats:统计数据
--rate:速率
*/

      ④保存和重载

//保存:
ipvsadm -S > /PATH/TO/SOME_RULE_FILE
ipvsadm-save > /PATH/TO/SOME_RULE_FILE
//重载:
ipvsadm -R < /PATH/TO/SOME_RULE_FILE
ipvsadm-restore < /PATH/TO/SOME_RULE_FILE

     ⑤清空

//清空规则
ipvsadm -C
//清空计数器
ipvsadm -Z [-t|u|f service-address]

LVS-NAT模型实现

  Director:双网卡

    外网地址:192.168.1.102(VIP)

    内网地址:172.18.100.6(DIP)

  RS1:装载httpd做测试

    内网地址:172.18.100.11

  RS2:装载httpd做测试

    内网地址:172.18.100.12

部署:

  (1)关闭防火墙,Selinux;RS1,RS2安装httpd,并写好测试页面,开启服务,确保服务可用。

  (2)Director关闭防火墙,Selinux;清空iptables规则,开启内核ipv4_forward功能

echo 1 >> /proc/sys/net/ipv4/ip_forward

  (3)安装ipvsadm命令行工具

yum -y install ipvsadm

  (4)设定集群规则

ipvsadm -A -t 192.168.1.102:80 -s rr
ipvsadm -a -t 192.168.1.102:80 -r 172.18.100.11 -m -w 1
ipvsadm -a -t 192.168.1.102:80 -r 172.18.100.12 -m -w 1

  (5)查看指定的规则

ipvsadm -Ln

LVS简单实现NAT&DR模型

  (6)启动另外一个主机开始测试,效果如下:

LVS简单实现NAT&DR模型

总结:

  LVS-NAT设计要点:

    (1)VIP和RIP必须在同一IP网络,RIP的网关要指向DIP

    (2)支持端口映射

  LVS-NAT的缺点:

    在LVS/NAT的集群系统中,请求和响应的数据报文都需要通过负载调度器(Director),当真实服务器(RealServer)的数目在10台和20台之间时,负载调度器(Director)将成为整个集群系统的新瓶颈。


LVS-DR模型实现

    Director:

    eno16777736:192.168.1.102(DIP)设置DIP目的:如果是用了keepalived等工具做HA或者Load Balance,则在健康检查时需要用到DIP。

    eno16777736:0:192.168.1.100(VIP)    

  RS1:192.168.1.103

  RS2:192.168.1.104

部署:

  (1)关闭防火墙,Selinux;RS1,RS2安装httpd,并写好测试页面,开启服务,确保服务可用。

  (2)Director上设置VIP:

ifconfig eno16777736:0 192.168.1.100 netmask 255.255.255.255
route add -host 192.168.1.100 dev eno16777736:0/*
lvs/dr里,director的vip的netmask 没必要一定设置为255.255.255.255,也不需要再去
route add -host $VIP dev eth0:0
director的vip本来就是要像正常的ip地址一样对外通告的,不要搞得这么特殊.
*/

  (3)Director上设置规则:

ipvsadm -A -t 192.168.1.100:80 -s wrr
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.103 -g -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.104 -g -w 2

  (4)RS1和RS2的设置:主要是调整内核参数和物理接口lo的地址绑定,通过脚本实现:

#!/bin/bash
#
VIP=$2
case "$1" in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
route add -host $VIP dev lo:0
;;
stop)
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
route del $VIP
;;
*)
echo "Tips:$0{start|stop}"
;;
esac

  (5)用另外一个主机去访问VIP,可以看到效果了

总结:

  核心要点

  (1)调度器与实际服务器都有一块网卡连在同一物理网段上。

  (2)RIP和DIP一般在同一网络(因为转发是在数据链路层实现的,必须保证MAC不会变),且RIP的网关不能指向DIP;但两者未必和VIP在同一网络。

  (3)各RS需先设置内核参数,再设置物理接口lo的VIP和路由。

  (4)不支持端口映射

  (5)Director的ip_forward不需要开启转发,因为Director和RS在同一网络。

  (6)Director的VIP一般设置在网卡的别名上,如eth0:0或eno16777736:0上

  

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,085
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,560
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,409
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,182
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,819
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,902