haproxy調度web案例

1、實驗架構圖html

haproxy調度web案例

haproxy經過ACL規則來實現智能負載均衡
當輸入bbs.linux.com時,haproxy將請求轉發到後端bbs服務器
當輸入blog.linux.com時,haproxy將請求轉發到後端blog服務器
前端兩臺haproxy服務器經過部署keepalived來實現haproxy高可用前端

2、準備工做linux

系統版本:centos7
haproxy服務器
haproxy01 192.168.122.100
haproxy02 192.168.122.200
bbs服務器
web01 192.168.122.101
web02 192.168.166.102
blog服務器
web03 192.168.122.103
web04 192.168.122.104
關閉firewalld和SElinux,各主機均爲固定ipweb

3、部署bbs服務器和blog服務器的測試頁面redis

安裝httpd並啓動vim

[root@web01 ~]# yum install -y httpd
[root@web01 ~]# echo "web01.bbs.com" >/var/www/html/index.html
[root@web01 ~]# systemctl start httpd
[root@web01 ~]# systemctl enable httpd

web01與web02測試頁面分別爲web01.bbs.com和web02.bbs.com
web03與web04測試頁面分別爲web03.blog.com和web04.blog.com後端

4、在haproxy01主機上安裝haproxy,並進行配置centos

[root@haproxy01 ~]# yum install -y haproxy

配置文件所在位置瀏覽器

[root@haproxy01 ~]# rpm -qc haproxy
/etc/haproxy/haproxy.cfg
/etc/logrotate.d/haproxy

打開並編輯配置文件服務器

[root@haproxy01 ~]# vim /etc/haproxy/haproxy.cfg
global
        maxconn 2000
        nbproc 1
        user nobody
        group nobody
        log 127.0.0.1 local0 info
        daemon
        pidfile /var/run/haproxy.pid

defaults
        mode http
        retries 3
        timeout connect 5s
        timeout client 10s
        timeout server 30s
        timeout check 2s

listen admin_status
        bind 0.0.0.0:9088
        mode http
        log 127.0.0.1 local0 err
        stats refresh 30s
        stats uri /haproxy-status
        stats realm welcome login
        stats auth admin:admin
        stats hide-version
        stats admin if TRUE

frontend test-proxy
        bind *:80
        mode http
        log global
        option httplog
        option forwardfor

        acl host_bbs hdr_dom(host) -i bbs.linux.com
        acl host_blog hdr_beg(host) -i blog.

        use_backend server_bbs if host_bbs
        use_backend server_blog if host_blog

backend server_bbs
        mode http
        option redispatch
        cookie SERVERID
        option abortonclose
        balance roundrobin
        server bbs01 192.168.122.101:80 cookie bbs01 weight 3 check inter 2000 rise 1 fall 2
        server bbs02 192.168.122.102:80 cookie bbs02 weight 3 check inter 2000 rise 1 fall 2

backend server_blog
        mode http
        option redispatch
        cookie SERVERID
        option abortonclose
        balance roundrobin
        server blog01 192.168.122.103:80 cookie blog01 weight 3 check inter 2000 rise 1 fall 2
        server blog02 192.168.122.104:80 cookie blog02 weight 3 check inter 2000 rise 1 fall 2

啓動haproxy服務

[root@haproxy01 ~]# systemctl start haproxy
[root@haproxy01 ~]# ss -antp |grep haproxy
LISTEN     0      128                       *:9088                     *:*      users:(("haproxy",8742,4),("haproxy",8741,4))
LISTEN     0      128                       *:80                       *:*      users:(("haproxy",8742,6),("haproxy",8741,6))

5、階段測試
打開瀏覽器,經過輸入bbs.linux.com,可看到web01和web02的負載均衡效果。經過輸入blog.linux.com,可看到web03和web04的負載均衡效果。
haproxy調度web案例
haproxy調度web案例
haproxy調度web案例
haproxy調度web案例

6、測試訪問haproxy的監控頁面

haproxy調度web案例

