使用 Haproxy 搭建Web群集

Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS 和Nginx。相比较而言,LVS.牲能最好.但是搭建相对复杂:Nginx的upstream模块支持群集功能.但是对群集节点健康检查功能不强,性能没有Haproxy好。Haproxy官方网站是http; / /www ,haproxy .org/.

负载均衡常用调度算法

RR  (Round Robin)。RR算法是最简单最常用的一种算法.即轮询调度

LC (Least Connections)。LC算法即最小连接数算法,根据后端的节点连接数大小动态分配前端请求。

SH (Scurce Hashing)。SH 即基于来源访问调度算法.此算法用于一些有Session会话记录在服务器端的场景.可以基于来源的IP、Cookie等做群集调度。

常见的 Web群集调度器

目前常见的Web群集调度器分为软件和硬件.软件通常使用开源的LVS、Haproxy、Nginx,硬件般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼、绿盟等。

部署配置实验

实验环境

虚拟机 3台 centos7.9

网卡NAT模式 数量 1

组件包Haproxy nginx(httpd)

设备

IP

备注

Centos01

192.168.9.32

Node1

Centos02

192.168.9.33

Web1

Centos03

192.168.9.40

Web2

初始配置

关闭防火墙

Systemctl disable firewalld --now

关闭Selinux(192.168.9.32)

setenforce 0
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

配置IP DNS 网关(192.168.9.32)

nmtui

挂载(192.168.9.32)

mount /dev/cdrom /mnt/  

编译安装 Haproxy

将haproxy安装包上传至node1

安装组件 node1配置(192.168.9.32)

yum -y install pcre-devel bzip2-devel gcc gcc-c++ make

解压安装包(192.168.9.32)

[root@node3 ~]# tar zxf haproxy-1.5.19.tar.gz [root@node3 ~]#  cd haproxy-1.5.19[root@node3 haproxy-1.5.19]# make TARGET=linux26 && make install

创建主配置文件(192.168.9.32)

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

添加群集web配置信息(192.168.9.32)

[root@node3 haproxy-1.5.19]# vim /etc/haproxy/haproxy.cfg listen web *:80option	httpchk GET /index.htmlbalance	roundrobinserver	inst1 192.168.160.52:80  check inter 2000 fall 3server	inst2 192.168.160.53:80  check inter 2000 fall 3

创建群集根目录(192.168.9.32)

[root@node3 haproxy-1.5.19]# mkdir /usr/share/haproxy

添加haproxy系统服务(192.168.9.32)

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

启动服务(192.168.9.32)

[root@node3 haproxy-1.5.19]# systemctl start haproxy

Nginx 节点配置

将nginx安装包上传至web1和web2

安装组件(192.168.9.32   192.168.9.40)

