ubuntu22 搭建nginx高可用集群(VIP(keepalived) + 负载均衡)

#在所有节点安装nginx

#ps: 如果要使用tcp流转发:需用二进制包安装 make编译时加入stream流的参数。  推荐直接安装openresty【默认支持stream等nginx模块,还附带了很多常用的lua库】
 

apt install -y net-tools
sudo apt install -y nginx
vim /etc/nginx/conf.d/nginx.conf
upstream balanceServer {# 服务器的访问地址,负载均衡算法使用权重轮询。应用服务器是自己的应用服务主机的地址,最好和负载均衡服务分开部署。server 10.3.1.135:8080 weight=1;
}
#负载均衡服务
server {# 负载均衡的监听端口listen 80 default_server;server_name _;location / {proxy_pass http://balanceServer;   # 代理转发应用服务client_max_body_size 500m;}location /prod-api/ {proxy_pass http://balanceServer;   # 代理转发应用服务proxy_cookie_path / /prod-api;rewrite ^/prod-api/(.*) /$1 break;client_max_body_size 500m;}}

#nginx服务默认占用80  修改默认端口为81

vim /etc/nginx/sites-enabled/default 
listen 81 default_server;
listen [::]:81 default_server;

nginx -s reload #systemctl restart nginx

systemctl enable nginx

#在所有节点安装keepalived 并修改配置文件(不同节点参数需修改)

apt install -y keepalived

vim /etc/keepalived/keepalived.conf

global_defs { # 路由id: 当前安装的keepalived节点主机的标识符,全局唯一。 # 不同节点需修改 用本机ip即可router_id 10.3.1.96
}
vrrp_script chk_nginx {script "/etc/keepalived/nginx_chk.sh"  interval 2  
}
vrrp_instance VI_1{# 表示的状态,MASTER 主节点  BACKUP 备机# 一个设为MASTER 其他的设为BACKUPstate MASTER# 当前实例绑定的网卡 根据主机网卡自行修改interface ens160# 表示那些服务器一个组,保证主备节点一致virtual_router_id 100# 优先级/权重,谁的优先级高,在MASTER关掉以后,就能成为MASTERpriority 100# 主备之间同步检查的时间间隔,默认1sadvert_int 1# 认知授权的密码,防止非法节点的进入authentication {auth_type PASSauth_pass 1369}#  虚拟ip 要和服务器在同一个网段, 能和服务器网关进行通信的, 而且是没有被占用的virtual_ipaddress {10.3.1.150}track_script {   chk_nginx}
}

vim /etc/keepalived/nginx_chk.sh #配置脚本检查nginx是否还在正常运行,如果挂掉就重启它,实在启动不了再让keepalived绑定备用机器

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
# 判断nginx是否宕机,如果宕机了,尝试重启 
if [ $A -eq 0 ];then# 重启nginx,延迟2秒 service nginx restartsleep 2  # 重新检查是否有nginx相关的进程if [ $A -eq 0 ];then  # 仍然没有nginx相关的进程,杀死当前keepalived,切换到备用机killall keepalived  fi  
fi

sudo chmod +x /etc/keepalived/nginx_chk.sh

bash /etc/keepalived/nginx_chk.sh #检查脚本,不报错即可‘

systemctl start keepalived

ip addr #查看ens160网卡出现 10.3.1.150虚拟ip即可。 然后可以通过虚拟ip访问对应的nginx转发

systemctl enable keepalived

#关掉MASTER的keepalived后,虚拟ip就飘移到BACKUP节点上了 可以用ip addr查看一下

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

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

相关文章

恒创科技:无法与服务器建立安全连接怎么解决?

在使用互联网服务时,有时会出现无法与服务器建立安全连接的问题,此错误消息通常出现在尝试访问需要安全连接的网站(例如使用 HTTPS 的网站)时,这可能是由于多种原因造成的,以下是一些常见的解决方法,帮助你解决问题。 …

聚道云软件连接器:打通易快报与保融资金系统,实现高效财务管理

一、客户介绍:食品企业,引领健康零食新风尚 某食品行业的公司作为国内领先的集研发、生产、销售为一体的现代化辣味休闲食品企业。该公司秉承“健康、美味、安全”的理念,不断创新和进取,为消费者带来了一系列美味可口的辣味休闲…

msvcp100.dll丢失怎样修复?几种快速有效修复msvcp100.dll丢失的方法

在使用电脑时是不是遇到过关于msvcp100.dll丢失文件丢失的情况?出现这样的情况有什么办法可以将丢失的msvcp100.dll文件快速恢复?今天的这篇文章就将教大家几种能够有效的解决msvcp100.dll丢失问题的方法。 方法一:重启电脑 重启电脑是一种简…

参数高效微调PEFT(三)快速入门LoRA、AdaLoRA

参数高效微调PEFT(三)快速入门LoRA、AdaLoRA 我们已经了解了HuggingFace中peft库的几种高效微调方法。 参数高效微调PEFT(一)快速入门BitFit、Prompt Tuning、Prefix Tuning 参数高效微调PEFT(二)快速入门P-Tuning、P-Tuning V2 今天我们继续了解大火的高效微调方法LoRA以及…

MyBatis基础理解教程,详细分步基础查询表数据练习(通俗易懂、实时更新)

一、MyBatis是什么 MyBatis 是一个持久层框架,简化JDBC开发,它提供了一个从 Java 应用程序到 SQL 数据库的桥梁,用于数据的存储、检索和映射。MyBatis 支持基本的 SQL 操作、高级映射特性以及与 Maven 等构建工具的集成。 二、持久层是什么…

IDEA增加.gitignore文件后的处理

IDEA增加 .gitignore 文件后,但还是被 git 跟踪了。 我的文件已经被添加到 .gitignore 中,但仍然被 Git 跟踪, 文件被修改后commint中就会存在此文件。 原因: 文件已经被提交过了 如果文件在添加到 .gitignore 之前已经被提交到 Git 仓库中,…

Spring boot集成通义千问大模型

Spring boot集成通义千问大模型 背景 我在用idea进行java开发时发现了通义灵码这款免费的智能代码补全插件,用了一段时间了,感觉很不错。就想着在自己的项目中也能集成通义千问大模型实现智能回答,毕竟对接openai需要解决网络问题&#xff…

战略合作 | 竹云赋能雁塔区数字经济高质量发展

2024年5月30日,由西安市数据局指导,中共西安市雁塔区委、西安市雁塔区人民政府主办的 “雁塔区企业数字化转型发展大会” 在西安开幕。 本次活动以“数智雁塔,引领未来”为主题,特邀业内150余位政府、数字化服务企业、传统行业企…

Kubernetes 之 DaemonSet 基本原理

Kubernetes 之 DaemonSet 基本原理 DaemonSet 定义 DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。 当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会…

先导微型数控桌面式加工中心

随着数控技术、传感器技术、人工智能等技术的不断发展,制造业的快速发展和技术的不断进步,小型五轴加工中心的性能将不断提升,五轴联动技术作为解决异性复杂零件高效优质加工问题的重要手段,使其具有更广泛的应用前景。小型五轴加…

【启明智显分享】国产自主ZX7981P Wi-Fi6 5G-CPE开发板有哪些优势?

在当前竞争激烈的智能设备市场中,高性能与低功耗的开发板已然成为各大产品追求的关键优势。 今天我们从国产自主研发的ZX7981P Wi-Fi6 5G-CPE开发板的特点出发,分析他是否满足市场追求的特点。 主要特点: 1. 强大配置,稳定可靠 …

5.30 学习总

刷题记录(Codeforces Round 947 (Div. 1 Div. 2)B,C题)和Codeforces Round 948 (Div. 2)B题 一.B. 378QAQ and Mochas Array B. 378QAQ and Mochas Array time limit per test 1 second memory limit per test 256 megabytes in…

长难句5.30

Researchers measured people’s cortisol, which is a stress marker, while they were at work and while they were at home and found it higher at what is supposed to be a place of refuge. 研究人员测量了人们在工作中和在家里的皮质醇(压力的一种标志),结…

在 JavaScript 中循环遍历数组的多种方法

在JavaScript编程中,遍历数组是一个非常常见的操作。根据不同的需求和JavaScript的不同版本,我们有多种方法来完成这一操作。本文将介绍几种有效的方法,包括现代的和传统的方式,同时分析每一种方法的优缺点。 1. 使用 for...of 语法 for...of 是在 ECMAScript 2015(ES6)…

Spring Boot集成statemachine快速入门demo

1.什么是statemachine? Spring Statemachine 是应用程序开发人员在 Spring 应用程序中使用状态机概念的框架,从设计层面分析:状态机目的是解决复杂的状态管理流程,保证程序单一原则和开闭原则;业务角度分析&#xff1…

【面试】什么是Java虚拟机

目录 1. 说明2. 关键点 1. 说明 1.Java虚拟机(Java Virtual Machine,简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境。2.JVM是Java平台无关性的关键,它允许Java程序在任何支持JVM的硬件和操作系统上运…

【大数据面试题】34 手写一个 Flink SQL 样例

一步一个脚印,一天一道大数据面试题 博主希望能够得到大家的点赞收,藏支持!非常感谢~ 点赞,收藏是情分,不点是本分。祝你身体健康,事事顺心! 我们来看看 Flink SQL大概流程和样例: 流程: 1.创建 流处理环境 StreamExecutionEnvironment env 2.创建 表环境 StreamTab…

为啥装了erlang,还报错erl: command not found?

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 问题背景: 在一台不通外网的服务器上装rabbitmq,然后在启动的时候,遇到了报错 “/usr/lib/…

C#中使用Mapster

Mapster是一个开源的.NET对象映射库,它提供了一种简单而强大的方式来处理对象之间的映射。 多个映射框架的性能对比: 第一步安装Mapster 使用方法 public class Test {public string name { get; set; }public string sex { get; set; }public string…

C语言数据结构(超详细讲解)| 二叉树的实现

二叉树 引言 在计算机科学中,数据结构是算法设计的基石,而二叉树(Binary Tree)作为一种基础且广泛应用的数据结构,具有重要的地位。无论是在数据库索引、内存管理,还是在编译器实现中,二叉树都…