【集群】nginx+keepalived负载均衡高可用(四层/七层反向代理)、nginx+Tomcat动静分离(上)

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 文章目录前言一、nginx反向代理1.1 四层反向代理(速度快)1.2 配置stream模块

一、nginx反向代理

1.1 四层反向代理(速度快)

  • 四层反向代理必须安装stream模块,若之前编译安装时未配置,则需要重新编译安装配置
nginx -V                      #查看当前安装了哪些模块
• 1

1.2 配置stream模块

vim /usr/local/nginx/conf/nginx.conf        #修改nginx主配置文件
stream {                      #与http模块同级别
    server {
        listen 80;                  #监听端口为80端口
        proxy_pass httpd_server;          #定义负载均衡服务名称为httpd
    }                       #对应server块的大括号
    upstream httpd_server {             #配置负载均衡配置
        server 192.168.13.20:80 weight=1;     #设置节点服务器IP/端口/权重等配置
        server 192.168.13.30:80 weight=1;
    }                       #对应upstream块的大括号
    log_format main '$remote_addr $upstream_addr-[$time_local] $status $upstream_bytes_sent';
                            #开启日志(内容自定义)
}                         #对应stream块的大括号
nginx -t                      #检查语法错误
systemctl restart nginx               #重启nginx服务

1.2 七层反向代理(功能多)

vim /usr/local/nginx/conf/nginx.conf        #修改nginx主配置文件
http{
  upstream httpd {                #定义httpd负载调度服务(可自定义命名)
    server 192.168.13.20:80 weight=1;       #设置节点服务器IP/端口/权重等配置
    server 192.168.13.30:80 weight=1;
  }
  keepalive_timeout  3;             #缩小长链接时间,方便验证结果
  server {
      location / {                #设置匹配规则(精确/正则/通用)
          proxy_pass http://httpd/;       #当触发该匹配规则时,调用自定义的httpd服务
      }                     #对应location快大括号
  }                       #对应server块大括号
}                         #对应http块大括号
nginx -t                      #检查语法错误
systemctl restart nginx               #重启nginx服务

二、nginx+keepalived高可用部署

2.0 架构概况

作用 IP地址 安装服务
负载均衡器(主) 192.168.13.10 keepalived/nginx
节点服务器1 192.168.13.20 nginx+Tomcat
节点服务器2 192.168.13.30 nginx+Tomcat
负载均衡器(备) 192.168.13.40 keepalived/nginx

2.1 环境配置(所有服务器)

  • 任何实验,如果你不想花几个小时排障的话,第一步:必须是关闭防火墙
  • systemctl stop firewalld
  • sentenceforce 0

2.2 负载均衡调度器(主)

2.2.1 编译安装nginx

yum -y install pcre-devel zlib-devel make         #安装编译环境
useradd -M -s /sbin/nologin nginx             #创建专门管理nginx的系统用户
tar xf /opt/nginx-1.12.0.tar.gz -C /opt/          #解压nginx源码包
cd /opt/nginx-1.12.0/                   #进入解压后的目录,对nginx的模块进行配置
./configure \
--prefix=/usr/local/nginx \                 #配置nginx安装路径
--user=nginx \                        #配置nginx管理用户
--group=nginx \                       #配置nginx所属组
--with-http_stub_status_module \              #监视模块,可以查看目前的连接数等一些信息(非核心模块)
--with-stream                       #四层反向代理模块(想启动四层代理,必须安装该模块)
make -j 4 && make install                 #编译安装nginx
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/      #将nginx命令做软链接,方便后续使用
vim /lib/systemd/system/nginx.service           #将nginx添加到系统服务当中(方便启动/关闭/开机自启)
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod 754 /lib/systemd/system/nginx.service         #赋予nginx服务文件执行权限
systemctl enable --now nginx.service            #设置nginx为开机自启,并立即启动nginx服务
netstat -natp |grep nginx                 #查看nginx是否启动成功

2.2.2 修改nginx配置(调度器)(主/四层反向代理)