7、安裝配置haproxy02
軟件安裝方法和配置文件與haproxy01一致

[root@haproxy02 ~]# yum install -y haproxy
[root@haproxy02 ~]# scp 192.168.122.100:/etc/haproxy/haproxy.cfg /etc/haproxy/
[root@haproxy02 ~]# systemctl start haproxy
[root@haproxy02 ~]# systemctl enable haproxy

8、配置keepalived實現haproxy高可用

分別在兩臺haproxy主機上安裝keepalived

[root@haproxy01 ~]# yum install -y keepalived

haproxy01主機keepalived配置文件以下
[root@haproxy01 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id haproxy01
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 80
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass redhat
    }
    virtual_ipaddress {
        192.168.122.111
    }
}
[root@haproxy01 ~]# scp /etc/keepalived/keepalived.conf 192.168.122.200:/etc/keepalived/

haproxy02主機keepalived配置文件以下

[root@haproxy01 ~]# scp /etc/keepalived/keepalived.conf 192.168.122.200:/etc/keepalived/
! Configuration File for keepalived

global_defs {
 router_id haproxy02
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 80
    priority 50
    advert_int 1
    authentication {
            auth_type PASS
            auth_pass redhat
    }
    virtual_ipaddress {
            192.168.122.111
    }
}

分別啓動keepalived服務

[root@haproxy01 ~]# systemctl start keepalived
[root@haproxy01 ~]# systemctl enable keepalived
ln -s '/usr/lib/systemd/system/keepalived.service' '/etc/systemd/system/multi-user.target.wants/keepalived.service'
[root@haproxy01 ~]# systemctl status keepalived
keepalived.service - LVS and VRRP High Availability Monitor
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled)
   Active: active (running) since 二 2018-06-05 19:56:24 CST; 33s ago
 Main PID: 8821 (keepalived)
   CGroup: /system.slice/keepalived.service
           ├─8821 /usr/sbin/keepalived -D
           ├─8822 /usr/sbin/keepalived -D
           └─8823 /usr/sbin/keepalived -D
[root@haproxy01 ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:4f:62:e6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.100/24 brd 192.168.122.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.122.111/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe4f:62e6/64 scope link 
       valid_lft forever preferred_lft forever
[root@haproxy02 ~]# systemctl start keepalived
[root@haproxy02 ~]# systemctl enable keepalived
ln -s '/usr/lib/systemd/system/keepalived.service' '/etc/systemd/system/multi-user.target.wants/keepalived.service'
[root@haproxy02 ~]# systemctl status keepalived
keepalived.service - LVS and VRRP High Availability Monitor
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled)
   Active: active (running) since 二 2018-06-05 19:57:24 CST; 12s ago
 Main PID: 8738 (keepalived)
   CGroup: /system.slice/keepalived.service
           ├─8738 /usr/sbin/keepalived -D
           ├─8739 /usr/sbin/keepalived -D
           └─8740 /usr/sbin/keepalived -D

配置haproxy的記錄日誌

[root@haproxy02 ~]# vim /etc/sysconfig/rsyslog
# Options for rsyslogd
# Syslogd options are deprecated since rsyslog v3.
# If you want to use them, switch to compatibility mode 2 by "-c 2"
# See rsyslogd(8) for more details
SYSLOGD_OPTIONS="-c 2 -r"
[root@haproxy02 ~]# vim /etc/rsyslog.conf 

$ModLoad imudp
$UDPServerRun 514

local0.*                                                /var/log/haproxy.log
[root@haproxy02 ~]# systemctl restart rsyslog.service haproxy.service
[root@haproxy02 ~]# ls /var/log/
anaconda  boot.log  cron   dmesg.old    lastlog  messages  rhsm    spooler   tuned  yum.log
audit     btmp      dmesg  haproxy.log  maillog  ppp       secure  tallylog  wtmp
[root@haproxy02 ~]# tail -f /var/log/haproxy.log 
Jun  5 20:13:58 localhost haproxy[8805]: Proxy test-proxy started.
相關文章
相關標籤/搜索