主从模式就是一台机器提供服务,另一台机器作为备份机,当主机的服务停止时,备份机立刻接替主机的服务。

安装

  • 安装nginx
wget http://nginx.org/download/nginx-1.19.6.tar.gz
tar -zxvf nginx-1.19.6.tar.gz
cd nginx-1.19.6 # 编译安装
./configure
make && make install
  • 安装keepalived

    编译安装会出错,直接使用yum安装
yum install -y keepalived

nginx 负载均衡

一共两个tomcat服务,分别位于两台服务器上。用nginx负责两个服务的负载均衡。再用轮询的方式。映射关系如下:

  • 注意tomcat的服务名称不能含有下划线,比如 tomcat_servers ,否则会报错。
  • 可以更改 webapps/ROOT/index.jsp文件,部署成功后,访问192.168.158.3可以看到内容在两个tomcat之间切换。
worker_processes  1;

events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; sendfile on;
keepalive_timeout 65; # 配置tomcat服务
upstream tomcatservers{
server 192.168.158.3:8080 weight=1; # 访问服务的权重
server 192.168.158.4:8080 weight=2;
} server {
listen 80;
server_name localhost; location / {
root html;
index index.html index.htm;
proxy_pass http://tomcatservers; # 配置代理关系
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

keepalived 实现映射虚拟vip

通过映射一个虚拟的ip(vip)到已有的两台机器上,实现ip的“飘移”。虚拟ip本身不代表任何服务器,正常情况下vip映射到主机上,当主机停止服务后,vip就映射到备份机上。

  • 修改 /etc/keepalived/keepalived.conf 配置文件
! Configuration File for keepalived

# 检查nginx状态的脚本
vrrp_script ckeck_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 2
weight 2
} # 配置虚拟ip
vrrp_instance VI_1 {
state MASTER # 主机-MASTER,备份机-BACKUP
interface ens33 # 网卡名称
virtual_router_id 51 # 同一组服务用id相同
priority 100 # 主机的优先级应高于backup
advert_int 1 # master和backup的同步时间
authentication { # 认证信息
auth_type PASS
auth_pass 1111
}
track_script { # 上面配置的脚本
ckeck_nginx
}
virtual_ipaddress { # 配置虚拟ip,可配置多个,一行一个
192.168.158.10
192.168.158.20
}
}
  • backup机器的配置如下,和master基本一致。
! Configuration File for keepalived

vrrp_script ckeck_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 2
weight 2
} vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
ckeck_nginx
}
virtual_ipaddress {
192.168.158.10
192.168.158.20
}
}
  • 这里用到的检查脚本如下,他用来检查nginx的状态,当nginx停止服务后,尝试重启服务。如果启动失败,就停止keepalived服务。重新映射vip到backup机器上。
#!/bin/bash
#检测nginx是否启动了
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then #如果nginx没有启动就启动nginx
systemctl start nginx #重启nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #nginx重启失败,则停掉keepalived服务,进行VIP转移
killall keepalived
fi
fi
  • ip add show ens33 查看网卡的vip。可以看到
[root@twilight0319 keepalived]# ip add show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:67:8a:94 brd ff:ff:ff:ff:ff:ff
inet 192.168.158.4/24 brd 192.168.158.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.158.10/32 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.158.20/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe67:8a94/64 scope link
valid_lft forever preferred_lft forever

另一台机器就不会有vip,因为vip只会映射到一个ip上。当主机的keepalived服务停止后,会自动将vip映射到另一台机器上。

[root@twilight0319 keepalived]# ip add show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:6a:a6:17 brd ff:ff:ff:ff:ff:ff
inet 192.168.158.3/24 brd 192.168.158.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe6a:a617/64 scope link
valid_lft forever preferred_lft forever

