Nginx+Keepalived实现web服务器高可用
1、Nginx
业务背景
现公司需求快速搭建web服务器,对外提供给用户web服务。
需求拆分
需要基于http协议的软件,搭建服务实现
介绍
常见用法:
1) web服务器软件 httpd http协议
同类的web服务器软件:apache(老牌) nginx(俄罗斯) IIS(微软)
2)代理服务器 反向代理
3)邮箱代理服务器 IMAP POP3 SMTP
4)负载均衡功能 LB loadblance
Nginx架构的特点:
- ①高可靠:稳定性 master进程 管理调度请求分发到哪一个worker=> worker进程 响应请求 一master多worker
- ②热部署 :(1)平滑升级 (2)可以快速重载配置
- ③高并发:可以同时响应更多的请求 事件 epoll模型 几万
- ④响应快:尤其在处理静态文件上,响应速度很快 sendfile
- ⑤低消耗:cpu和内存 1w个请求 内存2-3MB
- ⑥分布式支持 :反向代理 七层负载均衡
官方网址:http://nginx.org/
1.2、安装
常见安装方式:
- ①yum安装配置,需使用Nginx官方源或者EPEL源
- ②源码编译
#添加运行用户
shell > useradd -s/sbin/nologin -M www
#安装依赖
shell > yum -y install pcre-devel zlib-devel openssl-devel
#编译安装
shell > cd /root/soft
shell > tar xvf nginx-1.14.2.tar.gz
shell > cd nginx-1.14.2
shell > ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module && make && make install
编译参数说明
1.3、目录介绍
查看安装目录/usr/local/nginx
1.4、软件操作参数
查看nginx的二进制可执行文件的相关参数
shell > cd /usr/local/nginx/sbin
shell > ./nginx -h
执行后显示
nginx version: nginx/1.14.2
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
#查看帮助
-?,-h : this help
#查看版本并退出
-v : show version and exit
#查看版本和配置选项并退出
-V : show version and configure options then exit
#检测配置文件语法并退出
-t : test configuration and exit
#检测配置文件语法打印它并退出
-T : test configuration, dump it and exit
#在配置测试期间禁止显示非错误信息
-q : suppress non-error messages during configuration testing
#发送信号给主进程 stop强制退出 quit优雅的退出 reopen重开日志 reload重载配置
-s signal : send signal to a master process: stop, quit, reopen, reload
#设置nginx目录 $prefix路径
-p prefix : set prefix path (default: /usr/local/nginx/)
#指定启动使用的配置文件
-c filename : set configuration file (default: conf/nginx.conf)
#在配置文件之外设置全局指令
-g directives : set global directives out of configuration file
一般主要使用:
- -s参数控制管理nginx服务
- -V参数查看nginx开启的模块和编译参数
- -t参数检测配置文件是否有错误
2、Keepalived实现高可用
业务背景
单例web服务器能够满足业务基本需求,提供web服务。但是,存在单点故障的问题,即当服务器宕机后,用户将无法获取到服务响应。
为了能够提高用户体验度,能够持续得给用户提供优质的服务,当web服务器不可用时,可以有备用服务器接替web服务器的工作,继续为用户提供响应。其中,还要解决一个问题,需要备用服务器能够快速自动切换过来。
一般将以上业务需求,称为实现服务的高可用HA。
需求拆分
也就是高可用的实现核心:
①冗余服务器(备份服务器)
②自动切换 可以通过绑定虚拟IP的方式 用户通过VIP访问服务
2.1、介绍
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。
keepalived主要使用三个模块,分别是core、check和vrrp。
core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。
check负责健康检查,包括常见的各种检查方式。
vrrp模块是来实现VRRP协议的。
2.2、安装
master和backup都需要进行安装,也就是server01和server03机器
#安装keepalived
shell > yum -y install keepalived
keepalived需要使用的目录和文件:
2.3、配置
①备份主备服务器的配置文件
shell > cd /etc/keepalived
shell > cp keepalived.conf keepalived.conf_bak
②分别修改主备服务器配置文件
shell > vim keepalived.conf
示例配置文件说明
! Configuration File for keepalived
#发送邮件的配置
global_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 30
router_id LVS_DEVEL
}
#vrrp协议的配置
vrrp_instance VI_1 {
#工作模式
state MASTER
#监听的网卡
interface eth0
#虚拟路由id 需要和备服务器一致
virtual_router_id 51
#权重 优先级
priority 100
#vrrp包的发送周期 1s
advert_int 1
#权限验证
authentication {
auth_type PASS
auth_pass 1111
}
#需要绑定切换的VIP
virtual_ipaddress {
192.168.200.16
192.168.200.17
192.168.200.18
}
}
主服务器
! Configuration File for keepalived
global_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 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
#master默认只需要修改使用VIP即可
virtual_ipaddress {
192.168.17.200
}
}
备服务器
! Configuration File for keepalived
global_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 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
#修改工作模式为备
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
#注意修改VIP
virtual_ipaddress {
192.168.17.200
}
}
③分别按照顺序启动主服务器和备服务器的keepalived
shell > service keepalived start
④查看主备服务器的网卡信息
#需要通过ip a命令查看 分别在server01和server03查看
shell > ip a
2.4、模拟故障
模拟服务器故障宕机,查看是否可以切换服务到备用机器。
模拟宕机,关闭server01 master服务器,VIP自动切换到server03 backup服务器
#抓包vrrp
shell > yum -y install tcpdump
shell > tcpdump vrrp -n
Nginx+Keepalived实现web服务器高可用的更多相关文章
- heartrbeat实现web服务器高可用
今天的内容是用heartbeat实现web服务器高可用 一.简介: heartbeat的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行 ...
- Heartbeat实现web服务器高可用
一.Heartbeat概述: Heartbeat的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报 ...
- Nginx+keepalived实现负载均衡高可用配置
1. 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重. 为了屏蔽负载均衡服务 ...
- Lvs+Keepalived+Bind+web构建高可用负载均衡系统
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://hatech.blog.51cto.com/8360868/1417899 --- ...
- nginx+keepalived实现 负载均衡 高可用
Vip: 192.168.220.18 Rip1:192.168.220.2 Rip:192.168.220.3 Rip可以配置在一个服务器上通过ip做虚拟主机 1 rs上配置环境 2 配置应用 Yu ...
- django uWSGI nginx搭建一个web服务器 确定可用
网上的找了很多篇 不知道为什么不行,于是自己搭建了一个可用的Web 大家可按步骤尝试 总结下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: .确保有一个能够用runserver ...
- nginx+keepalived互为主主高可用配置
和nginx主从安装配置都一样 就是配置文件 多加个vip 里面具体要改的 请看下面的配置文件 直接master1上keepalived.conf配置文件内容: ! Configuration ...
- nginx+keepalived+tomcat实现主从高可用负载均衡
设备: 1.准备四台虚拟机,两台tomcat,两台nginx 2.两台tomcat配置相同,测试页不同 两台Tomcat配置完全相同.只有测试页面不同 安装jdk和tomcat [root@local ...
- Nginx(haproxy)+keepalived+Tomcat双主高可用负载均衡
周末的时候一个正在学Linux的朋友问我,高可用怎么玩?我和他微信了将近三个小时,把Nginx和haproxy双主高可用教给他了,今天突然想把这个给写进博客里,供给那些正在学习Linux系统的朋友们, ...
随机推荐
- Boggle Game
Description Given a board which is a 2D matrix includes a-z and dictionary dict, find the largest co ...
- sharding-jdbc使用笔记
核心概念: 1.逻辑表:水平拆分的数据库(表)的相同逻辑和数据结构表的总称.例,根据主键尾数拆分为10张表,分别是t_order_0到t_order_9,他们的逻辑表名为t_order 2.真实表:在 ...
- Linux查看文件的权限
Linux查看权限命令: ls -l 文件或文件夹 输出结果示例: 这里是查看tomcat文件夹中所有子文件或者子文件夹的权限,以列表的形式列出. 关于列表的每列所代表的含义参见我的另外一篇博客:Li ...
- 如何新建WebAPI,生成注释,TestAPI的项目
一.新建WebAPI的项目 1. 在Web下,ASP.NET Web 应用程序,点击确定 2. 点击确定 3. 如图所示, 新建Controller 4 . 运行项目 二.注释 1. 在生成中,勾选x ...
- vue使用案例,vue初始化,vue初始化方法,vue条件语句,vue在js里面添加元素调用vue方法
<div id="main" > <button id='but1' type="button" v-on:click="save ...
- 《JAVA程序设计》_第十一周学习总结
一.学习内容 13.1 URL类 URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符,使用URL创建对象的应用程序称作客户端程序. 一个URL对象包含的三个基本信息:协 ...
- leetcode:7. 整数反转
题目描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例: 输入: 123 输出: 321 输入: -123 输出: -321 输入: 120 输出: 21 注意:假 ...
- IntelliJ IDEA 调试 Apache RocketMQ 源码
克隆源码 mvn clean install 执行命令,跳过测试.我在执行测试的时候有时候卡住,所以干脆就跳过了. mvn clean install -DskipTests 准备环境 在 D 盘创建 ...
- BaiduPCS-Go的安装及使用
BaiduPCS-Go的安装及使用 linux下会提示输入验证码,浏览器打开验证码url,多输入几次 Contents [hide] 一. 软件下载及安装 二. 软件的使用 1. 账号登录与退出 2. ...
- Feign进行文件上传+表单调用
Feigin默认是不支持文件上传和表单提交的,需要做一些配置才能支持. 1.feign依赖 图中红色为form支持必须的jar. 2.添加自定义Encoder类: import static java ...