Nginx第二讲
创始人
2024-05-26 13:36:42
0

目录

二、Nginx02

2.1 keepalived和heartbeat介绍

2.1.1 两者的介绍

2.1.2 keepalived简介

2.1.3 VRRP协议与工作原理

2.1.4 Keepalvied的工作原理

2.2 安装环境及keepalived

2.3 启动与验证keepalived

2.4 keepalived测试

2.4.1 环境准备

2.4.2 配置keepalived

2.4.3 项目其余配置

2.4.4 测试抢占模式

2.5 nginx的工作原理


二、Nginx02

2.1 keepalived和heartbeat介绍

2.1.1 两者的介绍

Keepalived是Linux下一个轻量级别的高可用解决方案。它与HeartBeat RoseHA 实现相同类似的功能,都可以实现服务或者网络的高可用,但是又有差别。

高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭义的来讲就是指主机的冗余和接管。

    HeartBeat是一个专业的、功能完善的高可用软件,它提供了HA 软件所需的基本功能,比如:心跳检测、资源接管,检测集群中的服务,在集群节点转移共享IP地址的所有者等等。HeartBeat功能强大,但是部署和使用相对比较麻烦。Keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然它没有HeartBeat功能强大,但是Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成。

2.1.2 keepalived简介

    Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。

后来Keepalived又加入了VRRP的功能,VRRP(Vritrual Router Redundancy Protocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied 一方面具有服务器状态检测和故障隔离功能,另外一方面也有HA cluster功能,下面介绍一下VRRP协议实现的过程。

2.1.3 VRRP协议与工作原理

在现实的网络环境中。主机之间的通信都是通过配置静态路由或者(默认网关)来完成的,而主机之间的路由器一旦发生故障,通信就会失效,因此这种通信模式当中,路由器就成了一个单点瓶颈,为了解决这个问题,就引入了VRRP协议。

熟悉网络的学员对VRRP协议应该不陌生,它是一种主备模式的协议,通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信,这其中涉及到两个概念:物理路由器和虚拟路由器。

VRRP可以将两台或者多台物理路由器设备虚拟成一个虚拟路由,这个虚拟路由器通过虚拟IP(一个或者多个)对外提供服务,而在虚拟路由器内部十多个物理路由器协同工作,同一时间只有一台物理路由器对外提供服务,这台物理路由设备被成为:主路由器(Master角色),一般情况下Master是由选举算法产生,它拥有对外服务的虚拟IP,提供各种网络功能,如:ARP请求,ICMP 数据转发等,而且其它的物理路由器不拥有对外的虚拟IP,也不提供对外网络功能,仅仅接收MASTER的VRRP状态通告信息,这些路由器被统称为“BACKUP的角色”,当主路由器失败时,处于BACKUP角色的备份路由器将重新进行选举,产生一个新的主路由器进入MASTER角色,继续提供对外服务,整个切换对用户来说是完全透明的。

每个虚拟路由器都有一个唯一的标识号,称为VRID,一个VRID与一组IP地址构成一个虚拟路由器,在VRRP协议中,所有的报文都是通过IP多播方式发送的,而在一个虚拟路由器中,只有处于Master角色的路由器会一直发送VRRP数据包,处于BACKUP角色的路由器只会接受Master角色发送过来的报文信息,用来监控Master运行状态,一一般不会发生BACKUP抢占的情况,除非它的优先级更高,而当MASTER不可用时,BACKUP也就无法收到Master发过来的信息,于是就认定Master出现故障,接着多台BAKCUP就会进行选举,优先级最高的BACKUP将称为新的MASTER,这种选举角色切换非常之快,因而保证了服务的持续可用性。

2.1.4 Keepalvied的工作原理

网络的七层协议:
7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 ;
高层(7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端,点到点的数据流。上面我们介绍了Keepalived通过VRRP实现高可用性的工作原理,而Keepalived作为一个高性能集群软件,它还能实现对集群中服务器运行状态的监控以及故障隔离,下面我们介绍一下Keepalived对服务器运行状态和故障隔离的工作原理。

Keepalived工作在TCP/IP (五层模型)参考模型的 三层、四层、五层,也就是分别为:网络层,传输层和应用层,根据TCP、IP参数模型隔层所能实现的功能,Keepalived运行机制如下:

     在网络层:我们知道运行这4个重要的协议,互联网络IP协议,互联网络可控制报文协议ICMP、地址转换协议ARP、反向地址转换协议RARP,在网络层Keepalived在网络层采用最常见的工作方式是通过ICMP协议向服务器集群中的每一个节点发送一个ICMP数据包(有点类似与Ping的功能),如果某个节点没有返回响应数据包,那么认为该节点发生了故障,Keepalived将报告这个节点失效,并从服务器集群中剔除故障节点。在传输层:提供了两个主要的协议:传输控制协议TCP和用户数据协议UDP,传输控制协议TCP可以提供可靠的数据输出服务、IP地址和端口,代表TCP的一个连接端,要获得TCP服务,需要在发送机的一个端口和接收机的一个端口上建立连接,而Keepalived在传输层里利用了TCP协议的端口连接和扫描技术来判断集群节点的端口是否正常,比如对于常见的WEB服务器80端口。或者SSH服务22端口,Keepalived一旦在传输层探测到这些端口号没有数据响应和数据返回,就认为这些端口发生异常,然后强制将这些端口所对应的节点从服务器集群中剔除掉。在应用层:可以运行FTP,TELNET,SMTP,DNS等各种不同类型的高层协议,Keepalived的运行方式也更加全面化和复杂化,用户可以通过自定义Keepalived工作方式,例如:可以通过编写程序或者脚本来运行Keepalived,而Keepalived将根据用户的设定参数检测各种程序或者服务是否允许正常,如果Keepalived的检测结果和用户设定的不一致时,Keepalived将把对应的服务器从服务器集群中剔除
 

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器

为什么使用集群?1. 防止单点故障;2. 负载均衡;3. 高并发;4. 高可靠;

 

 

2.2 安装环境及keepalived

1、逐步操作

1、在 /usr/lwl/soft下面创建keepalived文件夹
2、联网下载安装包wget https://www.keepalived.org/software/keepalived-2.0.10.tar.gz
3、解压安装包tar -zxvf keepalived-2.0.10.tar.gz
4、安装依赖的环境yum -y install popt-devel libnl libnl-devel libnfnetlink-devel net-tools
5、检测是否适合安装[root@localhost ~]# cd keepalived-2.0.10./configure --prefix=/usr/java/keepalived
6、编译并安装make && make install
7、配置keepalived[root@os004 keepalived-2.0.10]# cp /usr/java/keepalived/keepalived-2.0.10/keepalived/etc/init.d/keepalived /etc/init.d/[root@os004 keepalived-2.0.10]# mkdir /etc/keepalived[root@os004 keepalived-2.0.10]# cp /usr/java/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/[root@os004 keepalived-2.0.10]# cp /usr/java/keepalived/keepalived-2.0.10/keepalived/etc/sysconfig/keepalived /etc/sysconfig/[root@os004 keepalived-2.0.10]# cp /usr/java/keepalived/sbin/keepalived /usr/sbin/

2、联合操作

1、安装环境:
yum -y install popt-devel libnl libnl-devel libnfnetlink-devel net-tools
​
#安装成功提示
Installed:libnfnetlink-devel.x86_64 0:1.0.1-4.el7         libnl.x86_64 0:1.1.4-3.el7         libnl-devel.x86_64 0:1.1.4-3.el7         popt-devel.x86_64 0:1.13-16.el7        
​
Complete!
​
​
#如果想安装指定版本,可以查看一下都有什么版本可以安装
yum list|grep keepalived
​
2、安装keepalived
yum install -y keepalived
​
#安装成功提示
Dependency Updated:ipset.x86_64 0:7.1-1.el7                            ipset-libs.x86_64 0:7.1-1.el7                                                        
Complete!
​
3、安装位置
[root@localhost keepalived]# pwd
/etc/keepalived
[root@localhost keepalived]# ls
keepalived.conf

2.3 启动与验证keepalived

[root@os004 keepalived-2.0.10]# systemctl  start keepalived
[root@os004 keepalived-2.0.10]# systemctl  status keepalived
​
#查看正在运行的keepalived进程
[root@os004 keepalived-2.0.10]# ps -aux|grep keepalived

2.4 keepalived测试

2.4.1 环境准备

配置两台虚拟机:使用centos7

虚拟ip:192.168.221.127192.168.221.128
​
Keppalived1:主机 127 Nginx 主机上有两个项目(127:Tomcat 8080,127:Tomcat 8081)
​
Keppalived2:从机 128 Nginx

2.4.2 配置keepalived

主服务器修改192.168.111.127的配置文件/etc/keepalived/keepalived.conf

global_defs {notification_email {123@qq.com            #设置报警邮件地址,可以设置多个,可以不设置}notification_email_from master@qq.com     #发送通知邮件时邮件源地址smtp_server 127.0.0.1    # 发送email时使用的smtp服务器地址,这里可以用本地的sendmail来实现smtp_connection_timeout 30     #连接smtp连接超时时间router_id 192.168.111.127      #############定义路由标识信息,相同局域网唯一
}
vrrp_script chk_http_port {script "/usr/local/src/check_nginx_pid.sh"    ##########最后手动执行下此脚本,以确保此脚本能够正常执行interval 2      #(检测脚本执行的间隔,单位是秒)weight -2       #当检查失败后,将vrrp_instance的priority减小2fall 3          #连续监测失败3次,才认为真的健康检查失败。并调整优先级rise 2          #连续监测2次成功,就认为成功。但不调整优先级
}# 虚拟ip配置 vrrp
vrrp_instance VI_1 {state MASTER             # 指定keepalived的角色,MASTER为主,BACKUP为备,大写interface ens33          ############ 当前进行vrrp通讯的网络接口卡(当前centos的网卡)mcast_src_ip 192.168.111.127  ###########发送心跳包的源IP,可使用绑定的网卡IPvirtual_router_id 180        # 虚拟路由编号,主从要一直0-255priority 100            # 优先级,数值越大,获取处理请求的优先级越高advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)authentication {auth_type PASS  #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信auth_pass 1111}track_script {chk_http_port            #(调用检测脚本)}virtual_ipaddress {192.168.111.100            ################### 定义虚拟ip(VIP),可多设,每行一个}
}

备用服务器修改192.168.111.128的配置文件/etc/keepalived/keepalived.conf

global_defs {notification_email {123@qq.com         #设置报警邮件地址,可以设置多个,可以不设置}notification_email_from master@qq.com     #发送通知邮件时邮件源地址smtp_server 127.0.0.1   # 发送email时使用的smtp服务器地址,这里可以用本地的sendmail来实现smtp_connection_timeout 30       #连接smtp连接超时时间router_id 192.168.111.128        #定义路由标识信息,相同局域网唯一
}
vrrp_script chk_http_port {script "/usr/local/src/check_nginx_pid.sh"    #最后手动执行下此脚本,以确保此脚本能够正常执行interval 2         #(检测脚本执行的间隔,单位是秒)weight -2          #当检查失败后,将vrrp_instance的priority减小5fall 3             #连续监测失败3次,才认为真的健康检查失败。并调整优先级rise 2             #连续监测2次成功,就认为成功。但不调整优先级
}# 虚拟ip配置 vrrp
vrrp_instance VI_1 {state BACKUP            # 指定keepalived的角色,MASTER为主,BACKUP为备,大写interface ens33            # 当前进行vrrp通讯的网络接口卡(当前centos的网卡)mcast_src_ip 192.168.111.128 #发送心跳包的源IP,可使用绑定的网卡IPvirtual_router_id 180        # 虚拟路由编号,主从要一直priority 98            # 优先级,数值越大,获取处理请求的优先级越高advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)authentication {auth_type PASS  #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信auth_pass 1111}track_script {chk_http_port            #(调用检测脚本)}virtual_ipaddress {192.168.111.100            # 定义虚拟ip(VIP),可多设,每行一个}
}

2.4.3 项目其余配置

1、以下是针对nginx状态进行检测的脚本,第一次nginx服务死掉时,会重新启动,如果Nginx服务无法正常启动,则杀掉keepalived进程

vim /usr/local/src/check_nginx_pid.sh#!/bin/bash
A=`ps -C nginx --no-header |wc -l`        
if [ $A -eq 0 ];then                            /usr/local/nginx/sbin/nginx     if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then  killall keepalived                    fi
fi

2、配置用户执行权限

#给所有用户执行权限
chmod a+x /usr/local/src/check_nginx_pid.sh

3、修改nginx.conf文件

vi /usr/local/nginx/conf/nginx.conflocation  / {root   /usr/lwl/files/static/dist;  #vue项目在系统中的位置index  index.html index.htm;    #最初过来访问的页面}

4、开启nginx和keepalived进行测试

systemctl start nginx
systemctl start keepalived
​
然后再浏览器使用虚拟路由进行访问  192.168.111.100
也可以使用真正的路由进行访问 192.168.111.127   或者是  192.168.111.128
​
出现vue图标即是成功

5、查看连接的哪台主机

可以使用Xshell新建一个连接,连接IP地址为 192.168.111.100
输入 ip addr 出现的ip地址就是正在连接的服务器ip地址
​
​
如果关闭当前正在连接的主机,那么另外一台备用机就会连接

访问[http://192.168.111.100/ 一切正常],无论是tomcat机器还是nginx都避免了单点故障。

2.4.4 测试抢占模式

现在192.168.111.127 是主机,192.168.111.128是备用机,

如果修改128里面配置文件 /etc/keepalived/keepalived.conf

state MASTER   #将128也修改为主机

这时分配的服务器就是随机的。

2.5 nginx的工作原理

Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程。其中master充当整个进程组与用户的交互接口,同时对进程进行监护,管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。worker用来处理基本的网络事件,worker之间是平等的,他们共同竞争来处理来自客户端的请求。

worker工作图:

1、一个master多个worker的好处每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 独立的, 继续进行争抢,实现请求过程,不会造成服务中断2、设置多少个 woker 合适worker 数和服务器的 cpu 数相等是最为适宜的
​
有关 连接数 worker_connection
3、第一个:发送请求,占用了 woker 的几个连接数?答案:2 或者 4 个
​
4、第二个:nginx 有一个 master,有四个 woker,每个woker支持最大的连接数1024,支持的最大并发数是多少?①普通的静态访问最大并发数是: worker_connections * worker_processes /2,②而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections * worker_processes/4

相关内容

热门资讯

emui 安卓系统对应关系,E... 你有没有发现,每次打开你的华为手机,那个界面看起来是不是特别顺眼?那是因为华为的EMUI系统,它就像...
永诺安卓系统相机,功能解析与使... 你有没有发现,手机拍照已经成为我们生活中不可或缺的一部分?而在这其中,永诺安卓系统的相机功能可是相当...
tinder安卓版系统错误,揭... 最近在使用Tinder安卓版的时候,你是不是也遇到了一些让人头疼的系统错误呢?别急,今天就来和你聊聊...
htc安卓系统怎么更新系统,轻... 亲爱的HTC安卓用户们,你是不是也和我一样,时不时地想给手机来个“大变身”,让它焕然一新呢?没错,今...
安卓最新发布系统,颠覆性更新与... 你知道吗?最近安卓系统又来了一次大变身,这可是科技圈里的大事哦!安卓最新发布的系统,简直就像是一个全...
华为不升级安卓系统,开启自主操... 你知道吗?最近有个大新闻在科技圈里炸开了锅,那就是华为决定不再升级安卓系统!这可不是一个小决定,它背...
安卓保护系统停止运行,紧急排查... 亲爱的手机用户们,你们有没有遇到过这样的情况:手机突然间变得不正常了,安卓保护系统竟然停止运行了?这...
安卓系统记录仪,智能行车安全守... 你有没有想过,开车的时候,那些瞬间发生的事情,就像电影里的精彩片段,一闪而过,却让人回味无穷?别急,...
安卓13系统怎样升级,全面解析... 你有没有发现,你的安卓手机最近是不是有点儿“蔫儿”了?别急,别急,我来告诉你怎么给它来个“大变身”—...
安卓手机进去系统花屏,安卓手机... 手机屏幕突然花屏了,是不是瞬间感觉整个世界都变得不美好了呢?别急,今天就来和你聊聊安卓手机进入系统时...
安卓手机 系统怎么更新,体验最... 亲爱的手机控们,你是不是也和我一样,时不时地想给安卓手机来个“美容”大变身呢?没错,说的就是系统更新...
妈妈手机推荐安卓系统,安卓系统... 亲爱的妈妈们,是不是在为给家里的宝贝挑选一款合适的手机而烦恼呢?别急,今天我就来给你详细介绍一下几款...
oppo安卓版系统设置,全面解... 亲爱的手机控们,你是不是也和我一样,对OPPO安卓版系统的设置充满了好奇?想要让你的OPPO手机更加...
安卓系统是什么cp,CP架构下... 你有没有想过,你的手机里那个默默无闻的安卓系统,其实就像是一个超级贴心的CP(情侣搭档)呢?没错,就...
系统垃圾清理大师 安卓,安卓手... 手机里的垃圾文件是不是让你头疼不已?别急,今天我要给你介绍一位安卓系统里的“清洁小能手”——系统垃圾...
安卓系统分为几层,安卓系统分层... 你知道吗?安卓系统,这个陪伴我们手机生活的“小助手”,其实它内部结构可是相当复杂的呢!今天,就让我带...
系统最像苹果的安卓,揭秘最像苹... 你有没有发现,现在的安卓手机越来越像苹果了?没错,就是那个以简洁设计和流畅体验著称的苹果。今天,就让...
安卓更新13系统游戏,性能升级... 你知道吗?最近安卓系统又来了一次大变身,那就是安卓13系统!这次更新可是带来了不少惊喜,尤其是对那些...
安卓系统开机出错了,安卓系统开... 手机突然开不了机了,这可怎么办?别急,让我来帮你分析一下安卓系统开机出错的那些事儿。一、安卓系统开机...
vovg是安卓系统吗,安卓系统... 你有没有听说过Vovg这个操作系统?最近,这个名词在数码圈里可是引起了不小的热议呢!很多人都在问,V...