KeepAlived搭建高可用的HAproxy负载均衡集群系统

服务器规划:

                            serverd(haproxy1,keepalived):192.168.233.141
                            serverb(haproxy2,keepalived):192.168.233.144
                            servera(web1):192.168.233.132
                            serverc(web2):192.168.233.140

域名映射:(所有端均配置):

vim /etc/hosts
192.168.233.141 haproxy1
192.168.233.144 haproxy2
192.168.233.140 web2
192.168.233.132 web1

serverd(141):
 

haproxy配置:yum install haproxy -y
vim /etc/haproxy/haproxy.cfg(配置文件) 
# 设置日志,记录在本地3号设备上,记录级别为info
globallog 127.0.0.1 local3 info# 最大连接数为4096maxconn 4096# 运行haproxy的用户和组user nobodygroup nobody# 以守护进程方式运行daemon# 进程数为1nbproc 1# PID文件路径pidfile /run/haproxy.pid# 默认配置
defaults# 全局日志记录log global# 模式为HTTPmode http# 最大连接数为2048maxconn 2048# 重试次数为3retries 3# 开启转发option redispatch# 连接超时时间为5秒timeout connect 5000# 客户端超时时间为50秒timeout client 50000# 服务器超时时间为50秒timeout server 50000# 关闭连接时强制关闭option abortonclose# 配置统计页面stats uri /admin?statsstats realm Private landsstats auth admin:passwordstats hide-version# 前端配置
frontend http-in# 监听所有IP的80端口bind 0.0.0.0:80# 使用HTTP模式mode http# 记录日志log global# 开启httplog选项option httplog# 关闭HTTP长连接option httpclose# 定义acl规则acl html url_reg -i \.html$# 如果是HTML文件,则使用html-server后端use_backend html-server if html# 默认使用html-server后端default_backend html-server# 后端配置
backend html-server# 使用HTTP模式mode http# 负载均衡算法为轮询balance roundrobin# 健康检查请求为GET /index.htmloption httpchk GET /index.html# 插入SERVERID COOKIE,并且间接设置,不缓存cookie SERVERID insert indirect nocache# 配置服务器Aserver html-A web1:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5# 配置服务器Bserver html-B web2:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5systemctl start haproxykeepalived配置:
yum install keepalived -y
cd /etc/keepalived/
! Configuration File for keepalived# 定义全局参数
global_defs {router_id LVS_141  # 路由器ID
}# 定义一个用于检查HAProxy的脚本
vrrp_script chk_haproxy {script "/etc/keepalived/chk_haproxy.sh"
}# 定义一个VRRP实例为nginx
vrrp_instance nginx {state MASTER  # 设置实例状态为MASTERinterface ens160  # 指定接口virtual_router_id 51  # 设置虚拟路由器IDpriority 100  # 设置优先级advert_int 1  # 设置通告间隔authentication {auth_type PASS  # 设置认证类型为PASSauth_pass 1111  # 设置认证密码}virtual_ipaddress {192.168.233.50  # 设置虚拟IP地址}track_script {chk_haproxy  # 跟踪chk_haproxy脚本}
}健康检查:
vim chk_haproxy.sh
#!/bin/bash# 检查 haproxy 服务的状态
ST=$(systemctl is-active haproxy)# 如果 haproxy 服务状态不是 "active",则执行以下操作
if [ "$ST" != "active" ]; then# 重启 haproxy 服务并将输出重定向到 /dev/nullsystemctl restart haproxy &> /dev/nullsleep 1# 重新获取 haproxy 服务的状态ST=$(systemctl is-active haproxy)# 如果重启后 haproxy 服务状态仍不是 "active"if [ "$ST" != "active" ]; then# 停止 keepalived 服务systemctl stop keepalivedelse# 如果重启后 haproxy 服务状态是 "active",则退出脚本exitfi
fisystemctl start keepalived

serverb(144):

