高并发架构——软负载均衡器Haproxy介绍以及安装

支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机
能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、
source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
不能做web服务器

HAProxy简介

HAProxy yum方式安装

HAProxy 源码方式安装

HAProxy 配置文件讲解

HAProxy 配置实例

一、 HAProxy 简介
1. HAProxy 是一款提供高可用性、负载均衡以及基于 TCP (第四层)和 HTTP (第七层)应用的代理软件,支持
虚拟主机,它是免费、快速并且可靠的一种解决方案。 HAProxy 特别适用于那些负载特大的 web 站点,这些
站点通常又需要会话保持或七层处理。 HAProxy 运行在时下的硬件上,完全可以支持数以万计的 并发连接。
并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的 web 服务器不被暴露
到网络上。
2. HAProxy 实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内
存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的
资源和时间管理的用户端 (User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系
统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个 CPU 时间片 (Cycle) 做更多的工
作。
3. HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫( attack
bots ),也就是说限制它们的连接打开从而限制它们的危害。 这个已经为一个陷于小型 DDoS 攻击的网站开发
了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。
4. HAProxy 支持全透明代理(已具备硬件防火墙的典型特点) : 可以用客户端 IP 地址或者任何其他地址来连接后
端服务器 . 这个特性仅在 Linux 2.4/2.6 内核打了 cttproxy 补丁后才可以使用 . 这个特性也使得为某特殊服务器处
理部分流量同时又不修改服务器的地址成为可能。
二、安装配置 HAProxy
安装 HAProxy
yum install -y haproxy # 直接使用 RPM 来安装
rpm -qi haproxy ## 查看安装版本
rpm -ql haproxy ## 查看安装版本的文件以及路径
源码编译方式安装
sudo yum -y install gcc make
## 创建运行 haproxy 时,使用的用户。在此我们使用 haproxy 这个用户,而且此用户不能登录到系统
sudo useradd -m haproxy
## 下载源代码
wget https://www.haproxy.org/download/1.8/src/haproxy-1.8.13.tar.gz
tar -xzvf haproxy-1.8.13.tar.gz
cd haproxy-1.8.13/
cat README
## 编译
make TARGET = linux26 ARCH = x86_64 PREFIX = /usr/local/haproxy
## 安装
sudo make install PREFIX = /usr/local/haproxy
ll /usr/local/haproxy/
配置文件详解
haproxy 配置分为五部分
global :全局配置主要用于设定义全局参数,属于进程级的配置,通常和操作系统配置有关
default: 配置默认参数,这些参数可以被用到 frontend backend Listen 组件,在此部分中设置的参数值,
默认会自动引用到下面的 frontend backend listen 部分中,因引,某些参数属于公用的配置,只需要在
defaults 部分添加一次即可。而如果 frontend backend listen 部分也配置了与 defaults 部分一样的参数,
Defaults 部分参数对应的值自动被覆盖
frontend: 接收请求的前端虚拟节点, Frontend 可以更加规则直接指定具体使用后端的 backend) frontend
haproxy 1.3 版本以后才引入的一个组件,同时引入的还有 backend 组件。通过引入这些组件,在很大程度
上简化了 haproxy 配置文件的复杂性。 forntend 可以根据 ACL 规则直接指定要使用的后端 backend
backend: HAProxy1.3 版本之前, HAProxy 的所有配置选项都在这个部分中设置。为了保持兼容性,
haproxy 新的版本依然保留了 listen 组件配置试。两种配置方式任选一中
listen: (Fronted backend 的组合体 ) 比如 haproxy 实例状态监控部分配置
global
log 127 .0.0.1 local3 # 定义 haproxy 日志输出设置
log 127 .0.0.1 local1 notice
#log loghost local0 info # 定义 haproxy 日志级别
ulimit-n 82000 # 设置每个进程的可用的最大文件描述符
maxconn 20480 # 默认最大连接数
chroot /usr/local/haproxy #chroot 运行路径
uid 99 # 运行 haproxy 用户 UID
gid 99 # 运行 haproxy 用户组 gid
daemon # 以后台形式运行 harpoxy
nbproc 1 # 设置进程数量
pidfile /usr/local/haproxy/run/haproxy.pid #haproxy 进程 PID 文件
#debug #haproxy 调试级别,建议只在开启单进程的时候调试
#quiet
1. log :全局的日志配置, local0 是日志输出设置, info 表示日志级别( err waning info debug
2. maxconn :设定每个 HAProxy 进程可接受的最大并发连接数,此选项等同于 linux 命令选项 ”ulimit -n”
3. chroot  :修改 haproxy 的工作目录至指定的目录并在放弃权限之前执行 chroot() 操作 , 可以提升 haproxy 的安全
级别,不过需要注意的是要确保指定的目录为空目录且任何用户均不能有写权限;
4. daemon :让 haproxy 以守护进程的方式工作于后台,其等同于 “-D” 选项的功能,当然,也可以在命令行中
“-db” 选项将其禁用;
5. nbproc  :指定启动的 haproxy 进程个数,只能用于守护进程模式的 haproxy ;默认只启动一个进程,鉴于调
试困难等多方面的原因,一般只在单进程仅能打开少数文件描述符的场景中才使用多进程模式;
6. pidfifile :将 haproxy 的进程写入 pid 文件。
7. ulimit-n :设定每进程所能够打开的最大文件描述符数目,默认情况下其会自动进行计算,因此不推荐修改此
选项
8. stats socket 定义统计信息保存位置。
default
用于设置配置默认参数,这些参数可以被用到 frontend backend Listen 组件;
此部分中设置的参数值,默认会自动引用到下面的 frontend backend listen 部分中,因引,某些参数属于公
用的配置,只需要在 defaults 部分添加一次即可。而如果 frontend backend listen 部分也配置了与 defaults
部分一样的参 数, Defaults 部分参数对应的值自动被覆盖
defaults
log global # 引入 global 定义的日志格式
mode http # 所处理的类别 (7 层代理 http 4 层代理 tcp)
maxconn 50000 # 最大连接数
option httplog # 日志类别为 http 日志格式
option httpclose # 每次请求完毕后主动关闭 http 通道
option dontlognull # 不记录健康检查日志信息
option forwardfor # 如果后端服务器需要获得客户端的真实 ip ,需要配置的参数,
可以从 http header 中获取客户端的 IP
retries 3 #3 次连接失败就认为服务器不可用,也可以通过后面设置
option redispatch
# --- 上述选项意思是指 serverID 对应的服务器挂掉后,强制定向到其他健康的服务器 , 当使用了 cookie 时,
haproxy 将会将其请求的后端服务器的 serverID 插入到 cookie 中,以保证会话的 SESSION 持久性;而此时,如果
后端的服务器宕掉了 , 但是客户端的 cookie 是不会刷新的,如果设置此参数,将会将客户的请求强制定向到另外一个
后端 server 上,以保证服务的正常 ---
stats refresh 30 # 设置统计页面刷新时间间隔
option abortonclose # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的连接
balance roundrobin # 设置默认负载均衡方式,轮询方式
#balance source # 设置默认负载均衡方式,类似于 nginx ip_hash
#contimeout 5000 # 设置连接超时时间
#clitimeout 50000 # 设置客户端超时时间
#srvtimeout 50000 # 设置服务器超时时间
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 # 设置心跳检查超时时间
1. mode http 设置 haproxy 的运行模式,有三种{ http|tcp|health }。注意:如果 haproxy 中还要使用 4 层的
应用( mode tcp )的话,不建议在此定义 haproxy 的运行模式。
设置 HAProxy 实例默认的运行模式有 tcp http health 三种可选:
tcp 模式:在此模式下,客户端和服务器端之前将建立一个全双工的连接,不会对七层报文做任何检查,默认
tcp 模式,经常用于 SSL SSH SMTP 等应用。 http 模式:在此模式下,客户端请求在转发至后端服务器之
前将会被深度分板,所有不与 RFC 格式兼容的请求都会被拒绝。 health :已基本不用了
2.
log global 设置日志继承全局配置段的设置。
3.
option httplog 表示开始打开记录 http 请求的日志功能。
4.
option dontlognull 如果产生了一个空连接,那这个空连接的日志将不会记录。
5.
option http - server - close 打开 http 协议中服务器端关闭功能,使得支持长连接,使得会话可以被重用,使
得每一个日志记录都会被记录
6. option forwardfor except 127.0.0.0/8 如果上游服务器上的应用程序想记录客户端的真实 IP 地址,
haproxy 会把客户端的 IP 信息发送给上游服务器,在 HTTP 请求中添加 ”X-Forwarded-For” 字段 , 但当是 haproxy
自身的健康检测机制去访问上游服务器时是不应该把这样的访问日志记录到日志中的,所以用 except 来排除
127.0.0.0 ,即 haproxy
7. option redispatch 当与上游服务器的会话失败 ( 服务器故障或其他原因 ) 时,把会话重新分发到其他健康的
服务器上 , 当原来故障的服务器恢复时,会话又被定向到已恢复的服务器上。还可以用 ”retries” 关键字来设定在
判定会话失败时的尝试连接的次数。
8.
retries 3 向上游服务器尝试连接的最大次数,超过此值就认为后端服务器不可用。
9.
option abortonclose haproxy 负载很高时,自动结束掉当前队列处理比较久的链接
10.
timout http - request 10s 客户端发送 http 请求的超时时间
11.
timeout queue 1m 当上游服务器在高负载响应 haproxy 时,会把 haproxy 发送来的请求放进一个队列中,
timeout queue 定义放入这个队列的超时时间
12.
timeout connect 5s haproxy 与后端服务器连接超时时间,如果在同一个局域网可设置较小的时间
13.
timeout client 1m
定义客户端与 haproxy 连接后,数据传输完毕,不再有数据传输,即非活动连接的超时
时间。
14.
timeout server 1m
定义 haproxy 与上游服务器非活动连接的超时时间。
15.
timeout http - keep - alive 10s 设置新的 http 请求连接建立的最大超时时间,时间较短时可以尽快释放出资
源,节约资源
16.
timeout check 10s 健康检测的时间的最大超时时间。
17.
maxconn 3000 最大并发连接数。
18.
contimeout 5000 设置成功连接到一台服务器的最长等待时间,默认单位是毫秒,新版本的 haproxy 使用
timeout connect 替代,该参数向后兼容。
19. clitimeout 3000 设置连接客户端发送数据时的成功连接最长等待时间,默认单位是毫秒,新版本 haproxy
使用 timeout client 替代。该参数向后兼容。
20. srvtimeout 3000 设置服务器端回应客户度数据发送的最长等待时间,默认单位是毫秒,新版本 haproxy 使
timeout server 替代。该参数向后兼容
21. balance roundrobin 设置负载算法为:轮询算法 rr
1. roundrobin :基于权重进行的轮叫算法,在服务器的性能分布经较均匀时这是一种最公平的,最合量的
算法
2. static-rr :也是基于权重时行轮叫的算法,不过此算法为静态方法,在运行时调整其服务权重不会生效
3. source :是基于请求源 IP 的算法,此算法对请求的源 IP 时行 hash 运算,然后将结果与后端服务器的权理
总数相除后转发至某台匹配的后端服务器,这种方法可以使用一个客户端 IP 的请求始终转发到特定的后
端服务器
4. leastconn :此算法会将新的连接请求转发到具有最少连接数目的后端服务器。在会话时间较长的场景中
推荐使用此算法。例如数据库负载均衡等。此算法不适合会话较短的环境,如基于 http 的应用
5. uri :此算法会对部分或整个 URI 进行 hash 运算,再经过与服务器的总权重要除,最后转发到某台匹配的
后端服务器上
6. uri_param :此算法会椐据 URL 路径中的参数时行转发,这样可以保证在后端真实服务器数量不变时,同
一个用户的请求始终分发到同一台机器上
7. hdr :此算法根据 httpd 头时行转发,如果指定的 httpd 头名称不存在,则使用 roundrobin 算法进行策略
转发
8. rdp-cookie(name) :示根据据 cookie(name) 来锁定并哈希每一次 TCP 请求
frontend
frontend 是在 haproxy 1.3 版本以后才引入的一个组件,同时引入的还有 backend 组件。通过引入这些组件,在
很大程度上简化了 haproxy 配置文件的复杂性。 frontend 根据任意 HTTP 请求头内容做 ACL 规则匹配 , 然后把请求
定向到相关的 backend
frontend http_80_in
bind 0 .0.0.0:80 # 设置监听端口,即 haproxy 提供的 web 服务端口,和 lvs vip 类似
mode http #http 7 层模式
log global # 应用全局的日志设置
option httplog # 启用 http log
option httpclose # 每次请求完毕后主动关闭 http 通道, HAproxy 不支持 keep-alive 模式
option forwardfor # 如果后端服务器需要获得客户端的真实 IP 需要配置此参数,将可以从
HttpHeader 中获得客户端 IP
default_backend wwwpool # 设置请求默认转发的后端服务池,
1.
frontend http_80_in 定义一个名为 http_80_in frontend
2.
bind 0.0.0.0:80 定义 haproxy 前端部分监听的端口。
3.
mode http 定义为 http 模式
4.
log global 继承 global log 的定义
5.
option forwardfor 使后端 server 获取到客户端的真实 IP
backend
用来定义后端服务集群的配置,真实服务器,一个 Backend 对应一个或者多个实体服务器
backend wwwpool # 定义 wwwpool 服务器组。
mode http #http 7 层模式
option redispatch
option abortonclose
balance source # 负载均衡的方式,源哈希算法
cookie SERVERID # 允许插入 serverid cookie 中, serverid 后面可以定义
option httpchk GET /test.html # 心跳检测
server web1 10 .1.1.2:80 cookie 2 weight 3 check inter 2000 rise 2 fall 3 maxconn 8
1. cookie 表示充许向 cookie 插入 SERVERID, 每台服务器的 SERVERID 可以下面的 server 关键字中使用 cookie
键字定义
2. option httpchk 此选项表示启用 HTTP 的服务状态检测功能。 HAProxy 作为一个专业的负载均衡器,并且它
支持对 backend 部分指定的后端服务节点的 健康检查,以保证在后端的 backend 中某个节点不能服务时,把
frontend 端进来的客户端请求分配至 backend 中其他健康节点上,从而保证 整体服务的可用性
3. method 表示 HTTP 请求的方式,常用的有 OPTIONS GET HEAD 几种方式。 一般健康检查可以采用 HEAD
方式进行,而不是采用 GET 方式,这是因为 HEAD 方式没有数据返回,仅检查 Response HEAD 是不是状态码
200 。因此,相对于 GET HEAD 方式更快,更简单
4. uri 表示要检测的 URL 地址,通过执行此 URL ,可以获取后端服务器的运行状态,在正常情况下返回状态码
200 ,返回其他状态码均为异常状态
5.
version 指定心跳检测时的 HTTP 的版本号
6.
server 用来定义多台后端真实服务器 , 不能用于 defaults frontend 部分 , 格式为 : server name
address:port param
7.
name 为后端真实服务器指定一个内部名称,随便这下义一个即可
8.
address :后端真实服务器的 iP 地址或主机名。
9.
port :指定连接请求发往真实服务器时的目标端口,在未设定时,将使用客户端请求时的同一端口
10.
param
:为后端服务器设定的一系列参数,可用参数非常多
11.
check
:表示启用对此后端服务器执行健康检查
12.
inter
:设置健康状态检查的时间间隔,单位为毫秒
13.
rise
:设置人故障状态转换至正常状态需要成功检查的次数,如 rise 2 :表示 2 次检查正确就认为此服务器
可用
14. fall
:设置后端服务器从正常状态转换为不可用状态需要检查的次数,如 fall 3 表示 3 次检查失败就认为此
服务器不可用
15. cookie :为指定的后端服务器设定 cookie 值,此外指定的值将在请求入站时被检查,第一次为此值挑选的后
端服务器将在后续的请求中一直被选中,其目的在于实现持久连接的功能
16.
cookie server1 :表示 web1 serverid server1
17.
weigth :设置后端真实服务器的权重,默认为 1 ,最大值为 256 ,设置为 0 表示不参与负载均衡。
18.
maxconn :设定每个 backend server 进程可接受的最大并发连接数,此选项等同于 linux 命令选项 ”ulimit -n”
19.
backup
:设置后端真实服务器的备份服器,仅仅在后端所有真实服务器均不可用的情况下才启用
listen
常常用于状态页面监控,以及后端 server 检查,是 Fronted backend 的组合体
listen admin_status #Frontend Backend 的组合体 , 监控组的名称,按需自定义名称
bind 0 .0.0.0:8888 # 监听端口
mode http #http 7 层模式
log 127 .0.0.1 local3 err # 错误日志记录
stats refresh 5s # 每隔 5 秒自动刷新监控页面
stats uri /admin?stats # 监控页面的 url 访问路径
stats realm itnihao\ welcome # 监控页面的提示信息
stats auth admin:admin # 监控页面的用户和密码 admin, 可以设置多个用户名
stats auth admin1:admin1 # 监控页面的用户和密码 admin1
stats hide-version # 隐藏统计页面上的 HAproxy 版本信息
stats admin if TRUE # 手工启用 / 禁用 , 后端服务器 (haproxy-1.4.9 以后版本 )
PS: 代理配置段主要有以下几部分配置块 :
1. Frontend: 定义面向客户的监听的地址和端口 , 以及关联的后端的服务器组
2. Backend: 后端服务器组的定义
3. Listen: 组合的方式直接定义 frontend 及相关的 backend
4. Defaults: 默认的配置。其中 listen 配置块可以直接使用 frontend backend 中任意一项参数配置, 比如 acl
法配置以及 server 语法配置参数
三、 ACL
haproxy ACL 用于实现基于请求报文的首部、响应报文的内容或其它的环境状态信息来做出转发决策,这大大增
强了其配置弹性。其配置法则通常分为两步,首先去定义 ACL ,即定义一个测试条件,而后在条件得到满足时执行
某特定的动作,如阻止请求或转发至某特定的后端。定义 ACL 的语法格式如下
acl <aclname> <criterion> [flags] [operator] <value> ...
ACL 名称,区分字符大小写,且其只能包含大小写字母、数字、 -( 连接线 ) _( 下划线 ) .( 点号 ) :( 冒号 ) haproxy
中, acl 可以重名,这可以把多个测试条件定义为一个共同的 acl
:测试标准,即对什么信息发起测试;测试方式可以由 [flflags] 指定的标志进行调整;而有些测试标准也可以需要为
其在之前指定一个操作符 [operator]
[flflags] :目前 haproxy acl 支持的标志位有 3 个:
-i :不区分中模式字符的大小写;
-f :从指定的文件中加载模式;
-- :标志符的强制结束标记,在模式中的字符串像标记符时使用;
acl 测试条件支持的值有以下四类:
整数或整数范围:如 1024:65535 表示从 1024 65535 ;仅支持使用正整数 ( 如果出现类似小数的标识,其为通常为
版本测试 ) ,且支持使用的操作符有 5 个,分别为 eq ge gt le lt
字符串:支持使用 “-i” 以忽略字符大小写,支持使用 “\” 进行转义;如果在模式首部出现了 -i ,可以在其之前使用 “–”
志位;
正则表达式:其机制类同字符串匹配;
IP 地址及网络地址;
同一个 acl 中可以指定多个测试条件,这些测试条件需要由逻辑操作符指定其关系。条件间的组合测试关系有三
种: ”( 默认即为与操作 ) ”( 使用 “||” 操作符 ) 以及 ”( 使用 “!” 操作符 )
四、配置案列
http 服务配置
global
log 127 .0.0.1 local2
chroot /var/empty
pidfile /var/run/haproxy.pid
maxconn 20000
user haproxy
group haproxy
daemon
spread-checks 2
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127 .0.0.0/8
option redispatch
timeout http-request 2s
timeout queue 3s
timeout connect 1s
timeout client 10s
timeout server 2s
timeout http-keep-alive 10s
timeout check 2s
maxconn 18000
frontend http-in
bind *:80
mode http
log global
capture request header Host len 20
capture request header Referer len 60
default_backend static_group
backend static_group
balance roundrobin
option http-keep-alive
http-reuse safe
option httpchk GET /index.html
http-check expect status 200
server staticsrv1 192 .168.13.43:80 check rise 1 maxconn 5000
server staticsrv2 192 .168.13.44:80 check rise 1 maxconn 5000
listen report_stats
bind *:8081
stats enable
stats hide-version
stats uri /hastats
stats realm "pls enter your name"
stats auth admin:admin
stats admin if TRUE
动静分离示例完整示例
global
log 127 .0.0.1 local2
chroot /var/empty
pidfile /var/run/haproxy.pid
maxconn 20000
user haproxy
group haproxy
daemon
spread-checks 2
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127 .0.0.0/8
option redispatch
timeout http-request 2s
timeout queue 3s
timeout connect 1s
timeout client 10s
timeout server 2s
timeout http-keep-alive 10s
timeout check 2s
maxconn 18000
frontend http-in
bind *:80
mode http
log global
capture request header Host len 20
capture request header Referer len 60
acl url_static path_beg -i /static /images /stylesheets
acl url_static path_end -i .jpg .jpeg .gif .png .ico .bmp .css .js
acl url_static path_end -i .html .htm .shtml .shtm .pdf .mp3 .mp4 .rm .rmvb .txt
acl url_static path_end -i .zip .rar .gz .tgz .bz2 .tgz
use_backend static_group if url_static
default_backend dynamic_group
backend static_group
balance roundrobin
option http-keep-alive
http-reuse safe
option httpchk GET /index.html
http-check expect status 200
server staticsrv1 192 .168.13.43:80 check rise 1 maxconn 5000
server staticsrv2 192 .168.13.44:80 check rise 1 maxconn 5000
backend dynamic_group
cookie appsrv insert nocache
balance roundrobin
option http-server-close
option httpchk GET /index
http-check expect status 200
server appsrv1 192 .168.13.43:8080 check rise 1 maxconn 3000 cookie appsrv1
server appsrv2 192 .168.13.44:8080 check rise 1 maxconn 3000 cookie appsrv2
listen report_stats
bind *:8081
stats enable
stats hide-version
stats uri /hastats
stats realm "pls enter your name"
stats auth admin:admin
stats admin if TRUE
负载均衡 MySQL 服务的配置示例
#---------------------------------------------------------------------
# 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
defaults
mode tcp
log global
option httplog
option dontlognull
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 600
listen stats
mode http
bind 0 .0.0.0:1080
stats enable
stats hide-version
stats uri /haproxyadmin?stats
stats realm Haproxy\ Statistics
stats auth admin:admin
stats admin if TRUE
frontend mysql
bind *:3306
mode tcp
log global
default_backend mysqlservers
backend mysqlservers
balance leastconn
server dbsrv1 192 .168.1.111:3306 check port 3306 intval 2 rise 1 fall 2 maxconn 300
server dbsrv2 192 .168.1.112:3306 check port 3306 intval 2 rise 1 fall 2 maxconn 300
五、 Haproxy + keepalived 高可用
vim /etc/sysconfifig/selinux
#SELINUX=enforcing # 注释掉
#SELINUXTYPE=targeted # 注释掉
SELINUX=disabled # 增加
查看端口是否被占用:netstat -ntp|grep 80
动静分离配置:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

择业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值