nginx作为http服务器,在集群中 用于接受客户单发送过来的请求,并且根据配置的策略将请求 转发给具体的哪台服务器

  1. 如果在nginx服务器使用轮询策略处理客户端的请求,出现了tomcat 宕机的情况下,例如:有两个请求,第一个请求轮询给了tomcat1,按照轮询的策略,当在来一个请求的时候,这条请求 将交个
    tomcat2处理,此时 如果tomcat2 由于不知名的原因,宕机了,那这条请求 被分配到tomcat2,那这条请求 则会一直得不到响应,用户也不知道怎么回事。

    nginx提供了宕机容错机制,当tomcat2宕机以后,nginx可以通过配置超时,超过超时时间以后,则跳过当前服务器,轮询下一台服务器
    在nginx.conf文件中 配置 proxy_connect_timeout 1 连接超过1s 则跳过当前轮询

  2. nginx作为http服务器,接受来自客户端的请求,然后根据负载均衡策略,反向代理到集群中的服务器。在集群的过程中,服务器是不会暴露真实的ip地址,集群服务器和nginx服务器是在同一个给局域网,对外暴露也只是nginx服务器的公网ip
  3. 在上面说了,如果是集群中的服务器宕机了,例如tomcat集群中有一台宕机了,nginx的宕机容错机制会跳过需要轮询的tomcat,直接轮询到下一台服务器。如果是nginx服务器宕机以后,又该如何解决,所有的请求都是经过nginx服务器 将请求发送给tomat,tomcat不会暴露真实的ip地址,所以此时的客户端请求根本无法访问到tomcat,此时所有的服务器都不能访问
  4. 在nginx作为http服务器的时候,tomcat宕机了,nginx提供宕机容错机制,如果nginx服务器自己宕机了,则需要依靠一些重启脚本的工具,帮助监听nginx的活动状态,来保证nginx最大可能的处于正常运行的状态,使用keepalived的可以监听重启 nginx 保证nginx的高可用

    为了预防高并发,所以我们可以对tomcat集群,可以减轻单台服务器的压力。为了预防nginx宕机,导致外网无法访问tomcat,所以我们可以对nginx进行类似集群的操作,可以是一主一备,也可以是多主多备,根据实际用户情况,考虑成本的情况,采用了一主一备。当nginx主机宕机以后,keepalived会监控nginx 发现nginx宕机了,则会自动切换到备机nginx,reids的主从复制中哨兵机制会检测监控主reids是否宕机,如果宕机了,则从从redis选择一台来作为master,当原来的主机启动以后,主机不会切换,但是keepalived+nginx则不会,如果检测到主nginx启动以后,则继续用主nginx如何

5 .什么是keepalived

Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层、第4层和第7层交换机的功能。主要提供loadbalancing(负载均衡)和 high-availability(高可用)功能,负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs),而高可用是通过VRRP协议实现多台机器之间的故障转移服务。

使用keepalived+nginx实现nginx的高可用,宕机从启

1.需要两台或者两台以上的服务器

ip:192.168.31.144 (主nginx)

ip:192.168.31.179   (从nginx)

2.两台服务器都需要安装nginx和keepalived

Linux安装nginx可查看:https://www.cnblogs.com/taiyonghai/p/6728707.html

Linux安装keepalived

1. http://www.keepalived.org/download.html    下载keepalived安装包

2 将下载好的keepalived安装包 放到linux  /usr/local目录下

3  tar -zxvf keepalived-1.2.18

.

4    yum -y install openssl-deve 安装所需要的软件包

5   cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived

6   make&& make install

为了方便统一管理,将解压编译好的keepalived 配置文件进行地方修改

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/sbin/keepalived /sbin/

设置开机启动:chkconfig keepalived on

nginx 重启脚本:

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi

keepalived最主要的是掌握它的配置文件 主配置文件

! Configuration File for keepalived

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
interval 2 #检测时间间隔
weight -20 #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state MASTER #来决定主从
interface eno16777736 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须一样
mcast_src_ip 192.168.31.144 #填写本机ip
priority 100 # 节点优先级,主要比从节点优先级高
nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
authentication {
auth_type PASS
auth_pass 1111
}
# 将 track_script 块加入 instance 配置块
track_script {
chk_nginx #执行 Nginx 监控的服务
} virtual_ipaddress {
192.168.31.110 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
}
}

从配置文件

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
interval 2 #检测时间间隔
weight -20 #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state BACKUP #来决定主从
interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
virtual_router_id 122 # 虚拟路由的 ID 号, 两个节点设置必须一样
mcast_src_ip 192.168.31.197 #填写本机ip
priority 90 # 节点优先级,主要比从节点优先级高
nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
authentication {
auth_type PASS
auth_pass 1111
}
# 将 track_script 块加入 instance 配置块
track_script {
chk_nginx #执行 Nginx 监控的服务
} virtual_ipaddress {
192.168.31.110 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
}
}

