文档章节

基于docker的haproxy

waynehu
 waynehu
发布于 2019/09/18 16:14
字数 831
阅读 9
收藏 0

3 月,跳不动了?>>>

准备配置文件

随便准备了个配置文件,关于配置文件如何写,还得看其他相关文章

#---------------------------------------------------------------------  
# Example configuration for a possible web application.  See the  
# full configuration options online.  
#  
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt  
#  
#---------------------------------------------------------------------  
  
#---------------------------------------------------------------------  
# Global settings  
#---------------------------------------------------------------------  
global  
    # to have these messages end up in /var/log/haproxy.log you will  
    # need to:  
    #  
    # 1) configure syslog to accept network log events.  This is done  
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in  
    #    /etc/sysconfig/syslog  
    #  
    # 2) configure local2 events to go to the /var/log/haproxy.log  
    #   file. A line like the following can be added to  
    #   /etc/sysconfig/syslog  
    #  
    #    local2.*                       /var/log/haproxy.log  
    #  
#    log         127.0.0.1 local2  
  
#    chroot      /var/lib/haproxy  
    pidfile     /var/run/haproxy.pid  
    maxconn     4000  
#    user        haproxy  
#    group       haproxy  
    daemon  
  
    # turn on stats unix socket  
#    stats socket /var/lib/haproxy/stats  
  
#---------------------------------------------------------------------  
# common defaults that all the 'listen' and 'backend' sections will  
# use if not designated in their block  
#---------------------------------------------------------------------  
defaults  
    mode                    http  
    log                     global  
    option                  httplog  
    option                  dontlognull  
    option http-server-close  
    option forwardfor       except 127.0.0.0/8  
    option                  redispatch  
    retries                 3  
    timeout http-request    10s  
    timeout queue           1m  
    timeout connect         10s  
    timeout client          1m  
    timeout server          1m  
    timeout http-keep-alive 10s  
    timeout check           10s  
    maxconn                 3000  
  
#---------------------------------------------------------------------  
# main frontend which proxys to the backends  
#---------------------------------------------------------------------  
#此处配置HAProxy的监听端口  
# 2条访问控制列表,一个是如果以/static等开头的,都属于url_static这个列表
# 另一个是如果以.jpg等结尾的,也属于url_static这个列表
# 如果要使用static这个名字的backend,那要符合url_static,这就是倒数第二句话的意思
# 默认的backend使用名字叫app的backend
frontend  main
	bind :5000 
    acl url_static       path_beg       -i /static /images /javascript /stylesheets  
    acl url_static       path_end       -i .jpg .gif .png .css .js   
    use_backend static          if url_static  
    default_backend             app  
  
#---------------------------------------------------------------------  
# static backend for serving up images, stylesheets and such  
#---------------------------------------------------------------------  
# 定义一个backend,名字叫static,用来搭配上面的frontend
backend static  
    balance     roundrobin  
    server      static 127.0.0.1:4331 check  
  
#---------------------------------------------------------------------  
# round robin balancing between the various backends  
#---------------------------------------------------------------------  
# 定义一个backend,名字叫app,用来搭配上面的frontend
# 这个app是session轮询的
# 将cookie名字为WEBSRV插入,返回给客户端
# 定义一个server叫app1,它的cookie的key就是WEBSRV,值就是app1
# 3台轮询,一旦确定某一台后,以后所有请求都会转发到那一台,session持久保留
backend app  
	balance roundrobin
	cookie WEBSRV insert nocache indirect
    server  app1 10.1.58.216:4001 check cookie app1
    server  app2 10.1.58.216:4002 check cookie app2
    server  app3 10.1.58.216:4003 check cookie app3

检验配置文件

先cd到有上述配置文件的目录,然后运行下面命令,用来检查配置文件是否合法

docker run -it --rm --name haproxy-syntax-check \
-v ${PWD}/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg \
haproxy haproxy -c -f /usr/local/etc/haproxy/haproxy.cfg

如发现有不合法的部分,会[alert]出来,根据提示修正配置文件
配置文件通过则提示 Configuration file is valid

运行时检验 & 运行

然后运行一下,先使用-it使之在前台运行,如果有运行时的错误会提示你,并且haproxy会崩溃退出
另外端口号5000是搭配配置文件里的bind :5000的,根据实际情况改写