haproxy配置:
yum install haproxy -y
vim /etc/haproxy/haproxy.cfg(配置文件) 
# 设置日志,记录在本地3号设备上,记录级别为info
globallog 127.0.0.1 local3 info# 最大连接数为4096maxconn 4096# 运行haproxy的用户和组user nobodygroup nobody# 以守护进程方式运行daemon# 进程数为1nbproc 1# PID文件路径pidfile /run/haproxy.pid# 默认配置
defaults# 全局日志记录log global# 模式为HTTPmode http# 最大连接数为2048maxconn 2048# 重试次数为3retries 3# 开启转发option redispatch# 连接超时时间为5秒timeout connect 5000# 客户端超时时间为50秒timeout client 50000# 服务器超时时间为50秒timeout server 50000# 关闭连接时强制关闭option abortonclose# 配置统计页面stats uri /admin?statsstats realm Private landsstats auth admin:passwordstats hide-version# 前端配置
frontend http-in# 监听所有IP的80端口bind 0.0.0.0:80# 使用HTTP模式mode http# 记录日志log global# 开启httplog选项option httplog# 关闭HTTP长连接option httpclose# 定义acl规则acl html url_reg -i \.html$# 如果是HTML文件,则使用html-server后端use_backend html-server if html# 默认使用html-server后端default_backend html-server# 后端配置
backend html-server# 使用HTTP模式mode http# 负载均衡算法为轮询balance roundrobin# 健康检查请求为GET /index.htmloption httpchk GET /index.html# 插入SERVERID COOKIE,并且间接设置,不缓存cookie SERVERID insert indirect nocache# 配置服务器Aserver html-A web1:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5# 配置服务器Bserver html-B web2:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5
systemctl start haproxykeepalived配置:
yum install keepalived -y
cd /etc/keepalived/
! Configuration File for keepalivedglobal_defs {router_id LVS_144  # 设置路由器ID
}vrrp_script chk_haproxy {script "/etc/keepalived/chk_haproxy.sh"  # 指定用于检查HAProxy运行状态的脚本路径
}vrrp_instance nginx {state BACKUP  # 设置实例状态为备份interface ens160  # 指定网络接口virtual_router_id 51  # 设置虚拟路由器IDpriority 80  # 设置优先级advert_int 1  # 设置广播间隔authentication {auth_type PASS  # 设置认证类型为密码auth_pass 1111  # 设置认证密码}virtual_ipaddress {192.168.233.50  # 设置虚拟IP地址}track_script {chk_haproxy  # 设置要跟踪的脚本}
}健康检查:
vim chk_haproxy.sh
#!/bin/bash# 检查 haproxy 服务的状态
ST=$(systemctl is-active haproxy)# 如果 haproxy 服务状态不是 "active",则执行以下操作
if [ "$ST" != "active" ]; then# 重启 haproxy 服务并将输出重定向到 /dev/nullsystemctl restart haproxy &> /dev/nullsleep 1# 重新获取 haproxy 服务的状态ST=$(systemctl is-active haproxy)# 如果重启后 haproxy 服务状态仍不是 "active"if [ "$ST" != "active" ]; then# 停止 keepalived 服务systemctl stop keepalivedelse# 如果重启后 haproxy 服务状态是 "active",则退出脚本exitfi
fisystemctl start keepalived

servera(132):web1

# 关闭SELinux
setenforce 0# 停止firewalld防火墙
systemctl stop firewalld# 安装Apache HTTP服务器
yum install httpd -y# 在网站根目录下创建一个名为index.html的文件,并写入内容"web2"
echo web1 > /var/www/html/index.html# 设置HTTP服务器开机自启动
systemctl enable httpd# 启动HTTP服务器
systemctl start httpd

serverb(140):web2

# 关闭SELinux
setenforce 0# 停止firewalld防火墙
systemctl stop firewalld# 安装Apache HTTP服务器
yum install httpd -y# 在网站根目录下创建一个名为index.html的文件,并写入内容"web2"
echo web2 > /var/www/html/index.html# 设置HTTP服务器开机自启动
systemctl enable httpd# 启动HTTP服务器
systemctl start httpd

任意端通过vip访问:
 

curl 192.168.233.50

通过haproxy访问:

curl http://haproxy1

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

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

相关文章

Java 学习和实践笔记(19):this的使用方法

