【负载均衡】openstack负载均衡之haproxy

2024-05-06 20:58

本文主要是介绍【负载均衡】openstack负载均衡之haproxy,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:【吴业亮】云计算开发工程师 
博客:http://blog.csdn.net/wylfengyujiancheng

一、简介 
1、Haproxy是什么 
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。 
HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。 
2、官网 
http://www.haproxy.com/ 
3、三种负载工具比较 
这里写图片描述

二、haproxy配置 
1、global

globallog         127.0.0.1 local2 #打印日志方式chroot      /var/lib/haproxypidfile     /var/run/haproxy.pid #定义Haproxy的IPmaxconn     4000 #每个进程的最大连接数user        haproxy #用户group       haproxy #组daemon #以守护进程的方式nbproc 16 # 启动的进程数,默认是1# turn on stats unix socketstats socket /var/lib/haproxy/stats
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2、defaults

defaultsmode                    http #设置 mode的语法(http|tcp|health),http是七层模式,tcp是四层模式,health是健康检查,返回oklog                     global #采取全军global的日志option                  httplog # 启用日志记录http请求,默认haproxy不记录http的请求option                  dontlognulloption http-server-closeoption redispatch  #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接option forwardfor       except 127.0.0.0/8option                  redispatchretries                 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 #默认最大连接数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

3、frontend

frontend test.com             #定义前端服务器(haproxy) bind *:80             #监听地址 acl web-client path_beg -i /vsphere-client acl bbs hdr_reg(host) -i ^(bbs.test.com|shequ.test.com|forum) acl monitor hdr_beg(host) -i monitor.test.com    #定义ACL名称,对应的请求的主机头是monitor.test.com  acl www hdr_beg(host) -i www.test.com use_backend  cache.test.com if static    use_backend  monitor.test.com if bbs or monitor use_backend  www.test.com if www use_backend  vsphere-client if web-client default_backend www.test.com  #指定默认的后端服务器 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

4、backend

backend monitor.test.com              #定义后端服务器群(web server/apache/nginx/iis..) mode http option  forwardfor    #后端服务器(apache/nginx/iis/*),从Http Header中获得客户端IP balance leastconn     #参见 balance 算法:cookie SERVERID       #插入serverid到cookie中,serverid后面可以定义 option  httpchk HEAD /check.html #用来做健康检查html文档  基于七层的健康检查,默认为4层#option httpchk HEAD /index.php HTTP/1.1\r\nHost:monitor.test.com #HTTP && Host server server1 10.0.100.70:80 cookie server1 check inter 2000 rise 3 fall 3 weight 3 #服务器定义: #cookie server1表示serverid为server1; #check inter 2000 是检测心跳频率(check 默认 ); #rise 3 表示 3次正确认为服务器可用; #fall 3 表示 3次失败认为服务器不可用; #weight 表示权重。Name server 列表
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

5、listen

listen admin_stat                   #status bind 0.0.0.0:8080               #监听端口 mode http                       #http的7层模式 stats refresh 30s               #统计页面自动刷新时间 stats uri /haproxy_stats_url    #统计页面URL stats realm Haproxy\ Statistics #统计页面密码框上提示文本 stats auth admin:admin          #统计页面用户名和密码设置 stats hide-version              #隐藏统计页面上HAProxy的版本信息 stats admin if TRUE             #手工启用/禁用,后端服务器 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

balance 算法:

1. roundrobin,表示简单的轮询
2. static-rr,表示根据权重, 
3. leastconn,表示最少连接者先处理, 
4. source,表示根据请求源IP, 
5. uri,表示根据请求的URI;
6. url_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name
7. hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
8. rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

6、acl 规则

