WEB后端_Day12(Nginx:简介、常用功能介绍、安装部署、配置文件、反向代理实例、配置实例-负载均衡、配置实例-动静分离、Keepalived+Nginx 高可用集群、Keepalived)

WEB后端_Day12(Nginx:简介、常用功能介绍、安装部署、配置文件、反向代理实例、配置实例-负载均衡、配置实例-动静分离、Keepalived+Nginx 高可用集群、Keepalived)

1.Nginx简介

  • Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个IMAP/POP3/SMTP 代理服务器。
  • Nginx 特点是占有内存少,并发能力强。
  • Nginx 由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过配置文件将客户端请求映射到一个 location block(location 是 Nginx配置中的一个指令,用于 URL 匹配),而在这个 location 中所配置的每个指令将会启动不同的模块去完成相应的工作。

2.常用功能介绍

2.1.Nginx 作为 web 服务器

Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、 php等。但是不支持 java。 Java 程序只能通过与 tomcat 配合完成。 Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。

2.2.HTTP代理和反向代理

关于代理

说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道;

此时就设计到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;如同生活中的专卖店~客人到专卖店买了一双鞋,这个专卖店就是代理,被代理角色就是厂家,目标角色就是用户。

正向代理

说反向代理之前,我们先看看正向代理,正向代理也是大家最常接触的到的代理模式,我们会从两个方面来说关于正向代理的处理模式,分别从软件方面和生活方面来解释一下什么叫正向代理

在如今的网络环境下,我们如果由于技术需要要去访问某些网站,此时你会发现某些网站我们通过浏览器是没有办法访问的,此时大家可能都会用一个操作进行访问,主要是找到一个可以访问的代理服务器,我们将请求发送给代理服务器,代理服务器去访问,然后将访问到的数据传递给我们!

上述这样的代理模式称为正向代理,正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。
在这里插入图片描述

反向代理

明白了什么是正向代理,我们继续看关于反向代理的处理方式,举例如我大天朝的某宝网站,每天同时连接到网站的访问人数已经爆表,单个服务器远远不能满足人民日益增长的购买欲望了,此时就出现了一个大家耳熟能详的名词:分布式部署;也就是通过部署多台服务器来解决访问人数限制的问题;某宝网站中大部分功能也是直接使用nginx进行反向代理实现的,并且通过封装nginx和其他的组件之后起了个高大上的名字:Tengine,有兴趣的童鞋可以访问Tengine的官网查看具体的信息:http://tengine.taobao.org/。那么反向代理具体是通过什么样的方式实现的分布式的集群操作呢,我们先看一个示意图:

在这里插入图片描述

通过上述的图解大家就可以看清楚了,多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,Nginx扮演的就是一个反向代理角色

反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息!

项目场景

通常情况下,我们在实际项目操作时,正向代理和反向代理很有可能会存在在一个应用场景中,正向代理代理客户端的请求去访问目标服务器,目标服务器是一个反向代理服务器,反向代理了多台真实的业务处理服务器。具体的拓扑图如下:

在这里插入图片描述

什么是反向代理?

客户端本来可以直接通过HTTP协议访问某网站应用服务器,网站管理员可以在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。

在这里插入图片描述

2.3.负载均衡

我们已经明确了所谓代理服务器的概念,那么接下来,Nginx扮演了反向代理服务器的角色,它是以依据什么样的规则进行请求分发的呢?不用的项目应用场景,分发的规则是否可以控制呢?

这里提到的客户端发送的、Nginx反向代理服务器接收到的请求数量,就是我们说的负载量。

请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则。

所以~将服务器接收到的请求按照规则分发的过程,称为负载均衡。

负载均衡在实际项目操作过程中,有硬件负载均衡和软件负载均衡两种,硬件负载均衡也称为硬负载,如F5负载均衡,相对造价昂贵成本较高,但是数据的稳定性安全性等等有非常好的保障,如中国移动中国联通这样的公司才会选择硬负载进行操作;更多的公司考虑到成本原因,会选择使用软件负载均衡,软件负载均衡是利用现有的技术结合主机硬件实现的一种消息队列分发机制。
在这里插入图片描述

Nginx支持的负载均衡调度算法方式如下:

  • weight轮询(默认):接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,Nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。
  • ip_hash:每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。
  • fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是Nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块。
  • url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意Nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包。

