我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么实现Nginx高可用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么实现Nginx高可用

这篇文章主要介绍了怎么实现Nginx高可用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么实现Nginx高可用文章都会有所收获,下面我们一起来看看吧。

准备工作:

192.168.16.128

192.168.16.129

两条虚拟机。安装好Nginx

安装Nginx

更新yum 源文件:

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安装Nginx:

yum -y install  nginx

操作命令:

systemctl start nginx; #启动Nginx

systemctl stop nginx; #停止Nginx

什么是高可用?

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。如果一个系统能够一直提供服务,那么这个可用性则是百分之百,但是天有不测风云。所以我们只能尽可能的去减少服务的故障。

解决的问题?

在生产环境上很多时候是以Nginx 做反向代理对外提供服务,但是一天Nginx难免遇见故障,如:服务器宕机。当Nginx 宕机那么所有对外提供的接口都将导致无法访问。

虽然我们无法保证服务器百分之百可用,但是也得想办法避免这种悲剧,今天我们使用keepalived 来实现Nginx

的高可用。

双机热备方案

这种方案是国内企业中最为普遍的一种高可用方案,双机热备其实就是指一台服务器在提供服务,另一台为某服务的备用状态,当一台服务器不可用另外一台就会顶替上去。

keepalived是什么?

Keepalived 软件起初是专为LVS 负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议) 功能。因此,Keepalived 除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等) 的高可用解决方案软件

故障转移机制

Keepalived 高可用服务之间的故障切换转移,是通过VRRP 来实现的。

在Keepalived 服务正常工作时,主Master 节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup 节点自己还活着,当主Master 节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主Master 节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

实现过程

安装keepalived

yum 方式直接安装即可,该方式会自动安装依赖:

yum -y install keepalived

修改主机(192.168.16.128)keepalived配置文件

yum 方式安装的会生产配置文件在/etc/keepalived 下:

vi keepalived.conf

keepalived.conf:

#检测脚本

vrrp_script chk_http_port {

    script "/usr/local/class="lazy" data-src/check_nginx_pid.sh" #心跳执行的脚本,检测nginx是否启动

    interval 2                          #(检测脚本执行的间隔,单位是秒)

    weight 2                            #权重

}

#vrrp 实例定义部分

vrrp_instance VI_1 {

    state MASTER            # 指定keepalived的角色,MASTER为主,BACKUP为备

    interface ens33         # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡

    virtual_router_id 66    # 虚拟路由编号,主从要一直

    priority 100            # 优先级,数值越大,获取处理请求的优先级越高

    advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)

    #授权访问

    authentication {

        auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信

        auth_pass 1111

    }

    track_script {

        chk_http_port            #(调用检测脚本)

    }

    virtual_ipaddress {

        192.168.16.130            # 定义虚拟ip(VIP),可多设,每行一个

    }

}

virtual_ipaddress 里面可以配置vip,在线上通过vip来访问服务。

interface 需要根据服务器网卡进行设置通常查看方式ip addr

authentication 配置授权访问后备机也需要相同配置

修改备机(192.168.16.129)keepalived配置文件

keepalived.conf:

#检测脚本

vrrp_script chk_http_port {

    script "/usr/local/class="lazy" data-src/check_nginx_pid.sh" #心跳执行的脚本,检测nginx是否启动

    interval 2                          #(检测脚本执行的间隔)

    weight 2                            #权重

}

#vrrp 实例定义部分

vrrp_instance VI_1 {

    state BACKUP                        # 指定keepalived的角色,MASTER为主,BACKUP为备

    interface ens33                      # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡

    virtual_router_id 66                # 虚拟路由编号,主从要一直

    priority 99                         # 优先级,数值越大,获取处理请求的优先级越高

    advert_int 1                        # 检查间隔,默认为1s(vrrp组播周期秒数)

    #授权访问

    authentication {

        auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信

        auth_pass 1111

    }

    track_script {

        chk_http_port                   #(调用检测脚本)

    }

    virtual_ipaddress {

        192.168.16.130                   # 定义虚拟ip(VIP),可多设,每行一个

    }

}

检测脚本:

#!/bin/bash

#检测nginx是否启动了

A=`ps -C nginx --no-header |wc -l`        

if [ $A -eq 0 ];then    #如果nginx没有启动就启动nginx                        

      systemctl start nginx                #重启nginx

      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移

              killall keepalived                    

      fi

fi

脚本授权:chmod 775 check_nginx_pid.sh

说明:脚本必须通过授权,不然没权限访问啊,在这里我们两条服务器执行、VIP(virtual_ipaddress:192.168.16.130) ,我们在生产环境是直接通过vip来访问服务。

