Linux集群--简单实现LVS-DNAT及LVS-DR

LVS-DNAT

工作原理:

在数据包进入本机内部之前,就改变它的目的地址(需要在内核实现)

LVS的工作机制类似iptables,一部分工作在用户空间(ipvsadm),一部分工作在内核空间

安装ipvsadm软件就足以实现LVS的功能

使用ipvsadm,早期需要重新编译内核,不过现在版本的redhat默认直接做进内核

# 查看内核是否含有ipvs

grep –I –c 5 ipvs /boot/config-‘uname -r’

ipvsadm命令的使用:

ipvsadm功能

1:定义集群服务

2:定义真正的REALSERVER

3:查看定义的信息

1.定义集群服务

ipvsadm

-t 基于tcp的集群服务

-u 基于udp

-f 基于firewall的集群服务,防火墙的类型

-A 添加一个新集群

-E 修改一个集群

-s 指定算法 默认 wlc

-D 删除一个集群

-g|i|m gateway|internet|net DR|TUN|DNAT模型

-w 权重

-C 清空规则

-S 保存规则到某个文件

-R 从某个文件恢复规则

-L|l 查看

-n --numeric 数字方式显示地址

--stats 显示统计的数据信息(statistics的简写)

--rate 显示速率信息

-Z 清空计数器

添加/删除director端

ipvsadm -A| -E -t |-u VIP:port -s

ipvsadm -D -t|-u VIP:port

添加/删除realserver端

ipvsadm -a |-e -t|-u VIP:port -r REALSERVER[-g|-i|-m] [-w weight]

ipvsadm -d -t|-u VIP:port -r READSERVER

配置安装LVS

1.安装OS

2.后方安装apache

3.设置默认路由

4.安装lvs

5.配置LVS,定义好规则

6.做测试

1.两个apache作为realserver 只提供静态页面

2.Directory打开转发功能

3.两个realserver处于同一个网段

准备:

1)3台干净的虚拟机:RS1 RS2 Director (需要加一块网卡)

2) 配置各自的好yum源

一:配置好地址,安装软件

realserver端:

ifconfig eth0 10.0.0.11/8

route add default gw 10.0.0.1/8

yum install httpd php php-mysql mysqlmysql-server php-mbstring -y

# 测试网页是否显示

vim /var/www/html/index.html

realserver1

service httpd start

elinks http://10.0.0.11

directory端:

ifconifg eth0 10.0.0.1/8

yum install ipvsadm

# 打开ipforward

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

#添加director

ipvsadm -A -t 172.16.14.1:80 -s rr

# 查看集群服务

ipvsadm -L -n

#添加realserver

ipvsadm -a -t 172.16.14.1:80 -r 10.0.0.11-m

ipvsadm -a -t 172.16.14.1:80 -r 10.0.0.12-m

ipvsadm -L -n

集群已经构建好了。。。。用浏览器测试下

# 压力测试,十个并发连接,发起10000次

ab -c 10 -n 10000 http://172.16.14.1/index.html

# 查看结果

ipvsadm -Ln

# 使用加权最少连接

ipvsadm -E -t 172.16.14.1:80 -s wlc

# 修改权重

ipvsadm -e -t 172.16.14.1:80 -r 10.0.0.11-m -w 3

# 压力测试,十个并发连接,发起10000次

ab -c 10 -n 10000http://172.16.14.1/index.html

# 换别的算法来测试,看看效果 单引号

watch -n 1 ‘ipvsadm -L -n’

# 保存ipvsadm 结果,否则开机就没有了

# 对于redhat

service ipvsadm save

chkconfig ipvsadm on

# 或者

ipvsadm -S> /etc/sysconfig/ipvsadm

##########建议自己写脚本实现,save的功能,最好带startstop restart




==========================================================================

LVS-DR

工作原理

通过设置内核参数,禁止RS直接响应用户请求,既将RS都隔离起来,只允许它们响应DR转发过来的请求。


使用LVS-DR 前提:

内核有 arp_announce 和 arp_ignore

arp_annouce定义通过哪个地址向别人通告本地MAC-ip对应信息所定义的限制级别

0 表示响应任意本地地址,任何接口(IP地址属于内核而不是网卡)

1 尽可能的避免用和来源主机的IP地址非同一个网络的地址响应它

2 总是用本地的最佳地址给予响应(同一个网段)

arp_ignore 定义响应方式和类型

0 无论地址放在任何地方都响应

1 只有在所请求的地址和请求所进来的接口一致(既进来的接口和请求的地址是同一个网段)的时候才响应

想想一下 arp_ignore=1 arg_annouce=2

服务器拒绝响应2.2

解决数据进入:

为了避免RS直接响应,给服务器的lo:0设置VIP地址,给本地网卡设置成CIP,这样RS就不会直接响应了,隐藏了RS

解决数据出去:

而默认情况下,Linux设置数据包从哪块网卡出去,源地址设为该网卡地址,通过添加一条特殊路由信息,如果目标地址是lo的VIP地址,那么出去的时候源地址设置为lo的地址。

路由信息的原理:

添加一条主机路由,将VIP的地址自己设置成一个网段,既子网掩码为255.255.255.255,这样VIP出去的时候没有比VIP更优的了,就成为最佳IP

相关网络规划如下:

需要配置:

1.Lo设为VIP

2.修改内核参数

3.添加特殊路由

配置LVS-DR须注意:

1.设置网卡模式为桥接

2.RIP地址不一定必须是公网地址

一、设置网卡

Director端

1.DIP配置在接口上,VIP要配置在接口别名上

# director ,一步到位,否则需要重启网络服务

ifconfig eth0:0 172.16.14.1 broadcast172.16.14.1 netmask 255.255.255.255 up# VIP

ifconfig eth0 172.16.14.10 # DIP

VIP应该设置在别名地址上,DIP设置在静态地址上,所有VIP设置在eth0:0

RS端

DIP 要配置在接口上,VIP要配置在lo的别名上

ifconfig eth0 172.16.14.11 # RIP

# 配置内核参数,禁止响应对VIP的ARP广播请求

echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce

# 此时设置VIP,就不会和director冲突

# 255.255.255.255 自闭

# VIP 只向自己广播

ifconfig lo:0 172.16.14.1 broadcast172.16.14.1 netmask 255.255.255.255 up

# 增加路由信息,所有出去的信息都以dev的信息为准

route add -host 172.16.14.1 dev lo:0

route -n

所有的RS都要设置

二.配置ipvsadm

ipvsadm -C # 去掉上次的

ipvsadm -A -t 172.16.14.1:80 -s wlc

ipvsadm -a -t 172.16.14.1:80 -r172.16.14.11 -g w 2

ipvsadm -a -t 172.16.14.1:80 -r172.16.14.12 -g w 4

ipvsadm -L -n

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值