LVS-NAT及LVS-DR实现

Ipvsadm命令的用法

管理集群服务:ipvsadm -A|E -t|u|f service-address [-s scheduler]

-A:添加集群服务

-E:修改集群服务

-t:承载的应用层协议为基于TCP协议提供服务的协议;其server-address的格式为“VIP:PORT”,如“172.16.4.100:80”;

-u:承载的应用层协议为基于UDP协议提供服务的协议;其server-address的格式为“VIP:PORT”,如“172.16.4.100:53”;

-f:承载的应用层协议为基于TCP或UDP协议提供服务的协议,但此类报文会经由iptables/netfilter打标记,即防火墙标记,其server-address的格式为“FWM”,例如“10”;

-sscheduler:指明调度方法,默认为wlc;

删除:ipvsadm –D –t|u|f server-address

管理集群服务的RS:ipvsadm -a|e -t|u|f service-address-r server-address [-g|i|m] [-w weight]

添加或修改:

-r server-address:指明RS,server-address格式一般为“IP[:PORT:]”:注意,只支持端口映射的lvs类型才应该显示定义此处端口。

[-g|i|m]:指明lvs类型

-g:dr类型

-i:tun类型

-m:nat类型

[-w weight]:当前RS的权重;

注意:仅对于支持加权调度的scheduler,权重才有意义;

删除:

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

清空所有集群服务的定义:

ipvsadm –c

保存及恢复集群服务及RS的定义:

ipvsadm -S > /etc/sysconfig/ipvsadm

ipvsadm-save > /etc/sysconfig/ipvsadm

service ipvsadm save

ipvsadm -R < /etc/sysconfig/ipvsadm

ipvsadm-restore < /etc/sysconfig/ipvsadm

service ipvsadm restart

查看规则:ipvsadm-L|l [options]

-c:列出当前所有connection;

[[email protected] ~]# ipvsadm -L -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 00:54 SYN_RECV    172.16.0.101:57660172.16.4.1:http    172.16.4.101:http

输出说明:

pro:使用的协议

expire:连接过期时间

state:连接状态

source:客户端地址

virtual:vip地址

destination:响应客户端的RS服务器地址

 --stats:列出统计数据:

[[email protected] ~]# ipvsadm -L --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts OutPkts  InBytes OutBytes
  ->RemoteAddress:Port
TCP 172.16.4.1:http                   22      104        0   11448        0
  ->172.16.4.101:http                 11       51        0    5764        0
  ->172.16.4.102:http                 11       53        0    5684        0

输出说明:

Conns:连接数

InPkts:入站报文

OutPkts: 出战响应

InBytes:入站字节数

OutBytes:出战字节数

说明:如果地址是vip地址,则是总数;如果是RS地址,则是direction分配给vip的数据。

--rate: 列出速率

[[email protected] ~]# ipvsadm -L --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port                 CPS    InPPS  OutPPS    InBPS   OutBPS
  ->RemoteAddress:Port
TCP 172.16.4.1:http                    0        0        0       0        0
  ->172.16.4.101:http                  0        0        0       0        0
  ->172.16.4.102:http                  0        0        0       0        0

输出说明:

CPS:每秒钟连接数

InPPS:每秒钟入站报文数

OutPPS:每秒钟出战报文数

InBPS:每秒钟入站字节大小

OutBPS:每秒钟出战字节大小

-n, --numeric: 数字格式显示IP及端口;

