Nginx与keepalived实现集群

提醒一下:下面实例讲解是在mac虚拟机里的Ubuntu系统演示的;

Nginx与keepalived实现集群实现的效果

两台服务器都安装Nginx与keepalived:
master服务器的ip(192.168.200.2)
backup服务器的ip(192.168.200.4)
将 master服务器Nginx与keepalived都停掉,在 backup服务器里的浏览器输入http://192.168.188.100,访问Nginx首页
备注:192.168.188.100是keepalived的虚拟ip

第一步:准备两台服务器,示例如下图所示

在这里插入图片描述

第二步:给两台服务器安装Nginx

  1. 在终端里输入: su root 切换到root用户角色方便后面输入指令执行操作,如果提示输入密码错误,退出,在终端里输入 sudo passwd 按回车键 输入密码,成功后再输入 su root 切换到root角色;
  2. 安装nginx.:终端里输入apt-get install nginx, 如果没有切换到root , 输入sudo apt-get install nginx
  3. 启动Nginx:终端里输入service nginx start
  4. 在浏览器里输入服务器的ip地址验证Nginx启动成功
    master服务器在这里插入图片描述
    backup服务器在这里插入图片描述

第三步:给两台服务器安装keepalived

  1. 在终端里输入:apt-get install keepalived,如果没有切换到root , 输入sudo apt-get install keepalived
  2. keepalived安装完之后切换到etc目录,在终端里输入:cd /etc,接着输入:ls,如下图所示,
    在这里插入图片描述
  3. 切换到keepalived目录:cd keepalived, ls查看keepalived里的文件,如果里面没有keepalived.conf和check_nginx.sh文件,分别输入touch keepalived.conf,touch check_nginx.sh 即创建两个对应的文件。
    在这里插入图片描述
  4. 编辑keepalived.conf:终端里输入:vi keepalived.conf
    提醒:如果没有vi指令,需要先安装vim, 在终端里输入apt-get install vim
    在这里插入图片描述
    查看master服务器的网卡名称:输入ifconfig
    在这里插入图片描述

master服务器的keepalived.conf 内容如下

global_defs {
   router_id LVS_MASTER  #名称标记为master,名字随便取
   vrrp_gna_interval 0
}

#加入周期性检测nginx服务脚本的相关配置
vrrp_script check_nginx{
    script "/etc/keepalived/check_nginx.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                           #(检测脚本执行的间隔,单位是秒)
}

vrrp_instance VI_1 {
    state MASTER #指定当前节点为master节点,只能有一个master,其余只能是backup
    interface ens33 #绑定此虚拟路由使用的网卡的名称,使用ifconfig或者ip addr查看
    virtual_router_id 99 #指定虚拟路由id,虚拟路由的唯一标识,范围是0-255,mater和backup节点需要指定一样的,相同id为一组
    priority 200 #指定当前结点的优先级,master节点要大于backup节点。
    advert_int 1 #指定发送VRRP通告的间隔,单位是秒
    virtual_ipaddress {
        192.168.188.100 #指定虚拟ip,自定义的虚拟ip
    }
	
	#添加跟踪(执行脚本)
    track_script{
        check_nginx
    }
}

编辑完keepalived.conf 内容,在终端里按住键盘shift+:(冒号)键,然后输入wq,即退出并保存

backup服务器的网卡名称
在这里插入图片描述

backup服务器的keepalived.conf 内容如下

global_defs {
   router_id LVS_BACKUP  #名称标记为BACKUP,只要不是MASTER,名字随便取
   vrrp_gna_interval 0
}

#加入周期性检测nginx服务脚本的相关配置
vrrp_script check_nginx{
    script "/etc/keepalived/check_nginx.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                           #(检测脚本执行的间隔,单位是秒)
}

