高可用服务-HAProxy

简介

什么是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特点

  1. HAProxy特别适用于那些高负载、访问量大,又需要会话保持及七层应用代理的业务应用。
  2. HAProxy运行在普通的服务器硬件上,几乎不需要任何优化就能支持数以万计的并发连接。
  3. HAProxy运行模式使得它可以简单、轻松、安全的整合到各种已有的网站架构中。
  4. HAProxy的代理模式可以使所有应用服务器不会暴漏到公共网络,后方服务器不需要公网地址。

HAProxy架构

逻辑结构-单机

image.png

逻辑结构-主备

image.png

工作流程

官网

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

haproxy.cfg.txt

  • HA-Proxy version 2.8.9

haproxy.cfg.txt

配置文件详解

  • 配置文件的五大部分
  1. global:全局配置部分,用于设置进程管理、日志记录、最大连接数等全局参数。
  2. defaults:默认配置部分,用于为所有代理设置默认参数,如超时时间、模式等。
  3. frontend:前端部分,定义了如何接收客户端请求,包括绑定端口、请求日志、使用ACL规则等。
  4. backend:后端部分,定义了后端服务器的列表和健康检查等。
  5. listen:监听部分,用于定义特殊的代理配置,如统计页面。
  • 配置文件的八种算法
  1. balance roundrobin:轮询,软负载均衡基本都具备这种算法
  2. balance static-rr:根据权重,建议使用
  3. balance leastconn:最少连接者先处理,建议使用
  4. balance source:根据请求源IP,建议使用
  5. balance uri:根据请求的URI
  6. balance url_param:根据请求的URl参数’balance url_param’ requires an URL parameter name
  7. balance hdr(name):根据HTTP请求头来锁定每一次HTTP请求
  8. balance rdp-cookie(name):根据据cookie(name)来锁定并哈希每一次TCP请求
  • 配置文件的日志级别
  1. debug:用于调试目的,输出最详细的日志信息。
  2. info:输出普通的信息性消息,例如启动和关闭通知。
  3. notice:输出一些重要的消息,但不如警告级别严重。
  4. warning:输出警告消息,表示可能的问题或配置错误。
  5. error:输出错误消息,表示发生了错误,但服务仍在运行。
  6. critical:输出严重错误消息,表示服务可能无法继续运行。
  7. alert:输出警报消息,表示需要立即采取措施。
  8. emergency:输出紧急情况消息,表示系统已经无法使用。
  • 配置文件的六种时间
  1. us:微秒。1us = 1/1000000s
  2. ms:毫秒。1ms = 1/1000s。默认值
  3. s:秒。1s = 1000ms
  4. m:分钟。1m = 60s = 6000ms
  5. h:小时。1h = 60m = 3600s = 3600000ms
  6. 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
  • 访问测试
  1. 浏览器访问:192.168.108.131:80,即可浏览Nginx;
  2. 浏览器访问:192.168.108.131:8001,即可访问HAProxy监控页面;
  3. 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
  • 29
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值