nginx+keepalived实现主从模式双机热备份的更多相关文章

  1. 配置nginx + keepalived 双主模式(双机互为主备)

  2. nginx+keepalived实现主从高可用

    设备: 主:192.168.200.122 从:192.168.200.124 安装:两台都分别安装nginx以及keepalived 两台机步骤一致一主一从 安装nginx的依赖包 [root@lo ...

  3. Nginx知多少系列之(十四)Linux下.NET Core项目Nginx+Keepalived高可用(主从模式)

    目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.负载均衡策略 8.加权轮询(round rob ...

  4. nginx+keepalived高可用及双主模式

    高可用有2中方式. 1.Nginx+keepalived 主从配置 这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候, ...

  5. Nginx系列篇三:linux中Nginx+keepalived做一个高可用的主从配置

    建议:先阅读搭建Nginx负载均衡之后再看此篇 备注: Nginx+keepalived的高可用有两种方式 一.主从配置 二.双主热备配置[下一篇] 准备: 标配四台服务器 Master:192.16 ...

  6. Nginx+keepalived(高可用主备模式)

    Nginx+keepalived(高可用主备模式) 环境:centos6.7 准备:两台服务器(虚拟机).两台应用(Tomcat).Nginx.keepalived server1:192.168.2 ...

  7. nginx+keepalived高可用及双主模式【h】

    高可用有2中方式. 1.Nginx+keepalived 主从配置 这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候, ...

  8. Nginx+Keepalived实现 转载

    一.Keepalived简介 keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务 ...

  9. 架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层

    1.概述 前两遍文章中,我们一直在说后文要介绍Nginx + Keepalived的搭建方式.这篇文章开始,我们就来兑现前文的承诺,后续的两篇文章我们将介绍Nginx + Keepalived和 LV ...

随机推荐

  1. gorm tips

    约定的列名 type User struct { ID uint // 列名是 `id` Name string // 列名是 `name` Birthday time.Time // 列名是 `bi ...

  2. DECIMAL 数据处理原理浅析

    注:本文分析内容基于 MySQL 8.0 版本 文章开始前先复习一下官方文档关于 DECIMAL 类型的一些介绍: The declaration syntax for a DECIMAL colum ...

  3. 使用自定义隐式转换快速创建失败Result

    系统要求方法都返回 Result 结果,通常我们会如此定义一个 Result 1 public class Result<T> 2 { 3 public virtual int Code ...

  4. mac怎么清理DNS缓存

    可以通过Mac系统启动台功能,在其他页面打开终端进行操作即可. 1.打开终端 2.进入终端界面,输入sudo killall -HUP mDNSResponder命令执行即可.

  5. RabbitMQ 入门系列:8、扩展内容:接收信息时:可否根据RoutingKey过滤监听信息,答案是不能。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  6. 轻量级消息队列 Django-Q 轻度体验

    前言 最近做的这个项目(基于Django),需要做个功能,实现定时采集车辆定位. 这让我想起来几年前那个OneCat项目,当时我用的是Celery这个很重的组件 Celery实在是太重了,后来我做公众 ...

  7. 抛砖系列之git仓库拆分工具git-filter-repo

    最近负责把团队内的git仓库做了一次分拆,解锁一个好用的工具git-filter-repo,给大伙抛砖一波,希望以后遇到类似场景时可以信手拈来. 背景 笔者团队目前是把业务相关的java项目都放到了一 ...

  8. JVM之HotSpot虚拟机是如何发起内存回收的? 转载

    1.背景 在上一节中,我们掌握了垃圾收集的一些算法,也弄明白了分代回收的原理, 那么HotSpot虚拟机是如何发起内存回收的? 2.如何找到GC Roots根节点(枚举根节点) 从可达性分析中GC R ...

  9. KingbaseES 客户端工具安装

    关键字: KingbaseES.Java.ClientTools 一.安装前准备 1.1 软件环境要求 金仓数据库管理系统KingbaseES V8.0支持微软Windows 7.Windows XP ...

  10. 【ACG】博主在专栏更新内容后,及时通知关注他的用户去阅读

    ​ 业务场景 当用户打开应用时,系统发送Push消息给用户,向用户推荐博主信息.用户关注博主后,将保存用户的订阅信息,当关注的博主更新内容时,向订阅的用户发送短信,提醒用户及时查看最新内容.从而持续增 ...