当网站访问量非常大,网站站长开心赚钱的同时,也摊上事儿了。因为网站越来越慢,一台服务器已经不够用了。于是将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。

Nginx可以通过反向代理来实现负载均衡。

在这里插入图片描述

2.4.动静分离

为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源比如图片,js,css等文件,我们可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时,代理服务器就可以直接处理,而不用将请求转发给后端服务器。用户请求的动态文件比如servlet,jsp则转发给Tomcat,Jboss服务器处理,这就是动静分离。这也是反向代理服务器的一个重要的作用。

在这里插入图片描述

3.安装部署

3.1.下载

http://nginx.org/en/download.html
在这里插入图片描述

3.2环境准备

1)需要安装 gcc 的环境【此步省略】

yum install gcc-c++

(2)第三方的开发包。

PCRE

PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。

yum install -y pcre pcre-devel

注:pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。

zlib

zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。

yum install -y zlib zlib-devel

OpenSSL

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。

yum install -y openssl openssl-devel

3.3.Nginx安装

第一步:把 nginx 的源码包nginx-1.16.1.tar.gz上传到 linux 系统
在这里插入图片描述

第二步:解压缩

tar -zxvf  nginx-1.16.1.tar.gz

第三步:进入解压缩目录, 执行configure,创建 makeFile 文件

./configure --prefix=/usr/local/nginx 

第四步:编译

make

第五步:安装

make install

第六步

安装完成之后,检查nginx的配置文件是否正确

cd /usr/local/nginx/sbin/
./nginx -t

在这里插入图片描述

查看软件的安装位置

whereis nginx

3.4.Nginx 的常用的命令

(1 )查看 nginx 版本号

在这里插入图片描述

( 2)启动命令

注意:启动nginx 之前,上边将临时文件目录指定为/var/temp/nginx/client, 需要在/var 下创建此 目录

mkdir /var/temp/nginx/client -p
./nginx

查看进程

在这里插入图片描述

( 3)关闭命令

./nginx -s stop

(4)重新加载命令 必须在nginx启动的状态下

 ./nginx -s reload

在这里插入图片描述

3.5.开启外部访问

查看防火墙状态

firewall-cmd --state

临时关闭防火墙

 systemctl stop firewalld.service

关闭防火墙开机启动

systemctl disable firewalld

打开Windows系统内的浏览器,就说明外网访问成功

3.6.Nginx的访问

在这里插入图片描述

4.Nginx的配置文件

worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
   
    keepalive_timeout  65;


    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        } 
    }

}

在这里插入图片描述

  1. 全局块

从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数, 进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。

比如上面第一行配置的

worker_processes  1;

这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约

  1. events块

events { worker_connections 1024; }

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 wordprocess 可以同时支持的最大连接数等。

上述例子就表示每个 work process 支持的最大连接数为 1024.

这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。

  1. http块

    这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

    需要注意的是: http 块也可以包括 http 全局块、 server 块。

    ①、 http 全局块

    http 全局块配置的指令包括文件引入、 MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

②、 server 块

这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。

每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。

而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。

1、全局 server 块

最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。

2、 location 块

一个 server 块可以配置多个 location 块。

这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

5.反向代理实例一

5.1.实现效果

(1)打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页

面中

5.2.准备工作

(1)在 liunx 系统安装 tomcat, 使用默认端口 8080

  • tomcat 安装文件放到 liunx 系统中,解压

  • 进入 tomcat 的 bin 目录中, ./startup.sh 启动 tomcat 服务器

(2)对外开放访问的端口

firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd –reload
查看已经开放的端口号
firewall-cmd --list-all

(3)在 windows 系统中通过浏览器访问 tomcat 服务器

在这里插入图片描述

5.3.访问过程的分析

在这里插入图片描述

5.4.具体配置

第一步 在 windows 系统的 host 文件进行域名和 ip 对应关系的配置

host文件的位置

C:\Windows\System32\drivers\etc
在这里插入图片描述

第二步 配置nginx
在这里插入图片描述
在这里插入图片描述

6.反向代理实例二

6.1.实现效果

使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中

nginx 监听端口为 8888,

访问 http://192.168.124.8:8888/edu/ 直接跳转到 127.0.0.1:9001

访问 http:// 192.168.124.8:8888/vod/ 直接跳转到 127.0.0.1:9002

6.2.准备工作

  1. 在/opt/programfiles/tomcat下重新解压一个tomcat 保证该目录下 有两个tomcat

