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,其余只能是backupinterface 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,其余只能是backupinterface 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实现集群的全部内容讲解。

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

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

相关文章

LeetCode.11. 盛最多水的容器

题目 题目链接 分析 这道题的意思就是让我们找两个下标,以这两个下标组成的线为底,高度取这两个位置对应数字的最小值为高,组成一个长方形,求长方形最大的面积可以为多少。 暴力的解法是什么??&#xf…

环形链表的检测与返回

环形链表 王赫辰/c语言 - Gitee.com 快慢指针的差距可以为除一以外的数吗?不可以如果差奇数则无法发现偶数环,是偶数无法发现奇数环,本题思路为指针相遇则为环,而以上两种情况会稳定差一,导致指针永不相遇 最终返回…

【C++中STL】list链表

List链表 基本概念构造函数赋值和交换大小操作插入和删除数据存取反转和排序 基本概念 将数据进行链式存储 链表list是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的,链表是由一系列结点组成,结点的组…

深度强化学习(王树森)笔记04

深度强化学习(DRL) 本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL 源代码链接:https://github.c…

字符串和C预处理器

本文参考C Primer Plus第四章学习 文章目录 常量和预处理器const限定符 1. 常量和预处理器 有时,在程序中要使用常量。例如,可以这样计算圆的周长: circumference 3.14159 * diameter; 这里,常量3.14159 代表著名的常量 pi(π)。…

5|领域建模实践(上):怎样既准确又深刻地理解业务知识?

上节课咱们完成了事件风暴,梳理了系统的行为需求。但你可能也发现了,其实还有些微妙的业务概念还没有澄清,这就要靠领域建模来完成了。 建立领域模型是 DDD 的核心。要建好领域建模,需要理论和实践相结合。由于我们的模型有一定的…

自动化测试业务价值思考和观点

对于自动化测试的价值如何体现,我的思考和观点主要有如下2点: 基于团队内部,从解决问题角度出发的技术落地实践和数据度量;基于跨团队合作,从KPI/OKR角度,用度量的数据来支撑你的价值传递; 接下来我会基于…

Rabbitmq调用FeignClient接口失败

文章目录 一、框架及逻辑介绍1.背景服务介绍2.问题逻辑介绍 二、代码1.A服务2.B服务3.C服务 三、解决思路1.确认B调用C服务接口是否能正常调通2.确认B服务是否能正常调用A服务3.确认消息能否正常消费4.总结 四、修改代码验证1.B服务异步调用C服务接口——失败2.将消费消息放到C…

二叉树的最近公共祖先,二叉搜索树的最近公共祖先(同一个思路)

目录 二叉树的最近公共祖先方法一(时间复杂度O(N^2))方法二(时间复杂度O(N)) 二叉搜索树的最近公共祖先 二叉树的最近公共祖先 题目链接   二叉树的最近公共祖先   给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。  …

[BUUCTF]-PWN:babyfengshui_33c3_2016解析

又是一道堆题,先看保护 关键信息是32位,没开pie 直接看ida 大致是alloc创建堆块,free释放堆块,show查看堆块内容,fill填充堆块内容 其他的都没啥关键的要讲,但alloc那里非常需要解析一下 解释如上图 再具…

网站将http升级到https大概要多少费用

随着网络安全意识的不断提升,越来越多的网站正从传统的HTTP协议转向更安全的HTTPS协议。这一转变的核心在于部署SSL(Secure Sockets Layer)或TLS(Transport Layer Security)证书,以实现数据加密传输&#x…

phar反序列化漏洞

基础: Phar是一种PHP文件归档格式,它类似于ZIP或JAR文件格式,可以将多个PHP文件打包成一个单独的文件(即Phar文件)。 打包后的Phar文件可以像普通的PHP文件一样执行,可以包含PHP代码、文本文件、图像等各…