HAProxy是一款免费、快速并且可靠的一种代理解决方案,支持高可用性、负载均衡特性,同时适用于做基于TCP和HTTP的应用的代理。能够支撑数以万计的并发连接。注意:不支持UDP;由于是中转,会出现证书不符的现象,在客户端使用anyconnect时候,需要关掉客户端设置中的“阻止不信任的服务器”。

使用HAProxy原因无非以下几点:
1、克服本地带宽和国际带宽通信不足。本地直连 Shadowsocks 走的是国际流量,由于众所周知的原因,某些地区会被限速甚至干扰。通过国内机房的第三方服务器来做中转,从而克服本地网络国际带宽不足的问题。
2、隐藏真实 IP 的需要。
3、需要使用某些特定IP(段)而该IP(段)的SS无法直连。


首先安装HaProxy
Centos使用

yum install haproxy

Debian/Ubuntu使用

apt-get install haproxy

找不到该软件包则需更换源,具体GOOGLE,例如在源文件添加如下内容

deb http://ftp.us.debian.org/debian/ wheezy-backports main

然后

apt-get update
apt-get install haproxy

接下来设置配置文件

nano /etc/haproxy/haproxy.cfg

清空配置文件后,输入如下内容

global
ulimit-n  51200

defaults
log global
mode    tcp
option  dontlognull
timeout connect 1000ms
timeout client 150000ms
timeout server 150000ms
listen status
bind 0.0.0.0:1080
mode http
log global
stats refresh 30s
stats uri /admin?stats
stats realm Private lands
stats auth admin:password
stats hide-version

frontend ssin
bind *:2000-3000
default_backend ssout

backend ssout
server server1 SS服务器的IP maxconn 204800

将里面的SS的服务器的IP替换成你自己的SS服务器的IP即可
其中的2000-3000为端口段,你可以改成你自己的端口段
如果需要多服务器轮询的可以在backend里多建几个server轮询。

各段配置大致说明(详细请GOOGLE):
global段
global段用于配置进程级的参数。官网文档基于参数的功能,将global配置参数分为3组:
进程管理和安全
性能调优
调试
具体内容可以参考文档详细介绍。

defaults段
defaults段主要是代理配置的默认配置段,设置默认参数,这些默认的配置可以在后面配置的其他段中使用。如果其他段中想修改默认的配置参数,只需要覆盖defaults段中的出现配置项内容。
关于defaults段可以配置的参数,可以参考官网文档的详细介绍。

frontend段
frontend段主要配置前端监听的Socket相关的属性,也就是接收请求链接的虚拟节点。这里除了配置这些静态的属性,还可以根据一定的规则,将请求重定向到配置的backend上,backend可能配置的是一个服务器,也可能是一组服务器(集群)。

backend段
backend段主要是配置的实际服务器的信息,通过frontend配置的重定向请求,转发到backend配置的服务器上。


保存退出后,
执行

service haproxy restart

sudo haproxy -f /etc/haproxy/haproxy.cfg

即可使用
注意在防火墙中打开对应端口