搭建Nginx(haproxy)+keepalived+Tomcat双主高可用负载均衡

周末的时候一个正在学Linux的朋友问我,高可用怎么玩?我和他微信了将近三个小时,把Nginx和haproxy双主高可用教给他了,今天突然想把这个给写进博客里,供给那些正在学习Linux系统的朋友们,希望能够有所帮助!(如果内容中有误,还望大家指出!)

常见的web集群调度器:

调度器分为软件和硬件两种:lvs nginx haproxy等软件调度器

f5 绿盟 梭子鱼等硬件调度器

  • lvs在企业生产中抗负载能力很强,但是不支持动静分离,正则处理,在大型网站中lvs实施复杂,而且维护成本高,工作在TCP四层,lvs就是一个单纯的负载均衡软件
  • Nginx使用简单,性能较好,可负载三万到五万的并发量,Nginx上功能较多,可做web服务器也可做流量分配,但不支持session会话 cookie引导等, 工作在TCP七层
  • haproxy使用简单,功能多,harpoxy支持两种工作模式,一个是TCP四层和七层(传输层和应用层),它补充了Nginx不能session cookie等工作,支持URL检测,如果服务器出问题会有很好的帮助,它和lvs一样只是单纯的负载均衡软件,但是它负载均衡的速度和处理并发上要优于Nginx,haproxy也可对MySQL读进行负载均衡,对后端MySQL节点进行检测,如果后端的MySQL slaves数量超出10台时,性能不如lvs+keepalived

部署Nginx+keepalived+Tomcat 双主高可用负载均衡

思路:

1.首先需要四台服务,两台做Nginx负载均衡(Nginx1和Nginx2),另外两台当作真实节点服务器(Tomcat1和Tomcat2)

2.既然要达到双主的目的,就需要用两个VIP(也就是虚拟ip)添加两条VIP是为了两台调度器互相是对方主服务和从从服务,把两个VIP添加同一个域名里,客户访问域名时同时工作,使两台机器没有一个是处于闲置浪费状态,并且当其中一台机器宕机后,第一台的VIP会转移到另一台,此时第二台会有俩个VIP,这样做最大化使负载均衡达到最理想化状态

3.然后就是在调度器器上安装keepalived工具,当某台调度器宕机后,进行vip飘移,故障切换

部署环境:

  • 负载Nginx1 192.168.40.21
  • 负载Nginx2 192.168.40.22
  • Tomcat1 192.168.40.23
  • Tomcat2 192.168.40.24
  • VIP 192.168.40.66 192.168.40.67

安装Tomcat1

需要源码包 :

安装并生成测试页

安装Tomcat2

安装步骤和Tomcat1一样,安装过程略过

Tomcat2测试页内容:

部署Nginx1负载均衡

Nginx搭建过程略,搭建完成后修改Nginx主配置文件,在Nginx上添加Tomcat1和Tomcat2的真实节点服务器

max—fails=1 fail_timeout=10s; 健康检查:最大连接失败测试1次,失败超时10秒

部署Nginx2的负载

Keepalived部署

keepalived可以说是健康检查工具,他可以故障自动切换,节点健康检查

Nginx1上安装keepalived

yum -y isntall keepalived

修改keepalived配置文件,添加VIP以及Nginx 进程监测脚本

编写Nginx检测进程脚本:

修改keepalived的主配置文件:

位置: /etc/keepalived/

同时在Nginx2上部署keepalived,安装过程和Nginx1的keepalived一样,并且修改keepalived主配置文件

部署完成之后,开启Nginx 和keepalive服务,此时使用ip a 命令查看 Nginx1上的vip,发现vip1的IP

因为VIP 1:192.168.40.66 主调度器是Nginx1 从调度器是Nginx2 ,只有当主调度器宕机之后,VIP1:192.168.40.66才切换到Nginx2上,所以Nginx1上显示VIP1:192.168.40.66是正确的,vip2:192.168.40.67 此时在Nginx1 上没有显示是因为Nginx1现在是VIP2的从调度服务,只有Nginx2 宕机之后VIP2才会切换到Nginx1上!

然后再查看Nginx2 上的vip,发现vip2的ip,这样就说明双主模式已经部署成功

检测:

使用VIP 192.168.40.66进行访问

使用VIP 192.168.40.67进行访问

当Nginx1宕机后,此时Nginx2上有两条VIP

使用不同VIP访问,依然成功访问

