Nginx+Keepalived实现web服务高可靠/高可用
一般情况下,为了提升后台服务性能扩充及高可用,前端用一个nginx做反向代理即可
但是,作为互联网项目,纯2C的话必然需要做整体的高可用,不仅后台服务有N个,Nginx同样需要有N个,一主N备,当有一个服务器挂掉的时候,服务能瞬间切换到其他服务器,保证前台服务的高可用
下面就以上图为例,说明一下如何实现server的高可用。
1、准备
虚拟机两台,同样安装nginx,keepalived
2、修改nginx首页,启动nginx
简单起见,我们认为每个nginx都是代理一个服务,只用静态页作为测试
页面内容为”Welcome to 192.168.70.71″和“Welcome to 192.168.70.72”
/opt/web/index.html
<DOCTYPE html>
<html>
<head>
<title>页面标题</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {box-sizing: border-box;
}/* body 样式 */
body {font-family: Arial;margin: 0;font-size: 60px;
}/* 标题 */
.header {padding: 30px;text-align: left;background: #1abc9c;color: white;}/* 标题字体加大 */
.header h1 {font-size: 60px;
}
</style>
</head>
<body>
<div class="header"><h1>keepalived负载均衡测试</h1><p> welcome to 192.168.70.71</p>
</div>
</body>
</html>
/etc/nginx/nginx.confserver {listen 80;server_name 192.168.70.75;location / {root /opt/web;index index.html;autoindex on;}
启动nginx
systemctl start nginx
3、修改keepalived的配置文件
主配置如下(默认配置文件:/etc/keepalived/keepalived.conf):
! Configuration File for keepalivedglobal_defs {
# notification_email {
# acassen@firewall.loc
# failover@firewall.loc
# sysadmin@firewall.loc
# }
# notification_email_from Alexandre.Cassen@firewall.loc
# smtp_server 192.168.200.1
# smtp_connect_timeout 30router_id LVS_DEVEL
# vrrp_skip_check_adv_addr
# vrrp_strict
# vrrp_garp_interval 0
# vrrp_gna_interval 0
}vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2 ## 检测时间间隔
weight -20
}vrrp_instance VI_1 {state MASTERinterface enp0s3virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_nginx ## 执行 Nginx 监控的服务}virtual_ipaddress {192.168.70.75}
}
从机配置(默认配置文件:/etc/keepalived/keepalived.conf)
! Configuration File for keepalivedglobal_defs {
# smtp_connect_timeout 30router_id LVS_BAK
# vrrp_skip_check_adv_addr
# vrrp_strict
# vrrp_garp_interval 0
# vrrp_gna_interval 0
}vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2 ## 检测时间间隔
weight -20
}vrrp_instance VI_1 {state BACKUPinterface enp0s3virtual_router_id 51priority 50advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_nginx ## 执行 Nginx 监控的服务}virtual_ipaddress {192.168.70.75}
}
3、编写监测心跳脚本
上面配置中可以看到有一个脚本文件:/etc/keepalived/nginx_check.sh
查看nginx是否启动,如果没启动则启动,如果启动不起来,停掉keepalived服务,此时心跳断掉,服务转向另一个nginx。
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
systemctl start nginx
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/etc/init.d/keepalived stop
fi
fi
4、测试
启动192.168.70.71上的nginx和keepalive
启动192.168.70.72上的nginx和keepalive
访问虚拟IP:http://192.168.70.75
停掉192.168.70.71上的keepalive
rk,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xlb25zdTIwMTk=,size_16,color_FFFFFF,t_70)
重新启动192.168.136.2上的keepalive,又会回到 Welcome to 192.168.70.71
Nginx+Keepalived实现web服务高可靠/高可用相关推荐
- Centos7+Nginx+Keepalived实现Apache服务的高可用负载均衡
Centos7+Nginx+Keepalived实现Apache服务的高可用&负载均衡 今天是2017年的第一天,昨天也就是2016年的最后一天,我尝试部署了Centos7+Nginx+Kee ...
- Nginx+Keepalived实现Web服务器负载均衡
说明: 操作系统:CentOS 5.X 64位 Web服务器:192.168.21.127.192.168.21.128 站点:bbs.osyunwei.com和sns.osyunwei.com部署在 ...
- web服务枚举组件不可用
我的vs2008今天忽然不能添加web引用了,报"web服务枚举组件不可用",试着更新原来的web引用,报"此计算机上没有安装枚举web引用所需的组件,请重新安装visu ...
- linux修改端口监听地址,修改nginx/Tomcat等Web服务的端口监听地址
我们将一起来学习如何在Linux实例中修改nginx.Tomcat等常见Web服务的端口监听地址. 前提条件 你已经在Linux实例上安装了Web服务器.你可以参考以下文档安装并启动相应的服务: 你已 ...
- Nginx -静态资源Web服务
一.静态资源类型 注:非服务器动态生成的文件 1.浏览器端渲染 HTML.css.js 2.图片 jpeg.gif.png 3.视频 flv.MPEG 4.文件 TXT.等任意下载文件 二.静 ...
- nginx 静态资源WEB服务
1.静态资源类型 非服务器动态运行生成的文件 类型种类 浏览器端渲染 HTML.CSS.JS 图片 JPEG.GIF.PNG 视频 FLV.MPEG ...
- Nginx安装配置与服务搭建
Nginx概述 Nginx(发音同engine x)是一款由俄罗斯程序员Igor Sysoev所开发轻量级的网页服务器.反向代理服务器以及电子邮件(IMAP/POP3)代理服务器.起初是供俄国大型的门 ...
- 高并发Web服务的演变:节约系统内存和CPU
一.越来越多的并发连接数 现在的Web系统面对的并发连接数在近几年呈现指数增长,高并发成为了一种常态,给Web系统带来不小的挑战.以最简单粗暴的方式解决,就是增加Web系统的机器和升级硬件配置.虽然现 ...
- Nginx Web服务应用
Nginx("engine x")是一个开源的,支持高性能.高并发的WWW服务和代理服务软件.它还具有反向代理负载均衡功能和缓存服务功能. 1 Nginx的几个常见的重要特性 1. ...
最新文章
- openwrt监控linux,OpenWRT上判断客户端在线个数
- 计算机网络第一章:计算机网络概述
- 计算机应用基础专科,2019年自考《计算机应用基础》专科模拟试题及答案
- ASP.NET Core 实战:使用 Docker 容器化部署 ASP.NET Core + MySQL + Nginx
- 挑选大数据营销平台应注意哪些问题
- Python是个什么鬼,为什么机械设计都要用到他?
- 《数字图像处理 第三版》(冈萨雷斯)——第十章 图像分割
- 达州2022年9大科技计划项目申报方向、周期、要求汇编大全
- 二、 防火墙中使用的核心技术
- 神经网络计算棒怎么用,英特尔神经计算棒拆解
- 基于注意力机制的多尺度车辆行人检测算法
- 开一间煎饼果子店能挣多少钱?
- BT401蓝牙模块KT1025A蓝牙芯片用户修改BLE的广播包数据的说明以及方法
- STC15 串口一 接收 发送 基本程序
- python pandas excel数据处理_Python利用pandas处理Excel数据的应用
- 如何在 Mac 上打开“查找”?
- 定制化ROM采坑之路(2):魔趣OS刷入小米5A手机过程详解
- python能实现文字转语音么
- 网络RTK服务和GPS有什么区别?现在哪些品牌在提供网络RTK服务?
- Web开发之三层架构
热门文章
- kettle下载与安装(ETL工具)
- Ubuntu16.04lts 五笔安装(ibus-table-wubi)
- 计算机毕业论文选题推荐|软件工程|系列三
- CVPR 2023 | 北大提出DynamicDet:目标检测器的通用动态架构
- 推荐十款来自极客标签的超棒前端特效[第十期]
- umi(3.0.5)版本之二 约定式路由
- threeJS 物体贴花
- Excel中7种自定义数据验证设置
- 馈线长度与信号衰减_关于无线信号传输距离和衰减问题
- 扎牢基础,深入底层,面试我可造火箭:MySQL+JVM+23种设计模式