haproxy是如何工作的?

HTTP使用端口80
  1. 该用户的网页浏览器发送一个请求到端口80的负载平衡器,使用完全合格的域名/ URI的(如http://host.domain.tld:80 )。
  2. 域名系统(DNS)解析URI的一个静态IP地址,完全合格的域名。 (所有负载平衡器服务器共享 相同的完全限定的域名,但有独特的静态IP地址。) 
    例如:有两个负载均衡,  服务器A服务器B的DNS指示第一个客户端请求服务器,服务器B的第二个,第三个服务器A,等。
  3. 如果负载平衡器服务器不可用,到该服务器的请求将超时。 然而,当这一切发生的时候,大多数浏览器重新发送到DNS客户端的请求,并请求将直接在这种情况下,第二负载平衡器。 因此,如果你的两个负载平衡器服务器不可用,它会导致在交通到您的网站有一个较慢的初始加载时间的一半。
  4. 由于每个服务器负载平衡器Apache HTTP服务器配置监视端口80,阿帕奇处理所有传入客户端请求的负载均衡服务器
  5. Apache的虚拟主机配置有一个重写规则,将请求发送到 http://127.0.0.1:85 (即本地主机端口85)。
  6. 的haproxy配置监测 http://127.0.0.1:85 ,和接收请求。
  7. 引用的haproxy的负载均衡池,在其配置文件,确定应用服务器路由客户端请求,根据上一轮循环赛制。 该服务器收到请求一般是自动缩放组成的数组专用的应用程序服务器的一部分。 的haproxy转发请求到服务器的端口,在其配置文件(通常是端口80)引用。
的HTTPS使用端口443
当你配置一台服务器使用HTTP安全(HTTPS),负载均衡服务器将执行传入客户端连接中的常见问题,名为“  我如何设置SSL? SSL终止。
所需的引导脚本
磅房委会代理安装。  安装haproxy。  以下投入使用这个RightScript。
 :由“OPT_”前缀的投入通常是可选的,不是强制性的。
HEALTH_CHECK_URI 
可选的测试,但生产所需。 此引用www根路径从一个网页,应该返回一个确定的200响应。 网页的内容并不重要,但它的名字应该是唯一的(最好包含一个随机数)。 用于 所有的应用服务器在同一页,以确定服务器是否正在运行(   )。 页面的内容可以是简单的文字:OK。 例如,如果页面 http://www.mydomain.com:80/hlthchk378923.html和它的内容只有两个字母:OK,你只需指定的HEALTH_CHECK_URI / hlthchk378923.html。虽然您可以使用健康检查页面的index.html,这是不推荐使用。 这是因为大多数网站有一个index.html页面,因此,是有风险的,负载平衡器会指示客户端的流量,一个网站比你自己的云。
例如:Amazon EC2云回收的IP地址;所以,如果一台服务器被终止,另推出不同的网站使用相同的IP地址和页面的名称,您的健康检查页面名称的haproxy可以考虑服务器运行,即使虽然这是别人的,它的直接交通。
出于这个原因,你应该总是使用一个唯一的文件名健康检查URI。 这个值显示的haproxy配置文件:
When internal servers support a status page option httpchk GET /hlthchk378923.html 

LB_APPLISTENER_NAME 
一池的haproxy负载均衡服务器的名称,例如 ,WWW。 负载平衡器服务器相同LB_LISTENER_NAME成为同一池中的一部分。 的haproxy配置文件包括该配置块的价值:
  #示例:听myapp的0.0.0.0:80
听WWW 127.0.0.1:85
模式的HTTP
平衡roundrobin 
 
LB_BIND_ADDRESS 
这是说的haproxy监听的IP地址,通常由指定的IP地址:127.0.0.1 localhost的。
 
LB_BIND_PORT 
这是的haproxy监听的端口,通常85。
 
LB_TEMPLATE_NAME 
这是该基地的haproxy将用于配置文件的名称。 根据定义的输入值,这个文件被修改。 当前值是:
 haproxy_fullssl haproxy_http haproxy_tcp 
注:不要使用haproxy_fullssl的选项,以使您的负载均衡服务器的SSL。 执行此功能使用中的常见问题1 RightScript(  "WEB apache FrontEnd https vhost" )题为 我如何设置SSL?
 
OPT_LB_STATS_PASSWORD 
用于设置密码的haproxy的状态报告(“统计”)页。
 
OPT_LB_STATS_URI 
通常设置的haproxy状态,此设置定义如何访问的haproxy的状态报告网页,提供信息上的服务器正在运行和侦听作为负载平衡器池的一部分。 例如,如果你设置这个值的haproxy状态,你会使用 http://host.domain.tld/haproxy-status访问状态报告页。 你可以改变这个URI。 这个值显示的haproxy配置文件:
 # Haproxy status page stats uri /haproxy-status 
 
OPT_LB_STATS_USER 
这可以用来设置一个用户名的haproxy状态页。
 
磅Apache反向代理配置。设置了Apache Web服务器的反向代理,包括 / etc / httpd的  ,D  / RightScale的  文件夹,其中包含用于Apache的虚拟主机文件。 有没有输入。
SYS的syslog-ng和的haproxy重新启动。为syslog-ng和的haproxy重新启动服务,以确保新鲜配置。

所需的应用程序服务器脚本

下面的脚本必须运行在您的配置,使您的haproxy负载平衡器服务器的交互应用服务器上。
的LB应用的haproxy连接。连接的服务器上运行的haproxy实例。 此脚本必须运行在每个应用程序服务器将加入负载平衡器池。
LB_HOSTNAME 
完全合格的haproxy所有服务器上安装的主机名。 例如,,如果loadbalancer.example.com有两个相关的静态IP地址的服务器负载平衡器,你会作为LB_HOSTNAME输入 loadbalancer.example.com。 这些主机必须与DNS注册该脚本可以找到所有的haproxy服务器和更新自己的配置文件。
OPT_SESSION_STICKINESS 
当设置为“真”的haproxy将重新连接会话的最后一个服务器连接到他们(“粘性会话”),通过cookie。
的LB应用的haproxy断开。断开从运行的haproxy(即删除负载平衡器池),通常在服务器关机的服务器实例。 这通常是作为一个应用服务器上解除脚本运行。

配置文件

/ home /的haproxy / rightscale_lb.cfg文件的haproxy的主配置文件。
在这个文件的最后一行列出在应用服务器的负载均衡池。 当“的LB应用的haproxy连接”应用程序服务器上运行,它增加了该服务器所有的haproxy在所有负载平衡器服务器的配置文件具有相同LB_HOSTNAME。
 #server srv3.0 10.253.43.224:8888 cookie srv03.0 check inter 2000 rise 2 fall 3 服务器I-b70793de 10.251.26.177:8888 cookie的I-b70793de检查除3000上涨2秋天3 maxconn 255 
/ etc / httpd的/ rightscale.d目录包 含Apache Web服务器的虚拟主机文件。 例如:
http-80-yoursite.vhost 
http-8888-yoursite.vhost 
https-443-yoursite.vhost

你可能感兴趣的:(haproxy,负载均衡)