我的编程空间,编程开发者的网络收藏夹
学习永远不晚

HAproxy企业应用,TCP/HTTP动静分离

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

HAproxy企业应用,TCP/HTTP动静分离

HAproxy企业应用,TCP/HTTP动静分离

HAProxy的是一个免费的、开源的的tcp/http反向代理工具、负载均衡器,是一个企业非常快速和可靠的安全的解决方案,提供高可用性、高并发性,负载均衡和代理对TCP和基于HTTP的应用程序。它特别适用于流量非常高的网站。它已成为事实上的标准开源负载均衡器,现在随大多数主流Linux发行版一起提供,在互联网领域应用也是非常广泛,受欢迎的第三方工具。

                                             

在企业实际应用环境中,往往会根据业务请求将相关不同请求跳转到指定的后端服务器,比如客户静态资源请求交给后端静态资源服务器处理,php请求交给后端动态资源Apache服务进行处理,jsp请求交给后端动态资源tomcat服务进行处理,即业务上的应用请求分离,我们这里可以通过haproxy完全可以利用acl匹配规则实现这一目的,以实现动静分离效果;除了haproxy外,其实还可以通过nginx的acl规则也可以完全实现,不过这些强大的工具往往是在Linux服务器上面跑才能发挥最佳性能,其实这些东西安装和配置非常简单,只需要有Linux基础,懂得一些Linux基础的命令就完全可以实现强大的功能,我也是在《Linux就该这么学》这本树入门Linux,非常适合于初学者。

现在好多企业购买负载均衡器硬件设备,其实这些硬件设备都是通过潜入软件来实现的,可能性能还没有那么好,haproxy实现tcp和http负载均衡非常靠谱的,我们企业现在入口几十万的并发,在前端部署几天Linux服务器安装haproxy完全毫无压力的,而且效果非常明显,开始没有用到haproxy的时候用户一直反馈访问非常卡,因为开始是直接访问Windows服务器,这样不安全并且给业务服务器压力也非常大,还有可能导致业务直接奔溃。Haproxy用户负载均衡在Linux服务器上面跑还是非常好的,会话速率快、会话并发高、数据转化率快这些都是haproxy的一些性能上面的优势。

下面我们通过一个简单的案例来实现HAproxy动静分离效果,需求如下:

静态页面的请求发送到 web1;

动态页面的请求发送到 web2。

一. haproxy实现应用动静分离

Haproxy动静分离案例拓扑图

haproxy部署前注意事项:

(1)操作系统版本: centos 7.4(64位)

(2)功能角色及服务器ip相关信息:

角色名称

ip信息

haproxy   server

eth0:172.51.96.233/24    &&  eth2:192.168.3.22/24

static   server

 eth2:192.168.3.24/24

php   server

eth2:192.168.3.9/24

tomcat   server

eth2:192.168.3.9/24

 

二、操作部署

官网下载haproxy-1.8.9.tar.gz安装包(需要上墙);

# wget http://www.haproxy.org/download/1.8/class="lazy" data-src/haproxy-1.8.9.tar.gz

创建haproxy运行用户

# groupadd -r haproxy

# useradd -g haproxy -M -s /sbin/nologin haproxy

 

源码编译安装haproxy:

# tar zxvf haproxy-1.8.9.tar.gz

# cd haproxy-1.8.9/

# make TARGET=linux2628  PREFIX=/usr/local/haproxy

# make install PREFIX=/usr/local/haproxy

注意:TARGET=Linux31 是通过uname -a 来查看Linux内核版本的,kernel 大于2.6.28的用:TARGET=linux2628

# cd /usr/local/haproxy/

[root@web-3-22 haproxy]# ll

total 0

drwxr-xr-x 3 root root 21 May 23 15:56 doc

drwxr-xr-x 2 root root 21 May 23 15:56 sbin

drwxr-xr-x 3 root root 17 May 23 15:56 share

yum安装:

[root@web-3-22 haproxy]# yum install haproxy.x86_64

[root@web-3-22 haproxy]# mkdir etc

[root@web-3-22 haproxy]# cd etc/

 

haproxy配置

[root@web-3-22 etc]# vim haproxy.cfg

