我是新来的这个负载平衡的情况下,我负责找出如何使这个负载平衡的作品。
我的环境:
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
尝试在HAproxy生产之前在实验室中运行testing并保持活动状态。 以下是我在Keepalived设置中的内容:
! configuration文件keepalived
global_defs { notification_email { [email protected] } notification_email_from [email protected] 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 eth0 virtual_router_id 51 priority 101 #priority 101 for master advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.6 } track_script { chk_haproxy } }
这里是我的设置HAproxy
#--------------------------------------------------------------------- # Example configuration for a possible web application. See the # full configuration options online. # # http://haproxy.1wt.eu/download/1.4/doc/configuration.txt # #--------------------------------------------------------------------- #--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global # to have these messages end up in /var/log/haproxy.log you will # need to: # # 1) configure syslog to accept network log events. This is done # by adding the '-r' option to the SYSLOGD_OPTIONS in # /etc/sysconfig/syslog # # 2) configure local2 events to go to the /var/log/haproxy.log # file. A line like the following can be added to # /etc/sysconfig/syslog # # local2.* /var/log/haproxy.log # log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon # turn on stats unix socket stats socket /var/lib/haproxy/stats #--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 #--------------------------------------------------------------------- # main frontend which proxys to the backends #--------------------------------------------------------------------- frontend main *:80 # acl url_static path_beg -i /static /images /javascript /stylesheets # acl url_static path_end -i .jpg .gif .png .css .js # use_backend static if url_static # default_backend view #--------------------------------------------------------------------- # static backend for serving up images, stylesheets and such #--------------------------------------------------------------------- #backend static # balance roundrobin # server static 127.0.0.1:4331 check #--------------------------------------------------------------------- # round robin balancing between the various backends #--------------------------------------------------------------------- backend app mode tcp balance roundrobin server server1 192.168.1.12:80 check inter 2000 rise 2 fall 5 server server2 192.168.1.13:80 check inter 2000 rise 2 fall 5
当我开始HAproxy,我得到这个错误,我不知道从哪里开始寻找修复它。 也许有人做了这么多次可以帮我解释一下吗?
503 Service Unavailable No server is available to handle this request.
但是手动连接到webserver1和webserver2工作得很好。
我想要的只是一个简单的负载平衡的Web服务器坐在HAproxy后面。 任何build议或build议,绝对赞赏。 请帮忙? 非常感谢。
我从来没有使用HAproxy,但一个快速的search导致我认为你需要添加default_backend app立即在frontend main *:80 。 我没有看到将后端和前端连接在一起的configuration。
问题在于你的HAProxyconfiguration。 当我从你的configuration中删除所有的评论,我会得到这个:
global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 frontend main *:80 backend app mode tcp balance roundrobin server server1 192.168.1.12:80 check inter 2000 rise 2 fall 5 server server2 192.168.1.13:80 check inter 2000 rise 2 fall 5
而现在你可以清楚地看到前端没有任何configuration。 通过frontend main请求HAProxy,但HAProxy不知道哪些服务器可靠处理它,所以将返回503。
你必须使用default_backend或acl将后端链接到前端。
你也应该使用统计数据,不仅是套接字,而且还有受保护的网页界面。 我可以向您显示有关haproxy背后的群集,哪些服务器处于脱机状态,有什么问题,有关响应时间等信息。 非常有用的debugging。