模拟nginx 故障:

修改两个服务器默认访问的Nginx 的html 页面作为区别。

首先访问192.168.16.130 ,通过vip 进行访问,页面显示192.168.16.128 ;说明当前是主服务器提供的服务。

这个时候192.168.16.128 主服务器执行命令:

systemctl stop nginx; #停止nginx

再次访问vip(192.168.16.130) 发现这个时候页面显示的还是:192.168.16.128 ,这是脚本里面自动重启。

现在直接将192.168.16.128 服务器关闭,在此访问vip(192.168.16.130) 现在发现页面显示192.168.16.129 这个时候keepalived 就自动故障转移了,一套企业级生产环境的高可用方案就搭建好了。

关于“怎么实现Nginx高可用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么实现Nginx高可用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么实现Nginx高可用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Keepalived如何实现Nginx高可用

这篇文章主要介绍了Keepalived如何实现Nginx高可用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

nginx怎么实现高并发

要实现高并发,可以通过以下几个方面来优化Nginx的性能。1. 使用事件驱动模型:Nginx使用异步事件驱动的模型来处理请求,这使它能够同时处理大量的并发连接。2. 增加工作进程数:可以通过增加Nginx的工作进程数来提高并发能力。每个进程
2023-08-24

如何实现keeplied +nginx +tomcat 高可用部署

这篇文章将为大家详细讲解有关如何实现keeplied +nginx +tomcat 高可用部署,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 Tomcat 部署本次实验是在两台虚拟机上部署t
2023-06-05

nginx搭建高可用集群的实现方法

本文主要介绍了nginx搭建高可用集群的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-28

Nginx+Tomcat怎么实现高并发

这篇文章给大家分享的是有关Nginx+Tomcat怎么实现高并发的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。在Ja
2023-06-28

利用Docker Swarm实现Nginx的高可用集群(Docker Swarm如何助力构建Nginx高可用集群?)

通过DockerSwarm编排,可以构建Nginx高可用集群,提升可用性、性能和可扩展性。集群中的多个Nginx实例提供冗余,自动故障转移确保服务在故障时保持可用。Swarm提供负载均衡,将请求分布到集群实例,提升性能。最佳实践包括使用适当的负载均衡算法、监控集群状态、执行滚动更新和测试故障转移。
利用Docker Swarm实现Nginx的高可用集群(Docker Swarm如何助力构建Nginx高可用集群?)
2024-04-02

java高并发高可用怎么实现

要实现高并发和高可用的Java系统,可以采取以下几个步骤:1. 水平扩展:通过增加服务器数量来分担负载,可以使用负载均衡器来将请求分发到多个服务器上,实现并发处理能力的提升。2. 使用线程池:使用线程池来管理线程资源,可以避免频繁创建和销毁
2023-10-20

云服务器怎么实现高可用

要实现云服务器的高可用性,可以采取以下措施:1. 使用负载均衡:将流量均匀地分发到多台服务器上,避免单点故障,提高系统的可用性。2. 配置冗余系统:通过使用冗余服务器,当一台服务器出现故障时,可以自动切换到备用服务器上,保证服务的连续性。3
2023-09-22

云服务器怎么实现高可用

云服务器高可用性实现高可用性对云服务器至关重要,可确保在故障下不间断服务。本文探索实现高可用性的方法:备份和恢复:定期备份数据,利用快照功能快速恢复。冗余架构:使用负载均衡器和故障转移机制创建服务器副本。自动化和监控:利用工具检测故障并触发恢复,持续监视服务器性能。云服务提供商功能:选择支持高可用性的提供商,利用可用性区域和管理工具。分层方法、灾难恢复演练和持续更新可提高高可用性。通过这些措施,企业可以降低故障影响,确保服务不间断交付。
云服务器怎么实现高可用
2024-04-11

nginx如何保证高可用

要保证Nginx的高可用性,可以采取以下措施:1. 使用Nginx的主从模式:将Nginx配置为主服务器和一个或多个从服务器,主服务器处理所有的请求,并将请求转发给从服务器。当主服务器出现故障时,从服务器可以接管请求,确保服务的连续性。2.
2023-10-09

Nginx+Keepalived主备高可用怎么安装与配置

本篇内容介绍了“Nginx+Keepalived主备高可用怎么安装与配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!环境说明:操作系统:C
2023-06-04

怎么用Keepalived+HAProxy高可用集群K8S实现

今天小编给大家分享一下怎么用Keepalived+HAProxy高可用集群K8S实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一
2023-06-29

编程热搜

目录