1. 首页
  2. IT资讯

Nginx+Keepalived实现web服务器高可用

“u003Cdivu003Eu003Cpu003E1、Nginxu003Cu002Fpu003Eu003Cpu003E业务背景u003Cu002Fpu003Eu003Cpu003E现公司需求快速搭建web服务器,对外提供给用户web服务。u003Cu002Fpu003Eu003Cpu003E需求拆分u003Cu002Fpu003Eu003Cpu003E需要基于http协议的软件,搭建服务实现u003Cu002Fpu003Eu003Cpu003E介绍u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Ff4f5bb0551f44265b8d03757caa8245a” img_width=”388″ img_height=”198″ alt=”Nginx+Keepalived实现web服务器高可用” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E常见用法:u003Cu002Fpu003Eu003Cpu003E1) web服务器软件 httpd http协议u003Cu002Fpu003Eu003Cpu003E同类的web服务器软件:apache(老牌) nginx(俄罗斯) IIS(微软)u003Cu002Fpu003Eu003Cpu003E2)代理服务器 反向代理u003Cu002Fpu003Eu003Cpu003E3)邮箱代理服务器 IMAP POP3 SMTPu003Cu002Fpu003Eu003Cpu003E4)负载均衡功能 LB loadblanceu003Cu002Fpu003Eu003Cpu003ENginx架构的特点:u003Cu002Fpu003Eu003Culu003Eu003Cliu003E①高可靠:稳定性 master进程 管理调度请求分发到哪一个worker=> worker进程 响应请求 一master多worker②热部署 :(1)平滑升级 (2)可以快速重载配置③高并发:可以同时响应更多的请求 事件 epoll模型 几万④响应快:尤其在处理静态文件上,响应速度很快 sendfile⑤低消耗:cpu和内存 1w个请求 内存2-3MB⑥分布式支持 :反向代理 七层负载均衡u003Cu002Fliu003Eu003Cu002Fulu003Eu003Cpu003E官方网址:http:u002Fu002Fnginx.orgu002Fu003Cu002Fpu003Eu003Cpu003E1.2、安装u003Cu002Fpu003Eu003Cpu003E常见安装方式:u003Cu002Fpu003Eu003Culu003Eu003Cliu003E①yum安装配置,需使用Nginx官方源或者EPEL源②源码编译u003Cu002Fliu003Eu003Cu002Fulu003Eu003Cpreu003E #添加运行用户u003Cbru003E shell > useradd -su002Fsbinu002Fnologin -M wwwu003Cbru003E #安装依赖u003Cbru003E shell > yum -y install pcre-devel zlib-devel openssl-develu003Cbru003E #编译安装u003Cbru003E shell > cd u002Frootu002Fsoftu003Cbru003E shell > tar xvf nginx-1.14.2.tar.gzu003Cbru003E shell > cd nginx-1.14.2u003Cbru003E shell > .u002Fconfigure –prefix=u002Fusru002Flocalu002Fnginx –user=www –group=www –with-http_ssl_module –with-http_stub_status_module –with-http_realip_module && make && make installu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E编译参数说明u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F327ba8b1e67248d1967b7c1cab8f5223″ img_width=”795″ img_height=”499″ alt=”Nginx+Keepalived实现web服务器高可用” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E1.3、目录介绍u003Cu002Fpu003Eu003Cpu003E查看安装目录u002Fusru002Flocalu002Fnginxu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fe36295fc70e442aca5a37afd97bb5e5e” img_width=”795″ img_height=”334″ alt=”Nginx+Keepalived实现web服务器高可用” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E1.4、软件操作参数u003Cu002Fpu003Eu003Cpu003E查看nginx的二进制可执行文件的相关参数u003Cu002Fpu003Eu003Cpreu003E shell > cd u002Fusru002Flocalu002Fnginxu002Fsbinu003Cbru003E shell > .u002Fnginx -hu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E执行后显示u003Cu002Fpu003Eu003Cpreu003E nginx version: nginxu002F1.14.2u003Cbru003E Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]u003Cbru003E ​u003Cbru003E Options:u003Cbru003E #查看帮助u003Cbru003E -?,-h : this helpu003Cbru003E #查看版本并退出u003Cbru003E -v : show version and exitu003Cbru003E #查看版本和配置选项并退出u003Cbru003E -V : show version and configure options then exitu003Cbru003E #检测配置文件语法并退出u003Cbru003E -t : test configuration and exitu003Cbru003E #检测配置文件语法打印它并退出u003Cbru003E -T : test configuration, dump it and exitu003Cbru003E #在配置测试期间禁止显示非错误信息u003Cbru003E -q : suppress non-error messages during configuration testingu003Cbru003E #发送信号给主进程 stop强制退出 quit优雅的退出 reopen重开日志 reload重载配置u003Cbru003E -s signal : send signal to a master process: stop, quit, reopen, reloadu003Cbru003E #设置nginx目录 $prefix路径u003Cbru003E -p prefix : set prefix path (default: u002Fusru002Flocalu002Fnginxu002F)u003Cbru003E #指定启动使用的配置文件u003Cbru003E -c filename : set configuration file (default: confu002Fnginx.conf)u003Cbru003E #在配置文件之外设置全局指令u003Cbru003E -g directives : set global directives out of configuration fileu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E一般主要使用:u003Cu002Fpu003Eu003Culu003Eu003Cliu003E-s参数控制管理nginx服务-V参数查看nginx开启的模块和编译参数-t参数检测配置文件是否有错误u003Cu002Fliu003Eu003Cu002Fulu003Eu003Cpu003E2、Keepalived实现高可用u003Cu002Fpu003Eu003Cpu003E业务背景u003Cu002Fpu003Eu003Cpu003E单例web服务器能够满足业务基本需求,提供web服务。但是,存在单点故障的问题,即当服务器宕机后,用户将无法获取到服务响应。u003Cu002Fpu003Eu003Cpu003E为了能够提高用户体验度,能够持续得给用户提供优质的服务,当web服务器不可用时,可以有备用服务器接替web服务器的工作,继续为用户提供响应。其中,还要解决一个问题,需要备用服务器能够快速自动切换过来。u003Cu002Fpu003Eu003Cpu003E一般将以上业务需求,称为实现服务的高可用HA。u003Cu002Fpu003Eu003Cpu003E需求拆分u003Cu002Fpu003Eu003Cpu003E也就是高可用的实现核心:u003Cu002Fpu003Eu003Cpu003E①冗余服务器(备份服务器)u003Cu002Fpu003Eu003Cpu003E②自动切换 可以通过绑定虚拟IP的方式 用户通过VIP访问服务u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F0ae5868584b34f66923a6cd1c476aaee” img_width=”965″ img_height=”509″ alt=”Nginx+Keepalived实现web服务器高可用” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E2.1、介绍u003Cu002Fpu003Eu003Cpu003EKeepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fd945bc617d39450bad2ecf175643030c” img_width=”634″ img_height=”436″ alt=”Nginx+Keepalived实现web服务器高可用” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Ekeepalived主要使用三个模块,分别是core、check和vrrp。u003Cu002Fpu003Eu003Cpu003Ecore模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。u003Cu002Fpu003Eu003Cpu003Echeck负责健康检查,包括常见的各种检查方式。u003Cu002Fpu003Eu003Cpu003Evrrp模块是来实现VRRP协议的。u003Cu002Fpu003Eu003Cpu003E2.2、安装u003Cu002Fpu003Eu003Cpu003Emaster和backup都需要进行安装,也就是server01和server03机器u003Cu002Fpu003Eu003Cpreu003E #安装keepalivedu003Cbru003E shell > yum -y install keepalivedu003Cbru003Eu003Cu002Fpreu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F07a47d3d0a304ff886f5f8579cdd18dc” img_width=”720″ img_height=”187″ alt=”Nginx+Keepalived实现web服务器高可用” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Ekeepalived需要使用的目录和文件:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F36043fa80a8c4e939a2ac10bab605458″ img_width=”787″ img_height=”259″ alt=”Nginx+Keepalived实现web服务器高可用” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E2.3、配置u003Cu002Fpu003Eu003Cpu003E①备份主备服务器的配置文件u003Cu002Fpu003Eu003Cpreu003E shell > cd u002Fetcu002Fkeepalivedu003Cbru003E shell > cp keepalived.conf keepalived.conf_baku003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E②分别修改主备服务器配置文件u003Cu002Fpu003Eu003Cpreu003E shell > vim keepalived.confu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E示例配置文件说明u003Cu002Fpu003Eu003Cpreu003E ! Configuration File for keepalivedu003Cbru003E #发送邮件的配置u003Cbru003E global_defs {u003Cbru003E notification_email {u003Cbru003E acassen@firewall.locu003Cbru003E failover@firewall.locu003Cbru003E sysadmin@firewall.locu003Cbru003E }u003Cbru003E notification_email_from Alexandre.Cassen@firewall.locu003Cbru003E smtp_server 192.168.200.1u003Cbru003E smtp_connect_timeout 30u003Cbru003E router_id LVS_DEVELu003Cbru003E }u003Cbru003E #vrrp协议的配置u003Cbru003E vrrp_instance VI_1 {u003Cbru003E #工作模式u003Cbru003E state MASTERu003Cbru003E #监听的网卡u003Cbru003E interface eth0u003Cbru003E #虚拟路由id 需要和备服务器一致u003Cbru003E virtual_router_id 51u003Cbru003E #权重 优先级u003Cbru003E priority 100u003Cbru003E #vrrp包的发送周期 1su003Cbru003E advert_int 1u003Cbru003E #权限验证u003Cbru003E authentication {u003Cbru003E auth_type PASSu003Cbru003E auth_pass 1111u003Cbru003E }u003Cbru003E #需要绑定切换的VIPu003Cbru003E virtual_ipaddress {u003Cbru003E 192.168.200.16u003Cbru003E 192.168.200.17u003Cbru003E 192.168.200.18u003Cbru003E }u003Cbru003E }u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E主服务器u003Cu002Fpu003Eu003Cpreu003E ! Configuration File for keepalivedu003Cbru003E global_defs {u003Cbru003E notification_email {u003Cbru003E acassen@firewall.locu003Cbru003E failover@firewall.locu003Cbru003E sysadmin@firewall.locu003Cbru003E }u003Cbru003E notification_email_from Alexandre.Cassen@firewall.locu003Cbru003E smtp_server 192.168.200.1u003Cbru003E smtp_connect_timeout 30u003Cbru003E router_id LVS_DEVELu003Cbru003E }u003Cbru003E vrrp_instance VI_1 {u003Cbru003E state MASTERu003Cbru003E interface eth0u003Cbru003E virtual_router_id 51u003Cbru003E priority 100u003Cbru003E advert_int 1u003Cbru003E authentication {u003Cbru003E auth_type PASSu003Cbru003E auth_pass 1111u003Cbru003E }u003Cbru003E #master默认只需要修改使用VIP即可u003Cbru003E virtual_ipaddress {u003Cbru003E 192.168.17.200u003Cbru003E }u003Cbru003E }u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E备服务器u003Cu002Fpu003Eu003Cpreu003E ! Configuration File for keepalivedu003Cbru003E global_defs {u003Cbru003E notification_email {u003Cbru003E acassen@firewall.locu003Cbru003E failover@firewall.locu003Cbru003E sysadmin@firewall.locu003Cbru003E }u003Cbru003E notification_email_from Alexandre.Cassen@firewall.locu003Cbru003E smtp_server 192.168.200.1u003Cbru003E smtp_connect_timeout 30u003Cbru003E router_id LVS_DEVELu003Cbru003E }u003Cbru003E vrrp_instance VI_1 {u003Cbru003E #修改工作模式为备u003Cbru003E state BACKUPu003Cbru003E interface eth0u003Cbru003E virtual_router_id 51u003Cbru003E priority 100u003Cbru003E advert_int 1u003Cbru003E authentication {u003Cbru003E auth_type PASSu003Cbru003E auth_pass 1111u003Cbru003E }u003Cbru003E #注意修改VIPu003Cbru003E virtual_ipaddress {u003Cbru003E 192.168.17.200u003Cbru003E }u003Cbru003E }u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E③分别按照顺序启动主服务器和备服务器的keepalivedu003Cu002Fpu003Eu003Cpreu003E shell > service keepalived startu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E④查看主备服务器的网卡信息u003Cu002Fpu003Eu003Cpreu003E #需要通过ip a命令查看 分别在server01和server03查看u003Cbru003E shell > ip au003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E2.4、模拟故障u003Cu002Fpu003Eu003Cpu003E模拟服务器故障宕机,查看是否可以切换服务到备用机器。u003Cu002Fpu003Eu003Cpu003E模拟宕机,关闭server01 master服务器,VIP自动切换到server03 backup服务器u003Cu002Fpu003Eu003Cpreu003E #抓包vrrpu003Cbru003E shell > yum -y install tcpdumpu003Cbru003E shell > tcpdump vrrp -nu003Cbru003Eu003Cu002Fpreu003Eu003Cu002Fdivu003E”

原文始发于:Nginx+Keepalived实现web服务器高可用

主题测试文章,只做测试使用。发布者:程序员,转转请注明出处:http://www.cxybcw.com/26736.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code