我在 haproxy 后面运行 nginx(在同一台服务器上运行)。我已将 haproxy 配置为在 nginx 上使用一个简单的 html 文件来验证服务是否已启动,因为我在此主机上没有/不想要有效的“/”URL。Nginx 不支持 OPTIONS 请求类型(据我所知)这是 haproxy 使用的默认值,因此我将其更改为 GET。
由于我在 nginx 中打开了访问日志,因此我在访问日志中收到了所有这些正常运行时间轮询请求。有没有办法可以将 nginx 配置为忽略某些请求,并跳过记录它们?
这是 haproxy 后端:
backend static_http
option httpchk GET /test.html
option redispatch
balance roundrobin
#fullconn 1000
server w1_static www1:81 check port 81 inter 2000
Run Code Online (Sandbox Code Playgroud)
这是我在 nginx 日志中看到的:
127.0.0.1 - - [24/Jul/2009:19:28:22 +0000] "GET /test.html HTTP/1.0" 200 12 "-" "-"
127.0.0.1 - - [24/Jul/2009:19:28:24 +0000] "GET /test.html HTTP/1.0" 200 12 "-" "-"
127.0.0.1 - - [24/Jul/2009:19:28:26 +0000] "GET /test.html HTTP/1.0" 200 …Run Code Online (Sandbox Code Playgroud) 我们最近为 stackoverflow.com 实施了 HAProxy。我们决定使用 TProxy 来维护客户端连接的源地址,因此我们的日志和其他依赖于客户端 IP 地址的 IIS 模块不需要修改。因此,数据包以欺骗方式到达,就好像它们来自外部 Internet IP 地址一样,而实际上它们来自我们本地网络上的本地 192.168.xx HAProxy IP。
我们的两个 Web 服务器都有两个 NIC - 一个公共互联网上的可路由 B 类地址,具有静态 IP、DNS 和默认网关,另一个私有不可路由的 C 类地址配置了指向 HAProxy 专用 IP 的默认网关。HAProxy 有两个接口——一个公共接口和一个私有接口,负责在接口之间透明地路由数据包并将流量引导到适当的 Web 服务器。
以太网适配器 Internet: 描述 。. . . . . . . . . . : 网卡#1 DHCP 启用。. . . . . . . . . . : 不 自动配置已启用。. . . : 是的 IPv4 地址。. . . . . . . . . . …
在配置 HAProxy 时,我想根据 cookie 的存在将流量发送到某些服务器。
例如:
这可能吗,如果可能,您如何设置?
我有一堆关于 ssl、本地会话和负载平衡的问题,它们似乎是相互关联的,所以我提前为这个问题的长度道歉。
我有一个使用基于文件的会话的网站。该站点的性质是大部分是http,但有些部分是ssl。目前,由于基于文件的会话,任何 ssl 请求都需要与以前的任何 http 请求访问相同的服务器。
由于时间限制,我想做最简单的事情来负载平衡增加的 http 和 ssl 流量。
粘性负载平衡算法似乎有两种选择:
基于 ip 的解决方案可能会起作用,但散列算法可能会在服务器关闭或添加时更改用户访问的服务器,这对于当前基于文件的会话设置是不合需要的。我还假设用户在浏览网站时合法地更改 ip 在技术上是可能的。
基于 cookie 的算法似乎更好,但是在通过 ssl 加密时无法检查 cookie 似乎存在其自身的问题。
我一直在搜索有关如何对 ssl 进行负载平衡的示例,但似乎找不到任何明确的设置示例,这些示例可以执行基于 cookie 的负载平衡,并且可以通过添加另一个 ssl 解码器来处理增加的 ssl 负载。
我见过的大多数显式示例都有位于浏览器客户端和负载均衡器之间的 ssl 解码器(通常是硬件、apache_mod_ssl 或 nginx)。这些示例通常看起来像这样(从http://haproxy.1wt.eu/download/1.3/doc/architecture.txt修改):
192.168.1.1 192.168.1.11-192.168.1.14
-------+-----------+-----+-----+-----+
| | | | |
+--+--+ +-+-+ +-+-+ +-+-+ +-+-+
| LB1 | | 一个 | | 乙 | | C | | D |
+-----+ +---+ +---+ +---+ +---+
apache 4 便宜的网络服务器
mod_ssl … haproxy 中是否有类似 Apache 的“拒绝 ip”之类的东西?
在我们的环境中,我们在不同的集群上同时使用 Nginx 和 HA 代理。使用一种比另一种有优势吗?
或者,对基本 LAMP 服务器集群进行负载平衡的最佳方法是什么?
我已经使用 keepalived 设置了 haproxy,用于 percona 集群的负载平衡和 ip 故障转移,并且由于它工作得很好,我想对另一个服务/守护程序使用相同的 lb / 故障转移。
我已经这样配置了 haproxy:
listen my_service 0.0.0.0:4567
mode tcp
balance leastconn
option tcpka
contimeout 500000
clitimeout 500000
srvtimeout 500000
server host1 xxx.xxx.xxx.xx1:4567 check port 4567 inter 5000 rise 3 fall 3
server host2 xxx.xxx.xxx.xx2:4567 check port 4567 inter 5000 rise 3 fall 3
Run Code Online (Sandbox Code Playgroud)
负载平衡工作正常,但服务看到的是负载平衡器的 IP,而不是客户端的实际 IP。在 http 模式下,让 haproxy 传递远程 IP 很容易,但是在 tcp 模式下我该怎么做?由于我需要负载平衡的服务的性质,这很关键。
谢谢!维托
我有一个通过 cookie 进行负载平衡的系统,但我想使用 URL 参数作为替代。(具体来说,我有一个不支持 cookie 的前端应用程序)。我的设置有点复杂 - 我有一个多人游戏系统,我使用带有这个 cookie 的棒桌来确保玩同一个游戏的不同人去同一个服务器。这很好用,除了 URL 参数似乎没有做任何事情。这都是haproxy 1.5dev17
我的相关后端是:
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
option http-server-close
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
backend simulate
option httpchk OPTIONS /simulate/api/status
stick-table type string len 40 size 5M expire 30m
stick store-response set-cookie(SIMULATE_STICKY_SESSION) table simulate
stick on cookie(SIMULATE_STICKY_SESSION) table simulate
stick on url_param(SIMULATE_STICKY_SESSION) table simulate
server app1 10.0.2.11:8080 cookie app1 check inter 10000
server app2 10.0.3.11:8080 cookie …Run Code Online (Sandbox Code Playgroud) 我是这种负载平衡方案的新手,我的任务是弄清楚如何使这种负载平衡起作用。
我的环境:
Centos 6.4 64 Bit
Webserver: Lighttpd
All running in ESXI
virtual IP: 192.168.1.6
LB1: 192.168.1.4
LB2: 192.168.1.5
Webserver 1: 192.168.1.12
Webserver 2: 192.168.1.13
Gateway: 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
尝试在使用 HAproxy 和 keepalived 生产之前在实验室中运行测试。这是我的 keepalived 设置:
!keepalived的配置文件
global_defs {
notification_email {
myemail@gmail.com
}
notification_email_from keepalived@domain.local
smtp_server 192.168.1.4
smtp_connect_timeout 30
router_id 192.168.1.1
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 1 # check every second
weight 2 # add 2 points of prio if OK
}
vrrp_instance VI_1 {
state MASTER
interface …Run Code Online (Sandbox Code Playgroud) 我们正在尝试设计一种能够处理超过 64k 个 websocket 的架构。
我们首先尝试使用 Amazon ELB,但它的设计不允许意外的流量激增或 websocket。(TCP 模式意外超时 websockets)
使用 HAProxy,这些限制不适用,但我们将被限制在 HA 和后端服务器之间维护的 ~64k websockets。
想到的多种解决方案:
有一个更好的方法吗 ?
domain-name-system scalability load-balancing haproxy websocket
haproxy ×10
nginx ×3
apache-2.2 ×1
centos6.4 ×1
cluster ×1
cookies ×1
deny ×1
keepalived ×1
lamp ×1
lighttpd ×1
log-files ×1
networking ×1
scalability ×1
ssl ×1
tcpip ×1
websocket ×1