共计 10109 个字符,预计需要花费 26 分钟才能阅读完成。
主机环境 RedHat6.5 64 位
实验环境 服务端 1 ip 172.25.29.2
服务端 2 ip 172.25.29.3
管理端 1 ip 172.25.29.1
防火墙状态:关闭
1.Haproxy 的负载均衡及测试
A)负载均衡的配置
[root@server1 ~]# yum install haproxy -y #安装 haproxy
[root@server1 ~]# vim /etc/haproxy/haproxy.cfg #进入主配置文件
59 stats uri /status #虚拟目录,后面的全标记,自己添加
60 ##———————————————————————
61 ## main frontend which proxys to the backends
62 ##———————————————————————
63 #frontend main *:5000
64 # acl url_static path_beg -i /static /images /javascript /sty lesheets
65 # acl url_static path_end -i .jpg .gif .png .css .js
66 #
67 # use_backend static if url_static
68 # default_backend app
69 #
70 ##———————————————————————
71 ## static backend for serving up images, stylesheets and such
72 ##———————————————————————
73 #backend static
74 # balance roundrobin
75 # server static 127.0.0.1:4331 check
76 #
77 ##———————————————————————
78 ## round robin balancing between the various backends
79 ##———————————————————————
80 #backend app
81 # balance roundrobin
82 # server app1 127.0.0.1:5001 check
83 # server app2 127.0.0.1:5002 check
84 # server app3 127.0.0.1:5003 check
85 # server app4 127.0.0.1:5004 check
86 listen wen *:80 #添加服务
87 balance roundrobin# 机制:轮叫
88 server web1 172.25.29.2:80 check #真正的服务端
89 server web2 172.25.29.3:80 check #真正的服务端
[root@server1 ~]# /etc/init.d/haproxy start #开启 haproxy
Starting haproxy: [OK]
B)测试
在测试之前,服务端 1 和服务端 2 要安装 httpd,开启 httpd 服务,并且有不同的测试页。
[root@server2 ~]# /etc/init.d/httpd start
Starting httpd: [OK]
[root@server3 ~]# /etc/init.d/httpd start
Starting httpd: [OK]
开始测试:172.25.29.1/status (服务端 1 和服务端 2httpd 服务都开启
测试:172.25.29.1
刷新之后
当关闭服务端 2 的 httpd 服务时:
[root@server3 ~]# /etc/init.d/httpd stop
Starting httpd: [OK]
刷新之后,结果如图:(只有 wed1 运行,wed2 停止)
当再关闭服务端 1 的 httpd 服务时:
[root@server2 ~]# /etc/init.d/httpd stop
Starting httpd: [OK]
刷新之后,结果如图:(wed1 和 wed2 都停止)
2.Haproxy 中将管理和负载均衡分开及测试
A) 将管理和负载均衡分开的配置
管理端要安装 httpd,要有测试页,在 /etc/httpd/conf/httpd.conf 中将端口改成 8080,不然会冲突。
[root@server1 ~]# vim /etc/haproxy/haproxy.cfg #修改主配置文件
86 frontend wen *:80
87 default_backend app
88 backend app
89 balance roundrobin
90 server web1 172.25.29.2:80 check
91 server web2 172.25.29.3:80 check
92 server local 127.0.0.1:8080 backup
[root@server1 ~]# /etc/init.d/haproxy reload# 刷新
Reloading haproxy:
B) 测试
开始测试(开启管理端、服务端 1、服务端 2 的 httpd 服务)
访问 172.25.29.1 时,服务端 1 和服务端 2 再刷新前后交替出现。
当停止服务端 2 的 httpd 时:
[root@server3 ~]# /etc/init.d/httpd stop
Stopping httpd: [OK]
访问 172.25.29.1 时,只有服务端 1 刷新之后也不变。
再停止服务端 1 的 httpd 时:
[root@server2 ~]# /etc/init.d/httpd stop
Stopping httpd: [OK]
访问 172.25.29.1 时,出现管理端的测试页
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2017-03/141614p2.htm
3.Haproxy 日志的独立及测试
A) 日志独立的配置
[root@server1 ~]# vim /etc/rsyslog.conf #日志的配置文件
13 $ModLoad imudp
14 $UDPServerRun 514 #开启端口和端口号
42 *.info;mail.none;authpriv.none;cron.none;local2.none /var/log/ messages #haproxy 的日志不在 messages 里做记录
63 local2.* /var/log/haproxy.log #将 haproxy 的日志文件单独记录在 haproxy.log 中
[root@server1 ~]# /etc/init.d/rsyslog restart
Shutting down system logger: [OK]
Starting system logger: [OK]
B)测试
[root@server1 ~]# tail -f /var/log/haproxy.log #刚开始没有日志
当在浏览器中访问 172.25.29.1 后出现日志,如图:
4.Haproxy 黑名单及测试
A) 黑名单的配置
[root@server1 log]# vim /etc/haproxy/haproxy.cfg
86 frontend wen *:80
87 acl badhost src 172.25.29.250 #禁止 ip(172.25.29.250)的访问
88 block if badhost #如果禁止访问的 ip 进行访问
89 errorloc 403 http://172.25.29.1:8080 #如果访问,页面中出现的是 http://172.25.29.1:8080 中的信息
# redirect location http://172.25.29.1:8080 if badhost #这句和(88+89)的作用相同
[root@server1 log]# /etc/init.d/haproxy reload #刷新
Reloading haproxy:
B) 测试
开始测试 (管理端、服务端 1、服务端 2 的 httpd 服务全开启)
Ip 为 172.25.29.250 进行测试,刷新不变
用其他的 ip 进行测试
刷新之后
5.Haproxy 的动静分离及测试
A)动静分离的配置
管理端
[root@server1 log]# vim /etc/haproxy/haproxy.cfg
86 frontend wen *:80
87 acl url_static path_beg -i /images #定义开始 images
88 acl url_static path_end -i .gif #结尾.gif
89 use_backend app if url_static #如果是动态,访问 app
90 default_backend html #默认访问 html
91
92 backend html #名字
93 balance roundrobin
94 server web1 172.25.29.2:80 check
95
96 backend app
97 balance roundrobin
98 server web2 172.25.29.3:80 check
[root@server1 log]# /etc/init.d/haproxy reload #刷新
Reloading haproxy:
在服务端 2 作一些简单的配置
[root@server3 html]# pwd #当前目录
/var/www/html
[root@server3 html]# mkdir images #创建 images 目录
[root@server3 html]# mv osi.gif images/ #将图片移动到 images
B)测试
测试 访问 172.25.29.1 结果:
如果访问 172.25.29.1/images/osi.gif,结果:
6.Haproxy 读写分离及测试
A) 读写分离的配置
[root@server1 log]# vim /etc/haproxy/haproxy.cfg
86 frontend wen *:80
87 acl read method DET
88 acl read method HEAD
89 acl write method PUT
90 acl write method POST
91
92 use_backend app if write #如果是写,访问 app
93 default_backend html #默认访问 htm
94
95 backend html
96 balance roundrobin
97 server web1 172.25.29.2:80 check
98
99 backend app
100 balance roundrobin
101 server web2 172.25.29.3:80 check
[root@server1 log]# /etc/init.d/haproxy reload
Reloading haproxy:
对服务端 1 和服务端 2 安装 php 及写一些简单的 php 测试文件
服务端 1
[root@server2 html]# yum install php -y #安装 php
[root@server2 html]# pwd# 当前目录
/var/www/html
[root@server2 html]# vim index.php #上传的测试文件(读)
1 <html>
2 <body>
3
4 <form action=”upload_file.php” method=”post”
5 enctype=”multipart/form-data”>
6 <label for=”file”>Filename:</label>
7 <input type=”file” name=”file” id=”file” />
8 <br />
9 <input type=”submit” name=”submit” value=”Submit” />
10 </form>
11
12 </body>
13 </html>
[root@serve2 html]# /etc/init.d/httpd restart
Stopping httpd: [OK]
Starting httpd: [OK]
服务端 2
[root@server2 html]# yum install php -y #安装 php
[root@server3 html]# vim upload_file.php #存储的测试文件(写)
1 <?php
2 if ((($_FILES[“file”][“type”] == “image/gif”)
3 || ($_FILES[“file”][“type”] == “image/jpeg”)
4 || ($_FILES[“file”][“type”] == “image/png”))
5 && ($_FILES[“file”][“size”] < 2000000))
6 {
7 if ($_FILES[“file”][“error”] > 0)
8 {
9 echo “Return Code: ” . $_FILES[“file”][“error”] . “<br />”;
10 }
11 else
12 {
13 echo “Upload: ” . $_FILES[“file”][“name”] . “<br />”;
14 echo “Type: ” . $_FILES[“file”][“type”] . “<br />”;
15 echo “Size: ” . ($_FILES[“file”][“size”] / 1024) . ” Kb<br />”;
16 echo “Temp file: ” . $_FILES[“file”][“tmp_name”] . “<br />”;
17
18 if (file_exists(“upload/” . $_FILES[“file”][“name”]))
19 {
20 echo $_FILES[“file”][“name”] . ” already exists. “;
21 }
22 else
23 {
24 move_uploaded_file($_FILES[“file”][“tmp_name”],
25 “upload/” . $_FILES[“file”][“name”]);
26 echo “Stored in: ” . “upload/” . $_FILES[“file”][“name”];
27 }
28 }
29 }
30 else
31 {
32 echo “Invalid file”;
33 }
34 ?>
[root@server3 html]# mkdir upload
[root@serve3 html]# chmod 777 upload
[root@server3 html]# /etc/init.d/httpd restart #重启 httpd
Stopping httpd: [OK]
Starting httpd: [OK]
B) 测试
开始测试 172.25.29.1
点 Browse 上传图片,从 php 的测试文件里可以看出后缀只能是.gif,.jpeg,.png 的文件
点击 Submit 后,上传成功,下图是上传信息
虽然在服务端 1 上传了文件,但是存储到了服务端 2,实现了读写分离
[root@server3 html]# cd upload
[root@server3 upload]# ls# 查看
Screenshot from 2016-10-21 17:38:41
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-03/141614.htm
主机环境 RedHat6.5 64 位
实验环境 服务端 1 ip 172.25.29.2
服务端 2 ip 172.25.29.3
管理端 1 ip 172.25.29.1
防火墙状态:关闭
1.Haproxy 的负载均衡及测试
A)负载均衡的配置
[root@server1 ~]# yum install haproxy -y #安装 haproxy
[root@server1 ~]# vim /etc/haproxy/haproxy.cfg #进入主配置文件
59 stats uri /status #虚拟目录,后面的全标记,自己添加
60 ##———————————————————————
61 ## main frontend which proxys to the backends
62 ##———————————————————————
63 #frontend main *:5000
64 # acl url_static path_beg -i /static /images /javascript /sty lesheets
65 # acl url_static path_end -i .jpg .gif .png .css .js
66 #
67 # use_backend static if url_static
68 # default_backend app
69 #
70 ##———————————————————————
71 ## static backend for serving up images, stylesheets and such
72 ##———————————————————————
73 #backend static
74 # balance roundrobin
75 # server static 127.0.0.1:4331 check
76 #
77 ##———————————————————————
78 ## round robin balancing between the various backends
79 ##———————————————————————
80 #backend app
81 # balance roundrobin
82 # server app1 127.0.0.1:5001 check
83 # server app2 127.0.0.1:5002 check
84 # server app3 127.0.0.1:5003 check
85 # server app4 127.0.0.1:5004 check
86 listen wen *:80 #添加服务
87 balance roundrobin# 机制:轮叫
88 server web1 172.25.29.2:80 check #真正的服务端
89 server web2 172.25.29.3:80 check #真正的服务端
[root@server1 ~]# /etc/init.d/haproxy start #开启 haproxy
Starting haproxy: [OK]
B)测试
在测试之前,服务端 1 和服务端 2 要安装 httpd,开启 httpd 服务,并且有不同的测试页。
[root@server2 ~]# /etc/init.d/httpd start
Starting httpd: [OK]
[root@server3 ~]# /etc/init.d/httpd start
Starting httpd: [OK]
开始测试:172.25.29.1/status (服务端 1 和服务端 2httpd 服务都开启
测试:172.25.29.1
刷新之后
当关闭服务端 2 的 httpd 服务时:
[root@server3 ~]# /etc/init.d/httpd stop
Starting httpd: [OK]
刷新之后,结果如图:(只有 wed1 运行,wed2 停止)
当再关闭服务端 1 的 httpd 服务时:
[root@server2 ~]# /etc/init.d/httpd stop
Starting httpd: [OK]
刷新之后,结果如图:(wed1 和 wed2 都停止)
2.Haproxy 中将管理和负载均衡分开及测试
A) 将管理和负载均衡分开的配置
管理端要安装 httpd,要有测试页,在 /etc/httpd/conf/httpd.conf 中将端口改成 8080,不然会冲突。
[root@server1 ~]# vim /etc/haproxy/haproxy.cfg #修改主配置文件
86 frontend wen *:80
87 default_backend app
88 backend app
89 balance roundrobin
90 server web1 172.25.29.2:80 check
91 server web2 172.25.29.3:80 check
92 server local 127.0.0.1:8080 backup
[root@server1 ~]# /etc/init.d/haproxy reload# 刷新
Reloading haproxy:
B) 测试
开始测试(开启管理端、服务端 1、服务端 2 的 httpd 服务)
访问 172.25.29.1 时,服务端 1 和服务端 2 再刷新前后交替出现。
当停止服务端 2 的 httpd 时:
[root@server3 ~]# /etc/init.d/httpd stop
Stopping httpd: [OK]
访问 172.25.29.1 时,只有服务端 1 刷新之后也不变。
再停止服务端 1 的 httpd 时:
[root@server2 ~]# /etc/init.d/httpd stop
Stopping httpd: [OK]
访问 172.25.29.1 时,出现管理端的测试页
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2017-03/141614p2.htm