keepalived+nginx实现niginx高可用,宕机自动重启
nginx作为http服务器,在集群中 用于接受客户单发送过来的请求,并且根据配置的策略将请求 转发给具体的哪台服务器

- 如果在nginx服务器使用轮询策略处理客户端的请求,出现了tomcat 宕机的情况下,例如:有两个请求,第一个请求轮询给了tomcat1,按照轮询的策略,当在来一个请求的时候,这条请求 将交个
tomcat2处理,此时 如果tomcat2 由于不知名的原因,宕机了,那这条请求 被分配到tomcat2,那这条请求 则会一直得不到响应,用户也不知道怎么回事。nginx提供了宕机容错机制,当tomcat2宕机以后,nginx可以通过配置超时,超过超时时间以后,则跳过当前服务器,轮询下一台服务器
在nginx.conf文件中 配置 proxy_connect_timeout 1 连接超过1s 则跳过当前轮询
- nginx作为http服务器,接受来自客户端的请求,然后根据负载均衡策略,反向代理到集群中的服务器。在集群的过程中,服务器是不会暴露真实的ip地址,集群服务器和nginx服务器是在同一个给局域网,对外暴露也只是nginx服务器的公网ip

- 在上面说了,如果是集群中的服务器宕机了,例如tomcat集群中有一台宕机了,nginx的宕机容错机制会跳过需要轮询的tomcat,直接轮询到下一台服务器。如果是nginx服务器宕机以后,又该如何解决,所有的请求都是经过nginx服务器 将请求发送给tomat,tomcat不会暴露真实的ip地址,所以此时的客户端请求根本无法访问到tomcat,此时所有的服务器都不能访问
- 在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高可用,宕机自动重启的更多相关文章
- Keepalived+Nginx+Tomcat 实现高可用Web集群
https://www.jianshu.com/p/bc34f9101c5e Keepalived+Nginx+Tomcat 实现高可用Web集群 0.3912018.01.08 20:28:59字数 ...
- Keepalived+Nginx解决方案实现高可用的API网关(nginx)
一. 采用Keepalived+Nginx解决方案实现高可用的API网关. 2.1 Nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP ...
- 搭建 Keepalived + Nginx + Tomcat 的高可用负载均衡架构
1 概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量 ...
- Keepalived + Nginx + Tomcat 的高可用负载均衡架构搭建
Keepalived + Nginx + Tomcat 的高可用负载均衡架构搭建 Nginx 是一个高性能的 HTTP反向代理服务器 Keepalived 是一个基于VRRP协议来实现的LVS服务高可 ...
- 搭建Keepalived + Nginx + Tomcat的高可用负载均衡架构
1 概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量 ...
- 采用Keepalived+Nginx解决方案实现高可用的API网关(下)
1 Keepalived 3.1Keepalived介绍 Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx ...
- Keepalived+Nginx+Tomcat配置高可用负载均衡系统示例
前言 此示例为keepalived+nginx+tomcat的基础配置示例,某些特定配置此例中不会出现,在示例中会用到三个虚拟机:两个纯命令行用于模拟服务端配置,一个带桌面环境的用于模拟客户端访问,这 ...
- Keepalived+Nginx搭建主从高可用并带nginx检测
应用环境:部分时候,WEB访问量一般,或者测试使用,利用Keepalived给Nginx做高可用即可满足要求. 测试环境: 搭建步骤: 1. 安装软件 在Nginx-A和Nginx-B上: ~]# ...
- keepalived+nginx实现HA高可用的web负载均衡
Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务的高可用.Keepalived ...
随机推荐
- 怎样检测TCP/UDP端口的连通性
1 TCP端口的连通性 TC端口的连通性,一般通过telnet检测: TCP协议是面向连接的,可以直接通过telnet命令连接 telnet host-ip port 2 UDP端口的连通性 因为公司 ...
- java编码与解码(一)
转:https://blog.csdn.net/heyanxi0101/article/details/80356870 java编码与解码(一) 编码表概述和常见的编码表 概述:有字符及其对应的数值 ...
- Linux 驱动——Button驱动2
button_drv.c驱动文件: #include <linux/module.h>#include <linux/kernel.h>#include <linux/f ...
- String与StringBuilder 区别
string 是不可变字符串.一旦创建不可修改,使用Insert.Remove.PadLeft.Replace.Splict等,返回都是新的字符串对象. StringBuilder 是可变字符串,大多 ...
- 初学node遇到的问题(慢慢补充)
一.看到菜鸟教程的Web模块运行client.js的时候遇到报错: E:\node\server>node client.js events.js:72throw er; // Unhandle ...
- Feign源码解析系列-那些注解们
开始 Feign在Spring Cloud体系中被整合进来作为web service客户端,使用HTTP请求远程服务时能就像调用本地方法,可见在未来一段时间内,大多数Spring Cloud架构的微服 ...
- power_save模式
802.11的电源管理模式分为:主动模式(Active Mode)和省电模式(Power Save Mode). Power Save模式的工作原理: Beacon讯框中包含了一组名为Traffic ...
- HDU - 6203:ping ping ping (DFS序 贪心)
pro:给定N+1个点的树,有M对关键点,现在让你破坏最少的点,使得M对关键点不连通. sol:贪心,我们把M对点按照LCA深度排序,每次破坏LCA. 如果一对点(u,v,lca),u-lca-v有点 ...
- Xcode 添加pch 文件
搜索prefix 找到 APPle Clang Language ---> 将precompile Prefix Header 改为YES ----> 再输入$(SRCROOOT)/Ot ...
- 记一次网络原因导致的mysql连接中断问题(druid)
date: 2018-04-19 21:00 tag: java,mysql,exception,mat,调试,jvm 工具: gceasy.io, MAT 线上系统出现一个诡异的bug,通过heap ...