首页 > 系统相关 >4.3.2 Nginx负载均衡器配置

4.3.2 Nginx负载均衡器配置

时间:2023-05-02 15:31:43浏览次数:50  
标签:log 4.3 nginx Nginx usr conf 均衡器 配置文件

作者:田逸(formyz)

存在两个项目,一个是Web服务集群,另一个是Python集群。将这两个集群置于同一个负载均衡器之下,有效利用资源。


为了便于开展工作,先把资源分配列举出来,如表4-3所示。

表4- 3

名称

说明

Web服务VIP地址及TCP端口

172.16.35.188:80

自定义Python服务地址及TCP端口

172.16.35.189:10033

负载均衡器物理地址

172.16.35.111,172.16.35.112

Web服务后端真实服务器地址

172.16.35.107-109

自定义Python后端真实服务器地址

172.16.35.113-115

操作系统

全部为Rocky 9

主要软件版本

Nginx-1.20.2 ,Keepalived-2.2.7

软件安装路径

/usr/local/nginx, /usr/local/keepalive

日志路径

/data/logs/keepalived.log,/data/logs/nginx.log


1)Nginx 负载均衡配置

用文本编辑器,撰写Nginx主配置文件”nginx.conf”,其完整内容如下:

user nginx;

worker_processes auto;

error_log /data/logs/nginx/error.log;

pid /run/nginx.pid;


# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;

include /etc/nginx/conf.d/tcp10033.conf;



events {

    worker_connections 1024;

}


http {

    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  /data/logs/nginx/access.log  main;


    sendfile            on;

    tcp_nopush          on;

    tcp_nodelay         on;

    keepalive_timeout   65;

    types_hash_max_size 4096;


    include             /etc/nginx/mime.types;

    default_type        application/octet-stream;


    include /etc/nginx/conf.d/web.conf;

server {

        listen 80;

        server_name localhost;


        location / {

                proxy_pass http://web;

        }



        location /status {

           healthcheck_status html;

        }


        error_page 404 /404.html;

        location = /404.html {

        }


        error_page 500 502 503 504 /50x.html;

        location = /50x.html {

        }

    }


}


主配置文件以“include”指令包含两个自定义的子配置文件”web.conf”和“tcp10033.conf”,这两条的的位置特别有讲究。第一条自定义的“include  /etc/nginx/conf.d/tcp10033.conf”指令,必须要放在文本块 http{}之外;而另一行“include /etc/nginx/conf.d/web.conf”将其放在此处的用意是,单独把与Web服务相关的配置规整在一起,方便维护。指令错放位置,将会报错或者得不到期待的结果。


主配置文件”nginx.conf”中手动添加了文本块“location /status { healthcheck_status html;}”这个文本块的作用是可以通过Nginx第三方模块“healthckeck”收集负载均衡器健康检查实时反馈过来的后端真实服务器(Realserver)服务运行的状态,比登录系统查看日志更直观一些。与“第2章之2.2小节”所呈现方式差不多,但调用模块存在差异,因为”healthcheck_status”既收集Web服务的状态,也收集自定义的TCP服务状态。


Nginx子配置文件”tcp10033.conf”的完整内容如下:

stream {

    upstream tcp10033 {

        server 172.16.35.113:10033;

        server 172.16.35.114:10033;

        server 172.16.35.115:10033;


        check interval=3000 rise=2 fall=5 timeout=1000 type=tcp;

    }

    log_format basic '$remote_addr [$time_local] '

                 '$protocol $status $bytes_sent $bytes_received '

                 '$session_time';



    server {

    listen 10033;

        proxy_pass tcp10033;

        access_log /data/logs/tcp10033-access.log basic buffer=32k;

    }

}


此配置文件有一个需要注意的地方,那就是需要把日志文件的路径“access_log /data/logs/tcp10033-access.log”定义到文本块“server{}”内部,虽然在外部也不会报错,但它不会真正起作用(不记录访问日志)。


另一个用于Web负载均衡、健康检查功能的子配置文件”web.conf”完整内容如下:

upstream web {

        server 172.17.35.107  max_fails=1 fail_timeout=10;

server 172.17.35.108  max_fails=1 fail_timeout=10;

        server 172.17.35.109  max_fails=1 fail_timeout=10;

        check interval=3000 rise=2 fall=3 timeout=1000 type=tcp;

}

        access_log  /data/logs/access.log  main;


以纯文本方式撰写好Nginx所需的主配置、子配置文件后,人工检查一遍书写内容,接着在系统命令行执行”nginx -t”进行语法检查,无误后再继续执行指令“nginx”真正启动Nginx服务。通过远端的Web浏览器,输入刚配置完的负载均衡器所设定的url,正常情况下,可观察到整个集群的运行状况,如图4-3 所示。

4.3.2 Nginx负载均衡器配置_nginx

图4- 3

 

2)撰写监控Nginx进程的Shell脚本

在已经配置好Nginx的负载均衡器宿主系统命令行下,用文本编辑器撰写Shell脚本,基本思路是检查系统进程是否存在“nginx”,如果不存在则启动“nginx”服务。


一个完整的、用于与Keepalived相整合的Shell脚本“/usr/local/bin/check_nginx.sh”内容如下:

#!/bin/bash

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


if [ "$STATUS" -eq "0" ]; then

  /usr/local/nginx/sbin/nginx

#systemctl start nginx

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

        if [ "$STATUS2" -eq "0"  ]; then

        kill -9 $(ps -ef | grep keepalived | grep -v grep | awk '{print $2}')

        fi