docker run -it --name haproxy-running \
-p "5000:5000" \
-v ${PWD}/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg \
haproxy

没有问题后,切换到后台运行

# 先杀掉前面运行的
docker rm -f haproxy-running
# 重新运行,将-it改为-d
docker run -d --name haproxy-running \
-p "5000:5000" \
-v ${PWD}/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg \
haproxy

测试

在浏览器里访问ip+5000端口可以看到被代理的画面,被代理的服务器从配置文件上可以看出是10.1.58.216:4001-4003

© 著作权归作者所有

waynehu
粉丝 35
博文 69
码字总数 36444
作品 0
静安
私信 提问
加载中

评论(0)

「实战篇」开源项目docker化运维部署-搭建mysql集群(四)

有了docker虚拟机,就需要利用平台部署数据库的集群,在实际操作之前介绍下数据库集群的方案和各自的特点。源码:https://github.com/limingios/netFuture/tree/master/mysql-pxc/ 集群的方案...

金鑫工程师
2019/04/10
0
0
基于docker的haproxy的反向代理

haproxy介绍 haproxy的工作模型如下图,对于应用服务器而言,haproxy为应用服务器的流量入口,外部流量流经haproxy,haproxy跟需要可以提供L4(IP+PORT,报文解析到传输层tcp、udp)或者L7(...

流浪的猪猪
2018/11/03
0
0
下一代云计算平台Apache Mesos定制自己的PaaS(应用发布+负载均衡+服务发现)

书接上文《下一代云计算平台Apache Mesos之使用marathon发布应用》 作为一个简单的PaaS(平台即服务),应该具备发布应用,调整应用个数,重启应用,暂停应用(marathon提供)以及负载均衡和...

引鸩怼孑
2015/05/05
213
0
saltstack与docker结合构建高可用和自动发现服务

最近看了刘天斯大哥的文章《构建一个高可用及自动发现docker基础架构》,觉得高大上,他的架构基于etcd+confd+docker+haproxy构建的。至于优势,刘天斯大哥已经说的很清楚。 我这里想说的是我...

liuping0906
2018/07/02
0
0
pxc集群与haproxy负载以及使用keepalived实现高可用And使用shardingJdbc搭配druid实现分区分表遇到的坑

搭建pxc集群: 1,安装pxc镜像:docker pull percona/percona-xtradb-cluster 2,创建虚拟网段:docker network create --subnet=172.18.0.0/24 net1 查看:docker network inspect net1 删除:......

瞧锅锅
2019/07/05
96
0

没有更多内容

加载失败,请刷新页面

加载更多

XDR

XDR是一个库 XDR用于将任意类型的数据转化为平台无关的编码,然后传输,到了对应平台按照对应平台标准进行解析。 主要解决的是平台之间字节序的不同。主要是解决数据跨平台解析的问题。 XDR双...

鬼上身跳不过门槛
30分钟前
24
0
霍兰德职业兴趣测试与职业生涯规划

职业生涯规划这个词,相信小伙伴不会第一次听说,而且我肯定听的最多的地方,那就是大四的学堂里。名字听着很高大上,其实跟我们出游做计划差不多,只不过这个周期会很长。职业生涯规划里我们...

蛤蟆丸子
31分钟前
17
0
localStorage设置过期时间

场景# 浏览器端需要存储一个用户的标识和cookie一样需要过期时间,但是用的是localStorage存储。而localStorage一经存储除非手动删除是不会过期的。那就需要自己实现过期机制。网上找了几种简...

stys35
31分钟前
21
0
sessionStorage和LocalStorage区别?

两者都是浏览器提供技术,用于在浏览器端存放数据 –存数据:setItem(k,v) –取数据:getItem(k) –删数据:removeItem(k) 2. 区别: –sessionStorage会话级,浏览器打开到浏览器关闭。 –l...

安然_oschina
54分钟前
19
0
重磅消息:Google和网易集体震荡,联手让一部分游戏先出海!

4月9日参与《出海背后的技术密码》免费直播节目的伙伴,有机会获得由 Google&网易提供给大家的精美礼品。同时,今天文章后面留言点赞第一的伙伴,加文文酱(liwenzhaozhao)领取现金红包 哦!...

张晓衡
54分钟前
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部