HAProxy+Keepalived高可用负载均衡系统

环境准备

192.168.37.37   haproxy配置

192.168.37.40   haproxy配置

192.168.37.38   后端真实服务器1

192.168.37.39   后端真实服务器2

后端真实服务器配置

[root@rs1 ~]# yum install httpd -y

[root@rs1 ~]# echo "welcome www.zb.com" >>/var/www/html/index.html

[root@rs1 ~]# systemctl start httpd

[root@rs2 ~]# yum install httpd -y

[root@rs2 ~]# echo "welcome static.zb.com" >>/var/www/html/index.html

[root@rs2 ~]# systemctl start httpd

安装haproxy

[root@haprox1 ~]yum install haproxy -y

备份haproxy配置文件

[root@haprox1 ~]# cp /etc/haproxy/haproxy.cfg{,.bak}

修改配置文件

[root@haprox1 ~]# vim /etc/haproxy/haproxy.cfg

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

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

    acl  host_www      hdr_dom(host)      -i  www.zb.com

    acl  host_static       hdr_dom(host)     -i  static.zb.com

    use_backend server_www          if  host_www

    use_backend server_static          if  host_static

backend static

    balance     roundrobin

    server      static 127.0.0.1:4331 check

backend server_www

    balance     roundrobin

    server  app1 192.168.37.38:80 check

backend server_static

balance roundrobin

server app2 192.168.37.39:80 check

 

访问www.zb.com,跳转到192.168.37.38

访问static.zb.com,跳转到192.168.37.39

 

Haproxy2 haproxy1配置相同

 

配置主、备用keepalived服务器

安装keepalived

[root@haprox1 keepalived]# yum install keepalived

备份配置文件

[root@haprox1 ~]# cp /etc/keepalived/keepalived.conf{,.bak}

配置keepalived文件

[root@haprox1 keepalived]# vim keepalived.conf

! 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 HAPROXY_DEVEL_1    负载均衡器标识,唯一

}

vrrp_instance HAProxy_HA {

    state MASTER   master为工作状态,backup为备用状态

    interface ens33   外提供服务的网络接口

    virtual_router_id 51  虚拟路由标志,masterbackup的标志相同

    priority 100       优先级,master的优先级大于backup的优先级

    advert_int 1     同步间隔通知,masterbackup之间同步检查的时间间隔

    authentication {    验证包括验证方式和密码,验证方式分为PASSAH

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {     虚拟IP地址,与VIP相同

192.168.37.30

    }

}

[root@haproxy2 ~]# vim /etc/keepalived/keepalived.conf

! 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 HAPROXY_DEVEL_2

}

vrrp_instance HAProxy_HA {

    state BACKUP

    interface ens33

    virtual_router_id 51

    priority 50

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

192.168.37.30

    }

}

启动keepalived服务

[root@haprox1 keepalived]# systemctl start keepalived

[root@haprox2 keepalived]# systemctl start keepalived

 

验证

[root@haprox1 ~]# ip a |grep ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    inet 192.168.37.37/24 brd 192.168.37.255 scope global ens33

    inet 192.168.37.30/32 scope global ens33

[root@haproxy2 ~]# ip a|grep ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    inet 192.168.37.40/24 brd 192.168.37.255 scope global ens33

停止主haproxykeepalived

[root@haprox1 ~]# systemctl stop keepalived

[root@haprox1 ~]# ip a |grep ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    inet 192.168.37.37/24 brd 192.168.37.255 scope global ens33

[root@haproxy2 ~]# ip a|grep ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    inet 192.168.37.40/24 brd 192.168.37.255 scope global ens33

    inet 192.168.37.30/32 scope global ens33

查看访问情况

[root@localhost ~]# echo "192.168.37.30 www.zb.com  static.zb.com" >>/etc/hosts

[root@localhost ~]# curl -dump http://www.zb.com

welcome www.zb.com

[root@localhost ~]# curl -dump http://static.zb.com

welcome static.zb.com

 

 

 

 

 

 

posted on 2017-07-21 13:47  i艾斯  阅读(148)  评论(0)    收藏  举报

导航