Nginx+Keepalived入门到实战(持续更新......)

Posted Jeffrey_开发问题粉碎机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx+Keepalived入门到实战(持续更新......)相关的知识,希望对你有一定的参考价值。

1,nginx基本概念

1.1,Nginx是什么,做什么事情 Nginx简介

参考官网:http://nginx.org/en/
Nginx (engine x) 是一个HTTP 和反向代理服务器、一个邮件代理服务器和一个通用的 TCP/UDP 代理服务器。特点是占用内存少,并发能力强,能支撑50,000个并发连接数。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

1.2,反向代理

正向代理

客户端中配置代理服务器,通过代理服务器访问互联网服务的过程,可以称之为正向代理。

反向代理

客户端通过方向代理服务器去访问服务器资源,并返回给客户端的过程,可以称之为反向代理。
隐藏了目标服务器的ip地址

1.3,负载均衡

客户端发送多个请求到代理服务器,通过代理服务器处理,分发访问目标服务器。

1.4,动静分离

把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。

2,Nginx在Linux系统部署,常用命令和配置文件

2.1,在linux系统中安装nginx

nginx安装包下载网址
http://nginx.org/en/download.htmlnginx

nginx在liunx部署步骤

参考此作者部署 :
https://blog.csdn.net/t8116189520/article/details/81909574

## 1.安装依赖包
## 一键安装上面四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

## 2.下载并解压安装包
//创建一个文件夹
cd /usr/local
mkdir nginx
cd nginx
//下载tar包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz
## 3.安装nginx
//进入nginx目录
cd /usr/local/nginx
//进入目录
cd nginx-1.13.7
//执行命令
./configure
//执行make命令  执行make install命令
make && make install

## 4.配置nginx.conf
# 打开配置文件
vi /usr/local/nginx/conf/nginx.conf
## 将端口号改成8080,因为可能apeache占用80端口,apeache端口尽量不要修改,我们选择修改nginx端口。
## localhost修改为你服务器ip地址。
server {
        listen       8001;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
 }
 
 ## 5.进入/usr/local/nginx/sbin/,启动nginx服务
./nginx 

## 6,编写启动Nginx服务脚本
vim /usr/local/nginx/start_nginx.sh
##添加如下内容

#!/bin/sh
cd /usr/local/nginx/sbin
./nginx
ps aux | grep nginx

## 7,编写关闭Nginx服务脚本
vim /usr/local/nginx/stop_nginx.sh
##添加如下内容

#!/bin/sh
cd /usr/local/nginx/sbin
./nginx -s stop

Nginx服务启动之后会有两个进程

2.2,Nginx常用命令

1,必须进入 /usr/local/nginx/sbin 目录下操作命令
2,查看nginx版本:./nginx -v
3,启动nginx:./nginx
4,关闭nginx:./nginx -s stop
5,重加载命令 :./nginx -s reload

2.3,Nginx配置文件

