Q132284591 发表于 2019-1-2 09:37:08

软负载均衡之haproxy(二)

  测试环境描述:
  网络拓扑结构如下图:


  共涉及四台服务器、一台客户端设备。
  分别为:
  主haproxy+主keepalived192.168.71.128   虚拟IP:192.168.71.200
  辅haproxy+辅keepalived192.168.71.138   虚拟IP:192.168.71.200
  

  www.bobo365.com   192.168.71.200(DNS服务器192.168.71.138兼)
  

  后端服务器:
  server01:192.168.71.135(Windows下 apache+php+mysql)
  server02: 192.168.71.136 (centos 6.2下nginx+php+mysql)
  

  客户端:192.168.71.1
  

  所要达到的目的:
  

  1、主辅haproxy服务器为实际后端服务器提供负载均衡。
  2、server01或者server02任何一台宕机,不影响用户访问。
  3、主辅haproxy任何一台宕机,不影响用户访问。
  

  

  安装配置:
  1、实际服务器分别能单独访问:
  http://192.168.71.135
  http://192.168.71.136
  http://192.168.71.138:8080
  2、分别在主辅haproxy服务器上安装配置haproxy和keepalived。
  (1)192.168.71.128
  haproxy.cfg配置(/usr/local/haproxy):
  

  global
        log 127.0.0.1   local0
        maxconn 4096
        chroot /usr/local/haproxy
        uid 501
        gid 501
        daemon
        nbproc 1
        pidfile /usr/local/haproxy/haproxy.pid
  #       debug
  #      quiet
  

  

  defaults
        log   127.0.0.1       local3
        mode    http
        option httplog
        option httpclose
        option dontlognull
        option forwardfor
        option redispatch
        retries 2
        maxconn 2000
         # balance roundrobin
        balance leastconn
        stats   uri   /haproxy-stats
   stats realm Haproxy\ statistics
        stats auth admin:bobo365
        stats hide-version
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000
  

  listen web_proxy www.bobo365.com:80
        option httpchk GET /index.phpHTTP/1.1\r\nHOST:www.bobo365.com
        #option httpchk HEAD /index.phpHTTP/1.1\r\nHOST:\www.bobo365.com
        #option httpchk HEAD /index.phpHTTP/1.0/r/nHOST:/www.bobo365.com
        server web1_192.168.71.138192.168.71.138:8080 cookie app1inst1 check inter 2000 rise 2 fall 5
        server web2_192.168.71.136192.168.71.136:80 cookie app1inst2 check inter 2000 rise 2 fall 5
        server web3_192.168.71.135192.168.71.135:80 cookie app1inst3 check inter 2000 rise 2 fall 5
  

  

  

  keepalived.conf配置(/etc/keepalived):
  

  ! Configuration File for keepalived
  

  global_defs {
     notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
     }
     notification_email_from Alexandre.Cassen@firewall.loc
     smtp_server 192.168.200.1
     smtp_connect_timeout 30
     router_id LVS_DEVEL
  }
  

  vrrp_instance VI_1 {
      state MASTER
      interface eth0
      virtual_router_id 51
      priority 100
      advert_int 1
      authentication {
        auth_type PASS
        auth_pass 1111
      }
      virtual_ipaddress {
        192.168.71.200
      }
  }
  

  

  

  (2)192.168.71.138
  

  haproxy.cfg配置(/usr/local/haproxy):
  

  global
        log 127.0.0.1   local0
        maxconn 4096
        chroot /usr/local/haproxy
        uid 501
        gid 501
        daemon
        nbproc 1
        pidfile /usr/local/haproxy/haproxy.pid
  #       debug
  #      quiet
  

  

  defaults
        log   127.0.0.1       local3
        mode    http
        option httplog
        option httpclose
        option dontlognull
        option forwardfor
        option redispatch
        retries 2
        maxconn 2000
         # balance roundrobin
        balance leastconn
        stats   uri   /haproxy-stats
   stats realm Haproxy\ statistics
        stats auth admin:bobo365
        stats hide-version
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000
  

  listen web_proxy www.bobo365.com:80
        option httpchk GET /index.phpHTTP/1.1\r\nHOST:www.bobo365.com
        #option httpchk HEAD /index.phpHTTP/1.1\r\nHOST:\www.bobo365.com
        #option httpchk HEAD /index.phpHTTP/1.0/r/nHOST:/www.bobo365.com
        server web1_192.168.71.138192.168.71.138:8080 cookie app1inst1 check inter 2000 rise 2 fall 5
        server web2_192.168.71.136192.168.71.136:80 cookie app1inst2 check inter 2000 rise 2 fall 5
        server web3_192.168.71.135192.168.71.135:80 cookie app1inst3 check inter 2000 rise 2 fall 5
  

  

  

  keepalived.conf配置(/etc/keepalived):
  

  ! Configuration File for keepalived
  

  global_defs {
     notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
     }
     notification_email_from Alexandre.Cassen@firewall.loc
     smtp_server 192.168.200.1
     smtp_connect_timeout 30
     router_id LVS_DEVEL
  }
  

  vrrp_instance VI_1 {
      state BACKUP
      interface eth0
      virtual_router_id 51
      priority 80
      advert_int 1
      authentication {
        auth_type PASS
        auth_pass 1111
      }
      virtual_ipaddress {
        192.168.71.200
      }
  }
  

  

  

  其他:
  1、检测keepalvied安装是否成功:(ip a命令)
  192.168.71.128正常提供服务时:
  1: lo:mtu 16436 qdisc noqueue
      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
      inet 127.0.0.1/8 scope host lo
      inet6 ::1/128 scope host
         valid_lft forever preferred_lft forever
  2: eth0:mtu 1500 qdisc pfifo_fast qlen 1000
      link/ether 00:0c:29:e1:9a:1e brd ff:ff:ff:ff:ff:ff
      inet 192.168.71.128/24 brd 192.168.71.255 scope global eth0
      inet 192.168.71.200/32 scope global eth0
      inet6 fe80::20c:29ff:fee1:9a1e/64 scope link
         valid_lft forever preferred_lft forever
  3: sit0:mtu 1480 qdisc noop
      link/sit 0.0.0.0 brd 0.0.0.0
  

  192.168.71.128宕机时192.168.71.138状态:
  

  1: lo:mtu 16436 qdisc noqueue
      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
      inet 127.0.0.1/8 scope host lo
      inet6 ::1/128 scope host
         valid_lft forever preferred_lft forever
  2: eth0:mtu 1500 qdisc pfifo_fast qlen 1000
      link/ether 00:0c:29:6d:6b:18 brd ff:ff:ff:ff:ff:ff
      inet 192.168.71.138/24 brd 192.168.71.255 scope global eth0
      inet 192.168.71.200/32 scope global eth0
      inet6 fe80::20c:29ff:fe6d:6b18/64 scope link
         valid_lft forever preferred_lft forever
  3: sit0:mtu 1480 qdisc noop
      link/sit 0.0.0.0 brd 0.0.0.0
  

  2、启动关闭命令:
  关闭:killall -9 haproxy
  启动:/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
  

  /etc/init.d/keepalived stop|start|restart
  

  3、检测页面:http://www.bobo365.com/haproxy-stats



  


