HAproxy

使用Apache Mesos和Consul实现服务的注册发现

只谈情不闲聊 提交于 2019-12-29 01:43:33
为保证基于Docker应用程序和服务都具有高性能和可用性,设计出一种具有服务发现,高可用性和容错能力的解决方案非常重要。   我们使用 Apache Mesos 和 Mesosphere的 Marathon实现Docker的任务调度和应用部署,Mesos能够帮助完成高可用性 高容错性。   作为服务编排注册和发现, Consul 不仅能够作为一个key/value存储,而且能够支持错误侦测以及多数据中心支持。   注册定义是当有Docker容器启动或停止时,其他Docker容器应该能获知,使用 Apache Consul 实现注册或注销Docker容器的微服务名称以及发布端口。 Consul-template 是一个独立的应用,能够查询Consul并且更新文件系统上的一个文件模板,正如你看到一样,使用Consul/Consul-template实现注册的捆绑能够帮助完成动态服务的注册和发现,以及配置文件的更新,我们可以使用这些工具与Haproxy联合一起为所有服务请求提供一个通用的代理网关。 安装步骤   假设 Consul为3个或5个服务器集群工作,每个服务器节点包括所有mesos 主从服务器和haproxy等都必须有一个Consul代理网关安装和运行。   安装Consul 服务器和代理节点的步骤: wget https://dl.bintray.com/mitchellh

如何利用HAProxy 代理 MySQL Master-Slave Replication

拈花ヽ惹草 提交于 2019-12-27 18:09:04
背景 我有一个MySQL Master-Slave Replication, 想要通过HAProxy代理, 做读写分离. 写流量给到Master 节点, 读流量给到Slave 节点. 首先我应该由一个HAProxy的配置, 我想应该这样写(伪配置): listen mysql bind *:3316 mode tcp ... server 192.168.1.111 192.168.1.111:3306 check server 192.168.1.112 192.168.1.112:3306 check server 192.168.1.113 192.168.1.113:3306 check 很明显, 这么写仅仅只实现了流量的分发, 但并不能实现我的需求: 把写流量给Master, 读流量给Slave 节点. 那么问题来了,首先我要能够识别Master Slave 节点, 才能有接下来的流量分离. HAProxy有个配置项叫做 mysql-check . 但是这里并不能用它去做Master-Slave的检测,因为这个option只提供存活检测. 只要能够连上,就代表这个mysql后端是Health OK的. 这还是不符合我的需求. MySQL 如果能够通过tcp-check 检测是Master还是Slave就好了. 既然这样, 写一个TCP-check Wrapper

Httpd Nginx Haproxy反向代理

好久不见. 提交于 2019-12-27 02:24:34
Apache反向代理 部署httpd反向代理 准备工作: 三台虚拟机Ip地址分配: linux-node1:192.168.1.5 (源码编译httpd,并且配置proxy用于代理后端的httpd服务) node1:192.168.1.3 node2:192.168.1.4 node1,node2主机分别安装httpd服务 # yum install -y httpd 编辑node1,node2节点上的httpd.conf配置文件 # vim /etc/httpd/conf/httpd.conf 修改监听端口号为8080,用于linux-node1的代理转发 Listen 8080 分别在node1,node2节点上执行 # echo "node1" >> /var/www/html/index.html # echo "node2" >> /var/www/html/index.html 启动httpd服务 #systemctl start httpd.service linux-node1主机上的操作如下: 安装所需要的依赖关系,httpd的运行环境 # yum install -y apr-devel apr-util-devel pcre-devel openssl-devel 下载httpd的源码安装包 # cd /usr/local/src && wget -c

Haproxy1.7部署 vs 端口转发

心已入冬 提交于 2019-12-26 22:39:56
在180安装haproxy 1.监控两个端口10.10.0.180:55500 10.10.0.180:57000 分别映射到177和178对应的reader和writer 2.更改181source的配置,把reader改成180后重新启动 3.测试:在测试端更改地址,登录181的proxy,能否正常登录 注: 监控本机180:55500 并映射到177:55500 实际就是把访问到本机180:55500端口的请求 转发代理到177:55500 访问180的55500端口实际访问的是177:55500 ------------------------------------------------------------------------ 下载地址: http://www.haproxy.org/ 解压后进入其路径下 编译安装:make TARGET=linux2628 prefix=/usr/local/haproxy 注: # uname -a Linux linux-5hpb 3.0.76 -0.11-default #1 SMP Fri Jun 14 08:21:43 UTC 2013 (ccab990) x86_64 x86_64 x86_64 GNU/Linux 查看haproxy的README发现 # make install PREFIX=/usr