Original: https://www.cnblogs.com/Dfengshuo/p/9396732.html
Author: fs_Dong
Title: 搭建Nginx(haproxy)+keepalived+Tomcat双主高可用负载均衡

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585737/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • zenity,把shell加上图形界面

    有时自己写点小工具自己用,比较喜欢非图形界面的,可是有些应用还是弹出个东西来提醒一下,才能让你注意。 zenity是个很帅的东西,它用法可以参考它的–help ,这里不…

    Linux 2023年5月28日
    091
  • 算法小技巧 — 链表

    一、快慢指针 1、核心思想 【核心思想:】 采用双指针完成,一个指针永远比另一个指针稍快一点。 【常见案例:】 找到单链表的中间节点    环形链表 【单链表结构:】 class …

    Linux 2023年6月14日
    078
  • ThinkPHP5权限管理

    自己写的权限管理,大致思路:用户登陆成功之后,查出该用户的权限列表,并把权限列表存到session中,进入系统后,再判断该模块是否在session中,如果存在就说明有该权限,就显示…

    Linux 2023年6月7日
    098
  • Linux-shell

    shell 为注释 !执行脚本的 解释器 为bash 权限问题 remark 调试 bash -x man test 变量 —>默认必须全局变量 局部变量必须给local a…

    Linux 2023年6月7日
    083
  • GFS-Google 文件系统

    GFS分布式文件系统 简介 GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体…

    Linux 2023年6月13日
    093
  • go-select 机制

    select 的用法与 switch 语言非常类似,由 select 开始一个新的选择块,每个选择条件由 case 语句来描述。 与 switch 语句相比,select 有比较多…

    Linux 2023年6月13日
    097
  • MySQL提权 通过UDF

    UDF是什么 命令执行 文本写入 Example: 远程写入 反弹Shell 提权 UDF是什么 参考:https://www.cnblogs.com/litlife/p/9030…

    Linux 2023年6月6日
    0105
  • Redis集群搭建准备,了解一致性哈希算法和哈希槽

    一致性哈希是在哈希取余算法基础之上优化的,分布式缓存数据变动和映射问题,某个机器宕机了,分母数量改变了,自然取余数不对了。用于解决分布式缓存系统中的数据选择节点存储问题和数据选择节…

    Linux 2023年5月28日
    092
  • Putty&Psftp命令行实现自动登录

    | 0.18分钟 | 292.8字符 | 1、引言&背景 2、解决方案 3、声明与参考资料 | SCscHero | 2022/1/22 PM6:0 | 系列 | 已完成 …

    Linux 2023年5月27日
    0100
  • PYTORCH: 60分钟 | TENSORS

    Tensor是一种特殊的数据结构,非常类似于数组和矩阵。在PyTorch中,我们使用tensor编码模型的输入和输出,以及模型的参数。Tensor类似于Numpy的数组,除了ten…

    Linux 2023年6月16日
    0178
  • PhpCms V9调用指定栏目子栏目文章的方法

    PhpCms V9调用指定栏目子栏目文章的方法 第一种,直接写父类id {pc:content action=”lists” catid=”父类…

    Linux 2023年6月13日
    0108
  • 在linux中使用tcpdump抓包的方法:

    在linux中使用tcpdump抓包的方法: 1,运行下面命令来从所有网卡中捕获数据包: tcpdump -i any 2,从指定网卡中捕获数据包 tcpdump -i eth0 …

    Linux 2023年6月14日
    0127
  • Linux at命令详解

    大家好,我是良许。 生活中,我们有太多场景需要使用到闹钟,比如早上 7 点起床,下午 4 点开会,晚上 8 点购物,等等。 在 Linux 系统里,我们同样也有类似的需求。比如我们…

    Linux 2023年6月14日
    079
  • 我对二进制的理解

    理解进制的重要方法是类比我们熟知的十进制 10进制 一个正常的人类,拥有10根手指,每根手指代表1个信息,那么两双手掌便可表达10个信息。1, 2, 3, …, 10。…

    Linux 2023年6月7日
    058
  • Laxcus集群操作系统的分布计算模型

    分布计算模型,你把可以把它理解为分布式编程规范和计算机程序的组合。按照分布式编程规范和系统提供的分布式编程API接口,用户能够快速开发符合Laxcus集群操作系统要求的分布式应用软…

    Linux 2023年6月6日
    077
  • Zabbix-(1)安装

    环境: VMware Workstation Pro 16.0 版本 系统 Centos7 …

    Linux 2023年6月13日
    080
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球