1.nginx配置文件由三部分组成
    (1)全局块
        ## 从配置文件开发到events块之间的内容,主要设置一些影响nginx服务器整体运行的配置指令:
        ## 比如:worker_processes  1;nginx处理并发的数量,值越大,可以支持的并发处理量越大。
		worker_processes  1
    (2)events块
        ## events块设计的指令主要影响Nginx服务器与用户的网络连接:
        ## 比如:worker_connections  1024;支持的最大连接数
        worker_connections  1024
    (3)http块
        ## Nginx服务器配置中最频繁的部分;
        ## http块也可以包括http全局块,server块。
        http {
          include       mime.types;
          default_type  application/octet-stream;  
          server {
              listen       8081;
              server_name  localhost;

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

2.4,nginx配置多个location路径,部署多项目可参照

nginx配置location的时候,经常发现报404错误,这往往是没有区分开root 和 allias区别,导致配置资源路径不对


    server {
        listen       8001;
        server_name  localhost;

        charset utf-8;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
       }
		## alias 配置location路径
	    location /dcloud {
	       alias /usr/local/nginx/html/static/login;
	       index index.html;		
	   }
		## root配置location路径
        location /login {
	       root /usr/local/nginx/dcloud;
           index login.html;
       }
        ......
   }

关于root和alias的区别

rootalias
root用来设置根目录alias用来重置当前文件的目录
当访问location路径时,会将root 配置的路劲与location路径拼接成一个路径访问资源当访问location路径时,会将alias 配置的路径替换location路径访问资源

测试实例如下图:
root 配置测试: /usr/local/nginx/dcloud/login

alias配置测试: /usr/local/nginx/html/static/login

3,Nginx配置实例1-反向代理

1.实现效果
    (1) 打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转linux系统tomcat主页面中
    
2.准备工作
    (1)在linux系统安装tomcat,使用默认端口8080
    * tomcat安装文件当道linux系统中,解压,进入tomcat的bin目录中,./startup.sh启动tomcat服务器
    (2)对外开放访问的端口
    * firewall-cmd --add-service=http --permanent
    * firewall-cmd --add-port=8080/tcp --permanent
    (3)重启防火墙
    * firewall-cmd -reload
    (4)查看开放的端口号
    * firewall-cmd --list-all
    
    #防火墙相关操作
    [root@room8pc205 ~]# firewall-cmd --state //查看运行状态
    [root@room8pc205 ~]# systemctl start firewalld //启动服务
    [root@room8pc205 ~]# systemctl enable firewalld //设为开机启动
    [root@room8pc205 ~]# systemctl status firewalld //查看是否启动成功
    (5)在windows系统中通过浏览器访问tomcat服务器

3.1,配置反向代理一:

3.2,配置反向代理二:

使用nginx反向代理,实现根据访问的路劲跳转到不同的端口服务中,Nginx监听9001端口
    访问http://192.168.0.31:9100/edu/     直接跳转 127.0.0.1:8080
  访问http://192.168.0.31:9100/vof/     直接跳转 127.0.0.1:8081

3.3,测试效果


4,Nginx配置实例2-负载均衡

4.1,在http块中配置

http{
......
    upstream myserver{ #负载均衡服务器,转发的服务器
        server    192.168.0.31:8080;
        server    192.168.0.31:8081;
    }

    server {
        listen       80;
        server_name  192.168.0.31;

        location / {
            proxy_pass    http://myserver;
        }
......
}

4.2,Nginx负载均衡策略

1,轮询(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器,如果有服务器挂掉,则自动剔除;

2,weight
    代表权重,默认为1,权重越高,被分配的客户端越多;
    upstream myserver{ 
        server    192.168.0.31:8080 weight 5;
        server    192.168.0.31:8081 weight 10;
    }

3,ip_hash
    每个请求按访问ip的hash结果分配,这样每个固定访问一个后端服务器,可以解决session问题;
    upstream myserver{
        ip_hash;
        server    192.168.0.31:8080 ;
        server    192.168.0.31:8081 ;
    }

4,fair(第三方)
    按照后端服务器响应时间来分配请求,响应时间短越优先分配;
    upstream myserver{
        server    192.168.0.31:8080 ;
        server    192.168.0.31:8081 ;
        fair;
    }

5,Nginx配置实例3-动静分离

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

    location /image/ {
            root   /static_file/;
            autoindex    on;
     }

测试结果
http://192.168.0.31/image/13.jpg
http://192.168.0.31/www/a.html

6,Nginx + keepalived搭建Nginx高可用集群

6.1,keepalived介绍

参考官网:https://www.keepalived.org/index.html
Keepalived 是一个用 c 编写的路由软件。这个项目的主要目标是为 Linux 系统和基于 Linux 的基础架构提供简单而健壮的负载平衡和高可用性设施。负载平衡框架依赖于广泛使用的 Linux Virtual Server (IPVS)内核模块,提供了 Layer4负载平衡。Keepalived 实现了一组检查器,根据负载均衡服务器池的健康状况动态地、自适应地维护和管理它们。另一方面通过 VRRP 协议实现高可用性。VRRP 是路由器故障转移的基本单元。此外,Keepalived 实现了一组连接到 VRRP 有限状态机的钩子,提供低级和高速的协议交互。为了提供最快的网络故障检测,Keepalived 实现了 BFD 协议。VRRP 状态转换可以考虑 BFD 提示驱动快速状态转换。Keepalived 框架可以单独使用,也可以一起使用,以提供弹性基础架构。

1,安装部署

官方地址 keepalived 下载地址,选择指定的版本后我们就开始下载

## 下载
wget https://www.keepalived.org/software/keepalived-2.2.0.tar.gz
## 解压缩
tar -zxvf keepalived-2.2.0.tar.gz
## 创建安装目录
mkdir -p /usr/local/keepalived
## 进行configure配置,指定安装目录:
cd keepalived-2.2.0 && ./configure --prefix=/usr/local/keepalived/
## 编译安装
make && make install

安装编译过程报错

WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.

解决办法:安装环境依赖

yum -y install libnl libnl-devel

安装完以后重新执行configure

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

2,Keepalived相关配置文件(重点)

7,Nginx执行原理

1,master 和 worker 两个进程
2,一个master和多个worker的好处
(1),可以使用 nginx -s reload 进行热部署,利用nginx进行热部署操作;
(2),woker是独立进程,某个woker挂掉也不会造成服务中断;无需加锁,省去加锁开销;
3,设置多少个woker才是最合适的
(1)nginx采用io多路复用机制
(2)worker数和 服务器的 cpu 数相等最为合适。
4,连接数 worker_connection
(1) 第一个:发送请求,占用了worker的几个连接数 2个或4个
(2)第二个,nginx有一个master,4个worker,每个worker最大连接数时候1024,支持的最大并发数是多少?
(3)普通静态访问:worer_connections * worker_process / 2
(4)http作为反向代理:worer_connections * worker_process / 4

以上是关于Nginx+Keepalived入门到实战(持续更新......)的主要内容,如果未能解决你的问题,请参考以下文章

实战 | Nginx+keepalived 实现高可用集群

Keepalived+Nginx反向代理检测集群节点状态企业实战

Nginx+keepalived 实现Nginx的高可用

keepalived实现nginx的高可用 + nginx负载均衡

nginx通过keepalived实现高可用的负载均衡

nginx实现请求的负载均衡 + keepalived实现nginx的高可用