使用Haproxy搭建群集

无人久伴 提交于 2019-12-26 14:36:15
常见的web集群调度器 目前常见的web集群调度器分为软件和硬件,软件通常使用开源的LVS,Haproxy,Nginx,硬件一般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼,绿盟等 Haproxy应用分析 LVS在企业应用中抗负载能力很强,但存在不足 LVS不支持正则处理,不能实现动静分离 对于大型网站,LVS的实施配置复杂,维护成本相对较高 Haproxy是一款可提供高可用性,负载均衡,及基于TCP和HTTP应用的代理的软件 特别适用于负载特别大的web站点 运行在当前的硬件上可支持数以万计的并发连接连接请求 Haproxy调度算法原理 RR:最简单常用的,轮询调度 LC:最小连接数算法,根据后端的节点连接数大小动态分配前端请求 SH:来源访问调度算法,用于有session会话记录在服务器端,可以基于来源ip,cookie做群集调度 Haproxy日志管理 Haproxy的日志默认是输出到系统的syslog中,在生产环境中一般单独定义出来 定义的方法步骤 修改Haproxy配置文件中关于日志配置的选项,加入配置: log /devlog local0 info log /dev/log local0 notice 修改rsyslog配置,将Haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下

OneProxy 管理

丶灬走出姿态 提交于 2019-12-26 02:49:46
-----client-----------haproxy---------mysql1----------mysql2------ 192.168.1.250 192.168.1.1 192.168.1.10 192.168.1.20 一、安装mysql [root@localhost ~]#tar -zxvf bison-2.5.tar.gz [root@localhost ~]#./configure && make&& make install [root@localhost ~]#tar -zxvf cmake-2.8.7.tar.gz [root@localhost ~]#./bootstrap && gmake && gmake install [root@localhost ~]#tar -zxvf mysql-5.5.22.tar.gz [root@localhost ~]#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc/ -DDEFAULT_CHARSET=utf8 - DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all [root@localhost ~]#make && make install

64 bit integer comparison in HAProxy acl rule

别说谁变了你拦得住时间么 提交于 2019-12-25 08:05:05
问题 I have following acl rules to check the range of my url_param value. acl small urlp_val(uid) le 311111111111000000 acl medium urlp_val(uid) 311111111111000001:311111111111001000 acl large urlp_val(uid) ge 311111111111001001 The number are 64 bit integers. This comparison doesn't seem to be working. It always redirect to only one instance. If I decrease the numbers to a range of say 1 to 100, it works well. Does it not support 64 bit numbers or am I doing something stupid/silly here? 回答1: The

Loadbalancing Logback logstash logs using HAProxy

佐手、 提交于 2019-12-25 06:59:38
问题 IP Address: Web Application -> 192.168.x.209 HAProxy -> 192.168.x.211 Logstash Shipper -> 192.168.x.210 With the below configuration, HAProxy is not able to receive logs from Logstash application and thus logstash shipper is not able to receive the logs. Following are the configurations I did: WebApplication - logback.xml <appender name="stash" class="net.logstash.logback.appender.LogstashAccessTcpSocketAppender"> <destination>192.168.x.211:5001</destination> <encoder class="net.logstash

haproxy select connection modes based on url

限于喜欢 提交于 2019-12-25 04:28:08
问题 I want to set a special connection mode (httpclose) for one requested url, so my frontend configuration in haproxy looks like .... acl is_conclose url_beg /close.php option httpclose if is_conclose ... The problem: haproxy always uses "option httpclose" and is ignoring the condition "if is_conclose". How can I setup haproxy to respect the condition? 回答1: option httpclose can be specified on either the frontend or the backend, and behaves the same whether it is encountered on the frontend or

How to redirect url using haproxy

心不动则不痛 提交于 2019-12-24 18:15:56
问题 I want to redirect https://myserver/myapplication/ to https://myserver.domain.com/myapplication/ using haproxy. This is my haproxy configuration frontend LB_http bind 10.123.122.112:80 reqadd X-Forwarded-Proto:\ http default_backend LB frontend LB_https bind 10.123.122.112:443 ssl crt /usr/local/apache2/conf/server.pem reqadd X-Forwarded-Proto:\ https default_backend LB backend LB redirect scheme https if !{ ssl_fc } mode http stats enable stats hide-version stats uri /stats stats realm