前一篇文章讲述了http的代理,这篇主要讲解tcp的代理,虽然nginx也可以,不过仍然不推荐使用nginx代理tcp协议,推荐使用Haproxy来代理TCP
方法:
1:将提供服务的域名做dns智能负载均衡,将不同区域或线路的用户解析到相应区域的服务器上.可参考cloudxns
2:将其他区域的代理服务通过Haproxy代理到真实的服务上.Haproxy配置大致如下:
#全局配置参数,进程级的,用来控制Haproxy启动前的一些进程及系统设置 global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid user haproxy group haproxy daemon maxconn 4096 # turn on stats unix socket stats socket /var/lib/haproxy/stats nbproc 1 spread-checks 4 tune.maxaccept 8 tune.maxpollevents 100 #配置一些默认的参数,可以被frontend,backend,listen段继承使用 defaults mode http log global option dontlognull option log-health-checks //记录健康检测日志 option redispatch //在连接失败或断开情况下,允许当前会话被重新分发 retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 100000 listen tcp1 0.0.0.0:1215 mode tcp option tcplog balance roundrobin server tcp_s1 192.168.1.121:1215
这样通过简单的dns智能负载均衡做了一个跨区域的分布式服务