[[email protected] ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  ->RemoteAddress:Port           ForwardWeight ActiveConn InActConn
TCP 172.16.4.1:80 rr
  ->172.16.4.101:80              Route   1     0          0        
  ->172.16.4.102:80              Route   2     0          0

输出说明:

Weight:权重

ActiveConn:活动连接

InActConn:非活动连接

--exact: 精确值;

 [[email protected]~]# ipvsadm -L --exact
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  ->RemoteAddress:Port           ForwardWeight ActiveConn InActConn
TCP 172.16.4.1:http rr
  ->172.16.4.101:http            Route   1     0          1        
  ->172.16.4.102:http            Route   2     0          0

清空计数器:及速率统计和连接信息等都会为0

ipvsadm-Z [-t|u|f service-address]

配置LVS-NAT

配置拓扑:

拓扑说明:


主机名


系统环境


IP地址


调度器


LVS


Centos6.6 64位


外网:eth0 172.16.4.100

内网:eth1 192.168.1.1


WEB-01


WEB-01


内网:eth0 192.168.1.10


WEB-02


WEB-02


内网:eth0 192.168.1.11

配置以前注意事项说明:

1、RS的网关必须指向Director

2、director需要开启路由转发功能

后端web服务器配置

WEB-01和WEB-02最好准备不同的页面,一遍测试负载均衡效果。

[[email protected] ~]# echo "WEB-01" > /var/www/html/index.html
[[email protected] ~]# service httpd start
[[email protected] ~]# echo "WEB-02" >/var/www/html/index.html
[[email protected] ~]# service httpd start

确保调度器可以访问web测试

[[email protected] ~]# curl 192.168.1.10
WEB-01
[[email protected] ~]# curl 192.168.1.11
WEB-02

调度器配置

启动路由转发功能

[[email protected]~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward= 1
[[email protected]~]# sysctl –p
net.ipv4.ip_forward= 1   #出现此选项说明转发功能开启成功

设置ipvsadm策略

[[email protected] ~]# ipvsadm -A -t 172.16.4.100:80 -s rr
[[email protected] ~]# ipvsadm -a -t 172.16.4.100:80 -r 192.168.1.10-m -w 1
[[email protected] ~]# ipvsadm -a -t 172.16.4.100:80 -r 192.168.1.11 -m -w 1

验证集群:访问为结果web-01,刷新出现web-02,说明实现了负载均衡功能

查看ipvsadm也出现了连接

[[email protected] ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  ->RemoteAddress:Port           ForwardWeight ActiveConn InActConn
TCP 172.16.4.100:80 rr
  ->192.168.1.10:80              Masq    1     0          1        
  ->192.168.1.11:80              Masq    1     0          1

配置LVS-DR

环境拓扑:

环境描述:


主机名


系统环境


IP地址


调度器


LVS


Centos6.6 64位


外网:eth0 172.16.4.100

VIP: eth0:0  172.16.4.1


WEB-01


WEB-01


外网:eth0 172.16.4.101

VIP: eth0:0  172.16.4.1


WEB-02


WEB-02


外网:eth0 172.16.4.102

VIP: eth0:0  172.16.4.1

后端web服务器配置

说明:WEB-01和WEB-02除了网页内容不一样(生产环境网页内容必须一样)之外,其他的都一样。

WEB-01配置

设置web页面

[[email protected] ~]# echo "WEB-01" >/var/www/html/index.html
[[email protected] ~]# service httpd start

设置内核参数,抑制ARP

[[email protected] ~]# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
[[email protected] ~]# echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
[[email protected] ~]# echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
[[email protected] ~]# echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

设置vip地址

[[email protected] ~]# ifconfig lo:0 172.16.4.1 broadcast172.16.4.1 netmask 255.255.255.255 up
[[email protected] ~]# ifconfig | grep 172.16.4.1
         inet addr:172.16.4.101 Bcast:172.16.255.255 Mask:255.255.0.0
         inet addr:172.16.4.1 Mask:255.255.255.255

设置路由

[[email protected] ~]# route add -host 172.16.4.1 dev lo:0

WEB-02配置

设置web页面

[[email protected] ~]# echo "WEB-02" >/var/www/html/index.html
[[email protected] ~]# service httpd start

设置内核参数

[[email protected] ~]# echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore
[[email protected] ~]# echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
[[email protected] ~]# echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
[[email protected] ~]# echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

设置VIP

[[email protected] ~]# ifconfig lo:0 172.16.4.1 broadcast172.16.4.1 netmask 255.255.255.255 up
 ifconfig |grep 172.16.4.1
[[email protected] ~]# ifconfig | grep 172.16.4.1
         inet addr:172.16.4.102 Bcast:172.16.255.255 Mask:255.255.0.0
         inet addr:172.16.4.1 Mask:255.255.255.255

设置路由

[[email protected] ~]# route add -host 172.16.4.1 dev lo:0

调度器设置

确保lvs可以访问后端web服务器

[[email protected] ~]# curl 172.16.4.101
WEB-01
[[email protected] ~]# curl 172.16.4.102
WEB-02

设置vip地址

[[email protected] ~]# ifconfig eth0:0 172.16.4.1 netmask255.255.255.255 up
ifconfig | grep 172.16.4.1
[[email protected] ~]# ifconfig | grep 172.16.4.1
         inet addr:172.16.4.100 Bcast:172.16.255.255 Mask:255.255.0.0
         inet addr:172.16.4.1 Bcast:172.16.4.1 Mask:255.255.255.255

配置负载均衡策略

[[email protected] ~]# ipvsadm -A -t 172.16.4.1:80 -s rr
[[email protected] ~]# ipvsadm -a -t 172.16.4.1:80 -r172.16.4.10 -g -w 1
[[email protected] ~]# ipvsadm -a -t 172.16.4.1:80 -r172.16.4.11 -g -w 1

客户端访问验证,持续刷新如果出现轮训效果说明配置成功

特殊情况:httpd启用长连接时的lvs轮询

httpd启动长连接的方式。

KeepAlive ON
MaxKeepAliveRequests 100
KeepAliveTimeout 15

启动之后,客户端请求通过lvs调度到后端的RS服务器,会始终调度到一个页面,直到长连接结束,rr的调度算法在这种情况下是不会实现轮训的。

使用脚本配置LVS-DR

Direction使用的脚本

#!/bin/bash
#
vip=172.16.4.1
rip=(‘172.16.4.101‘ ‘172.16.4.102‘)
weight=(‘1‘ ‘1‘)
port=80
scheduler=rr
ipvstype=‘-g‘
 
rpm -q ipvsadm >> /dev/null
if [ $? != 0 ];then
   echo"please install ipvsadm"
   exit 1
fi
 
case $1 in
start)
  iptables -F-t filter
  ipvsadm -C
 
  ifconfigeth0:0 $vip broadcast $vip netmask 255.255.255.255 up
  route add-host $vip dev eth0:0
 
  ipvsadm -A-t $vip:$port -s $scheduler
  [ $? -eq 0] && echo "ipvs service $vip:$port added."  || exit 2
 
  for i in`seq 0 $[${#rip[@]}-1]`; do
     ipvsadm-a -t $vip:$port -r ${rip[$i]} $ipvstype -w ${weight[$i]}
     [ $? -eq0 ] && echo "RS ${rip[$i]} added."
  done
 
  touch/var/lock/subsys/ipvs
;;
 
stop)
  ipvsadm -C
  ifconfigeth0:0 down
  rm -f /var/lock/subsys/ipvs
  echo"ipvs stopped."
;;
 
status)
  if [ -f/var/lock/subsys/ipvs ]; then
        echo"ipvs is running."
       ipvsadm -L -n
  else
        echo"ipvs is stopped."
  fi
