龙空技术网

内网环境LVS DR配置

IT干杂铺 158

前言:

而今小伙伴们对“nginx是使用dr”大体比较珍视,小伙伴们都需要学习一些“nginx是使用dr”的相关资讯。那么小编在网上汇集了一些关于“nginx是使用dr””的相关文章,希望我们能喜欢,看官们一起来了解一下吧!

LVS环境资源规划:

CIP:192.168.159.1

DIP:192.168.159.11

RIP1:192.168.159.12

RIP2:192.168.159.13

VIP:192.168.159.10

DS:

启动ipvsadm服务

service ipvsadm start

在DS上的eth0:0接口上添加vip

ifconfig eth0:0 192.168.159.10 netmask 255.255.255.0 up

添加虚拟服务器

ipvsadm -A -t 192.168.159.10:3306 -s wrr

添加真实服务器,并绑定虚拟服务器

ipvsadm -a -t 192.168.159.10:3306 -r 192.168.159.12:3306 -g -w 1

ipvsadm -a -t 192.168.159.10:3306 -r 192.168.159.13:3306 -g -w 2

查看LVS状态

#ipvsadm -L -n

ipvsadm -L -n --sort

RS1:

在真实服务器的回环接口上添加VIP

ifconfig lo:0 192.168.159.10 netmask 255.255.255.255 up

创建本机VIP的静态路由,防止本机访问VIP时通过eth0接口出去

route add -host 192.168.159.10 dev lo:0

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

RS1:

ifconfig lo:0 192.168.159.10 netmask 255.255.255.255 up

route add -host 192.168.159.10 dev lo:0

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参数

0:表示无论哪块网卡收到arp查询请求,只要本机有此mac地址的网卡,就给予回应。

1:表示只有请求的mac地址是自己的网卡给予回应。比如一台服务器有两块网卡,其中的一块网卡收arp请求,但是请求的mac是本机的另一块网卡。那么这块网卡就一定不会作出应答。

arp_announce参数:

0:表示无论哪块网卡收到了arp的请求,只要发现本机有请求的mac,就会响应。

1:表示尽量避免响应ARP请求中MAC不是本网卡的。如一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另一块网卡的,这个时候接收到ARP请求的这块网卡就尽量避免响应。

2:表示总是使用最合适的网卡来响应。一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另一块网卡的,这个时候接收到ARP请求的这块网卡就一定不响应,只有发现请求的MAC是自己的才给与响应。

查看LVS上当前的所有连接

ipvsadm -Lcn

或者

cat /proc/net/ip_vs_conn

LVS配置持久化:

DS:

配置ipvsadm开机自启

chkconfig ipvsadm on

配置vip

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0

vim /etc/sysconfig/network-scripts/ifcfg-eth0:0

DEVICE=eth0:0

HWADDR=00:0C:29:98:AA:72

TYPE=Ethernet

UUID=b0aedc9b-a367-4215-b7bb-5db06054ceb7

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.159.10

NETMASK=255.255.255.0

HOSTNAME=db1

保存退出,重启网络服务

service netwok restart

添加虚拟服务器

ipvsadm -A -t 192.168.159.10:3306 -s wrr

添加真实服务器,并绑定虚拟服务器

ipvsadm -a -t 192.168.159.10:3306 -r 192.168.159.12:3306 -g -w 1

ipvsadm -a -t 192.168.159.10:3306 -r 192.168.159.13:3306 -g -w 2

保存ipvsadm配置

service ipvsadm save

或者

ipvsadm -S >/etc/sysconfig/ipvsadm

查看LVS状态

#ipvsadm -L -n

ipvsadm -L -n --sort

ActiveConn:是活动连接数,也就是tcp连接状态的ESTABLISHED

InActConn:是指除了ESTABLISHED以外的,所有的其它状态的tcp连接

有时候我们看到的ActiveConn会比在真实机上通过netstats看到的ESTABLISHED高很多呢?

原因是lvs自身也有一个默认超时时间.可以用ipvsadm -L --timeout查看,默认是900 120 300,分别是TCP TCPFIN UDP的时间.也就是说一条tcp的连接经过lvs后,lvs会把这台记录保存15分钟,而不管这条连接是不是已经失效!所以如果你的服务器在15分钟以 内有大量的并发请求连进来的时候,你就会看到这个数值直线上升.

我们看lvs的这个连接数是想知道现在的每台机器的真实连接数吧?怎么样做到这一点呢?其实知道现在的ActiveConn是怎样产生的,做到这一点就简 单了.举个例子:比如你的lvs是用来负载网站,用的模式是dr,后台的web server用的nginx.这时候一条请求过来,在程序没有问题的情况下,一条连接最多也就五秒就断开了.这时候你可以这样设置:ipvsadm --set 5 10 300.设置tcp连接只保持5秒中.如果现在ActiveConn很高你会发现这个数值会很快降下来,直到降到和你用nginx的status看当前连 接数的时候差不多.你可以继续增加或者减小5这个数值,直到真实机的status连接数和lvs里的ActiveConn一致.

RS1:

配置vip

cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0

vim /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0

IPADDR=192.168.159.10

NETMASK=255.255.255.255

ONBOOT=yes

NAME=loopback

保存退出,重启网络服务

service netwok restart

抑制ARP广播,编辑sysctl.conf,添加如下参数

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

保存退出,重新加载配置

sysctl -p

RS2:

配置vip

cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0

vim /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0

IPADDR=192.168.159.10

NETMASK=255.255.255.255

ONBOOT=yes

NAME=loopback

保存退出,重启网络服务

service netwok restart

抑制ARP广播,编辑sysctl.conf,添加如下参数

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

保存退出,重新加载配置

sysctl -p

LVS另一种“持久化”的办法就是将配置写入脚本,开机自动调用脚本。

对于单公网IP的企业网络,是否也可以搭建LVS DR呢?有机会再测试(前提是需要一个网关,做端口映射)

标签: #nginx是使用dr