global

    maxconn 500000          # Max simultaneous connections from an upstream server

    spread-checks 5         # Distribute health checks with some randomness

    chroot /usr/local/haproxy

    daemon

    nbproc 2

    user haproxy

    group haproxy

    log 127.0.0.1 local0

    log 127.0.0.1 local1 notice

    description haproxy server

 

defaults

        log     global

        mode    http

        maxconn 10000

        option  httplog

        option  httpclose

        option  dontlognull

        option  forwardfor      except 127.0.0.0/8

        retries 3

        option redispatch

        balance roundrobin

        timeout http-request    10s

        timeout queue           1m

        timeout client          1m

        timeout server          1m

listen adimin_stats

      bind-process 1

      mode http

      stats enable

      stats hide-version

      bind :8888

      stats uri /admin?stats

      stats realm Haproxy\ Statistics

      stats auth hadmin:yhXV2WAbybXd1euzEXbEADAe

      stats refresh 30s

      stats admin if TRUE

 

listen  www

        bind *:80

        maxconn 50000

        mode http

        log global

        option httplog

        option httpclose

        option forwardfor

        log global

        default_backend default   #设置默认访问资源页面

        #定义当请求的内容是静态内容时(图片、视频、js、css、html),将请求转交给静态资源服务器的acl规则      

        acl url_static path_beg  -i /static /images /img /javascript /stylesheets

        acl url_static path_end  -i .jpg .gif .png .css .js .html

        acl host_static hdr_beg(host)  -i img. video. download. ftp. imags. videos.

        #定义当请求的内容是php内容时,将请求转交给php动态资源服务器的acl规则   

        acl url_php path_end     -i .php

        #定义当请求的内容是.jsp或.do内容时,将请求转交给tomcat动态资源服务器的acl规则   

        acl url_jsp path_end     -i .jsp .do

        #引用haproxy的acl匹配规则

        use_backend static_pool if  url_static or host_static

        use_backend php_pool    if  url_php

        use_backend tomcat_pool if  url_jsp

        #定义后端backend server

backend static_pool

        option  httpchk GET /index.html

        server static1 192.168.3.24:80 cookie id1  check inter 2000 rise 2 fall 3

backend php_pool

        option  httpchk GET /index.php

        server php1 192.168.3.9:80 cookie id1 check inter 2000 rise 2 fall 3

backend tomcat_pool

        option  httpchk GET /index.jsp

        server tomcat1 192.168.3.9:8080 cookie id2 check inter 2000 rise 2 fall 3

#<----------------------default site for listen and frontend------------------------------------>

backend default

        mode http

        option  httpchk GET /index.html

        server default 192.168.3.24:80 cookie id1 check inter 2000 rise 2 fall 3 maxconn 5000

# chown -R haproxy:haproxy /usr/local/haproxy/

# service haproxy start 

#启动haproxy报错,可能是端口冲突导致的,检查haproxy listen配置,我这配置文件监听的是80端口,此主机的80端口被httpd占用了,停止httpd服务,再次启动haproxy就正常了;

 

# netstat -ntlp|grep haproxy

服务状态

service haproxy start             //启动服务

service haproxy stop              //停止服务

service haproxy status            //服务状态

chkconfig haproxy on              //开机启动

三、测试haproxy效果如下:

 

默认页面:

http://192.168.3.22

 

测试html静态资源

http://192.168.3.22/index.html

 

测试php动态资源

http://192.168.3.22/index.php

 

测试jsp动态资源

http://192.168.3.22/index.jsp

 

haproxy后台监控页面

http://192.168.3.22:8888/admin?stats

hadmin/yhXV2WAbybXd1euzEXbEADAe

 

HAproxy企业应用,TCP/HTTP动静分离

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

HAproxy企业应用,TCP/HTTP动静分离

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

HAproxy企业应用,TCP/HTTP动静分离

HAproxy企业应用,TCP/HTTP动静分离HAProxy的是一个免费的、开源的的tcp/http反向代理工具、负载均衡器,是一个企业非常快速和可靠的安全的解决方案,提供高可用性、高并发性,负载均衡和代理对TCP和基于HTTP的应用程序
2023-06-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录