Nginx实现高可用

简介: Nginx的高可用指的是在一台Nginx宕机的情况下有其他Nginx去处理请求。

Nginx的高可用指的是在一台Nginx宕机的情况下有其他Nginx去处理请求。


这里准备两台centos虚拟机测试,两台虚拟机上都要安装Nginx和keepalived.


安装Nginx:

//安装插件
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
//进入下面目录安装
cd /usr/local
//下载Nginx压缩包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
//解压
tar -xvf nginx-1.13.7.tar.gz
//进入解压后的文件夹
cd /usr/local/nginx-1.13.7
//执行命令
./configure
//执行命令
make && make install
安装keepalived:
//任意目录执行命令
yum install keepalived -y
//安装完成后在/etc目录下会有一个keepalived文件夹,文件夹里面有一个keepalived.conf文件。



编辑两个虚拟机中的keepalived.conf 文件


替换内容为


第一个


global_defs { 
   notification_email { 
     acassen@firewall.loc 
     failover@firewall.loc 
     sysadmin@firewall.loc 
   } 
   notification_email_from Alexandre.Cassen@firewall.loc 
   smtp_server 192.168.43.23  # 虚拟机的IP
   smtp_connect_timeout 30 
   router_id LVS_DEVEL 
} 
vrrp_script chk_http_port { 
   script "/usr/local/src/nginx_check.sh"  # 脚本路径
   interval 2      #(检测脚本执行的间隔) 
   weight 2 
}
vrrp_instance VI_1 {     
    state MASTER # 备份服务器上将 MASTER 改为 BACKUP       
    interface ens33  // 网卡      通过ifconfig命令获得
    virtual_router_id 51   # 主、备机的 virtual_router_id 必须相同     
    priority 100     # 主、备机取不同的优先级,主机值较大,备份机值较小 
    advert_int 1
    authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
    virtual_ipaddress {         
  192.168.17.50  // VRRP H 虚拟地址 
    } 
}


第二个


global_defs { 
   notification_email { 
     acassen@firewall.loc 
     failover@firewall.loc 
     sysadmin@firewall.loc 
   } 
   notification_email_from Alexandre.Cassen@firewall.loc 
   smtp_server 192.168.43.243
   smtp_connect_timeout 30 
   router_id LVS_DEVEL 
} 
vrrp_script chk_http_port { 
   script "/usr/local/src/nginx_check.sh"  # 脚本路径
   interval 2      #(检测脚本执行的间隔) 
   weight 2 
}
vrrp_instance VI_1 {     
    state BACKUP   # 备份服务器上将 MASTER 改为 BACKUP       
    interface ens33  //  网卡      通过ifconfig命令获得
    virtual_router_id 51   # 主、备机的 virtual_router_id 必须相同     
    priority 90     # 主、备机取不同的优先级,主机值较大,备份机值较小 
    advert_int 1
    authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
    virtual_ipaddress {         
  192.168.17.50  // VRRP H 虚拟地址 
    } 
}


把脚本放到配置文件中所填写的路径中


脚本内容


#!/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和Nginx
systemctl start keepalived.service
cd /usr/local/nginx/sbin
./nginx



配置完成


测试访问,我们只需要访问配置文件中配置的那个虚拟IP就可以



停止第一台虚拟机的keepalived和nginx


systemctl stop keepalived.service


cd /usr/local/nginx/sbin


./nginx -s stop


刷新页面 仍然可以显示welcome to Nginx页面,说明配置成功。


相关文章
|
7月前
|
负载均衡 应用服务中间件 Linux
高可用系列文章之三 - NGINX 高可用实施方案
高可用系列文章之三 - NGINX 高可用实施方案
|
消息中间件 缓存 应用服务中间件
Nginx系列教程(02) - 高可用与高并发介绍
Nginx系列教程(02) - 高可用与高并发介绍
121 0
|
应用服务中间件 nginx
服务搭建篇(四) 搭建基于Nginx + keepalived的高可用服务
比如我这里虚拟IP+nginx端口是 : 192.168.154.10:80 , 我直接访问 , 出来的是192.168.154.134服务器上的nginx , 因为我刚刚做了区分 , 所以这个时候就可以知道访问的是哪个机器的Nginx , 然后我们把134的Nginx停掉 , 然后再次访问 , 仍然可以使用 , 此时 ,出现的135的页面 , 也就是访问的是192.168.154.135的Nginx
141 0
|
4月前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
125 0
|
4月前
|
运维 负载均衡 监控
Nginx加Keepalived实现高可用
使用Nginx和Keepalived来实现高可用性的方案,对于确保关键服务的稳定性和可靠性来说是非常有效的。此配置涉及多个步骤,包括各个服务的安装、设置及测试,目标是在主服务器故障时能无缝切换,以确保服务的持续可用。正确的配置和充分的测试是实现高可用性的保证,这也要求管理员对这些工具和它们背后的原理有深入的了解。
74 1
|
5月前
|
存储 缓存 前端开发
(三)Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...想要的这都有!
早期的业务都是基于单体节点部署,由于前期访问流量不大,因此单体结构也可满足需求,但随着业务增长,流量也越来越大,那么最终单台服务器受到的访问压力也会逐步增高。时间一长,单台服务器性能无法跟上业务增长,就会造成线上频繁宕机的现象发生,最终导致系统瘫痪无法继续处理用户的请求。
154 1
|
7月前
|
监控 负载均衡 应用服务中间件
Keepalive 解决nginx 的高可用问题
Keepalive 解决nginx 的高可用问题
|
6月前
|
负载均衡 应用服务中间件 开发工具
技术笔记:nginx和keeplive实现负载均衡高可用
技术笔记:nginx和keeplive实现负载均衡高可用
|
7月前
|
存储 运维 负载均衡
Heartbeat+Nginx实现高可用集群
通过Heartbeat与Nginx的结合,您可以建立一个高可用性的负载均衡集群,确保在服务器故障时仍能提供无中断的服务。这种配置需要仔细的计划和测试,以确保系统在故障情况下能够正确运行。
91 2
|
7月前
|
Kubernetes 搜索推荐 应用服务中间件
通过keepalived+nginx实现 k8s apiserver节点高可用
通过keepalived+nginx实现 k8s apiserver节点高可用
413 17