我们担心基于 IP 的服务负载平衡(例如,移动客户端从 3G 切换到 Wifi)。有没有办法基于 URL 的一部分而不是 IP 哈希来做到这一点?
在谷歌搜索并简要浏览 varnish 文档后,我找不到对此的参考。例如,我可以在清漆 vcl 中执行以下操作吗?
include sites-enabled/*.vcl
Run Code Online (Sandbox Code Playgroud) 我有一个网站,我们可以在几台机器上进行负载平衡。负载平衡器(Brocade ServerIron ADX)位于本地网络上。我知道它能够配置一个“备份”IP 地址以用作“真实”IP 地址,但它需要在本地网络上。当我的整个环境可能由于 FW、LB 或多服务器故障而脱机时,如何向我的用户提供“失败鲸鱼”和状态更新消息?由于 DNS 无法提供加权 A-Record 备份(如 SRV 记录),我有哪些选择?
理想情况下,解决方案应该能够在我的网站变得无法访问时自动介入,并通知我的用户我们的响应团队正在解决问题。
domain-name-system disaster-recovery high-availability load-balancing
我有一个 nginx 服务器充当我的 apache 服务器的负载平衡器。我正在使用子域,我的代码依赖于 HTTP_HOST 值来执行正确的任务。
当我请求说:http://get.example.com一旦它被转发,Apache 上的 HTTP_HOST 就变成了example.com.
我的问题是如何使它与原始请求保持一致?
这是我的 nginx 配置:
upstream example.com {
server 192.168.2.1:8909 weight=2;
server 192.168.2.2:8909 weight=1;
server 192.168.2.3:8909 weight=1;
}
server {
listen 80;
location / {
proxy_pass http://example.com;
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试proxy_pass为每个子域添加多个,一个,但似乎不起作用。
请允许我提前道歉。我知道这个问题已经被问过,并以一种或另一种方式在网上多次回答。问题是,所有的解决方案和答案有时都是矛盾的,最终只会让我感到困惑。我们的开发组要求我为他们在 AWS 中的实例配置 v6 访问权限。我通常不处理 DNS 的事情,所以我有点困惑。这是目标。IPv4 和 IPv6 访问 AWS 云中的服务器,这显然现在可以通过负载均衡器完成。这就是事情开始变得棘手的地方。这些域托管在 Dreamhost 上。谁能解释一下如何配置?您会认为这就像在 Dreamhost 中创建一个 A 和 AAAA 记录一样简单,指向 AWS 负载均衡器的 IPv4 和 IPv6 地址。请帮忙!谢谢!
作为旁注,我已经阅读了很多关于 Route 53 的内容,但看起来除非需要它才能使其正常工作,否则我们需要避免它。据我了解,它只是 AWS 的 DNS。我想避免将服务从 Dreamhost 转移出去。里面还有很多其他的东西。
我有一个向 RabbitMQ 发送消息的 API。
我在 HAProxy 后面有一个高可用性 RabbitMQ 集群。
当我对 API 进行负载测试时,我开始看到很多这样的内容:
Recovering from a network failure...
Exception in the reader loop: AMQ::Protocol::EmptyResponseError: Empty response received from the server.
在我的独角兽日志中。
如果我通过 haproxy 直接连接到 RabbitMQ,我不会。我哪里出错了,我的 haproxy 配置如下所示:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
#debug
#quiet
user haproxy
group haproxy
defaults
log global
mode http
retries 3
timeout client 50s
timeout connect 10s
timeout server 50s
option dontlognull
option forwardfor
option httplog
option redispatch …Run Code Online (Sandbox Code Playgroud) 在以下设置中:
Client -> LB -> Varnish
Run Code Online (Sandbox Code Playgroud)
我想配置 Varnish acls 以根据客户端的 IP 执行某些操作。LB 在一个名为“ClientIP”的变量中发送客户端的 IP,Varnish 可以通过它读取req.httpd.ClientIP.我试过这个:
acl admin_net {
"10.10.1.160"/27;
}
sub vcl_deliever {
if (req.http.ClientIP ~ admin_net) {
// do something ...
}
}
Run Code Online (Sandbox Code Playgroud)
但是 VCL 编译失败并显示“预期的 CSTR 得到了‘admin_net’”(C 字符串?)。我可以通过 解决这个问题req.http.ClientIP ~ "10.10.1.*"),但我必须注释掉 ACL 行。
有没有另一种方法可以让这个与 ACL 一起工作?我也看了看client.ip,这是一个只读变量。在上面的设置中,它包含 LB 的 IP 而不是客户端的 IP。
我试图让 nginx 在我的 Web 服务器之间进行负载平衡,同时在负载平衡器级别终止 SSL。我正在使用的 nginx.conf 文件基于做这件事的所有指南,但我无法让它工作。使用标准 HTTP 时,负载均衡器工作正常。但是,当尝试通过 HTTPS 访问负载均衡器时,浏览器会挂起,最终给出 ERR_CONNECTION_REFUSED。
我在尝试 HTTPS 时没有看到日志中的任何错误,甚至在访问日志中也没有看到任何错误,所以我不知道可能是什么问题。我尝试了很多不同的配置选项,包括尝试不同的 SSL 证书、PEM 编码、捆绑证书等等,但都没有效果。
这是 nginx.conf 的主要部分:
upstream backend {
#web01
server 10.01.01.102;
#web02
server 10.02.02.77;
}
#setup proxy
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# standard http server
server {
listen 80;
listen 4444;
server_name *.example.com;
location / {
proxy_pass http://backend;
}
}
#server for https requests
server {
listen 443 ssl;
server_name *.example.com;
#ssl on;
ssl_certificate /path/to/example.com.crt;
ssl_certificate_key /path/to/example.com.key;
location …Run Code Online (Sandbox Code Playgroud) 使用 Elastic Load Balancer,很容易在外部负载均衡器上设置 SSL,并将请求作为 http 提供给应用程序。
运行单个服务器时,还可以在 Web 服务器 (Tomcat) 或应用程序 (Spring) 上配置 SSL。
使用负载均衡器运行时,是否需要将 SSL 拉到负载均衡器的级别?转发仍然加密的流量是否会丢失 SSL 连接的状态元素?
我们有几个后端养殖场(HTTP,FTP等),基本上是一个农场的每一位客户,我将重建我们的负载平衡的基础设施,移动Piranha到HAProxy。
由于我们使用了几个不同的后端服务器群,Piranha 配置目前看起来像这样(示例显示了服务器场webserv01,第二个服务器场webserv02使用相同的配置,但不同的虚拟 IP):
virtual webserv01 {
active = 1
address = 10.11.11.1 eth2:30
vip_nmask = 255.255.255.0
port = 80
send = "GET / HTTP/1.0\r\n\r\n"
expect = "HTTP"
use_regex = 0
load_monitor = none
scheduler = rr
protocol = tcp
timeout = 6
reentry = 15
quiesce_server = 0
server webserv01v {
address = 192.168.101.64
active = 1
port = 80
weight = 1
}
server webserv02v {
address = …Run Code Online (Sandbox Code Playgroud) load-balancing ×10
nginx ×3
haproxy ×2
ssl ×2
varnish ×2
apache-2.2 ×1
backend ×1
ipv6 ×1
keepalived ×1
linux ×1
load-testing ×1
rabbitmq ×1