fi


系统命令行下,使Nginx服务处于未运行状态,再手动执行脚本“/usr/local/bin/check_nginx”,命令为“sh /usr/local/bin/check_nginx.sh”。执行过程没有错误输出,初步可以断定脚本是正确的,再加上用浏览器方式验证已经配置好的测试页面,万无一失。


3)配置Keepalived

Keepalived配置文件”keepalived.conf”本身不存在,直接用文本编辑器撰写一个,放置于目录“/etc/keepalived”,一个用于与配置好Nginx服务相关联的“keepalived.conf”配置文件的完整内容如下:

global_defs {

   router_id 202

}


vrrp_script chk_nginx {

    script "/usr/local/bin/check_nginx.sh"

    interval 2

    weight 2

   }


################################################################

#      vvrp_instance  define                                      #

################################################################

vrrp_instance VI_SERY{

    state  MASTER

    interface ens18

    virtual_router_id 120

    priority 100

    garp_master_delay 1

    authentication {

        auth_type PASS

        auth_pass KJj23576hYgu23I

    }

    track_interface {

        ens18

    }

    track_script {

        chk_nginx

    }

    virtual_ipaddress {

    172.16.35.188

    }

}


配置文件“keepalived.conf”文本块的位置有一个需要注意的地方,那就是“vrrp_script chk_nginx{}”要在前边,“track_script{}”要在靠近文本的末尾,如果位置不恰当,Keepalived服务即便能运行,也不能达到预定的目标。


配置好Keepalived及Nginx以后,确保系统没有Nginx进程和Keepalived进程存在。在命令行执行指令“/usr/local/keepalived/sbin/keepalved”,执行如无报错输出,用以下指令进行初步验证。

#查看系统进程

ps auxww| grep -e nginx -e keepalived

#查看nginx监听端口

netstat -anp| grep -e 80 -e 1003

上述两条指令输入的结果,如图4-4所示。

4.3.2 Nginx负载均衡器配置_Nginx_02

图4- 4

 

标签:log,4.3,nginx,Nginx,usr,conf,均衡器,配置文件
From: https://blog.51cto.com/sery/6239985

相关文章

  • Linux下如何启动、关闭Nginx?
    Linux下如何启动、关闭Nginx?Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势,下面为大家分享一下Linux下启动、关闭Nginx具体方法。Linux下启动、关闭Nginx先决条件:安装并配置了Nginx的系统访问终端窗口或命令行具有sudo或roo......
  • 【Nginx】配置俩前端,指定路径的时候报错的原因
    #NGINX配置文件listen80;server_nameXX.XX.XX.XX;#配置前台的前端location/{indexindex.phpindex.htmlindex.htmdefault.phpdefault.htmdefault.html;root/www/wwwroot/uniapp/h5/;#root指令会在根目录查找index......
  • tomcat+nginx实现项目部署
      本文主要讲述的项目部署方面的一些基础知识,tomcat+nginx的环境。nginx是常用的web服务器,用于获取静态资源,类似的服务器还有apache。tomcat是基于javaservlet的web容器,用于获取动态资源。一般的web服务架构:前端部署nginx,后端部署tomcat。用户访问nginx,静态......
  • 上周热点回顾(4.24-4.30)
    热点随笔:· 服务器出现了一个新软件,一帮大佬吵起来了! (轩辕之风)· 【故障公告】被放出的Bing爬虫,又被爬宕机的园子 (博客园团队)· [MAUI]模仿网易云音乐黑胶唱片的交互实现 (林晓lx)· VueHub:我用ChatGPT开发的第一个项目,送给所有Vue爱好者 (DOM哥)· .NETWeb......
  • 2023.4.30——软件工程日报
    所花时间(包括上课):0h代码量(行):0行博客量(篇):1篇今天,数学建模比赛中。。。我了解到的知识点:数学建模的相关知识......
  • day61(2023.4.30)
    1.循环语句之for 2.for循环语句实操 3.循环语句之while 4.break语句和continue语句 5.字符串 ......
  • 制作一个包含Centos7+Nginx+Mysql8+JDK8的Docker镜像
    1.创建一个文件夹用于构建Docker镜像:mkdirmy-docker-imagecdmy-docker-image2.在该文件夹中创建一个名为Dockerfile的文件。vimDockerfile3.在Dockerfile中编写以下代码:FROMcentos:7#RUNsed-i's/deb.debian.org/mirrors.aliyun.com/g'/etc/apt/sources.list......
  • flower in 4.30
    有人要求我日更鲜花就来更新了。大概是没人看的吧?彁这个字确实是可以打出来的。我放歌的心路历程大多数时候取决于我当时的精神状态,然后在比较符合的里边找几个应该能放出来的(指带人声的)。比如说比较魔怔的时候就放个脑力)不得不说写这个是有好处的,最起码可以保证语言组织能力不......
  • 《聪明》2023.4.30
    Inaworldgoneshallow在这逐渐流于肤浅的世界里Inaworldgonelean在这缓慢倾斜的宇宙洪流中Sometimesthere'sthingsamancannotknow有些事有时候是人们无法得知的Gearswon'tturnandtheleaveswon'tgrow齿轮无法转动,树叶停止生长——《StayAlive》José......
  • 使用nginx搭建3台Tomcat集群
    配置上游服务器upstreamtomcats{server192.168.206.129:8080;server192.168.206.130:8080;server192.168.206.131:8080;}server{listen612;server_namewww.tomcats.com;location/{proxy_passhttp://tomcats;}......