设为首页 收藏本站
查看: 1815|回复: 1

[经验分享] 使用HAproxy,keepalived实现简单LAMP架构的负载均衡与高可用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-24 10:55:20 | 显示全部楼层 |阅读模式
                      整个架构简单拓扑图如下所示:
QQ截图20160824105508.png
其中:
192.168.10.66与192.168.10.6两台主机提供httpd服务
192.168.10.27与192.168.10.87两台主机提供varnish缓存服务
192.168.10.17与192.168.10.77两台主机安装HAProxy实现客户端请求的调控
192.168.10.7主机安装mariadb,提供数据存储服务
服务器与客户端连接ip地址为172.16.10.99/16,

一.httpd服务
  1.分别于192.168.10.6与192.168.10.66主机上安装httpd程序,因为此处httpd只需要提供简单web服务,故不需要修改配置文件。但是需要在DocumentRoot目录中(/var/www/html)添加对应主页文件便于演示效果
  其中192.168.10.6主机上主页文件index.html内容为
  <h1> server of host 6 </h1>
  响应的192.168.10.66主机上只需要把6改为66即可
启动服务后,使用同一网段主机检测httpd服务是否运行正常
  2.分别在192.168.10.6与192.168.10.66主机上安装php,php-mysql程序,实现httpd与php以及mysql的连接,在主配置文件中DirectoryIndex行最后添加index.php,在DocumentRoot目录中(/var/www/html)添加php主页文件index.php,内容如下:
wKioL1e6_ljixCLKAABbrkQONnE437.jpg
192.168.10.66主机上相似,但index.php内容中需要将6修改为66
  3.在192.168.10.7主机上启动mariadb服务,并添加douhua用户与密码,命令为;  
MariaDB [(none)]> grant all on test.* to 'douhua'@'172.16.%.%' identified by 'passwd';
  4.开启浏览器,分别访问192.168.10.6与192.168.10.66主机,检测mysql是否正常连接
   http://192.168.10.6/index.php
二.varnish服务器的相关配置
  1.分别在192.168.10.27和192.168.10.87主机上安装varnish程序
  2.修改192.168.10.27主机上配置文件/etc/varnish/default.vcl
    1)添加两台后端服务器,内容为
       wKiom1e7AIDyH8OJAABXFkP8ezQ678.jpg
     另一台则将192.168.10.6更改为192.168.10.66即可
    2)定义组调配方式,是否需要缓存
    wKioL1e7AWvTioCbAADFUFt-N3o361.jpg
  其中vcl_init段将后端服务器定义为组,以及添加了调度算法,因为是缓存服务器,后端服务器压力相对较少,因只需要使用轮询即可。vcl_recv中定义如果是以admin开始的URL直接去后端服务器请求数据,不由缓存服务器提供。此处可以添加其他规则,来实现更加精准的调控
    3)添加响应首部项目,便于效果验证
wKioL1e7ArqROrCaAACl3SIGazI933.jpg
   其中if段表示如果varnish匹配到了客户端请求的资源,则在响应报文首部添加hit-result,且结果为HIT,否则为MISS,添加ipaddr行表示经由的varnish服务器,此处表示了响应的varnish服务器
  3.192.168.10.87主机上配置文件与192.168.10.27类似
  4.在后端服务器主页目录中添加admin目录,并添加测试网页
  5.启动varnish服务,并打开服务器查看结果
    http://192.168.10.27:6081
  查看响应首部可以看到刚才添加的两个响应首部,以及页面内容变化
三.HAProxy实现负载均衡

  1.在192.168.10.17与192.168.10.77主机上分别安装HAProxy程序
  2.设定前端面向客户端的相关配置,如下图所示:
wKiom1e8QcPjBpfGAAB1-tWsYWc306.jpg

  注:bind一行表示绑定的端口,接下来两行定义了两个acl规则,以“dynamic”和以“.php”结尾的URL;如果满足上述条件则使用“dong”组后端服务器,其他则使用默认的“webservers”组服务器;rspadd则是在响应报文中添加一行,显示了反代方式。
  3.设定后端服务器,如下图所示
wKiom1e8Qw6ysWPHAABzce-u-Vg596.jpg
  注:balance定义算法,其他算法包括source,uri,leastconn等;server则定义了后端服务器以及权重。本次架构中“dong”组仅仅使用了一台服务器,如果有需要可以自行添加多台并定义算法。
  4.启动haproxy服务,开启浏览器输入对应ip验证是否正常访问:
  http://192.168.10.17

四.利用keepalived实现HAProxy的高可用
  1.在192.168.10.17与192.168.10.77主机上分别安装keepalived程序包
  2.编辑配置文件(/etc/keepalived/keepalived.conf)内容如下:
wKiom1e7BRqjS5wHAAEe3Juogus669.jpg

  注:
    1)global_defs段定义了邮件发送的相关配置,此处不做详细说明
    2)vrrp_script段定义了每隔1S检测本机haproxy服务是否正在运行,如果服务停止了,则priority值减少5,若正常,该脚本正常退出
    3)vrrp_instance段定义监控的具体配置
      state:定义当前虚拟路由器状态,如果是主服务器则为MASTER,否则为BACKUP。
      priority:定义了当前虚拟路由的优先级
      virtual_ipaddress:定义了虚拟路由IP地址
      track_script:调用之前定义的脚本实现监控
    4)192.168.10.17与192.168.10.77主机上配置文件中需要修改优先级和state
  3.启动keepalived服务,并访问
    http://172.16.10.99

五.总结
  通过以上四个步骤可以简单搭建一个利用HAProxy实现负载均衡的LAMP架构。上述架构中,除mariadb服务器之外,其他任何一台服务器down机,该系统仍然可以运行。因为增加了varnish缓存功能,静态资源的访问直接通过缓存提供,可以极大减轻后端服务器的压力。另外在实现动静分离的时候,可以在HAProxy服务器,与varnish服务器两处实现。具体在何处实现应该根据实际情况确定,且实验中分离条件较为简陋,实际生产中应增加其他多个条件,从而增减缓存命中率,提供系统的效率。
                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-262323-1-1.html 上篇帖子: Linux_haproxy_acl访问控制(4)v1.0 下篇帖子: haproxy之配置文件详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表