一  Haproxy实现负载均衡

1.  安装Haproxy:  首先要准备haproxy压缩包。

    安装rpm-bulid服务(第2行),使用rpmbuild命令将haproxy的压缩包进行二进制处理(第5行),在这个过程中可能会出现软件的依赖性问题比如依赖包prce-devel,安装这个依赖包解决依赖性问题(第8行)。解决之后重新进行二进制处理。

     处理之后会在/root/rpmbuild/RPMS/x86_64目录下生成haproxy-1.6.11-1.x86_64.rpm的安装包,rpm  -ivh安装这个包(第10行)

    安装之后将原来的压缩包解压(第11行)解压之后进入haproxy-1.6.11/example目录,在这个目录里将content-sw-sample.cfg文件复制为/etc/haproxy/haproxy.cfg文件(13行)

haproxy 权重配置 haproxy重载配置文件_html

      至于为什么要复制到这个路径,是因为haproxy的配置文件中指定了路径:

haproxy 权重配置 haproxy重载配置文件_haproxy 权重配置_02

  

   这样haproxy就装好了。

2.  由于在配置文件中指定了用户的uid为200,gid为200,所以先要新建用户组和用户:

           groupadd -g  200  haproxy     #新建用户组

           useradd  -u   200  -g  200  -M  haproxy   #新建用户

       另外在配置文件中有对haproxy服务用户的限制,所以需要在/etc/security/limit.conf文件中写入限制:

haproxy 权重配置 haproxy重载配置文件_haproxy 权重配置_03

        之后编辑配置文件/etc/haproxy/haproxy.conf:

         绑定端口为172.25.17.5(haproxy端)的80端口,并设定工作模式为static(静态),负载均衡模式为roundrobin(轮询机制),指定两个后端服务器172.25.17.2和172.25.17.3

haproxy 权重配置 haproxy重载配置文件_php_04

haproxy 权重配置 haproxy重载配置文件_html_05

3.配置文件编辑完成之后开启服务,并在后端服务器172.25.17.2和172.25.17.3端开启httpd服务,配置好默认发布目录的Iindex.html文件之后重启httpd服务,在浏览器里解析172.25.17.5主机就可以查看到负载均衡。

4. 前端负载均衡服务健康检查:

    访问172.25.17.5/monitoruri,看到解析结果为200k说明前端服务器服务正常

haproxy 权重配置 haproxy重载配置文件_配置文件_06

    后端服务器健康检查:

    访问172.25.17.5/admin/stats就可以查看到后端服务器的工作状态。红色表示工作不正常,绿色表示工作正常。

haproxy 权重配置 haproxy重载配置文件_html_07

haproxy服务的日志保存

     在/etc/rsyslog.conf文件中,配置haproxy服务的日志保存路径:

    首先打开UDP传输协议:

haproxy 权重配置 haproxy重载配置文件_配置文件_08

     再在配置文件的42行指定来自local0设备(haproxy服务的设备)的日志,不保存在/var/log/message文件中。

    在62行编辑来自local0设备的日志保存在/var/log/haproxy.log文件中。

haproxy 权重配置 haproxy重载配置文件_php_09

  日志配置文件编辑完成之后保存退出,/etc/init.d/rsyslog  restart重启日志服务,再次解析172,25,17,5端进行负载均衡验证名就可以在/var/log/haproxy.log文件中查看到负载均衡的相关日志。

二  haproxy的动态解析

    1.  在server3端安装php,并在httpd服务的默认发布目录/var/www/html下写入php文件index.php:

haproxy 权重配置 haproxy重载配置文件_html_10

   2   在haproxy的配置文件中指定当在浏览器中的url是以.php结尾时,将定向到后端服务器的static组,也就是172.25.17.2端的httpd服务。编辑完成之后保存退出,/etc/init.d/haproxy  reload重新加载haproxy服务。

haproxy 权重配置 haproxy重载配置文件_haproxy 权重配置_11

3  测试:

   在浏览器中访问172.25.17.5/index.php将定向到172.25.17.3端,看到php页面:

haproxy 权重配置 haproxy重载配置文件_配置文件_12

三  haproxy的重定向

     错误重定向:

       在haproxy的配置文件中,将来自172.25.17.250主机的请求加入源地址名单blacklist(40行),如果请求来自与balcklist名单中的ip,将直接拒绝(41行),并将403的报错(请求被拒绝)重定向到172.25.17.5的8080端口。可以在172.25.17.5主机安装httpd服务并将端口改为8080然后开启服务,在默认发布目录/var/www/html目录里新建index.html文件写入本网站正在维护的信息,之后重启httpd服务。

haproxy 权重配置 haproxy重载配置文件_haproxy 权重配置_13

           在172.25.17.250端解析172.25.17.5,将解析到172.25.17.5端的httpd服务:

haproxy 权重配置 haproxy重载配置文件_html_14

直接重定向:

      将来自172.25.17.250的请求直接转向172.25.17.5的httpd服务,或者转向www.baidu.com,这样172.25.17.250端在访问时将直接访问到百度。

haproxy 权重配置 haproxy重载配置文件_haproxy 权重配置_15

四  haproxy的读写分离

         在server2端建立目录/var/www/html/images,将要读的图片放在这个目录,编辑配置文件:

        当进行读操作时默认访问static1组即172.25.17.2端,当进行写操作时访问static2组即172.25.17.3端

haproxy 权重配置 haproxy重载配置文件_php_16

    在server3和server2端安装php,准备一个目录upload,里面有着关于上传图片的配置脚本:

haproxy 权重配置 haproxy重载配置文件_php_17

    将这个目录放在server3和server2端的/var/www/html目录下,进入这个目录,将里面的所有内容移动到上层目录即/var/www/html目录,之后chmod 777 upload给upload目录满权限任何人可写。编辑upload_file.php脚本文件,将可上传的图片大小限制改为2M。在server2端执行同样的操作

haproxy 权重配置 haproxy重载配置文件_html_18

   保存之后重启haproxy和httpd服务,访问172.25.17.5/images/reahat.jpg服务转到172.25.17.2主机上读到图片:

haproxy 权重配置 haproxy重载配置文件_配置文件_19

访问172.25.17.5/upload_file.php或者直接访问172.25.17.5,会出现上传图片的界面:

haproxy 权重配置 haproxy重载配置文件_php_20

选择图片进行上传之后,可以查看到上传的相关信息存储在upload目录里:

haproxy 权重配置 haproxy重载配置文件_php_21

上传之后发现在server2端的upload目录为空,server3端的uoload目录里有vim.jpg文件,而读的文件在server2端的images目录里,这样就实现了读写分离。