Linux--使用 Haproxy搭建Web群集

1、 案例概述

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

2、负载均衡常用调度算法

LVS、Haproxy、Nginx 最常用的调度算法有三种,如下所述。

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

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

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

部署配置实验

实验环境

虚拟机 3台 centos7.3

网卡NAT模式 数量 1

组件包Haproxy nginx(httpd)

设备

IP

备注

Centos01

192.168.161.102

Node02

Centos02

192.168.161.104

Web1    node04

Centos03

192.168.161.105

Web2    node05

初始配置

关闭防火墙

Systemctl disable firewalld --now

关闭Selinux

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

配置IP DNS 网关

nmtui

编译安装 Haproxy

将haproxy安装包上传至node02

安装组件 node02配置

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

解压安装包

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

创建主配置文件

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

添加群集web配置信息

[root@node02 ~]# vim /etc/haproxy/haproxy.cfg listen  web 0.0.0.0:80option  httpchk GET /index.htmlbalance roundrobinserver  inst1 192.168.161.104:80 check inter 2000 fall 3server  inst2 192.168.161.105:80 check inter 2000 fall 3

创建群集根目录

[root@node02 ~]# mkdir /usr/share/haproxy

添加haproxy系统服务

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

启动服务

[root@node02 ~]# systemctl start haproxy

Nginx 节点配置

将nginx安装包上传至web1和web2

安装组件

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

创建nginx用户

[root@node04 ~]# useradd -M -s /sbin/nologin nginx

解压文件

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

执行编译安装

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

创建主程序链接文件

[root@node04 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

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

[root@node04 ~]# echo "Server 192.168.161.104" > /usr/local/nginx/html/test.html

启动Nginx

[root@node04 html]# /usr/local/nginx/sbin/nginx 

验证测试

访问 web1 http://192.168.161.104/test.html

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

测试Web群集

      通过上面的步骤,已经搭建完成Haproxy的 Web群集,接下来需要验证群集是否工作正常。一 个群集一般需要具备两个特性。第一个是高性能,第二个是高可用。

1)测试高性能

在客户端使用浏览器打开http://192.168.161.102/test.html、浏览器显示信息如图中所示。

再次打开一个新的浏览器页面访问http://192.168.161.102/test.html,浏览器显示信息如图中所示。

可以看到群集的负载均衡调度已经生效,已经满足了群集的高性能需求。

配置Haproxy 独立日志,为了便于管理

Node02 配置

[root@node02 ~]# 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
& ~

创建日志目录

[root@node02 ~]# mkdir /var/log/haproxy

重新启动服务

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

测试日志信息

      在客户端访问http://192.168.161.102/test.html后,可以使用 tail -f /var/log/haproxy/haproxy-info.log即时查看 Haproxy的访问请求日志信息。

[root@node02 ~]# tail -f /var/log/haproxy/haproxy-info.log 

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

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

相关文章

Python把excel内容保存为图片(非统计图而是纯原表格数据)

一、引入 excel2img 库,没有的话使用 pip install excel2img进行安装 二、采用如下方法进行图片生成 excel文件名为:111.xlsx excel表格里面的sheet名称列表为 [Sheet1, Sheet2] 最终保存为以sheet名称.png的图片 支持跨表格合并项 import excel2i…

1、docker入门

文章目录 1、tocker简介2、tocker的安装&环境配置2、配置阿里云镜像3、基本命令1、镜像命令2、docker基本命令3、镜像基本命令4、Docker 容器常用命令 1、tocker简介 新一代的虚拟化技术 2、tocker的安装&环境配置 uname -r1、首先查看liunx的内核 yum update -y2、更…

前后端项目-part03

文章目录 5.4.4 机构名称5.4.4.1 创建实体类Company5.4.4.2 创建实体类CompanyMapper5.4.4.3 创建实体类CompanyService5.4.4.4 创建实体类CompanyController5.4.4.5 后端测试5.4.4.6 修改basic.js5.4.4.7 修改course.vue5.4.4.8 测试5.4.5 课程标签5.4.5.1 效果5.4.5.2 修改co…

Redis的应用——接口幂等性,分布式锁,基于注解+拦截器的接口幂等改进

目录 引出接口幂等&分布式锁接口幂等性Redisson框架接口幂等改进 缓存三兄弟:缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Redis的应用——接口幂等性,分布式锁,基于注解拦截器的接口幂等改进 接口幂等&分布式锁 系统…

c++学习记录 deque容器—构造函数

1、deque容器基本概念 1.1 功能 双端数组,可以对头端进行插入删除操作 1.2 deque与vector区别: vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度比vector快vector访问元素…

vue中scss样式污染引发的思考

新做了一个项目,就是在登录后,就会产生左侧菜单的按钮颜色不一样。 然后发现样式是从这里传过来的 发现是登录页面的css给污染了 就是加了scope就把这个问题解决了 然后想总结一下这个思路:就是如何排查污染样式: 如果出现了…

东莞IBM服务器维修之IBM x3630 M4阵列恢复

记录东莞某抖音电商公司送修一台IBM SYSTEM X3630 M4文档服务器RAID6故障导致数据丢失的恢复案例 时间:2024年02月20日, 服务器品牌:IBM System x3630 M4,阵列卡用的是DELL PERC H730P 服务器用途和用户位置:某抖音电…

李沐《动手学深度学习》优化算法(相关概念、梯度下降法、牛顿法)

系列文章 李沐《动手学深度学习》预备知识 张量操作及数据处理 李沐《动手学深度学习》预备知识 线性代数及微积分 李沐《动手学深度学习》线性神经网络 线性回归 李沐《动手学深度学习》线性神经网络 softmax回归 李沐《动手学深度学习》多层感知机 模型概念和代码实现 李沐《…

二叉树(C/C++)

本篇将较为详细的介绍二叉树的相关知识,以及二叉树的实现。对于二叉树的相关知识,本篇介绍了其概念、特殊的二叉树、性质还有存储结构。 接着对于实现二叉树的每个函数都有其思路讲解,主要的函数分为:遍历:前中后序遍历…

【低代码开发_RuoYi_框架】RuoYi框架_前端页面部署/搭建

开源软件的影响力 随着信息技术的快速发展,开源软件已经成为软件开发的趋势,并产生了深远的影响。开源软件的低成本、可协作性和透明度等特点,使得越来越多的企业和个人选择使用开源软件,促进了软件行业的繁荣。然而,…

白酒:新工艺、新技术在白酒生产中的应用与展望

随着科技的不断发展,新工艺、新技术在豪迈白酒生产中的应用越来越广泛。这些新技术的应用,不仅提高了豪迈白酒的品质和生产效率,还为白酒产业的可持续发展提供了有力支持。 首先,新工艺在豪迈白酒生产中的应用具有重要意义。传统的…

Redis的BigKey

文章目录 1. 常见面试题2. MoreKey案例2. BigKey2. BigKey生产调优 1. 常见面试题 海量数据里查询某一个固定前缀的key?你如何生产上限制key * /flushdb /flushall等危险命令以防止误删误用?Memory Usage命令你用过吗?多大算BigKey&#xff…