精华内容
下载资源
问答
  • haproxy负载均衡

    2020-11-27 16:09:16
    今天来搭建haproxy负载均衡群集 一、haproxy 1、haproxy的作用和特点 1】haproxy的作用:负载均衡调度器 2】haproxy的特点:支持高并发 加快用户访问速度 支持会话保持 占用系统资源小 2、常见负载均衡工具 1】Nginx...

    今天来搭建haproxy负载均衡群集
    一、haproxy
    1、haproxy的作用和特点
    1】haproxy的作用:负载均衡调度器
    2】haproxy的特点:支持高并发 加快用户访问速度 支持会话保持 占用系统资源小

    2、常见负载均衡工具
    1】Nginx
    集成网站反向代理和缓存功能为一体
    占用系统资源小支持高并发
    企业一般当成代理或者缓存服务器使用
    2】LVS
    负载均衡调度器
    不支持缓存
    针对应用层协议实现负载均衡
    不支持故障检查
    故障检查需要结合keepalived
    3】haproxy
    负载均衡调度器
    支持高并发功能
    针对四层和七层实现负载均衡
    保持用户会话信息

    3、http请求常见的状态码
    1】http请求
    POST:提交数据使用 安全性强
    get:下载数据使用 安全性差
    2】常见的http状态码
    200请求成功
    202请求被响应
    301永久重定向
    302临时跳转
    305使用代理
    307代理服务器重定向到当前服务器上
    400客户端故障
    403服务器拒绝客户端
    404管理员定义错误页面
    500服务器故障
    501服务器不支持客户端的请求
    502代理服务器收到无效请求
    505服务器不支持http协议版本

    4、常见的负载均衡调度器类型
    1】软件:开源成本低
    2】硬件:成本高 收费 速度快
    3】第三方开发:绿盟 梭子鱼

    二、负载均衡算法和haproxy配置
    1、负载均衡调度算法
    1】RR:轮询 流量平均分
    2】LC:最小链接 负载量低的服务器多分配流量
    3】sh:基于来源调度算法 一般针对不同地理位置服务实现

    今天用到四台虚拟机
    一、首先安装依赖关系和haproxy

    1】安装依赖关系
    [root@centos03 ~]# yum -y install pcre-devel zlib-devel bzip2-devel
    2】配置haproxy支持64位系统
    [root@centos03 haproxy-1.4.24]# make TARGET=linux26
    3】安装haproxy
    [root@centos03 haproxy-1.4.24]# make instal
    4】创建haproxy配置文件目录生成主配置文件
    [root@centos03 haproxy-1.4.24]# mkdir /etc/haproxy
    [root@centos03 haproxy-1.4.24]# cp examples/haproxy.cfg /etc/haproxy/
    5】生成haproxy服务控制文件
    [root@centos03 haproxy-1.4.24]# cp examples/haproxy.init /etc/init.d/haproxy
    [root@centos03 haproxy-1.4.24]# chmod +x /etc/init.d/haproxy 
    6】添加系统服务设置开机自启
    [root@centos03 ~]# chkconfig --add haproxy
    [root@centos03 ~]# chkconfig --level 35 haproxy on
    7】配置haproxy主配置文件
    [root@centos03 ~]# vim /etc/haproxy/haproxy.cfg 
    listen  apache 192.168.200.10:80	vip地址
            option httpchk /index.html	检查服务器的index.html文件
            balance roundrobin		负载均衡调度器使用轮询算法
            server  web 192.168.100.10:80 check inter 2000 fall 5	定义节点
            server  web 192.168.100.20:80 check inter 2000 fall 5
    8】创建运行目录
    [root@centos03 haproxy-1.4.24]# cp haproxy /usr/sbin/
    [root@centos03 ~]# mkdir /usr/share/haproxy
    [root@centos03 ~]# mkdir /usr/local/haproxy
    
    

    2】然后配置第二快网卡模拟外网
    在这里插入图片描述
    3】开启路由功能

    [root@centos03 ~]# sysctl -f
    net.ipv4.ip_forward = 1
    
    

    4】开启服务

    守护进程方式启动
    [root@centos03 ~]# systemctl daemon-reload 
    [root@centos03 ~]# systemctl start haproxy
    
    

    两台web服务器使用apache就行在这里就不演示安装了 直接验证
    在这里插入图片描述

    展开全文
  • Haproxy负载均衡

    2020-04-24 08:39:19
    Haproxy负载均衡 环境: Centos6.5_x64 192.168.10.137 haproxy+keepalived Centos6.5_x64 192.168.10.138 haproxy+keepalived centos6.5_x64 192.168.10.145 web1(nginx) centos6.5_x64 192.168.10.146 ...

    Haproxy负载均衡
    环境:
    Centos6.5_x64 192.168.10.137 haproxy+keepalived
    Centos6.5_x64 192.168.10.138 haproxy+keepalived
    centos6.5_x64 192.168.10.145 web1(nginx)
    centos6.5_x64 192.168.10.146 web2(nginx)
    在这里插入图片描述
    实验步骤:
    1、安装keepalived、haproxy
    2、配置keepalived
    3、配置haproxy
    4、安装配置nginx服务
    5、测试
    安装部署:
    #yum -y install haproxy keepalived
    主keepalived上面的修改:
    #vi /etc/keepalived/keepalived.conf
    在这里插入图片描述
    从keepalived服务器上的修改:
    在这里插入图片描述
    scp /etc/keepalived/keepalived.conf 192.168.47.130:/etc/keepalived/keepalived.conf

    写完之后重启keepalived后,最好测试一下VIP是否可以正常漂移。
    两台haproxy的修改一样,如下所示:
    #cd /etc/haproxy/
    #vi haproxy.cfg
    最下面添加
    在这里插入图片描述
    注意参数解释:inter 2000 心跳检测时间;rise 3 三次连接成功,表示服务器正常;fall 3 三次连接失败,表示服务器异常; weight 1 权重设置
    #service haproxy restart

    安装nginx服务器(web):
    之后再安装两台nginx的web服务器,修改一下默认首页即可。
    #yum -y install gcc gcc-c++ pcre-devel zlib-devel openssl-devel
    #tar zxf nginx-1.12.2.tar.gz
    #cd nginx-1.12.2
    #./configure
    #make && make install
    修改默认首页:
    #vi /usr/local/nginx/html/index.html
    Web11111111111111111
    另一台web一样的操作:
    #vi /usr/local/nginx/html/index.html
    Web22222222222222222222
    之后外网测试即可(使用vip测试):
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • HAProxy负载均衡

    2019-11-15 19:27:15
    利用软件HAProxy进行负载均衡架构。 环境: 负载机:10.1.1.44 web1:10.1.1.35 web2:10.1.1.37 1.负载机使用HAProxy软件。 # yum install -y haproxy # vim /etc/haproxy/haproxy.cfg 修改三处 1. frontend ...

    利用软件HAProxy进行负载均衡架构。

    环境:

    负载机:10.1.1.44

    web1:10.1.1.35

    web2:10.1.1.37

    1.负载机使用HAProxy软件。

    # yum install -y haproxy
    # vim /etc/haproxy/haproxy.cfg
    修改三处
    1.  frontend  main *:5000
        frontend  main *:80
    2.  use_backend static 
        #use_backend static
    3.  backend app
        balance     roundrobin
        server  app1 127.0.0.1:5001 check
        server  app2 127.0.0.1:5002 check
        server  app3 127.0.0.1:5003 check
        server  app4 127.0.0.1:5004 check
    
        backend app
        balance     roundrobin
        server  app1 10.1.1.35:80 check
        server  app2 10.1.1.37:80 check
    
    # systemctl start haproxy
    # curl http://10.1.1.44/
    已经可以看到内容了。
    

    2.配置文件分析

    # vim /etc/haproxy/haproxy.cfg
    
    原文中不存在的
        mode                    http                  # 默认使用协议
        log                     global                # 全局日志记录
        option                  httplog               # 详细记录http日志
        option                  dontlognull           # 不记录空日志
        option http-server-close                      # 启用http-server-close
        option forwardfor       except 127.0.0.0/8    # 来自127.0.0.0/8的请求都不转发
    
    原文中存在的
        option                  redispatch            # 重新分发,宕机强制重定向
        retries                 3                     # 3次连接失败则认为服务不可用
        timeout http-request    10s                   # 默认http请求超时时间
        timeout queue           1m                    # 默认队列超时时间
        timeout connect         10s                   # 默认连接超时时间
        timeout client          1m                    # 默认客户端超时时间
        timeout server          1m                    # 默认服务器超时时间
        timeout http-keep-alive 10s                   # 默认持久连接超时时间
        timeout check           10s                   # 默认检查时间间隔
        maxconn                 3000                  # 最大连接数
    
    # 上面都是一些公共的参数配置
    
    frontend  main *:80
    # 5000变80,这个软件还可以进行其他软件的负载均衡,比如mysql,所以也可以填写3306。
    
        acl url_static       path_beg       -i /static /images /javascript /stylesheets
        acl url_static       path_end       -i .jpg .gif .png .css .js
    # 这是匹配以各种参数开头的url,或者拓展名结尾的文件
    
        #use_backend static          if url_static
    # 如果匹配成功,则使用static这个方法,它定义在下面了。
    
        default_backend             app
    # 默认情况使用app方法,也定义在下面了。
    
    backend static
        balance     roundrobin
        server      static 127.0.0.1:4331 check
    
    backend app
        balance     roundrobin
        server  app1 10.1.1.35:80 check
        server  app2 10.1.1.37:80 check
    
    # balance是负载均衡的轮转算法。
    balance roundrobin 	     # 轮询,软负载均衡基本都具备这种算法
    balance static-rr 	     # 根据权重,建议使用	=>  server ...  weight 权重值
    balance leastconn 		 # 最少连接者先处理,建议使用
    balance source 			 # 根据请求源IP,建议使用(类似IP_HASH)
    balance uri 		     # 根据请求的URI
    balance url_param        # 根据请求的URl参数
    balance hdr(name)        # 根据HTTP请求头来锁定每一次HTTP请求
    balance rdp-cookie(name) # 根据cookie(name)来锁定并哈希每一次TCP请求

    3.拓展HAProxy后台 

    # vim /etc/haproxy/haproxy.cfg
    
    # 在配置文件最后端,填上这么一堆内容
    listen statistics
    	bind *:9090     	     # 定义监听端口
    	mode http			     # 默认使用协议
    	stats enable    	     # 启用stats
    	stats uri /hadmin?stats  # 自定义统计页面的URL,默认为/haproxy?stats
        stats auth admin:admin   # 统计页面用户名和密码设置
      	stats hide-version 	     # 隐藏统计页面上HAProxy的版本信息
        stats refresh 30s 	     # 统计页面自动刷新时间
        stats admin if TRUE      # 如果认证通过就做管理功能,可以管理后端的服务器
        stats realm Hapadmin     # 统计页面密码框上提示文本,默认为Haproxy\ Statistics
    
    # systemctl restart haproxy
    
    开浏览器访问
    10.1.1.44:9090/hadmin?stats
    用户名 admin 
    密码 admin
    
    监控平台就打开了,全英文的。

     4.HAProxy

    设置很简单,不只能负载web,还能负载多种开端口的服务。

    展开全文
  • HAProxy 负载均衡

    2013-08-13 15:30:12
    这是一个PPT,主要讲解在liunx服务器搭建一下haproxy应用实现负载均衡功能。
  • 文章目录实验环境一、搭建HAProxy负载均衡二、给haproxy服务器添加日志三、动态静态请求分离四、访问控制和页面重定向1、403错误页面重定向2、黑名单重定向3、301永久重定向五、Haproxy的读写分离 实验环境 主机...

    实验环境

    主机名 IP 服务
    server1 172.25.1.1 haproxy+httpd,代理服务器
    server2 172.25.1.2 httpd+php,后端服务器
    server3 172.25.1.3 httpd+php,后端服务器
    物理机 172.25.1.250 客户端,测试

    一、搭建HAProxy负载均衡

    在server1上

    步骤一:安装haproxy

    yum install haproxy -y
    

    在这里插入图片描述
    步骤二:更改配置文件,添加负载均衡信息及监控页面信息
    (1)方式一:

    vim /etc/haproxy/haproxy.cfg
    
     63 frontend  main
     64     bind     *:80
     65     default_backend             webserver
     
     70 backend webserver
     71     balance     roundrobin
     72     server      web1 172.25.1.2:80 check
     73     server      web1 172.25.1.3:80 check
    

    在这里插入图片描述
    (2)方式二:listen:可以理解为frontend和backend的组合体

     listen admin *:8080
           stats enable
           stats uri /status  		# 监控页面地址
           stats auth admin:westos  # 管理帐号和密码
           stats refresh 5s  		#刷新频率
           
    listen  webserver *:80      		#监听的实例名称,地址和端口 
            balance roundrobin      #负载均衡算法
            server web1 172.25.1.2:80 check
            server web2 172.25.1.3:80 check
    

    步骤三:开启haproxy

    systemctl start haproxy
    systemctl status haproxy
    netstat -antuple
    

    在这里插入图片描述
    在这里插入图片描述
    在server2上
    步骤一:安装httpd服务

    yum install httpd -y
    

    在这里插入图片描述
    步骤二:编写默认发布页面,并开启httpd服务

    vim /var/www/html/index.html
    <h1>server2's page</h1>
    
    systemctl start httpd
    systemctl status httpd
    

    在这里插入图片描述
    在server3上
    步骤一:安装httpd服务

    yum install httpd -y
    

    在这里插入图片描述
    步骤二:编写默认发布页面,并开启httpd服务

    vim /var/www/html/index.html
    <h1>server3's page</h1>
    
    systemctl start httpd
    systemctl status httpd
    

    在这里插入图片描述
    在物理机上测试
    在这里插入图片描述
    此时,可以看出实现了负载均衡

    打开浏览器搜索http://172.25.1.1:8080/status
    在这里插入图片描述在这里插入图片描述
    模拟server3故障

    systemctl stop httpd
    

    在这里插入图片描述
    在物理机上访问测试
    在这里插入图片描述浏览器上查看集群节点状态:
    在这里插入图片描述server3故障恢复
    在这里插入图片描述浏览器上查看集群节点状态:web2恢复正常
    在这里插入图片描述

    二、给haproxy服务器添加日志

    在server1上
    步骤一:查看haproxy日志类型

    vim /etc/haproxy/haproxy.cfg
    

    在这里插入图片描述
    步骤二:更改日志监控的配置文件,打开UDP接口,创建haproxy的日志文件

    vim /etc/rsyslog.conf
     15 $ModLoad imudp
     16 $UDPServerRun 514
     55 local2.*                                             /var/log/haproxy.log
    

    在这里插入图片描述
    在这里插入图片描述
    步骤三:重启haproxy和rsyslog服务,并查看日志

    systemctl restart haproxy
    systemctl restart rsyslog
    cat /var/log/haproxy.log  #查看日志
    

    在这里插入图片描述

    三、动态静态请求分离

    在server1上
    步骤一:更改配置文件,添加访问控制策略

    frontend:用来匹配接收客户所请求的域名,uri等,并针对不同的匹配,做不同的请求处理

    vim /etc/haproxy/haproxy.cfg
    
    frontend  main *:80
        acl url_static       path_beg       -i  /images    #path_beg: 用于测试请求的URL是否以指定的模式开头
        acl url_static       path_end       -i .jpg .gif .png    #path_end:用于测试请求的URL是否以指定的模式结尾 
    
        use_backend static   if url_static   #满足上面条件,则为静态请求
        default_backend             webserver   #默认动态
    
    backend static   #静态请求
           server web2 172.25.1.3:80 check
    
    backend webserver  #动态请求
        server web1 172.25.1.2:80 check
        server local 172.25.1.1:8000 backup  #做本机8000端口的一个备错信息,若所有机器都down则启动
    
     listen admin *:8080
           stats enable
           stats uri /status
           stats auth admin:westos
           stats refresh 5s
    

    在这里插入图片描述
    步骤二:重启haproxy服务

    systemctl restart haproxy
    

    在这里插入图片描述
    在server3上
    在httpd默认发布目录下新建images目录,上传一张.jpg的图片。

    mkdir /var/www/html/images
    

    在这里插入图片描述
    在server1上
    步骤一:安装httpd服务

    yum install -y httpd
    

    在这里插入图片描述
    步骤二:更改httpd服务的工作端口为8000,添加web服务的资源

    vim /etc/httpd/conf/httpd.conf 
     42 Listen 8000
     
    vim /var/www/html/index.html
    <h1>server1's page</h1>
    
    systemctl start httpd
    netstat -antuple
    

    在这里插入图片描述在这里插入图片描述
    在真机上测试
    打开浏览器搜索http://172.25.1.1/images/
    在这里插入图片描述
    在这里插入图片描述
    访问到server3服务器上的资源

    直接搜索http://172.25.1.1/
    在这里插入图片描述
    此时,访问到server2服务器上的资源

    模拟server2和server3故障
    在server2上:

    systemctl stop httpd
    

    在这里插入图片描述
    在server3上:

    systemctl stop httpd
    

    在这里插入图片描述
    在真机上测试
    刷新页面
    在这里插入图片描述
    此时server1上线,故障顶替

    四、访问控制和页面重定向

    1、403错误页面重定向

    在server1上
    步骤一:更改配置文件,添加重定向规则

    vim /etc/haproxy/haproxy.cfg
    
    frontend  main *:80
        acl url_static       path_beg       -i  /images
        acl url_static       path_end       -i .jpg .gif .png
        acl badhost  src  172.25.1.250   #黑名单,设定物理机不能访问server1
        block if badhost
        errorloc 403 http://172.25.1.1:8000    #注意端口不要冲突,如果是403错误就重定向到 172.25.1.18000
        use_backend static   if url_static
        default_backend             webserver
    
    backend static
           server web2 172.25.1.3:80 check
    
    backend webserver
        server web1 172.25.1.2:80 check
        
     listen admin *:8080
           stats enable
           stats uri /status
           stats auth admin:westos
           stats refresh 5s
    

    在这里插入图片描述
    步骤二:修改默认发布页面内容

    vim /var/www/html/index.html 
    sorry!!!
    

    在这里插入图片描述
    在真机上测试
    在这里插入图片描述打开server2和server3httpd服务
    在这里插入图片描述在这里插入图片描述在真机上测试
    刷新页面
    在这里插入图片描述

    2、黑名单重定向

    步骤一:更改配置文件,修改访问控制策略

    vim /etc/haproxy/haproxy.cfg
    
    frontend  main *:80
        acl url_static       path_beg       -i  /images
        acl url_static       path_end       -i .jpg .gif .png
        acl badhost  src  172.25.1.250
        redirect location http://172.25.1.1:8000 if badhost  #如果badhost主机访问,就重定向
        use_backend static   if url_static
        default_backend             webserver
    

    在这里插入图片描述
    步骤二:重启haproxy服务

    systemctl restart haproxy
    

    在这里插入图片描述
    在真机上测试
    在这里插入图片描述

    3、301永久重定向

    301 代表永久性转移(Permanently Moved);302 redirect: 302 代表暂时性转移(Temporarily Moved )

    301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。

    在server1上

    vim /etc/haproxy/haproxy.cfg
    frontend  xiyou *:80
        acl westos.org  hdr_beg(host) -i westos.org
        acl 172.25.1.1  hdr_beg(host) -i 172.25.1.1
        redirect code 301 location http://www.westos.org if westos.org #以westos.org访问 自动重定向 www.westos.org)
        redirect code 301 location http://www.westos.org if 172.25.1.1  #以172.25.7.1访问 自动重定向 www.westos.org)  
    

    在这里插入图片描述
    步骤二:重启haproxy服务

    systemctl restart haproxy
    

    在这里插入图片描述
    在物理机测试
    浏览器搜索:http://172.25.1.1
    在这里插入图片描述
    自动跳转:

    在这里插入图片描述浏览器搜索:www.org
    在这里插入图片描述

    自动跳转:

    在这里插入图片描述

    五、Haproxy的读写分离

    在server2上
    步骤一:下载php

    yum install php -y
    

    在这里插入图片描述
    步骤二:在网上下载upload目录,里面含php文件写好了用户上传页面及上传的文件所在地,将文件和目录放到默认发布目录下。

    mv upload /var/www/html/
    cd /var/www/html/
    mv upload/* .
    

    在这里插入图片描述
    附:index.php文件内容

    <html>
    <body>
    
    <form action="upload_file.php" method="post"
    enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file" id="file" />
    <br />
    <input type="submit" name="submit" value="Submit" />
    </form>
    
    </body>
    </html>
    

    附:upload_file.php文件内容

     <?php
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 20000))
      {
      if ($_FILES["file"]["error"] > 0)
        {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
        }
      else
        {
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";
        echo "Type: " . $_FILES["file"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
    
        if (file_exists("upload/" . $_FILES["file"]["name"]))
          {
          echo $_FILES["file"]["name"] . " already exists. ";
          }
        else
          {
          move_uploaded_file($_FILES["file"]["tmp_name"],
          "upload/" . $_FILES["file"]["name"]);
          echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
          }
        }
      }
    else
      {
      echo "Invalid file";
      }
    ?>
    

    步骤三:给upload目录权限,并重启httpd服务

    chmod 777 upload
    systemctl restart httpd
    

    在这里插入图片描述在这里插入图片描述
    在server3上
    步骤一:下载php

    yum install php -y
    

    在这里插入图片描述
    步骤二:在网上下载upload目录,里面含php文件写好了用户上传页面及上传的文件所在地,将文件和目录放到默认发布目录下。

    mv upload /var/www/html/
    cd /var/www/html/
    mv upload/* .
    

    在这里插入图片描述
    步骤三:给upload目录权限,并重启httpd服务

    chmod 777 upload
    systemctl restart httpd
    

    在这里插入图片描述在这里插入图片描述
    在server1上
    步骤一:修改配置文件,添加访问策略

    vim /etc/haproxy/haproxy.cfg
    
        acl read method GET
        acl read method HEAD     #两个read write 只用一个就行
        acl write method PUT
        acl write method POST
        use_backend   webserver    if write
        default_backend  static
        
    backend static
           server web2 172.25.1.3:80 check
    
    backend webserver
        server web1 172.25.1.2:80 check  #默认会上传到这个real server
        server local 172.25.1.1:8000 backup
    

    在这里插入图片描述
    步骤二:重启haproxy

    systemctl restart haproxy
    

    在这里插入图片描述在真机上测试
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在server2上查看
    在这里插入图片描述
    发现文件提交到server2的upload目录中
    在server3上查看
    在这里插入图片描述
    并没有提交的文件

    至此,实现了haproxy读写分离

    展开全文
  • haproxy 负载均衡

    2019-01-10 16:29:36
    HAProxy: 是法国人Willy Tarreau开发的一个开源软件,是一款应对客户端10000以上的同时连接的高性能的TCP和 HTTP负载均衡器。其功能是用来提供基于cookie的持久性, 基于内容的交换,过载保护的高级流量管制,自动...
  • 如何配置haproxy负载均衡器,命令,文档,操作, !
  • 安装haproxy负载均衡MySQL,截图最全,mysql5.7版本。
  • Haproxy 负载均衡

    2017-05-27 17:30:00
    1) haproxy.cfg内容如下(tcp负载均衡): global log 127.0.0.1 local0 info #[err warning info debug] maxconn 4096 user root group root daemon nbproc 1 pidfile /usr/local/haproxy/logs/haproxy....
  • HAPROXY负载均衡反向代理最佳实践

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,695
精华内容 3,078
关键字:

haproxy负载均衡