之前有个文章讲了一下 关于nginx的相关笔记
这不刚搞完,工作上有个应用场景。
公司有二台比较不错的服务器,一台是windows,一台是linux。linux应该用饱满了。windows空闲没怎么用,但有些windows的小应用,供客户演示的,然后,我们的程序全部是linux平台下开发的,为了兼容,因此,打算用方案。
在windows装虚拟机。装个5-10个,然后把程序装到虚拟机上,然后通过端口映射到每个虚拟机的应用程序端口,可以做负载,也能做端口转发。满足各种需求。 其实搞这么多就是省成本。
首先代理大概有以几下几个方案
应用层:nginx 一般用于http服务,tcp服务基本上不用。
nginx在http独树一枝。关键是通过多进程有强大的并发。主要是解决accpet的单秒的qps性能。
传输层:haproxy 当然用于udp, tcp(也包括http),适应性更强。也是今天要讲的主角
网络层:lvs 持续文章再单独讲一下这个。
数据链路层:F5 貌似土豪的办法,暂时还没有用过。
首先在windows上安装一下haproxy
链接:https://pan.baidu.com/s/1YTsL7p_rSaJBZvUQi8nvzA 提取码:80sh
haproxy.cfg
#
global
maxconn 2000
nbproc 1
daemon
defaults
mode tcp
retries 3
option abortonclose
maxconn 2000
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms
log 127.0.0.1 local0 err
listen win_ss
bind 0.0.0.0:6000
mode tcp
#balance source
server s1 192.168.110.128:6000
#下面是启动负载分配三台服务器服务tcp服务
#server s2 192.168.110.128:6000 weight 1 rise 2 fall 3
#server s2 192.168.110.129:6000 weight 1 rise 2 fall 3
#server s3 192.168.110.130:6000 weight 1 rise 2 fall 3
listen win_ss1
bind 0.0.0.0:80
mode http
#balance source
server s1 192.168.110.128:80
#下面是启动负载分配三台服务器服务,http服务
#server s2 192.168.110.128:80 weight 1 rise 2 fall 3
#server s2 192.168.110.129:80 weight 1 rise 2 fall 3
#server s3 192.168.110.130:80 weight 1 rise 2 fall 3
listen status
#这是haproxy自带的界面管理程序,可以通过web界面查看,浏览器进行访问1188端口
#输入用户和密码 admin admin可以查看
bind 0.0.0.0:1188
mode http
stats refresh 30s
stats uri /
stats auth admin:admin
#stats hide-version
stats admin if TRUE
其实还是挺简单的。这个用处还是蛮多的,特别是负载和端口,不想暴露真实ip,全部转到各个局域网机器处理。
HAPROXY是纯c语言实现,是c语言经典典范设计方法。有时间好好读一下他的源代码。深入了解一下