Haproxy搭建Web群集

Haproxy 是一款性能出色的负载均衡软件,用于搭建 Web 集群具有很多优势。以下是使用 Haproxy 搭建 Web 集群的一般步骤:

1. 安装 Haproxy

在您的服务器上,可以通过相应的包管理工具进行安装。例如,在基于 Debian 或 Ubuntu 的系统上,可以使用以下命令:

sudo apt-get update
sudo apt-get install haproxy

    2. 配置 Haproxy

Haproxy 的主要配置文件通常是 /etc/haproxy/haproxy.cfg 。以下是一个简单的配置示例:

global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice
    maxconn 4096

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000

frontend http_front
    bind *:80
    default_backend http_back

backend http_back
    server web1 192.168.1.101:80 check
    server web2 192.168.1.102:80 check

在上述配置中,frontend 部分定义了前端监听的端口和规则,backend 部分定义了后端的服务器列表和健康检查等。

3. 启动 Haproxy 服务

安装和配置完成后,可以使用以下命令启动 Haproxy 服务:

sudo systemctl start haproxy

4. 检查服务状态

可以使用以下命令检查 Haproxy 服务的状态:

sudo systemctl status haproxy

5. 测试负载均衡效果

您可以通过访问 Haproxy 监听的端口,多次刷新页面,观察请求是否被均衡分发到后端的 Web 服务器上。
例如,如果 Haproxy 监听在 80 端口,您可以在浏览器中输入服务器的 IP 地址,多次刷新查看结果。
请注意,以上只是一个简单的示例,实际的生产环境中可能需要更复杂的配置,例如根据 URL 进行路由、设置会话保持、优化性能等。同时,还需要确保后端的 Web 服务器已正确配置和运行。

[root@localhost ~]# yum -y install pcre-devel zlib-devel gcc*
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz 
[root@localhost ~]# cd nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@localhost nginx-1.12.0]# make && make install
[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost nginx-1.12.0]# cd /usr/local/nginx/html/
[root@localhost html]# echo "test web01" > test.html

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# nginx -t
[root@localhost ~]# nginx		##开启nginx进程
[root@localhost ~]# netstat -anpt | grep nginx

2:编译安装Haproxy

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y install pcre-devel bzip2-devel gcc*
[root@localhost ~]# tar zxvf haproxy-1.5.19.tar.gz 
[root@localhost ~]# cd haproxy-1.5.19/
[root@localhost haproxy-1.5.19]# make TARGET=linux26
[root@localhost haproxy-1.5.19]# make install

注释:
linux22     for Linux 2.2
linux24     for Linux 2.4 and above (default)
linux24e    for Linux 2.4 with support for a working epoll (> 0.21)
linux26     for Linux 2.6 and above
solaris     for Solaris 8 or 10 (others untested)
freebsd     for FreeBSD 5 to 8.0 (others untested)
openbsd     for OpenBSD 3.1 to 4.6 (others untested)
cygwin      for Cygwin
generic     for any other OS.
custom      to manually adjust every setting

3:Haproxy服务器配置

(1)建立haproxy配置文件

[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy
[root@localhost haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/

(2)创建服务脚本

[root@localhost haproxy-1.5.19]# cp examples/haproxy.init /etc/init.d/haproxy
[root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy
[root@localhost ~]# chkconfig --add haproxy

(3)Haproxy配置介绍

global
        log 127.0.0.1   local0               \\配置日志记录,local0为日志设备,默认是系统日志
        log 127.0.0.1   local1 notice        \\日志级别为notice
        #log loghost    local0 info    
        maxconn 4096                         \\最大连接数
        uid 99                               \\用户uid
        gid 99                               \\用户gid
        daemon                               \\以守护进程的方式运行
        #debug                               \\调试模式,输出启动信息到标准输出
        #quiet                               \\安静模式,启动时无输出

defaults
        log     global                       \\使用globle中定义的日志
        mode    http                         \\模式为http
        option  httplog                      \\采用http的格式记录日志
        option  dontlognull                  \\保证HAProxy不记录上级负载均衡发送过来的用于检测状态数据的心跳包
        retries 3                            \\检查节点连接失败的次数,超过3次认为节点不可用
       # redispatch                          \\当负载很高时,自动结束当前队列处理比较久的连接
        maxconn 2000                         \\最大连接数
        contimeout      5000                 \\连接超时时间ms
        clitimeout      50000                \\客户端超时时间ms
        srvtimeout      50000                \\服务器超时时间ms
listen  webcluster 0.0.0.0:80                \\定义群集和监听的端口号
        option  httpchk GET /index.html      \\检查服务器的index.html文件,心跳检测URL设置
        balance roundrobin                   \\负载均衡的调度算法为轮询
        server  inst1 192.168.1.61:80 check inter 2000 fall 3        \\定义在线节点
        server  inst2 192.168.1.62:80 check inter 2000 fall 3   
       
check inter 2000是检测心跳频率(每2000ms检测一次),fall 3是3次失败认为服务器不可用


注释:
haproxy共有八种调度算法
1)balance leastconn   最少连接数
2)balance roundrobin  轮询
3)balance source      根据客户端IP进行哈希的方式
4)static-rr    根据权重
5)uri    根据请求的URI
6)url_param    根据请求的URl参数
7)hdr(name)   根据HTTP请求头来锁定每一次HTTP请求
8)rdp-cookie(name)   根据cookie(name)来锁定并哈希每一次TCP请求


