我开发了一个简单的REST风格的Web应用程序,由2个基本模块组成。 模块#1 :服务器公开REST Web服务,无状态,部署在Tomcat中 模块#2 :REST客户端 有一个部署了模块#1的Tomcat实例。 我想水平缩放并在第二台机器上运行第二个Tomcat。 在负载平衡/集群方面,我是一个完全的新手,这就是为什么我需要帮助。 不需要会话复制和故障转移。 我该如何处理呢? 我做了一个研究,这些是我看到的可能的方法: 1.没有群集,没有第三方代理。 我在第二台机器上运行第二个Tomcat。 既然我可以控制客户端和服务器,我可以在客户端提供一个非常基本的algorithm,随机select一个主机,这个主机将在API调用之前被select。 不需要configuration群集,也不需要提供第三方代理。 有没有潜在的陷阱? 这是一个正确的方法吗? 2. Tomcat集群 说到Tomcat集群configuration,是不是意味着在单独的机器上运行两个Tomcat并且它们的configuration说明它们是集群? 我需要一个单独的库,工具吗? Tomcat足够了吗? 我将有两个进程像第一种方法一样运行吗? 3. Tomcat负载均衡器 Tomcat集群和Tomcat负载平衡器之间有什么区别? 再次,我需要一个单独的库,工具吗? Tomcat足够了吗? 4.第三方代理 我发现了一些关于HAProxy的信息。 这是否意味着所有的呼叫都经过了,代理决定select哪个主机? 这是否意味着除了两个Tomcat进程之外,还有第三个将分别运行? 假设我在两台独立的机器上有2个Tomcat,这个代理运行在哪台机器上? 我应该select哪一个? 我误解了什么? 文章,赞赏的答案。
我一直在做这方面的大量的研究和实验,而且我正在碰壁: 我正在尝试将HAProxy设置为高可用性环境的反向代理。 所有进出这个环境的stream量都是SSLencryption的,所以原来的devise是让HAProxy做SSLterminal,并将stream量清空传递到飞地,然后以另一种方式回传。 到目前为止,这么好,有很多关于这方面的恒星文档。 问题是这样的:单个SSL终止HAProxy框需要处理大量的stream量,因此需要多个SSL终止反向代理。 好吧,我已经看到了很高的和低的,并发现许多文章,似乎是在正确的方向领先,但总是结束了1主要HAProxy和1备份,(例如,所有的心跳和keepalived解决scheme,如同这里和这里一样 ),或者完全忽略SSL终止,并且讨论DNS负载均衡器。 所以我想我真正想要的是多个haproxy ssl终止盒同时分担负载的能力。 有没有办法做到这一点的DNS圆知更鸟? 我想我以为会有一种方式可以共享同一个虚拟IP地址,并且在它们之间同时分配stream量,全部是集群式的。 如果一个盒子坏了,那么故障转移可以用上面的keepalived方法解决,或者其他的东西。 这似乎不是一个常见的用例…甚至有可能吗? (当然,如何在HAProxy进程之间共享SSL会话是一个问题,但是如果不可行的话,偶尔重新build立一个新会话在这种情况下并不是一个杀手。 提前致谢!
当SSL必须在后端服务器上终止时,我们如何在HAProxy中实现会话粘性? 我们需要粘性,因为后端不能共享会话。 这是我的原始configuration: # SSL passthrough listen https_handler bind 1.2.3.4:443 mode tcp balance leastconn stick match src stick-table type ip size 200k expire 30m server s1 1.1.1.1:443 server s2 1.1.1.2:443 # haproxy logs (not sticking) 10.xx2:xxxxx [17/Dec/2014:19:29:41.396] fe BACKEND_Website/s1 37/0/1/3/41 200 8364 10.xx2:xxxxx [17/Dec/2014:19:29:41.456] fe BACKEND_Website/s1 36/0/1/1/39 200 9082 10.xx2:xxxxx [17/Dec/2014:19:29:41.456] fe BACKEND_Website/s2 35/0/1/3/39 200 […]
我们有几个后端农场(HTTP,FTP等),基本上每个客户都有一个农场,而我即将重build我们的负载平衡基础设施,从Piranha迁移到HAProxy 。 由于我们正在使用几个不同的后端服务器场 ,因此Piranhaconfiguration当前如下所示(示例显示了服务器场webserv01 ,第二个服务器场webserv02使用相同的configuration,但具有不同的虚拟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 = […]
我会把这个简短的说到这一点。 我正在运行HAProxy 1.5.5,SSL支持SSL终止/卸载。 如果我更新/升级openssl,或者只是重新启动服务,是否需要重新编译HAProxy? 我无法find显示HAProxy正在使用的OpenSSL版本的方法。 HOSroxy 1.5.5在CentOS上
使用HAproxy,我可以将stream量从池中的所有其他后端服务器引导到后端服务器吗? 从networking的angular度来看,将交换机上的所有端口镜像到一个端口进行检查是可比的。 这样我就可以将所有stream量都解密到一个环回地址,并用SNORT来检查它。 目前我们将所有stream量encryption到我们的HAproxy节点,并将encryption的stream量发送到我们的networking服务器。 我们有一个带外IDS,但是因为它只有我们的证书来解密stream量,所以我们不能在haproxy上实现完美的前向保密或diffie-helman密码。 我已经阅读过指南,可以让你用F5做到这一点,但这不是我们的select。 感谢您提供的任何见解。
我有两台机器以类似的configuration运行。 两者都安装了HAProxy。 现在我想启用本地SSL终止。 这在服务器上完美工作。 现在在服务器2我不能让它运行,并不断收到此错误消息: Restarting haproxy haproxy [ALERT] 231/185237 (5179) : Proxy 'apache-https': unable to set SSL cipher list to 'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:$' for bind '192.168.56.150:443' at [/etc/haproxy/haproxy.cfg:102]. [ALERT] 231/185237 (5179) : Fatal errors found in configuration. Config似乎与server2上的一样 这可能是一个错误? 几乎不可能,因为我已经同时完成了安装。
我们有2个Web服务器,我们要负载平衡。 每个服务器都有一个主要的networking应用程序,受到公众的打击。 每个服务器还有一些由主应用程序在内部使用的相关微服务。 我们希望负载平衡器在检测到服务器的任何一个微服务被closures的情况下排除服务器。 http://server1/mainApp http://server1/microservice1 http://server1/microservice2 http://server1/mainApp http://server2/microservice1 http://server2/microservice2 所以如果http://server2/microservice2出现故障,我们希望server1为所有stream量提供服务。 或者,如果http://server1/microservice1宕机,我们希望server2到服务器通信。 HAproxy中可以实现这种逻辑吗? 还是有另一种技术可以为我们做到这一点? 谢谢!
与HAProxy reqrep类似, 删除后端请求上的URI 。 以下关注适用于我们。 我们有一些应用程序在不同的上下文根目录下运行。 然而,不是所有的url的客户都被改变了。 如果请求匹配传统path,我想redirecthaproxy中的301redirect。 以http://example.com/abc和http://example.com/def为例 … frontend https bind *:{{ proxy_port }} ssl crt /etc/haproxy/bundle_dh.pem ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4 no-sslv3 http-request set-header X-Forwarded-Proto https if { ssl_fc } http-request set-header X-Forwarded-Port %[dst_port] acl has_legacy_abc path_beg /abc acl has_legacy_def path_beg /def redirect location 301 https://abcdomain.com/{PATH_WITHOUT_ABC} if { has_legacy_abc } redirect location 301 https://defdomain.com/{PATH_WITHOUT_ABC} if […]
我正在运行Ubuntu 14.04,我想知道如何loggingHAProxy中发生的所有事情。 我一直在阅读关于日志和chroot的问题。 一切都告诉我在不同的文件中写不同的东西。 /var/log# ls alternatives.log apt bootstrap.log btmp dmesg dpkg.log faillog fsck lastlog upstart wtmp /etc/rsyslog.d# ls 49-haproxy.conf 50-default.conf 我的/etc/haproxy/haproxy.cfg文件包含这个: global log 127.0.0.1 local0 maxconn 2048 tune.ssl.default-dh-param 2048 stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy defaults log global mode http option httplog option dontlognull retries 3 […]