this用来指向当前对象的地址。 this的用法: 1)在普通方法中,this总是指向调用该方法的对象。在普通方法中,它是作为一种隐式参数一直就存在着(这句话的意思,就是其实在普通方法中,编译器一直就…

【前端素材】推荐优质后台管理系统Be admin平台模板(附源码)

一、需求分析 后台管理系统(或称作管理后台、管理系统、后台管理平台)是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成,为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

从零开始学逆向:理解ret2syscall

1.题目信息 链接:https://pan.baidu.com/s/19ymHlZZmVGsJHFmmlwww0w 提取码:r4el 首先checksec 看一下保护机制 2.原理 ret2syscall 即控制程序执行系统调用来获取 shell 什么是系统调用? 操作系统提供给用户的编程接口是提供访问操作系统…

【力扣hot100】刷题笔记Day12

前言 小涛啊小涛,你不能就这么荒废学习安逸享乐!工作找不到啦! 104. 二叉树的最大深度 - 力扣(LeetCode) 递归 class Solution:def maxDepth(self, root: Optional[TreeNode]) -> int:if not root:return 0l_len …

Flutter 中的照片管理器(photo_manager):简介与使用指南

当谈到在 Flutter 中处理图片和相册时,photo_manager 是一个强大且受欢迎的库。让我们深入了解一下这个库以及如何在你的应用程序中使用它。 Flutter photo_manager 简介 photo_manager 是一个用于管理设备上的照片和视频的库。它提供了以下功能: 访问…

redmine旧系统迁移到docker中

redmine旧系统迁移到docker中 起因新的改变安装尝试处理插件问题自己的镜像 起因 旧系统是Linux,迁移redmine可谓是非常麻烦,安装redmine可是一个非人的折磨。 新的改变 使用docker做好一个环境,以后有需要的时候直接使用即可,…

电路设计(28)——交通灯控制器的multisim仿真

1.功能设定 南北、东西两道的红灯时间、绿灯时间均为24S,数码管显示倒计时。在绿灯的最后5S内,黄灯闪烁。有夜间模式:按下按键进入夜间模式。在夜间模式下,数码管显示计数最大值,两个方向的黄灯不停闪烁。 2.电路设计 …

【k8s资源调度-StatefulSet】

1、部署对象StatefulSet资源(无状态应用) StatefulSet针对的是有状态应用,有状态应用会对我们的当前pod的网络、文件系统等有关联。 2、配置文件如下 StatefulSet资源的配置文件粗略如下,如下的配置信息包含了数据卷,…

uniapp_微信小程序自定义顶部导航栏和右侧胶囊对齐(不对齐来打我)

一、想要的效果 思路首先开启自定义导航栏&#xff0c;取消自带的导航栏&#xff0c;然后计算胶囊的高度和标题对齐 二、成品代码 1、首先再你需要居中的代码添加以下style <view class"header":style"{paddingTop:navBarTop px,height:navBarHeight px,…

freemarker语法和在java中应用

翻笔记翻出来的。 目录 基础简单示例标签assignincludeiflist内建函数空值问题运算符 在线测试 https://try.freemarker.apache.org/ 基础 freemarker是一个Java编写的模板引擎&#xff0c;它基于模板产生文本&#xff0c;输出可以是html、XML、JSP和Java等&#xff0c;只要给…

GitLab代码库提交量统计工具

1.说明 统计公司所有项目的提交情况&#xff0c;可指定分支和时间段&#xff0c;返回每个人的提交新增数、删除数和总数。 2.API 文档地址&#xff1a;http://公司gitlab域名/help/api/README.md 项目列表查询 返回示例&#xff1a; [{"id": 1, //项目ID"http…

271.【华为OD机试真题】查找一个有向网络的头节点和尾节点(有向无环图(DAG)-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…

机器学习——线性回归算法、代价函数、梯度下降算法基础

线性回归 还是以之前的预测房价为例&#xff0c;根据不同尺寸的房子对应不同的售价组成的数据集画图&#xff0c;图如下 监督学习算法工作流程 假设函数其实就是我们所说的函数&#xff0c;在房价这个例子中&#xff0c;我们可以从上图中看出房价和房子面积是一个一元的线性函…

【进程地址空间】

目录 上层用户看到的地址父进程创建子进程对代码区的同一变量修改 进程地址空间进程地址空间需要划分 页表 上层用户看到的地址 一个系统中的进程是与其他进程共享内存和CPU的。如果某个进程不小心写入另一个使用该内存的进程&#xff0c;进程就可能以某种完全和程序逻辑无关的…

Apache Commons开源的工具库介绍

Apache Commons 是 Apache 软件基金会主持的一个项目&#xff0c;旨在提供一系列可重用的 Java 组件。这些组件覆盖了从数据封装、文本处理到网络通信等各个方面&#xff0c;是 Java 开发中常用的一系列工具库。Apache Commons 项目下的各个库通常以 "commons-" 开头…

css3实现动画无限循环

要在CSS3中实现动画的无限循环&#xff0c;你可以使用animation 属性和 infinite 关键字。以下是一个示例&#xff1a; keyframes myAnimation {0% { /* 起始状态 */ }50% { /* 中间状态 */ }100% { /* 结束状态 */ }}.element {animation: myAnimation 2s infinite; /* 设置动…

团簇束流沉积技术:氢气传感器守护安全与环境的利器

在当今日益增长的能源需求背景下&#xff0c;氢气作为一种清洁、高效的能源载体&#xff0c;正逐渐受到广泛关注。然而&#xff0c;氢气的易燃易爆特性也带来了不小的安全隐患。因此&#xff0c;精确、快速地监测氢气泄漏成为了确保生产安全和环境监测的重中之重。基于团簇束流…

《凤凰架构》 -分布式事务章节 读书笔记

分布式事务严谨的定义&#xff1a;分布式环境下的事务处理机制 CAP定理&#xff1a;在一个分布式系统中&#xff0c;涉及共享数据问题时&#xff0c;以下三个特性最多只能同时满足两个 一致性&#xff1a;代表数据在任何时刻、任何分布式节点中看到的都是符合预期的&#xff0…

HarmonyOS创建一个ArkTS卡片

创建一个ArkTS卡片 在已有的应用工程中&#xff0c;创建ArkTS卡片&#xff0c;具体操作方式如下。 创建卡片。 根据实际业务场景&#xff0c;选择一个卡片模板。 在选择卡片的开发语言类型&#xff08;Language&#xff09;时&#xff0c;选择ArkTS选项&#xff0c;然后单…

【LNMP】云导航项目部署及环境搭建(复杂)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、项目介绍1.1项目环境架构LNMP1.2项目代码说明 二、项目环境搭建2.1 Nginx安装2.2 php安装2.3 nginx配置和php配置2.3.1 修改nginx文件2.3.2 修改vim /etc/p…