集群基础3——haproxy负载均衡apache

2023-10-27

一、环境说明

  • 使用haproxy对apache进行负载均衡。
主机IP 角色 安装服务
192.168.161.131 后端服务器1 httpd,80端口
192.168.161.132 后端服务器2 httpd,8080端口
192.168.161.133 调度服务器 haproxy,8189端口

二、安装配置httpd

  • 参考文章,需要对两台后端服务器安装httpd服务,并配置https。

1.使用http访问。
在这里插入图片描述

2.使用https访问。

在这里插入图片描述

三、安装配置haproxy

1.安装依赖包,创建系统用户。

//安装依赖包。
yum -y install make gcc pcre-devel bzip2-devel openssl-devel systemd-devel

//创建用户。
useradd -r -M -s /sbin/nologin haproxy

2.解压安装包,编译安装。

tar zxf haproxy-2.9-dev1.tar.gz 
cd haproxy-2.9-dev1

//编译安装。
make -j $(grep 'processor' /proc/cpuinfo |wc -l)  \
TARGET=linux-glibc  \
USE_OPENSSL=1  \
USE_ZLIB=1  \
USE_PCRE=1  \
USE_SYSTEMD=1

make install PREFIX=/usr/local/haproxy

3.配置各个负载的内核参数。

echo 'net.ipv4.ip_nonlocal_bind = 1' >>  /etc/sysctl.conf
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf

//重新读取。
sysctl -p

4.提供配置文件。

mkdir /etc/haproxy

//添加以下内容。
cat > /etc/haproxy/haproxy.cfg <<EOF
#--------------全局配置----------------
global
    log 127.0.0.1 local0  info
    #log loghost local0 info
    maxconn 20480
#chroot /usr/local/haproxy
    pidfile /var/run/haproxy.pid
    #maxconn 4000
    user haproxy
    group haproxy
    daemon
#---------------------------------------------------------------------
#common defaults that all the 'listen' and 'backend' sections will
#use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode http
    log global
    option dontlognull
    option httpclose
    option httplog
    #option forwardfor
    option redispatch
    balance roundrobin
    timeout connect 10s
    timeout client 10s
    timeout server 10s
    timeout check 10s
    maxconn 60000
    retries 3
#--------------统计页面配置------------------
listen admin_stats
    bind 0.0.0.0:8189
    stats enable
    mode http
    log global
    stats uri /haproxy_stats
    stats realm Haproxy\ Statistics
    stats auth admin:admin
    #stats hide-version
    stats admin if TRUE
    stats refresh 30s
#---------------web设置-----------------------
listen webcluster
    bind 0.0.0.0:80
    mode http
    #option httpchk GET /index.html
    log global
    maxconn 3000
    balance roundrobin
    cookie SESSION_COOKIE insert indirect nocache
    server web01 172.16.103.130:80 check inter 2000 fall 5
    #server web01 192.168.80.102:80 cookie web01 check inter 2000 fall 5
EOF