chroot /usr/share/haproxy  \\也就是改变程序执行时所参考的根目录位置,如果有此代码,需要创建此目录

关于日志级别
static Level DEBUG
DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。
static Level INFO
INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程。
static Level WARN
WARN level表明会出现潜在错误的情形。
static Level ERROR
ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。
static Level FATAL
FATAL level指出每个严重的错误事件将会导致应用程序的退出。
另外,还有两个可用的特别的日志记录级别: 
static Level ALL
ALL Level是最低等级的,用于打开所有日志记录。
static Level OFF
OFF Level是最高等级的,用于关闭所有日志记录。

4:启动

[root@localhost haproxy-1.5.19]# /etc/init.d/haproxy start

5:测试web群集

刷新页面进行测试

或使用脚本测试

[root@localhost ~]# for i in $(seq 10); do curl http://192.168.1.60/test.html  ;done

6:Haproxy的日志

编辑/etc/haproxy/haproxy.conf

[root@localhost ~]# vi /etc/haproxy/haproxy.cfg
global
 log 127.0.0.1 local3     

编写haproxy日志文件

[root@localhost ~]# vim  /etc/rsyslog.d/haproxy.conf
$ModLoad imudp
$UDPServerRun 514
local3.*     /var/log/haproxy.log

重启haproxy和rsyslog服务

[root@localhost ~]# systemctl restart rsyslog
[root@localhost ~]# systemctl restart haproxy

访问网站后查看日志

[root@localhost ~]# cat /var/log/haproxy.log

相关推荐

  1. Haproxy web

    2024-07-09 19:48:03       16 阅读
  2. HaproxyWeb

    2024-07-09 19:48:03       12 阅读
  3. HaproxyWeb

    2024-07-09 19:48:03       11 阅读
  4. HaproxyWeb

    2024-07-09 19:48:03       9 阅读
  5. Docker+PXC+Haproxy高可用MySQL

    2024-07-09 19:48:03       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 19:48:03       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 19:48:03       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 19:48:03       4 阅读
  4. Python语言-面向对象

    2024-07-09 19:48:03       7 阅读

热门阅读

  1. 同步的艺术:Conda包依赖的自动同步策略

    2024-07-09 19:48:03       9 阅读
  2. Shell学习——Shell运算符

    2024-07-09 19:48:03       14 阅读
  3. ECharts 饼图:数据可视化的重要工具

    2024-07-09 19:48:03       9 阅读
  4. react之错误边界

    2024-07-09 19:48:03       11 阅读
  5. 代码随想录算法训练营:27/60

    2024-07-09 19:48:03       11 阅读
  6. Websocket

    2024-07-09 19:48:03       9 阅读
  7. 力扣56.合并区间

    2024-07-09 19:48:03       15 阅读
  8. Android多用户基础问题

    2024-07-09 19:48:03       11 阅读
  9. VitePress安装部署

    2024-07-09 19:48:03       11 阅读
  10. GPU加速视频编解码技术:原理、优势与应用

    2024-07-09 19:48:03       14 阅读
  11. Linux 搭建 sftp 服务器详解

    2024-07-09 19:48:03       10 阅读
  12. unity获取键盘按键

    2024-07-09 19:48:03       10 阅读