Chinaunix首页 | 论坛 | 博客
  • 博客访问: 241220
  • 博文数量: 36
  • 博客积分: 1495
  • 博客等级: 上尉
  • 技术积分: 412
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-09 13:34
文章分类

全部博文(36)

文章存档

2016年(1)

2015年(12)

2014年(2)

2012年(4)

2011年(1)

2009年(6)

2008年(10)

我的朋友

分类: 网络与安全

2014-09-23 17:42:58

haproxy 是一款性能很高的负载均衡软件,虽然比不上F5的功能。但足以满足大部份企业需求
默认情况下Haproxy 做为负载均衡软件,后端服务器是看不到client ip 地址的,看到的全是HAPROXY 地址。比如:clinet(10.0.0.1)--->HAPROXY(100.100.100.100)---->server(100.100.100.200) 在server 上看到客户端请求IP地址是100.100.100.100。这会导致很多问题,比如说IP 签权,做数据分析都会有问题。虽然说可以通过X-FOWORD 这个字段插入源IP地址,但这需要后端应用程的调整。本篇文档就是为了解决这个问题
先决条件:
看内核是否支持,如果不支持就需要升级
[root@openstack ~]#  grep TPROXY /boot/config-`uname -r`
CONFIG_NETFILTER_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m

如果是HAproxy 1.5-dev 版默认编译就行了,如果是1.5.3 编译的时候需要(make TARGET=linux2628 USE_LINUX_TPROXY=1)加上红色的部份
haproxy 特别配置:
在配置里面要加上   source 0.0.0.0 usesrc clientip

在haproxy 上面要配置iptables
 iptables -t mangle -N DIVERT
 iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
 iptables -t mangle -A DIVERT -j MARK --set-mark 111
 iptables -t mangle -A DIVERT -j ACCEPT

路由配置:
  ip rule add fwmark 111 lookup 100
  ip route add local 0.0.0.0/0 dev lo table 100

修改sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0

server 这台服务器的网关指向haproxy


如果跨网段的情况,可以通过GRE 隧道,然后通过iptables 打tag 的方式把数据包指向haproxy 服务器,在后面的文档陆续分享。













阅读(2818) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~