haproxy 同一域名下分发请求
http://www.th7.cn/Program/java/201608/936162.shtml
https://my.oschina.net/lockupme/blog/733375
还有一点要注意的是,我们要把带path的use_backend放在不带path的前面
比如说这里
use_backend appapis_server_news if is_appapis is_appapis_news
use_backend appapis_server_albums if is_appapis is_appapis_albums
use_backend appapis_server if is_appapis
我们这里带接口路径的放在不带接口路径的前面。否则的话先读取不带path路径的use_backend,这样的话,就不会读取后面的path路径的use_backend
我在工作中就遇到过这个问题。调整一下前后顺序就好了
在实际项目中,项目接口可能是多语言开发完成,对外只绑定同一个域名,如。
不管后端采用哪种语言来开发接口,在前端(App或Wap或Pc),只要调用一个域名来请求接口。在这里采用Haproxy来做代理负载的
对于接口开的功能,一般按模板来开发,如用户模块可能采用Java、新闻模块可能采用Php、相册模块可能采用C#开发。
Haproxy的配置在这里不再详细说明,可在网上搜索。
看看Haproxy在实际中如何配置,同一个域名来实现的。
接口实例是这样:
java: api.domain.com/apis/users/具体接口名称
Php: api.domain.com/apis/news/具体接口名称
C#: api.domian.com/apis/albums/具体接口名称
acl is_appapis_news path_beg -i /apis/news #Php接口
acl is_appapis_albums path_beg -i /apis/albums #C#接口
acl is_appapis hdr_beg(host) -i api.domain.com #主Java接口 use_backend appapis_server_news if is_appapis is_appapis_news
use_backend appapis_server_albums if is_appapis is_appapis_albums
use_backend appapis_server if is_appapis
注意两点:
1、接口都是按模块来开发,所在配置中用path_beg,来区分,同时在使用use_backend代理的时候,if 后面要跟着主host代理“is_appapis”,
2、Haproxy,配置规则是按顺序来执行的,这点一定要注意
完整配置文件如下(适当删减,因为是真实环境,里面IP地址和域名都是假):
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 51200
chroot /usr/share/haproxy
uid 99
gid 99
daemon
nbproc 1
#debug
#quiet defaults
log global
mode http
option dontlognull
option redispatch
option abortonclose
timeout connect 5000ms
timeout client 30000ms
timeout server 30000ms listen admin_stats
bind 0.0.0.0:6421
option httplog
mode http
stats refresh 30s
stats uri /admin_stats
stats realm Load Balance
stats auth admin:9874523*&/ frontend web_in
mode http
maxconn 51200
bind :80 acl is_appapis_news path_beg -i /apis/news #Php接口
acl is_appapis_albums path_beg -i /apis/albums #C#接口
acl is_appapis hdr_beg(host) -i api.domain.com #主Java接口 acl is_waps hdr_beg(host) -i wap.domain.com use_backend appapis_server_news if is_appapis is_appapis_news
use_backend appapis_server_albums if is_appapis is_appapis_albums
use_backend appapis_server if is_appapis
use_backend waps_server if is_waps backend appapis_server
option httpclose
balance roundrobin
option forwardfor
stats uri /appapis
server s1 10.164.57.82:8080 check weight 1 minconn 1 maxconn 5120 check inter 40000
server s2 10.164.57.81:8080 check weight 1 minconn 1 maxconn 5120 check inter 40000 backend appapis_server_news
option httpclose
balance roundrobin
option forwardfor
stats uri /appapis
server s1 10.164.57.83:8000 check weight 1 minconn 1 maxconn 5120 check inter 40000 backend appapis_server_albums
option httpclose
balance roundrobin
option forwardfor
stats uri /appapis
server s1 10.164.57.84:8002 check weight 1 minconn 1 maxconn 5120 check inter 40000 backend waps_server
option httpclose
balance roundrobin
option forwardfor
stats uri /appapis
server s1 10.164.57.83:8001 check weight 1 minconn 1 maxconn 5120 check inter 40000 listen app_v1_userservices
bind :10001
mode tcp
balance roundrobin
server s1 10.164.57.82:10001 check weight 1 minconn 1 maxconn 5120 check inter 40000
server s2 10.164.57.81:10001 check weight 1 minconn 1 maxconn 5120 check inter 40000 listen app_v1_companyservices
bind :10002
mode tcp
balance roundrobin
server s1 10.164.57.82:10002 check weight 1 minconn 1 maxconn 5120 check inter 40000
server s2 10.164.57.81:10002 check weight 1 minconn 1 maxconn 5120 check inter 40000
haproxy 同一域名下分发请求的更多相关文章
- [转载] 浏览器Browser对同域名下的请求并发数量
原文链接:https://blog.csdn.net/a562550212/article/details/79552713 另附原文作者贴的一个知乎地址,几个答主讲的非常好 https://www ...
- JMeter 将上一个请求的结果作为下一个请求的参数——使用正则提取器(转载)
在接口测试和压力测试过程中,经常会将几个流程串联起来才能测试.如:我要进行获取用户信息接口测试,我就要先登录成功后,才能获取用户信息.所以,我就要首先要登录,获得我的登录凭证(tokenId或tick ...
- jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器
1.简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如 ...
- 细雨学习笔记:Jmeter上一个请求的结果作为下一个请求的参数--使用正则提取器
Jmeter接口自动化--使用正则提取器,可以把上一个请求的结果取出来,作为下一个请求的入参
- Jmeter如何将上一个请求的结果作为下一个请求的参数——使用正则表达式提取器
首先在线程组下添加两个HTTP请求, 添加好两个HTTP请求后,在每个HTTP请求下添加一个查看结果数 在第一个HTTP请求下添加正则表达式提取器 在第一个HTTP请求添加好IP地址,路径,端口号,协 ...
- JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器
有这样一个压力测试环境,有一个上传页面,上传成功之后服务器会返回一些上传信息(比如文件的 id 或者保存路径之类的信息),然后压力机会继续下一个请求,比如调整 id 为 xx 的文件的一些信息等等.问 ...
- 几种将上一个请求的cookies带入下一个请求中的方法
*** 此次练习不包含使用requests.session()方法实现: 练习环境:本地安装禅道 格式: 1.头部传Cookie:xxx2.加参数cookies=字典格式3.直接传RequestsCo ...
- jmeter之beanshell取出需要参数,传递给下个请求
jmeter之beanshell取出需要参数,传递给下个请求 事件背景: 上周同事用jmeter录制脚本,录制成功回放后,并没有达到自己想要的结果. ps:他想从数据库取出某个字段值,然后对数据库做操 ...
- 【转】jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器
1.简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如 ...
随机推荐
- Atlas:ERROR 1105 (HY000): #07000Proxy Warning - IP Forbidden
1:遇到一个奇怪的问题 Atlas的管理接口正常 添加一个client之后save config mysql -uroot -p -P1234 -h127.0.0.1 报错了:ERROR 1105 ( ...
- js 树结构数据遍历条件判断
代码: /** * 树结构数据条件过滤 * js 指定删除数组(树结构数据) */ function filter (data, id) { var newData = data.filter(x = ...
- 〖Linux〗ADT_Bundle配置
1. 配置自动补全: Windows -> preferences -> 搜索assist,修改 java xml自动触发补全:.abcdefghijklmnopqrstuvwxyzABC ...
- PHP中json_encode中文编码的问题_学习
/** * 由于php的json扩展自带的函数json_encode会将汉字转换成unicode码 * 所以我们在这里用自定义的json_encode,这个函数不会将汉字转换为unicode码 */ ...
- XmanagerEnterprise-6.0.0092-beat内测版|免费使用
xshell很还好用,目前发布beat6.0免费注册.免费使用... 00.安装 11.扁平化的UI download: 链接: https://pan.baidu.com/s/1qXTjjAG 密码 ...
- (原)CosFace/AM-Softmax及其mxnet代码
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/8525241.html 论文: CosFace: Large Margin Cosine Loss fo ...
- 获取COM组件类型库信息
类型库type library的作用是什么? 用来描述这个COM组建的接口信息,比如有多少个接口,每个接口有什么函数,函数的描述之类的.MSDN查一下ITypeLib,ITypeInfo,TypeAt ...
- k8s官方安装版本
一.概述 官方安装链接:https://kubernetes.io/docs/getting-started-guides/kubeadm/ 之前使用是yum直接安装组件,现由kubeadm来自动安装 ...
- 【Algorithm】希尔排序
一. 算法描述 希尔排序:将无序数组分割为若干个子序列,子序列不是逐段分割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序:然后再选择一个更小的增量,再将数组分割为多个子序列进行排序..... ...
- stm32开发 - 远离 Keil uVision, 回到 Visual Studio
学了8051单片机, 学了MSP430系列, 终于开始步入正轨, 开始学习 stm32(ARM Cortex-M3)系列微处理器~ 学51用Keil uVision开发环境, 提一下Keil uVis ...