原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处 、作者信息和本声明。否则将追究法律责任。
http://jerry12356.blog.51cto.com/4308715/1858396
1
2
3
4
5
6
7
|
listenwebsites
bind 192.168.100.121:80
option httpchk HEAD
/check
.html HTTP
/1
.0
timeout server 15s
timeout connect 30s
server mylinux3 192.168.100.181:80 check port 80 inter 2000 fall 3
server mylinux4 192.168.100.182:80 check port 80 inter 2000 fall 3
|
1
|
[root@mylinux3 ~]
# echo check >>/var/www/html/check.html
|
1
2
3
4
5
6
7
8
|
listenwebsites
bind 192.168.100.121:80
option httpchk GET
/info
.txt
#option httpchk HEAD /check.html HTTP/1.0
timeout server 15s
timeout connect 30s
server mylinux3 192.168.100.181:80 check port 80 inter 2000 fall 3
server mylinux4 192.168.100.182:80 check port 80 inter 2000 fall 3
|
1
|
[root@mylinux4 ~]
# touch /var/www/html/info.txt
|
1
2
3
4
5
6
|
[root@mylinux3 ~]
# cat /etc/httpd/logs/access_log
192.168.100.121 - - [02
/Oct/2016
:01:17:01 +0800]
"GET / HTTP/1.1"
200 222
192.168.100.121 - - [02
/Oct/2016
:01:17:01 +0800]
"GET / HTTP/1.1"
200 222
"-"
"curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
192.168.100.121 - - [02
/Oct/2016
:01:20:53 +0800]
"GET / HTTP/1.1"
200 222
192.168.100.121 - - [02
/Oct/2016
:01:20:53 +0800]
"GET / HTTP/1.1"
200 222
"-"
"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
192.168.100.121 - - [02
/Oct/2016
:01:20:53 +0800]
"GET /favicon.ico HTTP/1.1"
404 290
|
1
2
3
4
5
6
7
8
9
|
listenwebsites
bind 192.168.100.120:80
option forwardfor
#option httpchk GET /info.txt
#option httpchk HEAD /check.html HTTP/1.0
timeout server 15s
timeout connect 30s
server mylinux3 192.168.100.181:80 check port 80 inter 2000 fall 3
server mylinux4 192.168.100.182:80 check port 80 inter 2000 fall 3
|
1
2
3
4
5
|
[root@mylinux3 ~]
# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: httpd: apr_sockaddr_info_get() failed
for
mylinux3.contoso.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1
for
ServerName
[ OK ]
|
1
2
3
4
5
|
[root@mylinux3 ~]
# tail -f /etc/httpd/logs/access_log
"192.168.100.1"
192.168.100.120 192.168.100.181 [02
/Oct/2016
:01:44:12 +0800]
"GET / HTTP/1.1"
200 222
"-"
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
192.168.100.121 - - [02
/Oct/2016
:01:44:12 +0800]
"GET / HTTP/1.1"
200 222
"-"
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
"192.168.100.1"
192.168.100.120 192.168.100.181 [02
/Oct/2016
:01:44:13 +0800]
"GET /favicon.ico HTTP/1.1"
404 290
"-"
"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
192.168.100.121 - - [02
/Oct/2016
:01:44:13 +0800]
"GET /favicon.ico HTTP/1.1"
404 290
"-"
"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
[root@mylinux1 ~]
# service haproxy check
Configuration
file
is valid
[root@mylinux1 ~]
# service haproxy restart
Stop haproxy successful.
Start haproxy successful.
[root@mylinux1 ~]
# service haproxy check
Configuration
file
is valid
[root@mylinux1 ~]
# service haproxy restart
Stop haproxy successful.
Start haproxy successful.
[root@mylinux1 ~]
# curl http://192.168.100.181
mylinux3
[root@mylinux1 ~]
# curl http://192.168.100.182
mylinux4
[root@mylinux1 ~]
# for i in {1..20};do curl http://192.168.100.120/;done
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
mylinux3
|
1
2
3
|
[root@mylinux3 ~]
# /etc/init.d/httpd stop
Stopping httpd: [ OK ]
[root@mylinux3 ~]
#
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[root@mylinux1 ~]
# for i in {1..20};do curl http://192.168.100.120/;done
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
mylinux4
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[root@mylinux3 conf]
# cat vhost.conf
<VirtualHost *:8001>
ServerAdmin admin@web1.com
DocumentRoot
/var/www/html/web1
ServerName www.web1.com
ErrorLog logs
/web1-error
.log
CustomLog logs
/web1-access
.log common
<
/VirtualHost
>
<VirtualHost *:8002>
ServerAdmin admin@web2.com
DocumentRoot
/var/www/html/web2
ServerName www.web2.com
ErrorLog logs
/web2-error
.log
CustomLog logs
/web2-access
.log common
<
/VirtualHost
>
[root@mylinux3 conf]
# mkdir -p /var/www/html/{web1,web2}
[root@mylinux3 conf]
# echo web1 >>/var/www/html/web1/index.html
[root@mylinux3 conf]
# echo web2 >>/var/www/html/web2/index.html
[root@mylinux3 conf]
# /etc/init.d/httpd start
Starting httpd: [ OK ]
[root@mylinux3 conf]
# curl http://192.168.100.181:8001/
web1
[root@mylinux3 conf]
# curl http://192.168.100.181:8002/
web2
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[root@mylinux4 conf]
# cat vhost.conf
<VirtualHost *:8001>
ServerAdmin admin@web3.com
DocumentRoot
/var/www/html/web3
ServerName www.web3.com
ErrorLog logs
/web3-error
.log
CustomLog logs
/web3-access
.log common
<
/VirtualHost
>
<VirtualHost *:8002>
ServerAdmin admin@web4.com
DocumentRoot
/var/www/html/web4
ServerName www.web4.com
ErrorLog logs
/web4-error
.log
CustomLog logs
/web4-access
.log common
<
/VirtualHost
>
[root@mylinux4 conf]
# mkdir -p /var/www/html/{web3,web4}
[root@mylinux4 conf]
# for i in {3..4};do echo web$i >> /var/www/html/web$i/index.html;done
[root@mylinux4 conf]
# /etc/init.d/httpd start
Starting httpd: [ OK ]
[root@mylinux4 conf]
# curl http://192.168.100.182:8001/
web3
[root@mylinux4 conf]
# curl http://192.168.100.182:8002/
web4
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
global
#log 127.0.0.1 local0
log 127.0.0.1:514 local0 warning
pidfile
/usr/local/haproxy/var/run/haproxy
.pid
daemon
maxconn 4096
chroot
/usr/local/haproxy/var/chroot
user haproxy
group haproxy
nbproc 1
defaults
logglobal
mode http
retries3
option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch
maxconn2000
balance roundrobin
timeout connect 5000
timeout client 50000
timeoutserver 50000
listen haproxy_stats
bind *:8000
mode http
option httplog
maxconn 20
stats
enable
stats refresh 30s
stats uri
/haproxy_status
stats auth admin:123456
stats hide-version
#listenwebsites
# bind 192.168.100.120:80
# option forwardfor
# #option httpchk GET /info.txt
# #option httpchk HEAD /check.html HTTP/1.0
# timeout server 15s
# timeout connect 30s
# server mylinux3 192.168.100.181:80 check port 80 inter 2000 fall 3
# server mylinux4 192.168.100.182:80 check port 80 inter 2000 fall 3 backup
#
frontend web
bind 192.168.100.121:80
acl mylinux3_dom hdr(host) -i www.mylinux3.com
#acl规则名称为mylinux3_dom,规则为检查访问域名是否为www.mylinux3.com,-i表示不区分大小写
acl mylinux4_dom hdr(host) -i www.mylinux4.com
use_backend mylinux3
if
mylinux3_dom
#如果符合mylinux3_dom规则,则转发给mylinux3的后端作用域
use_backend mylinux4
if
mylinux4_dom
#如果符合mylinux4_dom规则,则转发给mylinux4的后端作用域
default_backend mylinux3
#默认情况下转发给mylinux3的后端作用域
backend mylinux3
#定义一个后端作用域
balance leastconn
#轮询方式,最小连接数
option httpclose
#每次请求完毕后,主动关闭http通道
option forwardfor
#如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
server web1 192.168.100.181:8001 check port 8001 inter 2000 fall 1
server web2 192.168.100.181:8002 check port 8002 inter 2000 fall 1
backend mylinux4
balance roundrobin
option httpclose
option forwardfor
option redispatch
#当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
#option httpchk /index.html HTTP/1.0
server web1 192.168.100.182:8001 check port 8001 inter 1000 fall 2
server web2 192.168.100.182:8002 check port 8002 inter 1000 fall 2
|
1
2
3
|
[root@mylinux1 conf]
# service haproxy restart
Stop haproxy successful.
Start haproxy successful.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
[root@mylinux1 conf]
# vi /etc/hosts
[root@mylinux1 conf]
# tail -1 /etc/hosts
192.168.100.121 www.mylinux3.com www.mylinux4.com
[root@mylinux1 conf]
# for i in {1..10};do curl http://www.mylinux3.com/;done
web1
web2
web1
web2
web1
web2
web1
web2
web1
web2
[root@mylinux1 conf]
# for i in {1..10};do curl http://www.mylinux4.com/;done
web3
web4
web3
web4
web3
web4
web3
web4
web3
web4
[root@mylinux1 conf]
# for i in {1..10};do curl http://192.168.100.121/;done
web1
web2
web1
web2
web1
web2
web1
web2
web1
web2
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@mylinux3 conf]
# mkdir /var/www/html/web1/php
[root@mylinux3 conf]
# echo "php on web1" >>/var/www/html/web1/php/index.html
[root@mylinux3 conf]
# mkdir /var/www/html/web2/php
[root@mylinux3 conf]
# echo "php on web2" >>/var/www/html/web2/php/index.html
[root@mylinux3 conf]
# curl http://192.168.100.181:8001/php/
php on web1
[root@mylinux3 conf]
# curl http://192.168.100.181:8002/php/
php on web2
[root@mylinux4 conf]
# mkdir /var/www/html/web3/java
[root@mylinux4 conf]
# echo "java on web3" >>/var/www/html/web3/java/index.html
[root@mylinux4 conf]
# mkdir /var/www/html/web4/java
[root@mylinux4 conf]
# echo "java on web4" >>/var/www/html/web4/java/index.html
[root@mylinux4 conf]
# curl http://192.168.100.182:8001/java/
java on web3
[root@mylinux4 conf]
# curl http://192.168.100.182:8002/java/
java on web4
|
1
2
3
|
[root@mylinux1 conf]
# service haproxy restart
Stop haproxy successful.
Start haproxy successful.
|
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@mylinux1 conf]
# curl http://192.168.100.121/
mylinux3
[root@mylinux1 conf]
# curl http://192.168.100.121/
mylinux4
[root@mylinux1 conf]
# curl http://192.168.100.121/php/
php on web1
[root@mylinux1 conf]
# curl http://192.168.100.121/php/
php on web2
[root@mylinux1 conf]
# curl http://192.168.100.121/java/
java on web3
[root@mylinux1 conf]
# curl http://192.168.100.121/java/
java on web4
|
1
2
3
|
[root@mylinux1 conf]
# service haproxy restart
Stop haproxy successful.
Start haproxy successful.
|