//修改配置文件。
[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 
#    cookie SESSION_COOKIE insert indirect nocache         //将其注释掉
    server web01 192.168.161.131:80 check inter 2000 fall 5  //添加后端服务器ip,注意这里的80端口就是httpd的监听端口。
    server web02 192.168.161.132:80 check inter 2000 fall 5

5.设置系统服务。

cat > /usr/lib/systemd/system/haproxy.service <<EOF
[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 /var/run/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target
EOF

//重新加载。
systemctl daemon-reload

6.启用日志。

vim /etc/rsyslog.conf 
local0.*       /var/log/haproxy.log    //添加此行

//重启服务。
systemctl restart rsyslog

7.启动haproxy。

systemctl start haproxy

在这里插入图片描述

四、验证http负载均衡

1.使用harproxy的IP访问网页,访问一次显示RS1,刷新一下显示RS2,再刷新一下RS1。
在这里插入图片描述
在这里插入图片描述
2.命令访问。
在这里插入图片描述

五、配置https负载均衡

1.需要提前配置两台后端服务器的httpd为https模式。

2.修改haproxy配置文件。

vim /etc/haproxy/haproxy.cfg 
#---------------------------------------------------------------------
defaults
    mode tcp                //将此处改成tcp协议
    
#---------------web设置-----------------------
listen webcluster
    bind 0.0.0.0:443       //将端口改成443
    mode tcp               //使用tcp协议          

#    cookie SESSION_COOKIE insert indirect nocache
    server web01 192.168.161.131:443 check inter 2000 fall 5     //将端口改成443
    server web02 192.168.161.132:443 check inter 2000 fall 5


//重启服务。
systemctl restart haproxy

3.验证。
在这里插入图片描述

六、haproxy网页监控

6.1 监控参数详解

1.可以通过haproxy的web页面,查看监听负载均衡集群状态,包括调度器、后端服务器。
在这里插入图片描述
在这里插入图片描述
2.监控页面参数详解。

#####################################################
Queue列表
Cur: current queued requests //当前的队列请求数量
Max:max queued requests     //最大的队列请求数量
Limit:           //队列限制数量
#####################################################
Session rate (每秒的连接回话列表)
scur: current sessions        //每秒的当前回话的限制数量
smax: max sessions           //每秒的新的最大的回话量
slim: sessions limit           //每秒的新回话的限制数量
#####################################################
Sessions 
Total:            //总共回话量
Cur:             //当前的回话
Max:     //最大回话 
Limit:    //回话限制
Lbtot:   //选中一台服务器所用的总时间
#####################################################
Bytes
In: //网络的字节数输入总量  
Out: //网络的字节数输出总量
#####################################################
Denied
Req:  //拒绝请求量
Resp: //拒绝回应
#####################################################
Errors
Req:request errors             //错误请求
Conn:connection errors          //错误的连接
Resp: response errors (among which srv_abrt)  ///错误的回应
#####################################################
Warnings
Retr: retries (warning)                      //重新尝试
Redis:redispatches (warning)               //再次发送
#####################################################
Server列表
Status:状态,包括up(后端机活动)和down(后端机挂掉)两种状态
LastChk:    持续检查后端服务器的时间
Wght: (weight) : 权重
Act: server is active (server), number of active servers (backend) //活动链接数量
Bck: server is backup (server), number of backup servers (backend) //backup:备份的服务器数量
Down:          //后端服务器连接后都是down的数量
Downtime: downtime: total downtime (in seconds)    //总的downtime 时间
Throttle: warm up status                          //设备变热状态

6.2 页面操作

1.查看RS1的httpd服务状态。
在这里插入图片描述
2.手动关闭网页上的服务。
在这里插入图片描述
在这里插入图片描述
3.过一会,页面显示的服务自动起来了。
在这里插入图片描述
4.关闭服务器上的服务。
在这里插入图片描述
5.查看监控网页状态,显示该服务已宕机。此时即时在网页上启动该服务,也没有效果,只能在服务器上启动服务。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

集群基础3——haproxy负载均衡apache 的相关文章

  • 无法更改 Xampp 中的 Apache 端口号

    我刚刚下载了Xampp服务器xampp win32 1 8 2 0 VC9 zip http www apachefriends org en xampp windows html 641文件 Windows 并尝试启动 apache 服务
  • 在 Mac OS X 上构建 Linux 内核

    我正在做一个修改Linux内核的项目 我有一台桌面 Linux 机器 在上面构建内核没有问题 不过 我要去旅行 我想在途中工作 我只有一台 MacBook 当我尝试构建 Linux 内核时 它抱怨说elf h was not found 我
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • 何时使用 pthread 条件变量?

    线程问题 看来 只有在其他线程调用 pthread cond notify 之前调用 pthread cond wait 时 条件变量才起作用 如果在等待之前发生通知 那么等待将被卡住 我的问题是 什么时候应该使用条件变量 调度程序可以抢占
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • awk 子串单个字符

    这是columns txt aaa bbb 3 ccc ddd 2 eee fff 1 3 3 g 3 hhh i jjj 3 kkk ll 3 mm nn oo 3 我可以找到第二列以 b 开头的行 awk if substr 2 1 1
  • 如何在MAMP中设置环境变量?

    如何在 MAMP 版本 3 3 中设置环境变量 我可以在我的 PHP 应用程序中使用它 我已经更新了 Applications MAMP Library bin envvars and envvars std file并添加以下行 Lice
  • 通过特定分隔符删除字符串

    我的文件中有几列 其中第二列有 分隔符 我想删除第二列中的第一个 第三个和第四个字符串 并将第二个字符串留在该列中 但我有正常的分隔符空间 所以我不知道 input 22 16050075 A G 16050075 A G 22 16050
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • SVN运行上下文错误:现有连接被远程主机强制关闭

    我在 Debian Wheezy 构建服务器上创建了一个 SVN 存储库 如下所示本教程 http www networkworld com article 2224093 opensource subnet use subversion
  • apache htaccess 将第一个段映射为参数而不干扰其他参数

    这可能是一个经典的 htaccess 问题 但我仍然找不到适合我的具体情况的问题 这是closest https stackoverflow com questions 9299793 apache httaccess rewriting我
  • 如何禁用 GNOME 桌面屏幕锁定? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何阻止 GNOME 桌面在几分钟空闲时间后锁定屏幕 我已经尝试过官方手册了在红帽 https access redhat com doc
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • 为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

    在英特尔 x86 上 Linux用途 https stackoverflow com a 52172985 149138事件l1d replacements来实施其L1 dcache load misses event 该事件定义如下 计数
  • 带有 LDAP 身份验证的 SVN 不起作用

    我首先从我的设置开始 为此我们有 2 台服务器 Server1 将用于所有源代码 文件等 在 Server2 上 我们拥有所有用户信息和登录信息 两台服务器都运行在 Centos 6 4 上 现在我们要在 server1 上设置一个 SVN
  • Linux中的定时器类

    我需要一个计时器来以相对较低的分辨率执行回调 在 Linux 中实现此类 C 计时器类的最佳方法是什么 有我可以使用的库吗 如果您在框架 Glib Qt Wx 内编写 那么您已经拥有一个具有定时回调功能的事件循环 我认为情况并非如此 如果您
  • 域套接字“sendto”遇到“errno 111,连接被拒绝”

    我正在使用域套接字从另一个进程获取值 就像 A 从 B 获取值一样 它可以运行几个月 但最近 A 向 B 发送消息时偶尔会失败 出现 errno 111 连接被拒绝 我检查了B域套接字绑定文件 它是存在的 我也在另一台机器上做了一些测试 效
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 仅第一个加载的 Django 站点有效

    我最近向 stackoverflow 提交了一个问题 标题为使用mod wsgi在apache上多次请求后Django无限加载 https stackoverflow com questions 71705909 django infini

随机推荐

  • 类模板、函数模板以及类成员函数在类外定义情况

    1函数模板的写法 函数模板的一般形式如下 Template
  • Shuffle 操作

    在spark中的主要操作 触发一个叫作shuffle的事件 shuffle是spark对于重新分布数据的机制 因此数据 能在partitions上进行不同的分组 Shuffle包含在executors和machines上的数据复制 使得 s
  • Maven下载

    1 访问Maven官网Maven Welcome to Apache Mavenhttps maven apache org 2 单击 DownLoad 出现以下界面 3 点击 apache maven 3 8 6 bin zip 链接 下
  • error C2061: syntax error : identifier 'SHFILEINFOW' // 无法解析的外部符号 wWinMain,该符号在函数 WinMainCRTStartup

    1 gt StdAfx cpp 1 gt E Program Files Windows CE Tools wce600 DbAu13xx include MIPSII shellapi h 321 error C2061 syntax e
  • 接口处理请求时间过长,前台响应“服务器超时”的解决办法

    数据计算量过大 接口响应时间过长时 网关会报超时 页面就挂了 没有很好的解决办法 所以采用了如下解决办法 1 将原本的一个接口拆分为3个 三个接口异步操作 三个接口作用及描述如下 接口1 获取本地异步操作的唯一标识 唯一且加密后的code值
  • app php与html5,uniapp与HTML的区别是什么

    区别 1 uniapp是一个框架 而HTML是一种标记语言 2 组件 标签有差异 例p改成view span font改成text a改成navigator img改成image 3 uniapp不支持dom操作 HTML支持 本教程操作环
  • [2023.7.17]7 CPU Front-End Optimizations

    CPU前端 FE 组件在第3 8 1节中进行了讨论 大多数情况下 CPU FE的低效率可以描述为后端等待执行指令 但FE无法提供指令的情况 结果是 在没有执行任何实际有用工作的情况下浪费了CPU周期 由于现代处理器是4宽度 即 它们每个周期
  • 【汤圆名叫“小刺猬”和“雪化了”】——吃另类汤圆 听奇特民俗

    听奇特民俗 TITLE 汤圆名叫鈥溞 题澓外溠 蒜潯库斺敵粤砝嗵涝 听奇特民俗 gt 把汤圆微出创意来 吃另类汤圆听奇特民俗感世界之大无奇不有 叹那些正在消失的民俗 我挺懒的 而且又不是那么爱吃汤圆 减肥 所以就没有那么勤快来DIY 但节总
  • python字符串与数字类型转换

    str与int i 10 s str i s 10 s 1 i int s i 1 str与float st 4 t float st t 0 4 st 0 4 t float st t 0 4 t 0 4 st str t st 0 4
  • libevent (一) socket属性设置与初始化操作

    socket属性设置与初始化操作 libevent是一个事件触发的网络库 适用于windows linux bsd等多种平台 内部使用select epoll kqueue等系统调用管理事件机制 著名分布式缓存软件memcached也是li
  • 小程序怎么搭建?学会这些技巧,开启创业之路

    随着移动互联网的发展 小程序成为了一种重要的创业工具 小程序具有开发周期短 运营成本低 用户体验好等特点 被越来越多的企业和个人用来实现商业价值 本文将通过一个案例来介绍小程序的搭建技巧 帮助创业者更好地开启创业之路 案例介绍 某家生鲜电商
  • CentOS下安装配置Phabricator

    1 下载快捷安装sh http download csdn net detail u012547633 9882697 把centos版的phabricator安装脚本下载到opt目录并安装 cd opt chmod 777 install
  • java版本号分段比较_版本号判断,例如:1.0.0比较1.0.1

    有的时候可能会判断客户端的版本号信息 多位数的版本号判断做个记录 代码分享者 zzp 注意 Java中应该吧分割的正则使用 来分割小数点字符串 分割 NSArray curVerArr currentVersion componentsSe
  • 了解Chat GPT

    CHATGPT是一款强大的人工智能语言模型 可以回答任何问题和开启有趣的对话 以下是一些使用CHATGPT的技巧和提示 提问明确 CHATGPT能够回答任何问题 但它需要清晰和明确的问题来给出准确的答案 因此 在提问时要尽可能明确和具体 尝
  • 【JDBC】-- Java连接数据库方法(Mysql8+idea)

    Java Database Connectivity 简称JDBC 是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口 提供了诸如查询和更新数据库中数据的方法 Java如何连接数据库 下面使用Mysql8版本 编译器使用ide
  • Flink_CDC搭建及简单使用

    Flink CDC搭建及简单使用 1 CDC简介 CDC Change Data Capture 在广义的概念上 只要能捕获数据变更的技术 都可以称为 CDC 但通常我们说的CDC 技术主要面向数据库 包括常见的mysql Oracle M
  • Dubbo-admin 新版本启动问题记录

    Dubbo admin 新版本启动问题记录 文章目录 Dubbo admin 新版本启动问题记录 1 安装步骤 a 下载zookeeper b 下载并编译dubbo 2 总结 1 安装步骤 直接按照官网下载下来的软件 并按照说明安装软件会存
  • Vagrant虚拟机安装,磁盘扩容以及局域网内访问教程

    1 下载vagrant以及virtualBox 配上vagrant virtualBox线上下载地址 vagrant下载地址 virtualBox下载地址 2 开始准备安装镜像文件 找到需要安装的系统镜像文件 配上vagrant镜像地址 v
  • Linux strace 命令 说明

    Strace是Linux中一个调试和跟踪工具 它可以接管被跟踪进程执行的系统调用和收到的信号 然后把每一个执行的系统调用的名字 参数和返回值打印出来 可以通过strace找到问题出现在user层还是kernel层 strace 显示这些调用
  • 集群基础3——haproxy负载均衡apache

    文章目录 一 环境说明 二 安装配置httpd 三 安装配置haproxy 四 验证http负载均衡 五 配置https负载均衡 六 haproxy网页监控 6 1 监控参数详解 6 2 页面操作 一 环境说明 使用haproxy对apac