web集群之haproxy相关配置
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服务器负载均衡。
[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相关配置相关推荐
- 高效多用的群集-Haproxy搭建Web集群
Haproxy搭建Web集群 Haproxy搭建Web集群 一.Haproxy前言 二.常见的Web集群调度器 三.Haproxy应用分析 四.Haproxy高性能负载均衡主要优点 五.四层与七层负载 ...
- 集群(三)——haproxy+nginx搭建web集群
集群(三)--haproxy+nginx搭建web集群 一.Haproxy 前言 二.Haproxy 简介 1.常见的web集群调度器 2.Haproxy应用分析 3.Haproxy高性能负载均衡的主 ...
- Linux相关配置 集群免密码登录配置
Linux相关配置 集群免密码登录配置 实验目的要求: 1.完成VMware Workstation安装,会应用相关操作 2.掌握虚拟机中Linux CentOS 7.4操作系统安装 3.完成静态网络 ...
- SaltStck 搭建Web集群运用示例 (一)
saltstack是一个非常强大的管理工具,使用saltstack会做到标准化的管理,下面就以一个简单的示例来更加具体的了解一下saltstack的功能特性. 使用saltstack来搭建一个简单的w ...
- aproxy配合Nginx搭建Web集群部署实验(图文详解)
文章目录 一.常见的Web集群调度器 二.Haproxy应用分析 三.Haproxy调度算法原理 四.Haproxy搭建 Web 群集 实验所需安装包 环境配置 1.部署haproxy服务器(192. ...
- OpenStack(Queens版)高集群-3.高可用配置(pacemakerhaproxy)
参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...
- WEB集群与各种负载均衡简介 (资源)
2019独角兽企业重金招聘Python工程师标准>>> 负载均衡构架图 集群(Cluster):是一组独立的计 ...
- 二进制搭建kubernetes多master集群【三、配置k8s master及高可用】
前面两篇文章已经配置好了etcd和flannel的网络,现在开始配置k8s master集群. etcd集群配置参考:二进制搭建kubernetes多master集群[一.使用TLS证书搭建etcd集 ...
- 一把王者的时间就写完了一个nginx的web集群项目
构建一个基于nginx的web集群项目 一.什么是负载均衡? 二.为什么需要负载均衡? 1.编译安装nginx 2.解决软件的依赖关系,需要安装的软件包 3.新建luogan用户和组 4.下载ngin ...
- RHCS+Conga+GFS+cLVM共享存储的高可用性web集群
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sohudrgon.blog.51cto.com/3088108/1599984 ...
最新文章
- hdu2236 无题II 最大匹配 + 二分搜索
- 人工智能中常见的误区
- 神经网络设计神经网络
- 库克工资是普通员工201倍,纳德拉年薪三个亿,大公司贫富差距榜出炉
- SQL Server 堆表行存储大小(Record Size)
- 四种python 单继承的实现方式
- C语言 socket listen()函数(socket()函数创建的socket(套接字描述符)默认是一个主动类型的,listen函数将socket变为被动类型的,等待客户的连接请求)
- word文档图标变成白纸_挽救你的文件 修复变成乱码的Word文档
- [Leedcode][JAVA][第16题][最接近的三数之和][双指针][数组]
- 期刊投稿状态_追踪期刊在线系统投稿状态(十七)
- 分享几个你可能不知道的交互式Git 命令
- Rust───crates 国内镜像源配置
- Layout天线效应的产生原因以及解决方法
- 惠普笔记本和台式机专业GhostXP_SP3装机系统稳定版 V2011.07
- 河南网上交新房契税打印带章完税证明教程
- 使用git push没有报错,但是远程仓库没有更新的问题
- Web 的全栈工程师必修课 - 关于 MVC 框架
- nokia 6300手机QQ4.0下载,设置空间支持jar下载
- Dell 730xd 加外部硬件 风扇变快
- 用python画python!传说中的蟒蛇绘制代码原来在这...