;;
 
*)
  echo"Usage: `basename $0` {start|stop|status}"
  exit 3
;;
esac

RS使用的脚本

#!/bin/bash
#
vip=172.16.4.1
interface="lo:0"
 
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$interface $vip broadcast $vip netmask 255.255.255.255 up
   route add-host $vip dev $interface
;;
 
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
 
  ifconfig$interface down
;;
 
status)
  if ifconfiglo:0 |grep $vip &> /dev/null; then
        echo"ipvs is running."
  else
        echo"ipvs is stopped."
  fi
;;
 
*)
 
  echo"Usage: `basename $0` {start|stop|status}"
  exit 1
esac
时间: 2024-08-05 21:50:03

LVS-NAT及LVS-DR实现的相关文章

LVS nat模式和DR模式简介

一.介绍 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一 个由章文嵩博士发起的自由软件项目,它的官方站点是 www.linuxvirtualserver.org. linuix 内核2.4以前没有需要重新编译 LVS软件作用:通过LVS提供的负载均衡技术和Linux操作系统实现 一个高性能.高可用的服务器群集,它具有良好可靠性.可扩展性和 可操作性.从而以低廉的成本实现最优的服务性能 负载均衡(Load Balance)负载均衡集群为企业需求提供了可解

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性

Linux 虚拟服务器(LVS)由章文嵩在国防科技大学就读博士期间创建利用LVS可以实现高可用的.可伸缩的Web.Mail.Cache和Media等网络服务,已经被集成到linux内核里了. 1.什么是集群? 使用一组服务器提供相同的服务2.使用集群的目的? 增强可靠性   降低成本   提高可扩展性   提高性能3.集群分类? HPC 高性能计算集群    (气象   航天   航空)    LB    负载均衡集群 (平均地分摊处理)    * LVS    hproxy HA    高可用

LVS 的 NAT模式和DR模式介绍及搭建

