软负载均衡之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]