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 ...
随机推荐
- CentOS7突然出现无法连接网络的情况--VM下
转自:https://blog.csdn.net/xzm5708796/article/details/83757372 突然出现VM内安装的centos7系统无法通过外部进行连接1.登陆到虚拟机上查 ...
- python爬取post请求Reque Payload的json数据
import requests,json url = "https://www.yijiupi.com/v31/Product/ListProduct" headers = { ' ...
- IIs实验,中间件漏洞
实验一.IIS实验 1.修改端口 开始→管理工具→Internet 信息服务(IIS)管理器,属性,将端口改为 8080 如图: 2. IP 地址绑定 前面步骤同第一题一样,将 Ip 改为本 ...
- 201771010141 周强 面向对象程序设计(Java)第12周作业
实验十二 图形程序设计 实验时间 2018-11-14 1.实验目的与要求 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: (2) 掌握Java GUI中2D图形绘制常用类的AP ...
- who are we?
human been like animals,we work for our master. when we dreaming,we drive the machine run.
- React Native - 网页组件(WebView)的使用详解
一.WebView组件介绍 使用 WebView 组件我们可以通过 url 来加载显示一个网页,也可以传入一段 html 代码来显示.下面对其主要属性和方法进行介绍. 1,属性介绍 source: ...
- 学习Linux的软件管理、进程管理
一.软件管理 1.使用yum管理软件安装包 1.1什么是yum Yum (全称为:Yellow dog Updater, Modified) 由Duke University团队,修改Yellow D ...
- sublime text 3搭建python
1.ST3下载地址: http://www.sublimetext.com/3 2.安装Sublime Text Build 3114 Setup.exe应用程序. 3.ST3的工具优点就是轻量级,简 ...
- 在进行多次scanf时,printf输出错误
随便一处代码,经过改正后,输出正确的 ''' #include <stdio.h> int main(){ int T; scanf("%d",&T ...
- Map的嵌套 练习
Map的嵌套 练习 利用迭代和增强for循环的两种方式实现如下效果 package cn.ccc; import java.util.HashMap;import java.util.Iterat ...