LVS简介: LVS全称 Linux Vritual Server,linux虚拟服务器,主要用于多服务器的负载均衡,工作于网络层.LVS工作相似iptables,很多原理相通. LVS调度方法: # grep -i 'VS'/boot/config-2.6.32-431.el6.x86_64 |grep -A 10 'IPVS scheduler' # IPVS scheduler CONFIG_IP_VS_RR=m CONFIG_IP_VS_WRR=m CONFIG_IP_VS_LC=m C

负载均衡集群介绍(LB集群)、 LVS介绍、LVS NAT模式、LVS DR模式

负载均衡集群介绍(LB集群) LB集群是load balance集群的简写,翻译成中文就是负载均衡集群 负载均衡的原理就是当用户的请求过来时,会直接发到分发器上,然后它把用户的请求根据预先设置好的算法,只能均衡的分发到后端真正的服务器上.如果不同的机器,可能用户请求到的数据不一样,为了避免这样的情况发生,所有用到了共享存储,这样保证所有的用户请求的数据是一样的 主流开源软件LVS.keepalived.haproxy.nginx等 其中LVS属于4层(网络OSI 7层模型),nginx属于7层,

Linux集群架构(2)LVS介绍、LVS的调度算法、NAT模式搭建、 DR模式、keepalive

             负载均衡集群介绍                 LVS介绍 1.LVS NAT模式:(,目标ip转发.适用于小型集群,机器数量不多10台左右) 2.LVS IP Tunnel模式(将目标ip进行更改) (在这个模式下的rs机器都是配置有公网ip) 3.LVS DR模式(把数据包的MAC地址修改) NAT模式适合小型集群,机器在10台左右.其优势是节省公网ip. IP TUNNEL和DR 相差不大,能使用在较大的集群模式下,但是每台rs服务器都要配置有公网ip,这样会比

LVS NAT和DR的负载均衡,及算法

LVS负载均衡集群介绍负载均衡集群的作用:提供一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载带宽.增加吞吐量,加强网络数据处理能力.提高网络的灵活性和可用性.1)把单台计算机无法承受的大规模的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间,提升用户体验.2)单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高.3)7*24小时的服务保证,任意一个或多个设备节点设备宕机,不能影响到业务.在负载均

LVS负载均衡之DR模式

LVS负载均衡之DR 一.实验环境 二.实验步骤 配置VIP目的:为了客户机来请求时lvs直接调度节点服务器,节点服务器用VIP回应客户机请求.如果不配置VIP,用自己的ip回应,则客户机丢弃web本机地址,因为不是客户机所要找的IP地址. LVS配置 ip:vmnet2:192.168.1.2 VIP:eth0:0:192.168.1.254  NETMASK:255.255.255.0 1.加载ip_vs模块并安装ipvsadm #modprobe  ip_vs #yum  -y  inst

lVS(nat模式)+keepalived搭建

关于网上lvs+keepalived的文章很多,但是多数都是DR模式的方案,对于 nat模式的并不多见,因此,在此写一份nat模式的文章,仅供分享也当笔记保存. 网络拓扑结构: 现在的Linux系统内核都是支持lvs的,所以我们直接可以用yum安装ipvsadm yum 源的替换,将系统的yum源替换成163的yum源 [[email protected] ~]# cd /etc/yum.repos.d/ [[email protected] yum.repos.d]# ls centos-16

lvs nat搭建

生产环境网站离不开负载均衡.高可用性这样的字眼,不用解释便知道其中的意义与重要性.高可用性可以用keepalived实现,负载均衡可以用lvs或者nginx实现,二者的区别是lvs基于网络层,nginx基于应用层或者基于浏览器.lvs有3中实现方式,分别是nat.dr.tunel(隧道),三者大体相似,这里介绍nat模式,本文也没用介绍keepalived,以后有时间再写. 实验环境:使用vmware虚拟出4台linux,有一台作为client(rhel4.6),其中两台作为realserver

LVS NAT 模型配置实例

LVS 负载均衡 一.系统环境: 系统:Centos 6.5_64位 二.Director和Real Server的配置部署: 1台director server:VIP/外网ip:192.168.121.141 内网ip:172.16.2.31 2台real server:172.16.2.21       172.16.2.24  并且需要设置内网网关为director的内网ip:172.16.2.31 director server 2块网卡配置: 一块172.16.2.31 网卡为桥接模