vrrp_instance VI_1 {
    state BACKUP #指定当前节点为master节点,只能有一个master,其余只能是backup
    interface ens33 #绑定此虚拟路由使用的网卡的名称,使用ifconfig或者ip addr查看
    virtual_router_id 99 #指定虚拟路由id,虚拟路由的唯一标识,范围是0-255,mater和backup节点需要指定一样的,相同id为一组
    priority 199 #指定当前结点的优先级,master节点要大于backup节点。
    advert_int 1 #指定发送VRRP通告的间隔,单位是秒
    virtual_ipaddress {
        192.168.188.100 #指定虚拟ip,自定义的虚拟ip, 注意一定是和master的服务器里虚拟ip一样的
    }
	
	#添加跟踪(执行脚本)
    track_script{
        check_nginx
    }
}
  1. 两台服务器编辑check_nginx.sh:终端里输入:vi check_nginx.sh
    在这里插入图片描述

check_nginx.sh内容

#!/bin/bash
#检测nginx是否启动了
A=`ps -C nginx --no-header |wc -l`        
if [ $A -eq 0 ];then    #如果nginx没有启动就启动nginx                        
      /root/ydy/nginx/sbin/nginx                #重启nginx,也可以使直接监听应用服务
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移
              killall keepalived                    
      fi
fi

第四步:启动两台服务器的keepalived

在master服务器终端里输入service keepalived start
查看绑定的网卡
在这里插入图片描述
验证keepalived虚拟ip调用,在master服务器的浏览器输入http://192.168.188.100
在这里插入图片描述

第五步:关闭master服务器的Nginx和keepalived,在 backup服务器里的浏览器输入http://192.168.188.100,访问Nginx首页

  1. 在master服务器终端里输入service keepalived stop
  2. 在master服务器终端里输入service nginx stop
  3. 在 backup服务器里的浏览器输入http://192.168.188.100
    在这里插入图片描述

以上就是Nginx与keepalived实现集群的全部内容讲解。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Mybatis的一二级缓存】

缓存是什么? 缓存其实就是存储在内存中的临时数据,这里的数据量会比较小,一般来说,服务器的内存也是有限的,不可能将所有的数据都放到服务器的内存里面,所以, 只会把关键数据放到缓存中&#x…

C# 命名管道NamedPipeServerStream使用

NamedPipeServerStream 是 .NET Framework 和 .NET Core 中提供的一个类,用于创建和操作命名管道的服务器端。命名管道是一种在同一台计算机上或不同计算机之间进行进程间通信的机制。 命名管道允许两个或多个进程通过共享的管道进行通信。其中一个进程充当服务器&…

RNN预测下一句文本简单示例

根据句子前半句的内容推理出后半部分的内容,这样的任务可以使用循环的方式来实现。 RNN(Recurrent Neural Network,循环神经网络)是一种用于处理序列数据的强大神经网络模型。与传统的前馈神经网络不同,RNN能够通过其…

独享http代理安全性是更高的吗?

不同于共享代理,独享代理IP为单一用户提供专用的IP,带来了一系列需要考虑的问题。今天我们就一起来看看独享代理IP的优势,到底在哪里。 我们得先来看看什么是代理IP。简单来说,代理服务器充当客户机和互联网之间的中间人。当你使用…

C/C++ - 面向对象编程

面向对象 面向过程编程: 数据和函数分离:在C语言中,数据和函数是分开定义和操作的。数据是通过全局变量或传递给函数的参数来传递的,函数则独立于数据。函数为主导:C语言以函数为主导,程序的执行流程由函数…

复式记账的概念特点和记账规则

目录 一. 复式记账法二. 借贷记账法三. 借贷记账法的记账规则四. 复试记账法应用举例4.1 三栏式账户举例4.2 T型账户记录举例4.3 记账规则验证举例 \quad 一. 复式记账法 \quad 复式记账法是指对于任何一笔经济业务都要用相等的金额,在两个或两个以上的有关账户中进…

GIT使用,看它就够了

一、目的 Git的熟练使用是一个加分项,本文将对常用的Git命令做一个基本介绍,看了本篇文章,再也不会因为不会使用git而被嘲笑了。 二、设置与配置 在第一次调用Git到日常的微调和参考,用得最多的就是config和help命令。 2.1 gi…