两台服务器启动好以后,可以通过ip addr 查看到当前 主机的ip地址中包含了 虚拟的ip地址 如果主机宕机,则该虚拟ip会自动跑到备机

直接访问 虚拟ip地址:192.168.31.110

关闭主nginx以后以后:

会自动切换到备nginx上面去

以上 则完成了keepalived+nginx实现 高可用,nginx宕机以后 keepalived完成nginx的自动重启

keepalived+nginx实现niginx高可用,宕机自动重启的更多相关文章

  1. Keepalived+Nginx+Tomcat 实现高可用Web集群

    https://www.jianshu.com/p/bc34f9101c5e Keepalived+Nginx+Tomcat 实现高可用Web集群 0.3912018.01.08 20:28:59字数 ...

  2. Keepalived+Nginx解决方案实现高可用的API网关(nginx)

    一. 采用Keepalived+Nginx解决方案实现高可用的API网关. 2.1 Nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP ...

  3. 搭建 Keepalived + Nginx + Tomcat 的高可用负载均衡架构

    1 概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量 ...

  4. Keepalived + Nginx + Tomcat 的高可用负载均衡架构搭建

    Keepalived + Nginx + Tomcat 的高可用负载均衡架构搭建 Nginx 是一个高性能的 HTTP反向代理服务器 Keepalived 是一个基于VRRP协议来实现的LVS服务高可 ...

  5. 搭建Keepalived + Nginx + Tomcat的高可用负载均衡架构

    1 概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量 ...

  6. 采用Keepalived+Nginx解决方案实现高可用的API网关(下)

    1 Keepalived 3.1Keepalived介绍 Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx ...

  7. Keepalived+Nginx+Tomcat配置高可用负载均衡系统示例

    前言 此示例为keepalived+nginx+tomcat的基础配置示例,某些特定配置此例中不会出现,在示例中会用到三个虚拟机:两个纯命令行用于模拟服务端配置,一个带桌面环境的用于模拟客户端访问,这 ...

  8. Keepalived+Nginx搭建主从高可用并带nginx检测

    应用环境:部分时候,WEB访问量一般,或者测试使用,利用Keepalived给Nginx做高可用即可满足要求. 测试环境:   搭建步骤: 1. 安装软件 在Nginx-A和Nginx-B上: ~]# ...

  9. keepalived+nginx实现HA高可用的web负载均衡

    Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务的高可用.Keepalived ...

随机推荐

  1. Fescar: Fast & Easy Commit And Rollback

    Fescar is an easy-to-use, high-performance, java based, open source distributed transaction solution ...

  2. 关于查询中查询无果,也不报错,inpout标签中的value属性为‘ ’的判断问题

    首先当我们标签中vlue属性可能为' '时,我们一定要在后端进行判断过滤,不然查询会什么都查不出来的,遇到的问题如下 例子如下: 这是一个easyui 中的下拉选,效果如下 当我们默认查询全部时,后台 ...

  3. 如何开发NPM包

    创建包目录 D:\>mkdir mypackage && cd mypackage D:\mypackage>npm init --yes 进入mypackage目录,你会 ...

  4. WEB学习笔记7-样式与结构分离

    CSS样式应用于HTML总共4种样式: (1)在HTML页面中链接一个CSS文件 文件以link形式添加到<head>部分,在link中可以设置media属性来表明样式使用的场景.例如,m ...

  5. 搭建QT环境

    开始使用QT时,环境配置好了,以后才不会有这方面的麻烦,所以第一步,把自己的工作环境搭建好! 下面是我的环境搭建过程,留个记录,也为了后来者能少走一些弯路. 注:本人的系统是WIN7x64位的,其他系 ...

  6. MySQL中MyISAM与InnoDB的主要区别对比

    特征 MyISAM InnoDB 聚集索引 否 是 压缩数据 是(仅当使用压缩行格式时才支持压缩MyISAM表.使用压缩行格式和MyISAM的表是只读的.) 是 数据缓存 否 是 加密数据 是(通过加 ...

  7. Stackoverflow热门问题

    1. JavaScript如何重定向到其他网页 如何使用JavaScript将用户从一个网页重定向到另一个网页? 2. JavaScript闭包是如何工作的 只知道JavaScript闭包的概念,但是 ...

  8. Visual C++ 6.0中if的简单用法

    # include<stdio.h> int main (void) { > ) printf("AAAA"); printf("BBBB") ...

  9. android app demo

    package jczb.shoping.model; import java.io.Serializable; import android.R.string; //登录所需要的字段信息 publi ...

  10. idea打开dashboard

    1.编辑workspace.xml文件,搜索 “RunDashboard” 节点 2.在component节点下增加option <option name="configuration ...