Keepalived+Nginx高可用案例(抢占式与非抢占式)
(1)下载安装Keepalived源码包
在服务器上解压
tar -xf keepalived-2.2.8.tar.gz
安装相关前置依赖
yum -y install gcc gcc-c++
使用configure工具进行安装
./configure --sysconfdir=/etc --prefix=/usr/local/keepalived --sbindir=/usr/sbin --bindir=/usr/bin
--sysconfdir=DIR #指定配置文件位置
--prefix=DIR #指定安装路径
--sbindir=DIR 指定命令位置,后面不需再配置环境变量
使用make make install进行安装
make && make install
(2)配置Keepalived在业务中的参数
本次操作为Keepalived单VIP抢占式配置,即两个虚拟机只有一台绑定VIP对外提供服务,且在一台主机失能时VIP将漂移到备机上接收流量,当主机恢复时VIP将再次切换
主机配置
global_defs {
router_id logincas1 ### router_id为全局定义当前节点的id,一般为唯一
enable_script_security
script_user root ##定义执行脚本的角色
vrrp_version 2
}
## 定义脚本
vrrp_script chk_nginx {
script "/usr/local/nginx-check.sh" ##脚本路径
interval 2 ##检测间隔
timeout 4 ##失败间隔,失败两次通信则失败
rise 4 ##成功四次则成功
fall 2 ##失败两次则切换
weight -50 ##脚本检测失败则扣减权重
}
vrrp_instance VI_1 { ##模块配置
version 2
state MASTER ##抢占式的情况下主机需设置为MASTER,备机为BACKUP
interface eth0 ##指定VIP流量的网卡
virtual_router_id 51 ##虚拟路由ID
priority 100 ##优先级,备机应比主机低一些
advert_int 1 ##VRRP心跳包发送间隔
authentication { ##权限认证
auth_type PASS ##类型:密码
auth_pass 2222
}
virtual_ipaddress {
172.29.184.220/24 ##VIP配置
}
track_script { ##脚本定义
chk_nginx
}
}
接下来需要补充完善 nginx-check.sh
思路是通过去检测是否有Nginx进程,检测到没有nginx进程时先执行Nginx的重启操作,一秒之后再次检测,如果Nginx进程还是不存在则关闭Keepalived,使VIP漂移到另一个节点
#!/bin/bash
if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then
systemctl restart nginx
sleep 1
if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then
systemctl stop keepalived
fi
fi
遇到的一些问题
当在脚本里使用ps aux | grep nginx | grep -v grep | wc -l去检测Nginx进程时发现脚本一直未生效,合理怀疑是Keepalived运行用户在执行这条命令时存在权限问题(脚本不能配置权限为777,Keepalived会警告并失效)
本次使用的高可用架构为单VIP架构,后续也可以尝试双VIP架构,即互为主备机,配置两个VIP模块,可以选择使用一个VIP接收流量,也可以使用两个VIP来监听流量,看业务的需求。
在单VIP高可用架构中,如果想要主机恢复后VIP不漂移到主机上,可以将主机的state也设置为BACKUP,但优先级需要比备机高一些,以确保初始状态VIP是绑定在主机上的
Keepalived+Nginx高可用案例(抢占式与非抢占式)的更多相关文章
- Nginx(四):Keepalived+Nginx 高可用集群
Keepalived+Nginx 高可用集群 (主从模式) 集群架构图 安装keepalived [root@localhost ~]# yum install -y keepalived 查看状态 ...
- Keepalived+Nginx高可用实例
Keepalived+Nginx高可用实例 注意事项: 1.VIP不需要在服务器网络配置文件中配置. 2.nginx主不可用时,需要kill掉nginx主的keepalived服务,这样才可以实现VI ...
- Keepalived+nginx高可用
这种方法会把Keepalived进程结束掉,在教育机构学习到的方法,我个人对这种方法不认可. 参考: https://www.cnblogs.com/gshelldon/p/14504236.html ...
- LVS+KeepAlived+Nginx高可用实现方案
文章目录概念LVSKeepAlived为什么要使用准备软件安装KeepAlived 安装源码安装yum安装服务启动.重启.关闭安装ipvsadmnginx安装防火墙(iptables)防火墙配置(方式 ...
- centos安装与配置keepalived+nginx高可用
一.安装启动keepalived 1.下载keepalived 在centos系统中,用wget下载最新版本: mkdir tool cd tool wget https://www.keepaliv ...
- Keepalived+Nginx高可用集群
Keepalived简介 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替 ...
- keepalived+nginx 高可用集群
一.什么是高可用? nginx做负载均衡,能达到分发请求的目的,但是不能很好的避免单点故障. 1.nginx集群单点问题 分发器宕机怎么处理? 假如nginx服务器挂掉了,那么所有的服务也会跟着瘫 ...
- keepalived+nginx高可用实现
1.keepalived介绍 keepalived最初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了实现高可用的VRRP功能.keepalived除了能 ...
- linux下实现keepalived+nginx高可用
1 nginx负载均衡高可用 1.1 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务, ...
- keepalived+nginx高可用负载均衡环境搭建
上篇说道keepalived的环境搭建,本来keepalived结合lvs更有优势,但是也可以结合nginx来使用.下面接着说下nginx的环境搭建 环境信息: nginx(master) 192. ...
随机推荐
- Java的readBytes是怎么实现的?
1.前言 众所周知,Java是一门跨平台语言,针对不同的操作系统有不同的实现.本文从一个非常简单的api调用来看看Java具体是怎么做的. 2.源码分析 从FileInputStream.java中看 ...
- EchoMode的显示效果
1 import sys 2 from PyQt5.QtWidgets import QApplication, QLineEdit, QWidget, QFormLayout 3 4 class l ...
- 一条命令突破Windows限制,暂定更新时间至3000天
在系统界面上最长也就只能延期 35 天,而且 35 天以后一定要更新了才能继续暂停.不过,我找到了一段能延长暂停时间的代码 reg add "HKEY_LOCAL_MACHINE\SOFTW ...
- 【技术积累】Vue.js中的CSS过渡【一】
CSS过渡是什么 在Vue中,可以使用<transition>组件来实现CSS过渡效果.CSS过渡是指在元素的状态发生改变时,通过添加或移除CSS类来实现平滑的过渡效果. <tran ...
- mall:redis项目源码解析
目录 一.mall开源项目 1.1 来源 1.2 项目转移 1.3 项目克隆 二.Redis 非关系型数据库 2.1 Redis简介 2.2 分布式后端项目的使用流程 2.3 分布式后端项目的使用场景 ...
- linux cat查看文件使用grep实现多条件多场景过滤
转载请注明出处: 在实际应用过程中,我们查看日志文件时,经常会根据一定自定义的词语过滤,查看所有相关的数据行.最近遇到用cat查看文件,需要根据多关键词进行不同的场景过滤,在这里进行一个简单的总结: ...
- 《数据结构-C语言》单链表
@ 目录 单链表 结构定义 初始化 建立 清空 求表长 判断是否为空表 取值 查找 插入 删除 销毁 遍历打印 测试 单链表 结构定义 #include <stdio.h> #includ ...
- 在本地运行Kusto服务器
我喜欢Kusto (或商用版本 Azure Data Explorer,简称 ADX) 是大家可以有目共睹的,之前还专门写过这方面的书籍,请参考 大数据分析新玩法之Kusto宝典, 很可能在今年还会推 ...
- 从达梦数据库到Oracle数据库的性能测试数据迁移和导入优化
为了在同样的数据基础上对比达梦数据库和Oracle数据库的业务性能,我们需要将达梦数据库的数据导入到Oracle数据库中.本文将提供一种思路来解决导入过程中遇到的问题及存在问题记录. 数据库版本信息 ...
- [Maven] maven插件系列之maven-shade-plugin
[Maven] maven插件系列之maven-shade-plugin 1 插件简述/Plugin Overview 1.1 定义与目的/Definition & Goals Officia ...