简介
什么是HAProxy
HAProxy是一个开源的、高性能的基于TCP和HTTP应用代理的高可用的负载均衡服务软件。
HAProxy支持双机热备、高可用、负载均衡、虚拟主机、基于TCP和HTTP的应用代理、图形页面查看信息等功能。
HAProxy配置简单、维护方便,而且拥有很好的节点健康检查功能(相当于keepalived健康检查)。
HAProxy代理的后端服务器出现故障时,HAProxy会自动将该故障服务器移除,当故障的服务器恢复后,HAProxy还会自动将服务器添加进来提供服务。
HAProxy支持基于lua实现功能扩展,HAProxy要求lua最低版本为5.3。
HAProxy在1.3版本以后引入了frontend、backend的功能,frontend(acl规则匹配)可以让运维人员根据任意HTTP请求头内容规则匹配,然后将请求定向发到相关的backend(已定义好的server pools)。
HAProxy特点
- HAProxy特别适用于那些高负载、访问量大,又需要会话保持及七层应用代理的业务应用。
- HAProxy运行在普通的服务器硬件上,几乎不需要任何优化就能支持数以万计的并发连接。
- HAProxy运行模式使得它可以简单、轻松、安全的整合到各种已有的网站架构中。
- HAProxy的代理模式可以使所有应用服务器不会暴漏到公共网络,后方服务器不需要公网地址。
HAProxy架构
逻辑结构-单机
逻辑结构-主备
工作流程
官网
HAProxy首页:https://www.haproxy.org/
HAProxy下载:https://www.haproxy.org/download/
HAProxy文档:http://docs.haproxy.org/
安装&管理
基础
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
调整内核参数转发功能
cat >> /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65535
kernel.msgmax = 65535
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
EOF
sysctl -p
安装
源码安装
- 解决依赖
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
yum -y install gcc openssl-devel pcre-devel systemd-devel readline-devel
- 下载安装包
#下载lua
wget https://www.lua.org/ftp/lua-5.4.6.tar.gz
#下载HAProxy
wget https://www.haproxy.org/download/2.9/src/haproxy-2.9.7.tar.gz
- 解压安装包
#解压lua
tar -zxvf lua-5.4.6.tar.gz -C /usr/local/
#解压haproxy
tar -zxvf haproxy-2.9.7.tar.gz -C /usr/local/
- 安装软件
#安装lua
cd /usr/local/lua-5.4.6/
make linux
make install
#安装haproxy
cd /usr/local/haproxy-2.9.7/
make TARGET=linux310 ARCH=x86_64 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
- 编辑配置
mkdir -p /usr/local/haproxy/conf
cat > /usr/local/haproxy/conf/haproxy.cfg << EOF
global
log 127.0.0.1 local0
maxconn 1000
daemon
defaults
log global
mode http
option httplog
option dontlognull
retries 3
timeout connect 5000
timeout client 50000
timeout server 50000
listen admin_stats
bind 0.0.0.0:1080
mode http
option httplog
stats enable
stats refresh 30s
stats uri /stats
EOF
yum安装
- 列出可用软件
yum list haproxy
- 搜索软件包
yum provides haproxy
- 安装haproxy
yum -y install haproxy
Docker安装
- 创建目录
mkdir -p /data/haproxy/conf
cat > /data/haproxy/conf/haproxy.cfg << EOF
global
log 127.0.0.1 local0
maxconn 1000
daemon
defaults
log global
mode http
option httplog
option dontlognull
retries 3
timeout connect 5000
timeout client 50000
timeout server 50000
listen admin_stats
bind 0.0.0.0:1080
mode http
option httplog
stats enable
stats refresh 30s
stats uri /stats
EOF
- 下载镜像
docker pull haproxy
- 部署服务
docker run -p 1080:1080 -p 13307:13307 \
-d --name haproxy \
-v /data/haproxy/conf/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg \
--privileged=true \
haproxy
管理
源码管理
- 启动haproxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
- 查看进程
ps -ef | grep haproxy
- 查看端口
lsof -i :1080
- 查看版本
/usr/local/haproxy/sbin/haproxy -v
- 关闭haproxy
haproxy_pid=$(ps -ef | grep haproxy | grep -v $$ | awk -F ' ' '{print $2}')
kill -9 $haproxy_pid
yum管理
- 启动haproxy
systemctl start haproxy
- 开机自启
systemctl enable haproxy
- 查看状态
systemctl status haproxy
- 查看端口
lsof -i :1080
- 查看版本
haproxy -v
- 关闭haproxy
systemctl stop haproxy
Docker管理
- 启动haproxy
docker start haproxy
- 关闭haproxy
docker stop haproxy
- 重启haproxy
docker restart haproxy
配置&应用
配置
默认配置文件
- HA-Proxy version 1.5.18
- HA-Proxy version 2.8.9
配置文件详解
- 配置文件的五大部分
- global:全局配置部分,用于设置进程管理、日志记录、最大连接数等全局参数。
- defaults:默认配置部分,用于为所有代理设置默认参数,如超时时间、模式等。
- frontend:前端部分,定义了如何接收客户端请求,包括绑定端口、请求日志、使用ACL规则等。
- backend:后端部分,定义了后端服务器的列表和健康检查等。
- listen:监听部分,用于定义特殊的代理配置,如统计页面。
- 配置文件的八种算法
- balance roundrobin:轮询,软负载均衡基本都具备这种算法
- balance static-rr:根据权重,建议使用
- balance leastconn:最少连接者先处理,建议使用
- balance source:根据请求源IP,建议使用
- balance uri:根据请求的URI
- balance url_param:根据请求的URl参数’balance url_param’ requires an URL parameter name
- balance hdr(name):根据HTTP请求头来锁定每一次HTTP请求
- balance rdp-cookie(name):根据据cookie(name)来锁定并哈希每一次TCP请求
- 配置文件的日志级别
- debug:用于调试目的,输出最详细的日志信息。
- info:输出普通的信息性消息,例如启动和关闭通知。
- notice:输出一些重要的消息,但不如警告级别严重。
- warning:输出警告消息,表示可能的问题或配置错误。
- error:输出错误消息,表示发生了错误,但服务仍在运行。
- critical:输出严重错误消息,表示服务可能无法继续运行。
- alert:输出警报消息,表示需要立即采取措施。
- emergency:输出紧急情况消息,表示系统已经无法使用。
- 配置文件的六种时间
- us:微秒。1us = 1/1000000s
- ms:毫秒。1ms = 1/1000s。默认值
- s:秒。1s = 1000ms
- m:分钟。1m = 60s = 6000ms
- h:小时。1h = 60m = 3600s = 3600000ms
- d:天。1d = 24h = 1440m = 86400s = 86400000ms
- global配置
global
#定义haproxy日志输出设置
log 127.0.0.1:514 local0 notice
#定义haproxy日志级别
log /usr/local/haproxy/logs local0 notice
#定义最大连接数
maxconn 20480
#chroot运行路径
chroot /usr/local/haproxy
#haproxy进程PID文件
pidfile /var/run/haproxy.pid
#运行haproxy用户,可用uid代替
user haproxy
#运行haproxy用户组,可用gid代替
group haproxy
#以后台形式运行haproxy
daemon
- defaults配置
defaults
#所处理的类别(7层代理http,4层代理tcp)
mode http
#引入global定义的日志格式
log global
#不记录健康检查日志信息
option dontlognull
#每次请求完毕后主动关闭http通道,haproxy不支持keep-alive模式
option httpclose
#日志类别为http日志格式
option httplog
#如果后端服务器需要获取客户端的真是ip,需要配置的参数,可以从http header中获取客户端的ip
option forwardfor
option redispatch
#设置默认负载均衡方式,轮询方式
balance roundrobin
#默认连接超时时间
timeout connect 10s
#默认客户端超时时间
timeout client 10s
#默认服务器超时时间
timeout server 10s
#设置超时检查超时时间
timeout check 10s
#最大连接数
maxconn 60000
#3次连接失败就认为服务器不可用,也可以通过后面设置
retries 3
- frontend配置
frontend http_80_in
#设置侦听端口,即haproxy提供的web服务端口,和lvs的vip类似
bind 0.0.0.0:80
mode http
log global
option httpclose
option httplog
option forwardfor
#设置请求默认转发的后端服务池
default_backend webserver
- backend配置
#定义webserver服务器组
backend webserver
mode http
option redispath
option abortonclose
#负载均衡的方式,源哈希算法
balancer source
#允许插入serverid到cookie中,serverid后面可以定义
cookie SERVERID
#表示基于http协议来做健康状况检查,只有返回状态码为2xx或3xx的才认为是健康的,其余所有状态码都认为不健康。不设置该选项时,默认采用tcp做健康检查,只要能建立tcp就表示健康。
option httpdchk GET /test.html
server web1 192.168.92.100:80 cookie 2 weight 3 check inter 2000 rise 2 fall 3 maconn 8
- listen配置
#frontend和backend的组合体,监控组的名称,按需自定义名称
listen admin_stats
#侦听端口
bind 0.0.0.0:8189
#开启监控
stats enable
mode http
log global
#监控页面的url访问路径
stats uri /haproxy_stats
#监控页面的提示信息
stats realm Haproxy\ Statistics
#监控页面的用户和密码
stats auth admin:admin
#隐藏统计页面上的haproxy版本信息
stats hide-version
#手工启用/禁用,后端服务器haproxy
stats admin if TRUE
#每个30秒自动刷新监控页面
stats refresh 30s
应用
简单负载均衡
-
主机规划
| 主机名称 | 主机地址 | 主机用户 |
| — | — | — |
| haporxy | 192.168.108.131 | HAproxy |
| docker-01 | 192.168.108.133 | Nginx-Web |
| docker-02 | 192.168.108.134 | Nginx-Web | -
docker-01
#准备数据
mkdir -p /data/nginx-0{1,2,3}/html/
echo "主机:192.168.108.133;端口:81;信息:Nginx-web-01" > /data/nginx-01/html/index.html
echo "主机:192.168.108.133;端口:82;信息:Nginx-web-02" > /data/nginx-02/html/index.html
echo "主机:192.168.108.133;端口:83;信息:Nginx-web-03" > /data/nginx-03/html/index.html
#部署服务
docker run -it -d --name nginx-web-01 \
-p 81:80 \
--restart always \
-v /data/nginx-01/html:/usr/share/nginx/html \
nginx:latest
docker run -it -d --name nginx-web-02 \
-p 82:80 \
--restart always \
-v /data/nginx-02/html:/usr/share/nginx/html \
nginx:latest
docker run -it -d --name nginx-web-03 \
-p 83:80 \
--restart always \
-v /data/nginx-03/html:/usr/share/nginx/html \
nginx:latest
- docker-02
#准备数据
mkdir -p /data/nginx-0{1,2,3}/html/
echo "主机:192.168.108.134;端口:81;信息:Nginx-web-01" > /data/nginx-01/html/index.html
echo "主机:192.168.108.134;端口:82;信息:Nginx-web-02" > /data/nginx-02/html/index.html
echo "主机:192.168.108.134;端口:83;信息:Nginx-web-03" > /data/nginx-03/html/index.html
#部署服务
docker run -it -d --name nginx-web-01 \
-p 81:80 \
--restart always \
-v /data/nginx-01/html:/usr/share/nginx/html \
nginx:latest
docker run -it -d --name nginx-web-02 \
-p 82:80 \
--restart always \
-v /data/nginx-02/html:/usr/share/nginx/html \
nginx:latest
docker run -it -d --name nginx-web-03 \
-p 83:80 \
--restart always \
-v /data/nginx-03/html:/usr/share/nginx/html \
nginx:latest
- HAProxy
#配置HAProxy
cat > /usr/local/haproxy/conf/haproxy.cfg << EOF
global
#定义haproxy日志级别
log /usr/local/haproxy/logs local0 notice
#定义最大连接数
maxconn 20480
#chroot运行路径
chroot /usr/local/haproxy
#haproxy进程PID文件
pidfile /usr/local/haproxy/haproxy.pid
#以后台形式运行haproxy
daemon
defaults
#所处理的类别(7层代理http,4层代理tcp)
mode http
#引入global定义的日志格式
log global
#不记录健康检查日志信息
option dontlognull
#每次请求完毕后主动关闭http通道,haproxy不支持keep-alive模式
option httpclose
#日志类别为http日志格式
option httplog
#如果后端服务器需要获取客户端的真是ip,需要配置的参数,可以从http header中获取客户端的ip
option forwardfor
option redispatch
#设置默认负载均衡方式,轮询方式
balance roundrobin
#默认连接超时时间
timeout connect 10s
#默认客户端超时时间
timeout client 10s
#默认服务器超时时间
timeout server 10s
#设置超时检查超时时间
timeout check 10s
#最大连接数
maxconn 60000
#3次连接失败就认为服务器不可用,也可以通过后面设置
retries 3
frontend nginx-web
#设置侦听端口,即haproxy提供的web服务端口,和lvs的vip类似
bind 192.168.108.131:80
mode http
log global
option httpclose
option httplog
option forwardfor
#设置请求默认转发的后端服务池
default_backend nginx-web-server
#定义webserver服务器组
backend nginx-web-server
mode http
option abortonclose
#允许插入serverid到cookie中,serverid后面可以定义
cookie SERVERID
server nginx-web-01 192.168.108.134:81 check
server nginx-web-02 192.168.108.134:82 check
server nginx-web-03 192.168.108.134:83 check
server nginx-web-04 192.168.108.133:81 check
server nginx-web-05 192.168.108.133:82 check
server nginx-web-06 192.168.108.133:83 check
#frontend和backend的组合体,监控组的名称,按需自定义名称
listen admin_stats
#侦听端口
bind 0.0.0.0:8001
#开启监控
stats enable
mode http
log global
#监控页面的url访问路径
stats uri /haproxy_stats
#监控页面的提示信息
stats realm Haproxy\ Statistics
#监控页面的用户和密码
stats auth admin:admin
#隐藏统计页面上的haproxy版本信息
stats hide-version
#手工启用/禁用,后端服务器haproxy
stats admin if TRUE
#每个30秒自动刷新监控页面
stats refresh 30s
EOF
#重启HAProxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
- 访问测试
- 浏览器访问:192.168.108.131:80,即可浏览Nginx;
- 浏览器访问:192.168.108.131:8001,即可访问HAProxy监控页面;
- Nginx-web关机后,平台扔可以访问;
HAProxy+Keepalived
-
主机规划
| 主机名称 | 主机地址 | 主机用户 |
| — | — | — |
| haporxy-01 | 192.168.108.131 | HAproxy+Keepalived |
| haporxy-02 | 192.168.108.132 | HAproxy+Keepalived |
| docker-01 | 192.168.108.133 | Nginx-Web |
| docker-02 | 192.168.108.134 | Nginx-Web | -
docker-01
#准备数据
mkdir -p /data/nginx-0{1,2,3}/html/
echo "主机:192.168.108.133;端口:81;信息:Nginx-web-01" > /data/nginx-01/html/index.html
echo "主机:192.168.108.133;端口:82;信息:Nginx-web-02" > /data/nginx-02/html/index.html
echo "主机:192.168.108.133;端口:83;信息:Nginx-web-03" > /data/nginx-03/html/index.html
#部署服务
docker run -it -d --name nginx-web-01 \
-p 81:80 \
--restart always \
-v /data/nginx-01/html:/usr/share/nginx/html \
nginx:latest
docker run -it -d --name nginx-web-02 \
-p 82:80 \
--restart always \
-v /data/nginx-02/html:/usr/share/nginx/html \
nginx:latest
docker run -it -d --name nginx-web-03 \
-p 83:80 \
--restart always \
-v /data/nginx-03/html:/usr/share/nginx/html \
nginx:latest
- docker-02
#准备数据
mkdir -p /data/nginx-0{1,2,3}/html/
echo "主机:192.168.108.134;端口:81;信息:Nginx-web-01" > /data/nginx-01/html/index.html
echo "主机:192.168.108.134;端口:82;信息:Nginx-web-02" > /data/nginx-02/html/index.html
echo "主机:192.168.108.134;端口:83;信息:Nginx-web-03" > /data/nginx-03/html/index.html
#部署服务
docker run -it -d --name nginx-web-01 \
-p 81:80 \
--restart always \
-v /data/nginx-01/html:/usr/share/nginx/html \
nginx:latest
docker run -it -d --name nginx-web-02 \
-p 82:80 \
--restart always \
-v /data/nginx-02/html:/usr/share/nginx/html \
nginx:latest
docker run -it -d --name nginx-web-03 \
-p 83:80 \
--restart always \
-v /data/nginx-03/html:/usr/share/nginx/html \
nginx:latest
- haporxy-01
#配置HAProxy
cat > /usr/local/haproxy/conf/haproxy.cfg << EOF
global
#定义haproxy日志级别
log /usr/local/haproxy/logs local0 notice
#定义最大连接数
maxconn 20480
#chroot运行路径
chroot /usr/local/haproxy
#haproxy进程PID文件
pidfile /usr/local/haproxy/haproxy.pid
#以后台形式运行haproxy
daemon
defaults
#所处理的类别(7层代理http,4层代理tcp)
mode http
#引入global定义的日志格式
log global
#不记录健康检查日志信息
option dontlognull
#每次请求完毕后主动关闭http通道,haproxy不支持keep-alive模式
option httpclose
#日志类别为http日志格式
option httplog
#如果后端服务器需要获取客户端的真是ip,需要配置的参数,可以从http header中获取客户端的ip
option forwardfor
option redispatch
#设置默认负载均衡方式,轮询方式
balance roundrobin
#默认连接超时时间
timeout connect 10s
#默认客户端超时时间
timeout client 10s
#默认服务器超时时间
timeout server 10s
#设置超时检查超时时间
timeout check 10s
#最大连接数
maxconn 60000
#3次连接失败就认为服务器不可用,也可以通过后面设置
retries 3
frontend nginx-web
#设置侦听端口,即haproxy提供的web服务端口,和lvs的vip类似
bind 0.0.0.0:80
mode http
log global
option httpclose
option httplog
option forwardfor
#设置请求默认转发的后端服务池
default_backend nginx-web-server
#定义webserver服务器组
backend nginx-web-server
mode http
option abortonclose
#允许插入serverid到cookie中,serverid后面可以定义
cookie SERVERID
server nginx-web-01 192.168.108.134:81 check
server nginx-web-02 192.168.108.134:82 check
server nginx-web-03 192.168.108.134:83 check
server nginx-web-04 192.168.108.133:81 check
server nginx-web-05 192.168.108.133:82 check
server nginx-web-06 192.168.108.133:83 check
#frontend和backend的组合体,监控组的名称,按需自定义名称
listen admin_stats
#侦听端口
bind 0.0.0.0:8001
#开启监控
stats enable
mode http
log global
#监控页面的url访问路径
stats uri /haproxy_stats
#监控页面的提示信息
stats realm Haproxy\ Statistics
#监控页面的用户和密码
stats auth admin:admin
#隐藏统计页面上的haproxy版本信息
stats hide-version
#手工启用/禁用,后端服务器haproxy
stats admin if TRUE
#每个30秒自动刷新监控页面
stats refresh 30s
EOF
#配置Keepalived
cat >> /usr/local/keepalived/etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived
global_defs {
router_id haproxy_keepalived
}
vrrp_instance VI_1 {
state MASTER
interface ens32
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.108.130
}
}
EOF
#启动HAProxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
#启动Keepalived
/usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf
- haporxy-02
#配置HAProxy
cat > /usr/local/haproxy/conf/haproxy.cfg << EOF
global
#定义haproxy日志级别
log /usr/local/haproxy/logs local0 notice
#定义最大连接数
maxconn 20480
#chroot运行路径
chroot /usr/local/haproxy
#haproxy进程PID文件
pidfile /usr/local/haproxy/haproxy.pid
#以后台形式运行haproxy
daemon
defaults
#所处理的类别(7层代理http,4层代理tcp)
mode http
#引入global定义的日志格式
log global
#不记录健康检查日志信息
option dontlognull
#每次请求完毕后主动关闭http通道,haproxy不支持keep-alive模式
option httpclose
#日志类别为http日志格式
option httplog
#如果后端服务器需要获取客户端的真是ip,需要配置的参数,可以从http header中获取客户端的ip
option forwardfor
option redispatch
#设置默认负载均衡方式,轮询方式
balance roundrobin
#默认连接超时时间
timeout connect 10s
#默认客户端超时时间
timeout client 10s
#默认服务器超时时间
timeout server 10s
#设置超时检查超时时间
timeout check 10s
#最大连接数
maxconn 60000
#3次连接失败就认为服务器不可用,也可以通过后面设置
retries 3
frontend nginx-web
#设置侦听端口,即haproxy提供的web服务端口,和lvs的vip类似
bind 0.0.0.0:80
mode http
log global
option httpclose
option httplog
option forwardfor
#设置请求默认转发的后端服务池
default_backend nginx-web-server
#定义webserver服务器组
backend nginx-web-server
mode http
option abortonclose
#允许插入serverid到cookie中,serverid后面可以定义
cookie SERVERID
server nginx-web-01 192.168.108.134:81 check
server nginx-web-02 192.168.108.134:82 check
server nginx-web-03 192.168.108.134:83 check
server nginx-web-04 192.168.108.133:81 check
server nginx-web-05 192.168.108.133:82 check
server nginx-web-06 192.168.108.133:83 check
#frontend和backend的组合体,监控组的名称,按需自定义名称
listen admin_stats
#侦听端口
bind 0.0.0.0:8001
#开启监控
stats enable
mode http
log global
#监控页面的url访问路径
stats uri /haproxy_stats
#监控页面的提示信息
stats realm Haproxy\ Statistics
#监控页面的用户和密码
stats auth admin:admin
#隐藏统计页面上的haproxy版本信息
stats hide-version
#手工启用/禁用,后端服务器haproxy
stats admin if TRUE
#每个30秒自动刷新监控页面
stats refresh 30s
EOF
#配置Keepalived
cat >> /usr/local/keepalived/etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived
global_defs {
router_id haproxy_keepalived
}
vrrp_instance VI_1 {
state BACKUP
interface ens32
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.108.130
}
}
EOF
#启动HAProxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
#启动Keepalived
/usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf
MySQL负载均衡配置
global
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