vim /usr/local/nginx/conf/nginx.conf            #四层反向代理
stream{
server {
    listen 1314;                      #监听1314端口(这里博主试过用80端口,但是总是显示80端口被占用,博主没有解决这个问题,只能换个端口了)
    proxy_pass backend_server;                #调用对应的四层反向代理服务
}
upstream backend_server {                 #配置四层反向代理模块的服务名(与proxy_pass调用的服务名对应)
    server 192.168.13.20:80 weight=1;           #配置四层反向代理的调度算法、IP/端口、权重等
    server 192.168.13.30:80 weight=1;
}                             #对应upstream模块的大括号
}                             #对应stream模块的大括号
约47行:七层反向代理的端口注释掉,或者换一个端口号,如下图
nignx -t                          #检查nginx配置文件语法错误
systemctl restart nginx                   #重启nginx服务


2.2.3 安装keepalived服务(高可用)

yum install -y keepalived                 #安装keepalived高可用工具
vim /etc/keepalived/check_nginx.sh              #编写nginx健康检查脚本
#!/bin/bash
#effect: Nginx健康检查
count=$(ps -ef |grep nginx |egrep -cv "grep|$$")      #ps命令查看运行中的进程-->grep过滤nginx服务-->-v排除这条命令进程
if [ $count -eq 0 ];then                  #如果运行的nginx命令数量为0,则判断nginx服务停止运行
  systemctl stop keepalived                 #判断成功后,停止主keepalived进程(此时备启动keepalived进程)
fi
chmod +x /etc/keepalived/check_nginx.sh           #赋予脚本执行权限
crotab -e                         #设置脚本每分钟执行一次(也可以编写shell脚本设置开机自启,sleep控制时间,缩短间隔时间)
  */1 * * * * /etc/keepalived/check_nginx.sh
cd /etc/keepalived/
vim keepalived.conf                     #修改keepalived高可用配置(详情如图)
  10行:smtp_server 127.0.0.1
  12行:router_id NGINX_01
  13-16行:删除
  17行:interface ens33
  26行:192.168.13.100
  27-28行:删除
  29行及以下:删除
  14行插入以下内容:
    vrrp_script check_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 2
    weight 2
    }
  33行插入一下内容:
    track_script {
      check-nginx
    }
systemctl start keepalived.service              #启动keepalived服务
ip addr                           #此时应有VIP地址:inet 192.168.13.100/32

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
14天前
|
存储 负载均衡 中间件
Nginx反向代理配置详解,图文全面总结,建议收藏
Nginx 是大型架构必备中间件,也是大厂喜欢考察的内容,必知必会。本篇全面详解 Nginx 反向代理及配置,建议收藏。
Nginx反向代理配置详解,图文全面总结,建议收藏
|
26天前
|
应用服务中间件 API nginx
nginx配置反向代理404问题
【10月更文挑战第18天】本文介绍了使用Nginx进行反向代理的配置方法,解决了404错误、跨域问题和302重定向问题。关键配置包括代理路径、请求头设置、跨域头添加以及端口转发设置。通过调整`proxy_set_header`和添加必要的HTTP头,实现了稳定的服务代理和跨域访问。
124 1
nginx配置反向代理404问题
|
9天前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
26 4
|
9天前
|
缓存 负载均衡 安全
Nginx的反向代理具体是如何实现的?
Nginx的反向代理具体是如何实现的?
|
7月前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
133 0
|
7月前
|
负载均衡 应用服务中间件 API
Nginx配置文件详解Nginx负载均衡Nginx静态配置Nginx反向代理
Nginx配置文件详解Nginx负载均衡Nginx静态配置Nginx反向代理
175 4
|
6月前
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
123 2
|
5月前
|
负载均衡 算法 应用服务中间件
nginx自定义负载均衡及根据cpu运行自定义负载均衡
nginx自定义负载均衡及根据cpu运行自定义负载均衡
94 1
|
5月前
|
运维 负载均衡 算法
SLB与NGINX的异同是什么
SLB与NGINX的异同是什么
475 2
|
7月前
|
负载均衡 应用服务中间件 nginx
解决nginx配置负载均衡时invalid host in upstream报错
在Windows环境下,配置Nginx 1.11.5进行负载均衡时遇到问题,服务无法启动。错误日志显示“invalid host in upstream”。检查发现上游服务器列表中,192.168.29.128的主机地址无效。负载均衡配置中,两个服务器地址前误加了"http://"。修正方法是删除上游服务器列表和proxy_pass中的"http://"。问题解决后,Nginx服务应能正常启动。
522 4
解决nginx配置负载均衡时invalid host in upstream报错