4核16G幻兽帕鲁服务器性能测评,真牛

腾讯云幻兽帕鲁服务器4核16G14M配置,14M公网带宽,限制2500GB月流量,系统盘为220GB SSD盘,优惠价格66元1个月,277元3个月,支持4到8个玩家畅玩,地域可选择上海/北京/成都/南京/广州,腾…

第十六章 Spring cloud stream应用

文章目录 前言1、stream设计思想2、编码常用的注解3、编码步骤3.1、添加依赖3.2、修改配置文件3.3、生产3.4、消费3.5、延迟队列3.5.1、修改配置文件3.5.2、生产端3.5.2、消息确认机制 消费端 前言 https://github.com/spring-cloud/spring-cloud-stream-binder-rabbit 官方定…

GPT-SoVITS 本地搭建踩坑

GPT-SoVITS 本地搭建踩坑 前言搭建下载解压VSCode打开安装依赖包修改内容1.重新安装版本2.修改文件内容 运行总结 前言 传言GPT-SoVITS作为当前与BertVits2.3并列的TTS大模型,于是本地搭了一个,简单说一下坑。 搭建 下载 到GitHub点击此处下载 http…

【网站项目】基于SSM的246品牌手机销售信息系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

蓝桥杯——每日一练(简单题)

题目 给定n个十六进制正整数,输出它们对应的八进制数。 解析 一、通过input()函数获得需要转化的数字个数 二、for循环的到数字 三、for循环先将16进制转化为10进制,再输出8进制 代码 运行结果

直线拟合(支持任意维空间的直线拟合,附代码)

文章目录 一、问题描述二、推导步骤三、 M A T L A B MATLAB MATLAB代码 一、问题描述 给定一系列的三维空间点 ( x i , y i , z i ) , i 1 , 2 , . . . , n (x_i,y_i,z_i),i1,2,...,n (xi​,yi​,zi​),i1,2,...,n,拟合得到直线的方程。本文的直线拟合方法适用于任…

如何用一根网线和51单片机做简单门禁[带破解器]

仓库:https://github.com/MartinxMax/Simple_Door 支持原创是您给我的最大动力… 原理 -基础设备代码程序- -Arduino爆破器程序 or 51爆破器程序- 任意选一个都可以用… —Arduino带TFT屏幕——— —51带LCD1602——— 基础设备的最大密码长度是0x7F,因为有一位…

10.Golang中的map

目录 概述map实践map声明代码 map使用代码 结束 概述 map实践 map声明 代码 package mainimport ("fmt" )func main() {// 声明方式1var map1 map[string]stringif map1 nil {fmt.Println("map1为空")}// 没有分配空间,是不能使用的// map…

Vulnhub-dc6

信息收集 # nmap -sn 192.168.1.0/24 -oN live.port Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-25 14:39 CST Nmap scan report for 192.168.1.1 Host is up (0.00075s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 192.168.1.2…

IS-IS:10 ISIS路由渗透

ISIS的非骨干区域,无明细路由,容易导致次优路径问题。可以引入明细路由。 在IS-IS 网络中,所有的 level-2 和 level-1-2 路由器构成了一个连续的骨干区域。 level-1区域必须且只能与骨干区域相连,不同 level-1 区域之间不能直接…

.NET高级面试指南专题一【委托和事件】

在C#中,委托(Delegate)和事件(Event)是两个重要的概念,它们通常用于实现事件驱动编程和回调机制。 委托定义: 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个…

SpringMVC第六天(拦截器)

概念 拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行 作用: 在指定的方法调用前后执行预先设定的代码 阻止原始方法的执行 拦截器与过滤器的区别 归属不同:Filter属于Servlet技术,I…

递归方法猴子吃桃问题

public class A {public static void main(String[] args) {System.out.println("第一天有:"f(1)"个");System.out.println("第二天有:"f(2)"个");System.out.println(".....");System.out.println(&…