热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Ubuntu下HAproxy+Keepalived负载均衡的安装部署及使用笔记

HAproxy+Keepalived负载均衡的安装部署及使用手册一、首先环境介绍:LB1:10.10.13.240LB2:10.10.13.241webserver1:10.10.13.243webserver2:10.10.13.244LB1和LB2做keepalived主从,对haproxy服务提供切换;haproxy服务将调度两台webserver,w

HAproxy + Keepalived负载均衡的安装部署及使用手册

一、首先环境介绍:
 
LB1:10.10.13.240
LB2:10.10.13.241
web server1 :10.10.13.243

web server2 :10.10.13.244

LB1和LB2做keepalived主从,对haproxy服务提供切换;haproxy服务将调度两台web server,
web server 的对外虚拟IP是10.10.13.245 。

二、243/244:两台RealServer的 web服务配置

1、先安装web服务: apt-get install apache2

2、修改web服务器日志格式
vi /etc/apache2/apache2.conf
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

3、注释掉原来的CustomLog,并修改文档根路径DocumentRoot为/var/www
vi /etc/apache2/sites-available/default
SetEnvIf Request_URI "^/check\.txt$" dontlog
CustomLog /var/log/apache2/access.log combined env=!dontlog

echo "The web service provider is 243|244" > /var/www/index.html

4、重启web服务器
/etc/init.d/apache2 restart
 
5、建立check文件,haproxy使用该文件检查WEB状态,必须建立
touch /var/www/check.txt
三、240/241两台服务器的haproxy配置

1、 安装haproxy
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.22.tar.gz
tar xvf haproxy-1.4.22.tar.gz
cd haproxy-1.4.22
make TARGET=36-Ubuntu
make PREFIX=/usr/local/haproxy install
 
2、 编辑其配置文件
cd /etc
mkdir haproxy
vim haproxy/haproxy.cfg
###########全局配置#########

global
        #daemon
        #nbproc 1

        #pidfile /var/run/haproxy.pid

        log 127.0.0.1 local0

        log 127.0.0.1 local1 notice

        maxconn 4096

########默认配置############

defaults
        log global

        mode http              #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK

        retries 3              #两次连接失败就认为是服务器不可用,也可以通过后面设置

        #option redispatch      #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器

        #option abortonclose    #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接

        option httplog

        option dontlognull

        option redispatch

        maxconn 2000            #默认的最大连接数

        timeout connect 5000ms    #连接超时

        timeout client 30000ms    #客户端超时

        timeout server 30000ms  #服务器超时

        #timeout check 2000      #=心跳检测超时

      log 127.0.0.1 local0 err    #开启记录haproxy日志

listen web 10.10.13.245:80
        mode http

        stats enable

        balance roundrobin

        option httpclose

        option forwardfor

        option httpchk HEAD /check.txt HTTP/1.0

        server nc243 10.10.13.243:80 COOKIE A check

        server nc244 10.10.13.244:80 COOKIE B check

或者:
 
frontend shishi
        bind *:82

        mode http

        acl api_net url_sub -i sip_apiname=engagecloud

        use_backend engagecloud if api_net

        default_backend engagecloud

backend engagecloud
        mode http

        balance roundrobin

        server app 10.15.14.130:80 COOKIE A

        server app1 10.15.14.131:8080 COOKIE B

backend salesapp
        mode http

        server app1 10.15.14.131:8080 COOKIE B

 
frontend shishi2
        bind *:822

        mode http

        acl api_net url_sub -i sip_apiname=engagecloud

        use_backend engagecloud if api_net

        default_backend salesapp1 

backend engagecloud1
        mode http

        server app 10.15.14.130:80 COOKIE A

backend salesapp1
        mode http

        server app1 10.15.14.131:8080 COOKIE B

        server app 10.15.14.130:80 COOKIE A

frontend http-ip //前端节点定义
 
bind 10.10.13.245:80  //虚拟服务节点监听80端口
    mode http
    log global
    option httplog
    option httpclose //每次请求完毕后主动关闭http通道,HA-Proxy不支持keep-alive模式,只能够模拟这种模式的实现
    option forwardfor  //如果后端服务器需要获得客户端的真实IP需要配置次参数,将可以从Http Header中获得客户端IP

    capture request header Host len 20 //此配置和一下的类似配置都是抓取Http请求中的参数记录到日志中。
    capture request header User-Agent len 16
    capture request header Content-Length len 10   
    capture request header Referer len 20
    capture response header Content-Length len 10

//控制策略的配置,参考别人的配置,使用时要根据自己的实际情况。

    acl api_taobao url_sub -i sip_apiname=taobao. //在请求url中包含sip_apiname=taobao,则此控制策略返回true,否则为false

    acl api_alisoft url_sub -i sip_apiname=alisoft. //在请求url中包含sip_apiname=alisoft,则此控制策略返回true,否则为false

    acl invalid_req url_sub -i sip_apiname= //在请求url中包含sip_apiname=,则此控制策略返回true,否则为false

    acl stat_req url_dir -i admin //在请求url中存在admin作为部分地址路径,则此控制策略返回true,否则返回false
    block if !invalid_req !stat_req //block表示阻止请求,返回403错误,当前表示如果不满足策略invalid_req,同时也不满足策略stat_req,则阻止请求。(就是要求URL中必需有参数sip_apiname,除非是查看服务器状态的URL)。

    use_backend alisoft_server if api_alisoft //如果是满足策略api_alisoft的情况,则使用alisoft_server作为后端服务集群。

    use_backend taobao_server if api_taobao //如果是满足策略api_taobao的情况,则使用taobao_server作为后端服务集群。
    default_backend alisoft_server //使用alisoft_server作为默认后端服务集群。
backend alisoft_server //后端节点1定义
  mode http
  balance roundrobin //负载均衡策略配置
  COOKIE SERVERID //允许插入serverid到COOKIE中,serverid后面可以定义
  server app1 10.10.13.243:80 COOKIE 1 check fall 5 weight 1 //真实服务器配置定义COOKIE 1表示serverid为1,check表示需要状态检查,fall 5表示失败五次就认为服务器状态不可用(不在接受请求),weight 1表示权重

  server app2 x.x.x.x:8080 COOKIE 1 check fall 5 weight 10

backend taobao_server //后端节点2定义
  mode http
  server app1 10.10.13.244:80 check fall 5
 
listen haproxy-status 10.10.13.245:8888
        mode          http
        option        httplog
      stats uri    /haproxy-stats
        stats realm  Global\ statistics
        stats auth    admin:123456
haproxy配置结束。


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
author-avatar
梅爱敏_629
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有