在这里插入图片描述

  1. 修改tomcat的端口

    第一个tocmat
    在这里插入图片描述
    在这里插入图片描述

修改第二个tocmat
在这里插入图片描述
在这里插入图片描述

(2)创建文件夹和测试页面

在9001的webapps下创建一个edu目录,在该目录下创建一个简单的html页面,写入标识语句

在9002的webapps下创建一个vod目录,在该目录下创建一个简单的html页面,写入标识语句

6.3、具体配置

(1)在 nginx 配置文件,进行反向代理配置 仿照nginx的配置,在http块中新增一个server{}块。配置如下:
在这里插入图片描述
在这里插入图片描述

location 指令说明
在这里插入图片描述

该指令用于匹配 URL。

语法如下:

  1. = :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。

  2. ~:用于表示 uri 包含正则表达式,并且区分大小写。

  3. ~*:用于表示 uri 包含正则表达式,并且不区分大小写。

  4. ^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location块中的正则 uri 和请求字符串做匹配。

注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。

7.nginx 配置实例-负载均衡

配置负载均衡

7.1.实现效果

(1)浏览器地址栏输入地址 http://192.168.124.8/edu/index.html,负载均衡效果,平均192.168.124.9和 192.168.124.10两台服务器上

首先将当前的linux服务器克隆一个
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

克隆完成之后 分别启动两台linux服务器

分别部署相同的应用

配置nginx
在这里插入图片描述
在这里插入图片描述

负载均衡策略
在这里插入图片描述

  1. 轮询(默认)

最基本的配置方法, ,它是upstream模块默认的负载均衡默认策略。每个请求会按时间顺序逐一分配到不同的后端服务器。在轮询中,如果服务器down掉了,会自动剔除该服务器。

   upstream myserver{
        server 192.168.112.3:9001;
        server 192.168.112.6:9001;
    }
  1. weight

权重方式,在轮询策略的基础上指定轮询的几率。

注意:

  • 权重越高分配到需要处理的请求越多。
  • 此策略比较适合服务器的硬件配置差别比较大的情况。
upstream tomcat-travel{ 
    server 192.168.112.3:9001 weight=10; 
    server 192.168.112.6:9001 weight=10; 
} 
  1. ip_hash(IP绑定)【不建议】

指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。

注意:

  • 在nginx版本1.3.1之前,不能在ip_hash中使用权重(weight)。
  • ip_hash不能与backup同时使用。
  • 此策略适合有状态服务,比如session。
  • 当有服务器需要剔除,必须手动down掉。
upstream tomcat-travel{ 
ip_hash;
    server 192.168.112.3:9001 weight=10; 
    server 192.168.112.6:9001 weight=10; 
} 

8.nginx 配置实例-动静分离

8.1 动态页面与静态页面区别

  • 静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源。
  • 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变。

8.2 什么是动静分离

  • 动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路
  • 动静分离简单的概括是:动态文件与静态文件的分离。
  • 伪静态:网站如果想被搜索引擎搜素到,动态页面静态技术freemarker等模版引擎技术

8.3 为什么要用动静分离

  • 在我们的软件开发中,有些请求是需要后台处理的(如:.jsp,.do等等),有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件,否则动态文件。因此我们后台处理忽略静态文件。这会有人又说那我后台忽略静态文件不就完了吗。当然这是可以的,但是这样后台的请求次数就明显增多了。在我们对资源的响应速度有要求的时候,我们应该使用这种动静分离的策略去解决。
  • 动静分离将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。这里我们将静态资源放到nginx中,动态资源转发到tomcat服务器中。
  • 因此,动态资源转发到tomcat服务器我们就使用到了前面讲到的反向代理了。

8.4.Nginx实现动静分离

8.4.1 架构分析