[root@node3 ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++ make

创建nginx用户(192.168.9.32   192.168.9.40)

useradd -M -s /sbin/nologin nginx

解压文件(192.168.9.32   192.168.9.40)

[root@node2 ~]# tar zxf nginx-1.24.0.tar.gz

执行编译安装(192.168.9.32   192.168.9.40)

cd nginx-1.24.0.tar.gz[root@node3 nginx-1.24.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module[root@node3 nginx-1.24.0]#   make && make install

创建主程序链接文件(192.168.9.32   192.168.9.40)

[root@node3 nginx-1.24.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

添加测试页面web1 和 web2 对应自身IP地址(192.168.9.32   192.168.9.40)

echo "<h1>This is nginx Server 192.168.9.33</h1>" > /usr/local/nginx/html/test.htmlecho "<h1>This is nginx Server 192.168.9.40</h1>" > /usr/local/nginx/html/test.html

启动Nginx(192.168.9.32   192.168.9.40)

nginx

 验证测试

访问 web1 192.168.9.40/test.html

访问 web2 http://192.168.9.33/test.html 

访问调度 node1 http://192.168.160.51/test.html

配置Haproxy 独立日志

Node1 配置

vim /etc/rsyslog.d/haproxy.confif ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log
& ~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log
& ~

创建日志目录

mkdir /var/log/haproxy

重新启动服务

systemctl restart haproxy
systemctl restart rsyslog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/498061.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT Mingw编译ffmpeg源码以及测试

文章目录 前言下载msys2ysamFFmpeg 搭建编译环境安装msys2安装QT Mingw编译器到msys环境中安装ysam测试 编译FFmpeg 前言 FFmpeg不像VLC有支持QT的库文件&#xff0c;它仅提供源码&#xff0c;需要使用者自行编译成对应的库&#xff0c;当使用QTFFmpeg实现播放视频以及视频流时…

界面控件DevExpress WinForms 2024产品路线图预览(一)

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…

Constructor构造方法

在我们创建实例时&#xff0c;我们经常需要同时初始化这个实例&#xff0c;例如&#xff1a; Person ming new Person(); ming.setName("卫什么"); ming.setAge("18"); 这样需要三行代码&#xff0c;实际上&#xff0c;在我们创建实例时&#xff0c;是通过…

网络热门项目:任务悬赏。了解任务悬赏系统的功能,支持搭建同款系统运营项目。

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 任务悬赏项目&#xff1a;我们在刷短视频的时候就会发现很多博主去推广那些小游戏&a…

Carla自动驾驶仿真八:两种查找CARLA地图坐标点的方法

文章目录 前言一、通过Spectator获取坐标二、通过道路ID获取坐标总结 前言 CARLA没有直接的方法给使用者查找地图坐标点来生成车辆&#xff0c;这里推荐两种实用的方法在特定的地方生成车辆。 一、通过Spectator获取坐标 1、Spectator&#xff08;观察者&#xff09;&#xf…

金三银四面试必问:Redis真的是单线程吗?

文章目录 01 Redis中的多线程1&#xff09;redis-server&#xff1a;2&#xff09;jemalloc_bg_thd3&#xff09;bio_xxx&#xff1a; 02 I/O多线程03 Redis中的多进程04 结论▼延伸阅读 由面试题“Redis是否为单线程”引发的思考 作者&#xff1a;李乐 来源&#xff1a;IT阅读…

groovy:XmlParser 读 Freeplane.mm文件,生成测试案例.csv文件

Freeplane 是一款基于 Java 的开源软件&#xff0c;继承 Freemind 的思维导图工具软件&#xff0c;它扩展了知识管理功能&#xff0c;在 Freemind 上增加了一些额外的功能&#xff0c;比如数学公式、节点属性面板等。 强大的节点功能&#xff0c;不仅仅节点的种类很多&#xff…

Jmeter 安装

JMeter是Java的框架&#xff0c;因此在安装Jmeter前需要先安装JDK&#xff0c;此处安装以Windows版为例 1. 安装jdk&#xff1a;Java Downloads | Oracle 安装完成后设置环境变量 将环境变量JAVA_HOME设置为 C:\Program Files\Java\jdk1.7.0_25 在系统变量Path中添加 C:\Pro…

部署PhotoMaker通过堆叠 ID 嵌入自定义逼真的人物照片

PhotoMaker只需要一张人脸照片就可以生成不同风格的人物照片&#xff0c;可以快速出图&#xff0c;无需额外的LoRA培训。 安装环境 python 3.10gitVisual Studio 2022 安装依赖库 git clone https://github.com/bmaltais/PhotoMaker.git cd PhotoMaker python -m venv venv…

面试笔记系列五之MySql+Mybaits基础知识点整理及常见面试题

myibatis执行过程 1读取MyBatis的配置文件。 mybatis-config.xml为MyBatis的全局配置文件&#xff0c;用于配置数据库连接信息。 2加载映射文件。映射文件即SQL映射文件&#xff0c;该文件中配置了操作数据库的SQL语句&#xff0c;需要在MyBatis配置文件mybatis-config.xml中…

【HDFS】Decommision(退役) EC数据节点剩最后几个块卡住的问题

一、背景 近期操作退役EC集群的节点。在退役的过程中,遇到了一些问题。特此总结一下。 本文描述的问题现象是: 每一批次退役10个节点,完全退役成功后开始操作下一批。 但是,中间有一批次有2台节点的Under Replicated Blocks一直是1,不往下降。 处于Decommissioning状态卡…

React入门之react_jsx入门

简单语法写法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><script s…