------------------------
新增配置(20120614补充)
haproxy.cfg:(www.bobo365.com/bobo365.com均可访问,主辅之间无缝切换)


  global
  log 127.0.0.1   local0
  maxconn 51200
  chroot /usr/local/haproxy
  uid 501
  gid 501
  daemon
  nbproc 1
  pidfile /usr/local/haproxy/haproxy.pid
  #       debug
  #       quiet
  defaults
  log   global
  log   127.0.0.1       local3notice
  mode    http
  option httplog
  option httpclose
  option dontlognull
  option forwardfor
  option redispatch
  retries 3
  maxconn 51200
  # balance roundrobin
  balance leastconn
  stats   uri   /haproxy-stats
  stats realm Haproxy\ statistics
  stats auth admin:bobo365
  stats hide-version
  contimeout      5000
  clitimeout      50000
  srvtimeout      50000
  frontend      http-in
  bind    *:80
  acl host_www hdr_beg(host) -i www.
  use_backend www_bobo365 if host_www
  acl bobo365_com hdr_beg(host) -i bobo365.com
  use_backend bobo365_com if bobo365_com
  backend www_bobo365
  balance leastconn
  option forwardfor
  option httpchk HEAD /index.php HTTP/1.1\r\nHost:\ www.bobo365.com
  server web1_71.136_80 192.168.71.136:80 check inter 5s rise 2 fall 5
  #server web2_71.136_8000 192.168.71.136:8000 check inter 5s rise 2 fall 5
  backend bobo365_com
  balance leastconn
  option forwardfor
  option httpchk HEAD /index.php HTTP/1.1\r\nHost:\ bobo365.com
  server web1_71.136_80 192.168.71.136:80 check inter 5s rise 2 fall 5
  #server web2_71.136 192.168.71.136:8000 check inter 5s rise 2 fall 5
  

检测状态截图:


  




页: [1]
查看完整版本: 软负载均衡之haproxy(二)