acl bbs       hdr_reg(host) -i ^(bbs.test.com|forum.test.com)  #使用正则匹配 
acl bbs_path  path_beg -i /bbs                #url 目录 
acl youxi     path_beg -i /youxi               
acl static    path_end -i .html .css .js      #url 结尾文件 
acl php       path_end -i .php  
acl jsp       path_end -i .jsp .do  use_backend bbs_pool if bbs or bbs_path       #注意 "or"  
use_backend youxi_pool if youxi 
use_backend static_pool if static  
use_backend php_pool if php 
use_backend jsp_pool if jsp 
default_backend www.test.com  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

举例: 
openstack官方负载均衡样例

globalchroot  /var/lib/haproxydaemongroup  haproxymaxconn  4000pidfile  /var/run/haproxy.piduser  haproxydefaultslog  globalmaxconn  4000option  redispatchretries  3timeout  http-request 10stimeout  queue 1mtimeout  connect 10stimeout  client 1mtimeout  server 1mtimeout  check 10slisten dashboard_clusterbind <Virtual IP>:443balance  sourceoption  tcpkaoption  httpchkoption  tcplogserver controller1 10.0.0.12:443 check inter 2000 rise 2 fall 5server controller2 10.0.0.13:443 check inter 2000 rise 2 fall 5server controller3 10.0.0.14:443 check inter 2000 rise 2 fall 5listen galera_clusterbind <Virtual IP>:3306balance  sourceoption  mysql-checkserver controller1 10.0.0.12:3306 check port 9200 inter 2000 rise 2 fall 5server controller2 10.0.0.13:3306 backup check port 9200 inter 2000 rise 2 fall 5server controller3 10.0.0.14:3306 backup check port 9200 inter 2000 rise 2 fall 5listen glance_api_clusterbind <Virtual IP>:9292balance  sourceoption  tcpkaoption  httpchkoption  tcplogserver controller1 10.0.0.12:9292 check inter 2000 rise 2 fall 5server controller2 10.0.0.13:9292 check inter 2000 rise 2 fall 5server controller3 10.0.0.14:9292 check inter 2000 rise 2 fall 5listen glance_registry_clusterbind <Virtual IP>:9191balance  sourceoption  tcpkaoption  tcplogserver controller1 10.0.0.12:9191 check inter 2000 rise 2 fall 5server controller2 10.0.0.13:9191 check inter 2000 rise 2 fall 5server controller3 10.0.0.14:9191 check inter 2000 rise 2 fall 5listen keystone_admin_clusterbind <Virtual IP>:35357balance  sourceoption  tcpkaoption  httpchkoption  tcplogserver controller1 10.0.0.12:35357 check inter 2000 rise 2 fall 5server controller2 10.0.0.13:35357 check inter 2000 rise 2 fall 5server controller3 10.0.0.14:35357 check inter 2000 rise 2 fall 5listen keystone_public_internal_clusterbind <Virtual IP>:5000balance  sourceoption  tcpkaoption  httpchkoption  tcplogserver controller1 10.0.0.12:5000 check inter 2000 rise 2 fall 5server controller2 10.0.0.13:5000 check inter 2000 rise 2 fall 5server controller3 10.0.0.14:5000 check inter 2000 rise 2 fall 5listen nova_ec2_api_clusterbind <Virtual IP>:8773balance  sourceoption  tcpkaoption  tcplogserver controller1 10.0.0.12:8773 check inter 2000 rise 2 fall 5server controller2 10.0.0.13:8773 check inter 2000 rise 2 fall 5server controller3 10.0.0.14:8773 check inter 2000 rise 2 fall 5listen nova_compute_api_clusterbind <Virtual IP>:8774balance  sourceoption  tcpkaoption  httpchkoption  tcplogserver controller1 10.0.0.12:8774 check inter 2000 rise 2 fall 5server controller2 10.0.0.13:8774 check inter 2000 rise 2 fall 5server controller3 10.0.0.14:8774 check inter 2000 rise 2 fall 5listen nova_metadata_api_clusterbind <Virtual IP>:8775balance  sourceoption  tcpkaoption  tcplogserver controller1 10.0.0.12:8775 check inter 2000 rise 2 fall 5server controller2 10.0.0.13:8775 check inter 2000 rise 2 fall 5server controller3 10.0.0.14:8775 check inter 2000 rise 2 fall 5listen cinder_api_clusterbind <Virtual IP>:8776balance  sourceoption  tcpkaoption  httpchkoption  tcplogserver controller1 10.0.0.12:8776 check inter 2000 rise 2 fall 5server controller2 10.0.0.13:8776 check inter 2000 rise 2 fall 5server controller3 10.0.0.14:8776 check inter 2000 rise 2 fall 5listen ceilometer_api_clusterbind <Virtual IP>:8777balance  sourceoption  tcpkaoption  tcplogserver controller1 10.0.0.12:8777 check inter 2000 rise 2 fall 5server controller2 10.0.0.13:8777 check inter 2000 rise 2 fall 5server controller3 10.0.0.14:8777 check inter 2000 rise 2 fall 5listen nova_vncproxy_clusterbind <Virtual IP>:6080balance  sourceoption  tcpkaoption  tcplogserver controller1 10.0.0.12:6080 check inter 2000 rise 2 fall 5server controller2 10.0.0.13:6080 check inter 2000 rise 2 fall 5server controller3 10.0.0.14:6080 check inter 2000 rise 2 fall 5listen neutron_api_clusterbind <Virtual IP>:9696balance  sourceoption  tcpkaoption  httpchkoption  tcplogserver controller1 10.0.0.12:9696 check inter 2000 rise 2 fall 5server controller2 10.0.0.13:9696 check inter 2000 rise 2 fall 5server controller3 10.0.0.14:9696 check inter 2000 rise 2 fall 5listen swift_proxy_clusterbind <Virtual IP>:8080balance  sourceoption  tcplogoption  tcpkaserver controller1 10.0.0.12:8080 check inter 2000 rise 2 fall 5server controller2 10.0.0.13:8080 check inter 2000 rise 2 fall 5server controller3 10.0.0.14:8080 check inter 2000 rise 2 fall 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151

