阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

HAproxy的基本配置(负载均衡+日志独立+动静分离+读写分离)

409次阅读
没有评论

共计 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 服务都开启

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

测试:172.25.29.1

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

刷新之后

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

当关闭服务端 2 的 httpd 服务时:

[root@server3 ~]# /etc/init.d/httpd stop

Starting httpd:                                            [OK]

刷新之后,结果如图:(只有 wed1 运行,wed2 停止)

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

当再关闭服务端 1 的 httpd 服务时:

[root@server2 ~]# /etc/init.d/httpd stop

Starting httpd:                                            [OK]

刷新之后,结果如图:(wed1 和 wed2 都停止)

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

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 服务)

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

访问 172.25.29.1 时,服务端 1 和服务端 2 再刷新前后交替出现。

当停止服务端 2 的 httpd 时:

[root@server3 ~]# /etc/init.d/httpd stop

Stopping httpd:                                            [OK]

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

访问 172.25.29.1 时,只有服务端 1 刷新之后也不变。

再停止服务端 1 的 httpd 时:

[root@server2 ~]# /etc/init.d/httpd stop

Stopping httpd:                                            [OK]

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

访问 172.25.29.1 时,出现管理端的测试页

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

更多详情见请继续阅读下一页的精彩内容 :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  #刚开始没有日志

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

当在浏览器中访问 172.25.29.1 后出现日志,如图:

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

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 进行测试,刷新不变

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

用其他的 ip 进行测试

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

刷新之后

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

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 结果:

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

如果访问 172.25.29.1/images/osi.gif,结果:

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

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

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

点 Browse 上传图片,从 php 的测试文件里可以看出后缀只能是.gif,.jpeg,.png 的文件

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

点击 Submit 后,上传成功,下图是上传信息

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

虽然在服务端 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 服务都开启

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

测试:172.25.29.1

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

刷新之后

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

当关闭服务端 2 的 httpd 服务时:

[root@server3 ~]# /etc/init.d/httpd stop

Starting httpd:                                            [OK]

刷新之后,结果如图:(只有 wed1 运行,wed2 停止)

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

当再关闭服务端 1 的 httpd 服务时:

[root@server2 ~]# /etc/init.d/httpd stop

Starting httpd:                                            [OK]

刷新之后,结果如图:(wed1 和 wed2 都停止)

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

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 服务)

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

访问 172.25.29.1 时,服务端 1 和服务端 2 再刷新前后交替出现。

当停止服务端 2 的 httpd 时:

[root@server3 ~]# /etc/init.d/httpd stop

Stopping httpd:                                            [OK]

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

访问 172.25.29.1 时,只有服务端 1 刷新之后也不变。

再停止服务端 1 的 httpd 时:

[root@server2 ~]# /etc/init.d/httpd stop

Stopping httpd:                                            [OK]

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

访问 172.25.29.1 时,出现管理端的测试页

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2017-03/141614p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计10109字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7961378
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...