1. 源码编译安装haproxy 2.x,配置服务启动脚本。

安装

1)、下载安装包

[root@localhost ~]# wget -c https://repo.huaweicloud.com/haproxy/2.4/src/haproxy-2.4.8.tar.gz[root@localhost ~]# ls haproxy-2.4.8.tar.gz
haproxy-2.4.8.tar.gz

2)、安装依赖

[root@localhost ~]# curl -R -O http://www.lua.org/ftp/lua-5.4.3.tar.gz
[root@localhost ~]# yum install gcc gcc-c++ make -y

3)、解压lua

[root@localhost ~]# tar xf lua-5.4.3.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/lua-5.4.3/

4)、编译安装lua

[root@localhost lua-5.4.3]# make linux test
[root@localhost lua-5.4.3]# cp src/lua /usr/bin/lua
[root@localhost lua-5.4.3]# lua -v
Lua 5.4.3  Copyright (C) 1994-2021 Lua.org, PUC-Rio

5)、解压haproxy

[root@localhost ~]# tar xf haproxy-2.4.8.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/haproxy-2.4.8/

6)、安装依赖

[root@localhost haproxy-2.4.8]# yum -y install gcc openssl-devel pcre-devel systemd-devel

7)、编译安装

[root@localhost haproxy-2.4.8]# make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_LUA=1 LUA_INC=/usr/local/src/lua-5.4.3/src/ LUA_LIB=/usr/local/src/lua-5.4.3/src/[root@localhost haproxy-2.4.8]# make install PREFIX=/usr/local/src/haproxy

查看目录结构

[root@localhost haproxy-2.4.8]# tree /usr/local/haproxy/
/usr/local/haproxy/
├── doc
│   └── haproxy
│       ├── 51Degrees-device-detection.txt
│       ├── architecture.txt
│       ├── close-options.txt
│       ├── configuration.txt
│       ├── cookie-options.txt
│       ├── DeviceAtlas-device-detection.txt
│       ├── intro.txt
│       ├── linux-syn-cookies.txt
│       ├── lua.txt
│       ├── management.txt
│       ├── netscaler-client-ip-insertion-protocol.txt
│       ├── network-namespaces.txt
│       ├── peers.txt
│       ├── peers-v2.0.txt
│       ├── proxy-protocol.txt
│       ├── regression-testing.txt
│       ├── seamless_reload.txt
│       ├── SOCKS4.protocol.txt
│       ├── SPOE.txt
│       └── WURFL-device-detection.txt
├── sbin
│   └── haproxy
└── share└── man└── man1└── haproxy.1

8)、设置软链接

[root@localhost haproxy-2.4.8]# ln -sv /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy

验证版本

[root@localhost haproxy-2.4.8]# haproxy -v
HAProxy version 2.4.8-d1f8d41 2021/11/03 - https://haproxy.org/
Status: long-term supported branch - will stop receiving fixes around Q2 2026.
Known bugs: http://www.haproxy.org/bugs/bugs-2.4.8.html
Running on: Linux 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64

配置服务脚本

1)、编写服务脚本

[root@localhost ~]# vim /usr/lib/systemd/system/haproxy.service
[root@localhost ~]# more /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target [Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /usr/local/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID [Install]
WantedBy=multi-user.target

2)、创建配置文件


[root@localhost ~]# more /etc/haproxy/haproxy.cfg
globalmaxconn         10000stats socket    /var/run/haproxy.stat mode 600 level adminlog             127.0.0.1 local0#uid             200#gid             200user            haproxygroup           haproxychroot          /usr/local/haproxydaemondefaultsmode httpoption httploglog globaltimeout client 1mtimeout server 1mtimeout connect 10stimeout http-keep-alive 2mtimeout queue 15stimeout tunnel 4h  # for websocketlisten stats  mode http  bind :9999  stats enable  log globalstats uri /haproxy-status stats auth haadmin:123456  //账号密码listen app1# this is the address and port we'll listen to, the ones to aim the# load generators atbind :80# create a certificate and uncomment this for SSL# bind :8443 ssl crt my-cert.pem alpn h2,http/1.1# Put the server's IP address and port belowserver web1 192.168.159.136:80server web2 192.168.159.138:80

3)、创建用户

[root@localhost ~]# useradd -r -s /sbin/nologin -d /usr/local/haproxy/ haproxy

4)、配置两台web服务,配置静态页面

[root@rs1 ~]# more /var/www/html/index.html
web1 test ip:192.168.159.136[root@rs2 ~]# more /var/www/html/index.html
web2 test2  ip:192.168.159.138

新开一台虚拟机测试:

[root@localhost ~]# for ((i=1;i<=6;i++))
> do
> curl 192.168.159.133
> done
web2 test2  ip:192.168.159.138
web1 test ip:192.168.159.136
web2 test2  ip:192.168.159.138
web1 test ip:192.168.159.136
web2 test2  ip:192.168.159.138
web1 test ip:192.168.159.136

查看haproxy的状态页

账号密码为配置文件中的

账号:haadmin

密码:123456

2. 配置haproxy日志。

1)、 修改配置文件

[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
globallog             127.0.0.1 local2 info
listen app1log global

2)、rsyslog配置

[root@localhost ~]# vim /etc/rsyslog.conf #打开这两行注释
$ModLoad imudp
$UDPServerRun 514#追加
# Save haproxy messages also to haproxy.log
local2.* /var/log/haproxy.log

4)、重启服务

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

5)、查看日志

[root@localhost ~]# tail -f /var/log/haproxy.log
Jan 12 20:55:27 localhost haproxy[1500]: 192.168.159.1:60108 [12/Jan/2022:20:55:27.655] stats stats/<STATS> 0/-1/-1/-1/0 401 263 - - LR-- 2/2/0/0/3 0/0 "GET /haproxy-status HTTP/1.1"
Jan 12 20:55:28 localhost haproxy[1500]: 192.168.159.1:60109 [12/Jan/2022:20:55:27.632] stats stats/<NOSRV> -1/-1/-1/-1/574 400 0 - - CR-- 2/2/0/0/0 0/0 "<BADREQ>"
Jan 12 20:56:25 localhost haproxy[1500]: 192.168.159.1:60130 [12/Jan/2022:20:56:25.386] stats stats/<STATS> 0/0/0/0/0 200 20172 - - LR-- 2/2/0/0/0 0/0 "GET /haproxy-status HTTP/1.1"
Jan 12 20:56:28 localhost haproxy[1500]: 192.168.159.1:60131 [12/Jan/2022:20:56:25.383] stats stats/<NOSRV> -1/-1/-1/-1/2847 400 0 - - CR-- 2/2/0/0/0 0/0 "<BADREQ>"

3. 配置haproxy实现web服务器负载均衡。

1)、对 MySQL 服务实现四层负载
[root@localhost ~]# vim /etc/haproxy/haproxy.cfgfrontend mysql bind :3306 mode tcp #必须指定tcp模式 default_backend mysqlsrvs
backend mysqlsrvs  mode tcp #必须指定tcp模式  balance leastconn  server mysql1 192.168.159.136:3306server mysql2 192.168.159.138:3306[root@localhost ~]# systemctl restart haproxy

2)、 准备两台虚拟机安装和配置mariadb

[root@rs1 ~]# yum install mariadb-server -y
[root@rs2 ~]# yum install mariadb-server -y

 3)、两台虚拟机给MySQL创建用户并授权

mysql> create user 'tom'@'%' identified by '123456';
mysql> grant all  on *.* to tom@'%';

4)、修改server id

[root@rs1 ~]# vim /etc/my.cnf[mysqld]
server_id = 136[root@rs2 ~]# vim /etc/my.cnf[mysqld]
server_id = 138

5、重启mariadb

[root@rs1 ~]# systemctl start mariadb
[root@rs2 ~]# systemctl start mariadb

4. 通过haproxy的acl规则实现智能负载均衡(动静分离)。

基于文件后名缀实现动静分离

1)、设置acl

[root@localhost ~]# vim /etc/haproxy/conf.d/test.cfg
[root@localhost ~]# cat /etc/haproxy/conf.d/test.cfg
frontend openlab_http_port
bind 10.0.0.7:80
mode http
balance roundrobin
log global
option httplog
###################### acl setting ###############################
acl acl_static path_end -i .jpg .jpeg .png .gif .css .js
###################### acl setting ############################### acl acl_static path_end -i .jpg .jpeg .png .gif .css .jsacl dynamic path_end -i .php
###################### acl hosts ################################# use_backend static_pools  if acl_staticuse_backend dynamic_pools if dynamic
###################### backend hosts #############################
backend static_poolsmode httpserver web1 192.168.159.136:80 check
backend dynamic_poolsmode httpserver web2 192.168.159.138:80 check

准备两台虚拟机

一台实现静态,一台实现动态

2)、下载服务

[root@rs1 ~]# yum install httpd -y
[root@rs2 ~]# yum install php -y

3)、动态端配置php

[root@rs2 ~]# vim /var/www/html/test.php
[root@rs2 ~]# cat /var/www/html/test.php
<?phpphpinfo()
?>[root@rs2 ~]# systemctl restart httpd

4)、静态端配置

准备主页和文件

[root@rs1 ~]# cd /var/www/html/
[root@rs1 html]# ls
bjx.jpg  index.html

5)、重启haproxy

[root@localhost ~]# systemctl restart haproxy

