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 ...
随机推荐
- Go Lang
IDE: https://www.jetbrains.com/products.html?fromMenu#type=ide Study: http://www.runoob.com/go/go-en ...
- aiohttp AppRunner的用法
参考廖雪峰的aiohttp教程,会出现两个DeprecationWarning, loop argument is deprecated Application.make_handler(...) i ...
- yii2.0 curd操作
$customer=new Customer();//插入操作 $customer->name='小熊'; $customer->save(); //修改操作 $model=Custome ...
- 2018-2019-2 网络对抗技术 20165228 Exp6 信息搜集与漏洞扫描
2018-2019-2 网络对抗技术 20165228 Exp6 信息搜集与漏洞扫描 回答问题 哪些组织负责DNS,IP的管理. 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务 ...
- 禁止用su切换到root
http://jie388.blog.51cto.com/1433454/920492
- POJ - 1222: EXTENDED LIGHTS OUT (开关问题-高斯消元)
pro:给定5*6的灯的状态,如果我们按下一个灯的开关,它和周围4个都会改变状态.求一种合法状态,使得终状态全为关闭: sol:模2意义下的高斯消元. 终于自己手打了一个初级板子. #include& ...
- Measuring Text Difficulty Using Parse-Tree Frequency
https://nlp.lab.arizona.edu/sites/nlp.lab.arizona.edu/files/Kauchak-Leroy-Hogue-JASIST-2017.pdf In p ...
- SpringBoot 部署到linux环境
第一部分:Springboot项目部署 说明:工具使用的是IEDA 第一:项目打包 1.在pom文件中添加插件 <build> <plugins> <plugin> ...
- HtmlUnit学习总结
HtmlUnit学习总结 转载 2016年09月13日 15:58:25 标签: htmlunit / 爬虫 7304 本文摘抄其他博客或者技术论坛,自己搜集整理如下: HtmlUnit学习总结 摘要 ...
- ssm项目导入activiti依赖后jsp页面el表达式报错
错误原因:Tomcat8.x与activiti6.0依赖冲突导致 解决方法: 1.修改tomcat版本 2.在pom.xml中修改 在依赖中把 <dependency> <group ...