5、负载均衡性能优化5.1、业务调整1、多个业务建议配置多套集群 2、一个业务拆分多个模块配多个集群 3、配置动静分离、CDN等优化5.2、硬件选型1、4Core/16GB、8Core/32GB 2、万兆网卡 3、固态SSD硬盘5.3、配置调整1、内核调整 vim /etc/sysct.conf # tcp优化 net.ipv4.ip_local_port_range = 1024 65000 n
4、配置高可用负载均衡1、要保证两台节点的配置一样; 如下操作在172.16.1.5节点上进行 scp haproxy22.rpm.tar.gz root@10.0.0.6:~ scp /etc/haproxy/haproxy.cfg root@172.16.1.6:/etc/haproxy/haproxy.cfg scp -rp /ssl root@172.16.1.6:/
2、配置http负载均衡 3、配置https负载均衡3.1、签发证书#创建自签证书文件 cd /opt openssl genrsa -idea -out server.key 2048 openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt #合并证书 ca
1、配置mysql负载均衡用户请求3366端口,调度到172.16.1.7:3306、172.16.1.8:33061.1、配置MySQLyum install -y mariadb mariadb-server systemctl start mariadb mysql -uroot -e "grant all privileges on *.* to 'all'@'%' identified
2、ACL场景实践2.5、ACL案例-实现动静分离global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group hapr
2、ACL场景实践 2.4、ACL案例-基于后缀调度根据用户请求的后缀,调度到不同的后端集群 用户通过.txt调度到172.16.1.7:80 用户通过.pdf调度到172.16.1.8:802.4.1、配置后端节点#web1:.txt站点定义 cat /etc/nginx/conf.d/www.qingchen.com.conf server { listen 8080; ser
2、ACL场景实践2.3、ACL案例-基于路径调度#根据用户请求的URL。调度到不同的后端集群 用户通过/static调度到172.16.1.7:80 用户请求/user调度到172.16.1.8:802.3.1、配置后端节点#web1: /static站点定义 cat /etc/nginx/conf.d/www.qingchen.com.conf server { listen 80;
2、ACL场景实践2.2、ACL案例-基于设备调度根据用户请求的User-Agent,调度到不同的后端集群 用户请求Chrome调度到172.16.1.7:80 用户请求Firefox调度到172.16.1.8:802.2.1、配置后端节点#web1:Chrome站点定义 cat /etc/nginx/conf.d/www.qingchen.com.conf server { listen
2、ACL场景实践2.1、ACL案例-基于域名调度根据用户请求不同的域名,调度到不同的后端集群 用户请求www.qingchen.com调度到172.16.1.7:80,172.16.1.8:80 用户请求blog.qingchen.com调度到172.16.1.7:8080,172.16.1.8:80802.1.1、配置后端节点#www站点定义(所有web节点配置一致) cat /etc/ngi
1、ACL基本概述1.1、什么是ACLACL主要对请求报文和响应报文进行匹配和过滤,其配置法则通常分为两步 首先定义ACL规则,即定义一个测试条件,条件可以是请求报文的源地址、源端口、目标地址、目标端口、请求方法、URL、文件后缀等 然后在条件得到满足时执行相应的动作,比如阻止请求、又或者转发请求至某特定的后端1.2、ACL定义方法#ACL语法 acl <aclname> <cr
7、Haproxy调度算法Haproxy根据后端服务器的负载,或其他的计算的标准,判断挑选哪台RS来进行请求处理 Haproxy调度算法语法,可用于defaults、listen、backend balance <algorithm|算法> [ <arguments> ] balance url_param <param> [check_post [<ma
6、Haproxy高级功能6.8、自定义HTTP报文 6.8.1、reqaddreqadd <string> [{if | unless} <crond>]在请求报文中添加指定首部 实现原理:client-->haproxy-->reqadd(添加header)-->web 1、在frontend中使用reqadd,将发往后端集群的请求中添加一个head
6、Haproxy高级功能6.7、自定义错误页面Haproxy自定义错误页面的方式有两种 1、有haproxy本机提供错误页面,通过errorfile参数来设定 2、将错误转到一个指定的url地址,通过errorloc参数来设定6.7.1、errorfile通过errorfile将错误交给本机haproxy处理 1、修改haproxy配置 cat /etc/haproxy/haproxy.cfg
6、Haproxy高级功能6.6、自定义日志capturecapture {request|response} header捕获并记录指定请求或响应首部最近一次出现时的第一个值,捕获的首部值使用花括号{}括起来后添加进日志中 如果需要捕获多个首部值,他们将以指定的次序出现在日志文件中,并以竖线"|"作为分隔符,不存在的首部记录为空字符串,最常需要捕获的首部有如下几个: 1、虚拟主机环境中使用的Ho
6、Haproxy高级功能6.5、IP地址透传web服务器中记录客户端的真实IP地址,主要用于访问统计、安全防护、行为分析、区域排行等场景6.5.1、七层负载地址透传Haproxy工作于反向代理模式,其发往服务器的请求中的客户端IP均为Haproxy主机的地址而非真正客户端的地址,这会使得服务器的日志信息记录不了真正的请求来源,X-Forwarded-For首部则可用于解决此问题 Haproxy可
6、Haproxy高级功能6.4、服务器状态监测基于端口做状态检测,此为默认方式 基于指定URI做状态检测 基于指定URI的request请求头部内容做状态检测6.4.1、httpchk参数option httpchk指令给予http协议来做健康检查,只有返回状态码为2XX或3XX的才认为是健康,其余所有状态码都认为不健康 如果不设置该选项时,默认采用tcp做健康检查。只要能建立tcp就表示健康
6、Haproxy高级功能6.3、基于socat管理haproxy 6.3.1、安装socatyum install -y socat6.3.2、修改配置文件vim /etc/haproxy/haproxy.cfg global #turn on stats unix socket stats socket /var/lib/haproxy/stats level admin s
6、Haproxy高级功能6.2、基于web管理haproxyHaproxy有统计报告功能,可以让使用者通过web页面概览后端服务器的概况,甚至更改他们的状态6.2.1、状态页配置#stats settings listen haproxy-stats mode tcp bind *:80 stats enable #启用stats功能
6、Haproxy高级功能 6.1、基于cockie会话保持在backend服务器组启用cookie植入功能 haproxy会将后端服务器定义的serverID植入到客户端的cookie中,以保持会话的持久性,需要设置backend中的cookie以及server指定的cookie选项6.1.1、配置示例1、配置haproxy基于cookie实现会话绑定 #main frontend which
5、Haproxy Proxies配置代理相关配置 frontend <name>:用于定义一系列监听的端口,这些端口可接受客户端请求并与之建立连接 backend <name>:用于定义一系列后端服务器,代理将会将对应客户端的请求转发至这些服务器 listen <name>:通过关联"前端"和"后端"定义了一个完整的代理 5.1、mode参数 mode概念:设
4、Haproxy default配置 defaults段用于为所有其他配置段提供默认参数 4.1、option参数 httplog option httplog:用来记录日志,其通常包括但不限于HTTP请求、连接计时器、会话状态、连接数、捕获的首部及cookie、"frontend"、"backend"等信息。 dontlognull option dontlognull:不记录健康检查的日志信
3、Haproxy Global配置 3.1、global配置参数Global settings全局配置,用于设定全局配置参数 daemon: 以守护进程模式运行 chroot /var/lib/haproxy: 锁定运行目录 user haproxy: 运行haproxy进程用户身份 group haproxy: 运行haproxy进程用户组身份 maxconn 4000: 设定每个haprox
2、Haproxy安装配置2.1、使用系统rpm安装Centos7默认的base仓库中包含haproxy的安装包文件,但是版本是1.5.18,比较旧 距离当前版本已经有较长时间没有更新,由于版本比较旧所以有很多功能不支持 yum install -y haproxy haproxy -v2.2、使用三方rpm安装当然也可以通过第三方仓库安装较新的rpm包 haproxy 第三方rpm包"http
1、Haproxy基础概念 1.1、什么是Haproxy haproxy虽然名称中包含HA,但它不提供任何HA高可用的功能,它仅提供proxy代理的功能 但haproxy提供对后端节点进行状态检测,一旦后端节点出现故障,haproxy则会将请求重新分发,这也是它将自己称为haproxy的原因 1.2、Haproxy应用场景haproxy支持http反向代理 haproxy支持动态程序的反向代理 h
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号