在这里插入图片描述

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

     #gzip  on;
    upstream tomcatServer{
		server 192.168.112.3:9001  ;
        server 192.168.112.6:9001 ;
    }
    server {
        listen       80;
        server_name static.haoworld.com ;

        location /static/imgs/ {
            root   /usr/local/static/imgs/;
            index  index.html index.htm;
			autoindex on;#autoindex on 表示列出当前目录中的内容
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    
    server {
        listen       80;
        server_name  www.haoworld.com;

        location / {
            root   html;
			proxy_pass http://tomcatServer;
            index  index.html index.htm;
      }
    }
}

因为这里用到了域名 因此需要配置hosts文件

192.168.112.3 static.haoworld.com
192.168.112.3 www.haoworld.com

9.Keepalived+Nginx 高可用集群(主从模式)

9.1.集群简介

使用集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。通过负载均衡调度服务器,将来自浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈

在这里插入图片描述
在这里插入图片描述

9.2.高可用集群的搭建

在两台linux上 分别安装tomcat 同时给tomcat中部署相同的应用

启动访问
在这里插入图片描述

9.3.nginx安装及配置

user  root;            #运行用户
worker_processes  1;        #启动进程,通常设置成和cpu的数量相等
 
#全局错误日志及PID文件
error_log  /usr/local/nginx/logs/error.log;
error_log  /usr/local/nginx/logs/error.log  notice;
error_log  /usr/local/nginx/logs/error.log  info;
pid        /usr/local/nginx/logs/nginx.pid;
 
# 工作模式及连接数上线
events 
{
    use epoll;            #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
 
    worker_connections  1024;    #单个后台worker process进程的最大并发链接数
}
 
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http 
{
    include       mime.types;
    default_type  application/octet-stream;
 
    #设定请求缓冲
    server_names_hash_bucket_size  128;
    client_header_buffer_size   32K;
    large_client_header_buffers  4 32k;
    # client_max_body_size   8m;
    
    #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
    #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay    on;
 
    #连接超时时间
    keepalive_timeout  65;
 
    #开启gzip压缩,降低传输流量
    gzip  on;
    gzip_min_length    1k;
    gzip_buffers    4 16k;
    gzip_http_version  1.1;
    gzip_comp_level  2;
    gzip_types  text/plain application/x-javascript text/css  application/xml;
    gzip_vary on;
 
    #添加tomcat列表,真实应用服务器都放在这
    upstream tomcat_pool 
    {
       #server tomcat地址:端口号 weight表示权值,权值越大,被分配的几率越大;
       server 192.168.112.3:9001 weight=4 max_fails=2 fail_timeout=30s;
       server 192.168.112.6:9001 weight=4 max_fails=2 fail_timeout=30s;
    }
 
    server 
    {
        listen       80;        #监听端口    
        server_name  localhost;
    
    #默认请求设置
    location / {
        proxy_pass http://tomcat_pool;    #转向tomcat处理
    }
    
    #所有的jsp页面均由tomcat处理
    location ~ \.(jsp|jspx|dp)?$
    {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://tomcat_pool;    #转向tomcat处理
    }
    
    #所有的静态文件直接读取不经过tomcat,nginx自己处理
    location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ 
    { 
        expires  30d;
    }
    location ~ .*\.(js|css)?$
    {
       expires  1h;
    }
 
    #定义错误提示页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
 
    }
}

10.Keepalived

Keepalived是一个免费开源的主要提供loadbalancing(负载均衡)和 high-availability(高可用)功能

keepalived是什么

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

10.1.keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

Keepalived的所有功能是配置keepalived.conf文件来实现的

10.2.安装

[root@localhost softer]# tar -zxvf keepalived-2.0.16.tar.gz 
yum install -y openssl openssl-devel(需要安装一个软件包)
yum -y install libnl libnl-devel  
cd keepalived-2.2.1/ && ./configure --prefix=/usr/local/keepalived
make && make install

keepalived安装成Linux系统服务

将keepalived安装成Linux系统服务初始化及启动

# keepalived启动脚本变量引用文件,默认文件路径是/etc/sysconfig/,也可以不做软链接,直接修改启动脚本中文件路径即可(安装目录下)

cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/keepalived 

# 将keepalived主程序加入到环境变量(安装目录下)

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived

keepalived启动脚本(源码目录下),放到/etc/init.d/目录下就可以使用service命令便捷调用

cp /opt/softes/keepalived-2.2.1/keepalived/etc/init.d/keepalived /etc/init.d/keepalived 

将配置文件放到默认路径下

[root@localhost /]# mkdir /etc/keepalived
[root@localhost /]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

10.3.设置为开机启动

chkconfig keepalived on

到此我们安装完毕!

keepalived 常用命令

service keepalived start
service keepalived stop

10.4.配置nginx主备自动重启

对配置文件进行修改:vim /etc/keepalived/keepalived.conf

上传配置文件到/etc/keepalived

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值