参考: 
http://www.haproxy.com/

这篇关于【负载均衡】openstack负载均衡之haproxy的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/965359

相关文章

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

nginx负载均衡及详细配置方法

《nginx负载均衡及详细配置方法》Nginx作为一种高效的Web服务器和反向代理服务器,广泛应用于网站的负载均衡中,:本文主要介绍nginx负载均衡及详细配置,需要的朋友可以参考下... 目录一、 nginx负载均衡策略1.1 基本负载均衡策略1.2 第三方策略1.3 策略对比二、 nginx配置2.1

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

SpringCloud负载均衡spring-cloud-starter-loadbalancer解读

《SpringCloud负载均衡spring-cloud-starter-loadbalancer解读》:本文主要介绍SpringCloud负载均衡spring-cloud-starter-loa... 目录简述主要特点使用负载均衡算法1. 轮询负载均衡策略(Round Robin)2. 随机负载均衡策略(

Spring Cloud LoadBalancer 负载均衡详解

《SpringCloudLoadBalancer负载均衡详解》本文介绍了如何在SpringCloud中使用SpringCloudLoadBalancer实现客户端负载均衡,并详细讲解了轮询策略和... 目录1. 在 idea 上运行多个服务2. 问题引入3. 负载均衡4. Spring Cloud Load

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

【微服务】Ribbon(负载均衡,服务调用)+ OpenFeign(服务发现,远程调用)【详解】

文章目录 1.Ribbon(负载均衡,服务调用)1.1问题引出1.2 Ribbon负载均衡1.3 RestTemplate整合Ribbon1.4 指定Ribbon负载均衡策略1.4.1 配置文件1.4.2 配置类1.4.3 定义Ribbon客户端配置1.4.4 自定义负载均衡策略 2.OpenFeign面向接口的服务调用(服务发现,远程调用)2.1 OpenFeign的使用2.1 .1创建

OpenStack离线Train版安装系列—3控制节点-Keystone认证服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—2计算节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版