测试

静态

动态

web集群之haproxy相关配置相关推荐

  1. 高效多用的群集-Haproxy搭建Web集群

    Haproxy搭建Web集群 Haproxy搭建Web集群 一.Haproxy前言 二.常见的Web集群调度器 三.Haproxy应用分析 四.Haproxy高性能负载均衡主要优点 五.四层与七层负载 ...

  2. 集群(三)——haproxy+nginx搭建web集群

    集群(三)--haproxy+nginx搭建web集群 一.Haproxy 前言 二.Haproxy 简介 1.常见的web集群调度器 2.Haproxy应用分析 3.Haproxy高性能负载均衡的主 ...

  3. Linux相关配置 集群免密码登录配置

    Linux相关配置 集群免密码登录配置 实验目的要求: 1.完成VMware Workstation安装,会应用相关操作 2.掌握虚拟机中Linux CentOS 7.4操作系统安装 3.完成静态网络 ...

  4. SaltStck 搭建Web集群运用示例 (一)

    saltstack是一个非常强大的管理工具,使用saltstack会做到标准化的管理,下面就以一个简单的示例来更加具体的了解一下saltstack的功能特性. 使用saltstack来搭建一个简单的w ...

  5. aproxy配合Nginx搭建Web集群部署实验(图文详解)

    文章目录 一.常见的Web集群调度器 二.Haproxy应用分析 三.Haproxy调度算法原理 四.Haproxy搭建 Web 群集 实验所需安装包 环境配置 1.部署haproxy服务器(192. ...

  6. OpenStack(Queens版)高集群-3.高可用配置(pacemakerhaproxy)

    参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...

  7. WEB集群与各种负载均衡简介 (资源)

    2019独角兽企业重金招聘Python工程师标准>>>                                负载均衡构架图      集群(Cluster):是一组独立的计 ...

  8. 二进制搭建kubernetes多master集群【三、配置k8s master及高可用】

    前面两篇文章已经配置好了etcd和flannel的网络,现在开始配置k8s master集群. etcd集群配置参考:二进制搭建kubernetes多master集群[一.使用TLS证书搭建etcd集 ...

  9. 一把王者的时间就写完了一个nginx的web集群项目

    构建一个基于nginx的web集群项目 一.什么是负载均衡? 二.为什么需要负载均衡? 1.编译安装nginx 2.解决软件的依赖关系,需要安装的软件包 3.新建luogan用户和组 4.下载ngin ...

  10. RHCS+Conga+GFS+cLVM共享存储的高可用性web集群

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sohudrgon.blog.51cto.com/3088108/1599984 ...

最新文章

  1. hdu2236 无题II 最大匹配 + 二分搜索
  2. 人工智能中常见的误区
  3. 神经网络设计神经网络
  4. 库克工资是普通员工201倍,纳德拉年薪三个亿,大公司贫富差距榜出炉
  5. SQL Server 堆表行存储大小(Record Size)
  6. 四种python 单继承的实现方式
  7. C语言 socket listen()函数(socket()函数创建的socket(套接字描述符)默认是一个主动类型的,listen函数将socket变为被动类型的,等待客户的连接请求)
  8. word文档图标变成白纸_挽救你的文件 修复变成乱码的Word文档
  9. [Leedcode][JAVA][第16题][最接近的三数之和][双指针][数组]
  10. 期刊投稿状态_追踪期刊在线系统投稿状态(十七)
  11. 分享几个你可能不知道的交互式Git 命令
  12. Rust───crates 国内镜像源配置
  13. Layout天线效应的产生原因以及解决方法
  14. 惠普笔记本和台式机专业GhostXP_SP3装机系统稳定版 V2011.07
  15. 河南网上交新房契税打印带章完税证明教程
  16. 使用git push没有报错,但是远程仓库没有更新的问题
  17. Web 的全栈工程师必修课 - 关于 MVC 框架
  18. nokia 6300手机QQ4.0下载,设置空间支持jar下载
  19. Dell 730xd 加外部硬件 风扇变快
  20. 用python画python!传说中的蟒蛇绘制代码原来在这...

热门文章

  1. Python Cheat Sheet 中文版
  2. SpringCloud——服务调用
  3. 设计大师Donald Norman和Bill Buxton签书会在南京举行
  4. 《我也能做CTO之程序员职业规划》之十:程序员职业规划就像软件工程
  5. 4.2 tensorflow2实现多总体位置参数趋势性检验——python实战
  6. Java爬虫Crawler
  7. python分组和任务分配_python-使用Celery在多个队列中公平分配任务
  8. android 远程同步,在Android上同步SQL数据库与REST远程服务器的最佳实践
  9. 力扣-274 H 指数
  10. jquery详细基础教程