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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月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)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
94 0
|
11天前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
61 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
8天前
|
负载均衡 应用服务中间件 nginx
Nginx的6大负载均衡策略及权重轮询手写配置
【10月更文挑战第9天】 Nginx是一款高性能的HTTP服务器和反向代理服务器,它在处理大量并发请求时表现出色。Nginx的负载均衡功能可以将请求分发到多个服务器,提高网站的吞吐量和可靠性。以下是Nginx支持的6大负载均衡策略:
30 7
|
6天前
|
负载均衡 算法 Java
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
尼恩,一位资深架构师,分享了关于负载均衡及其策略的深入解析,特别是基于权重的负载均衡策略。文章不仅介绍了Nginx的五大负载均衡策略,如轮询、加权轮询、IP哈希、最少连接数等,还提供了手写加权轮询算法的Java实现示例。通过这些内容,尼恩帮助读者系统化理解负载均衡技术,提升面试竞争力,实现技术上的“肌肉展示”。此外,他还提供了丰富的技术资料和面试指导,助力求职者在大厂面试中脱颖而出。
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
|
8天前
|
缓存 负载均衡 算法
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个通用的 TCP/UDP 代理服务器,以及一个邮件代理服务器和通用的 HTTP 缓存服务器。
17 0
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
|
16天前
|
开发框架 负载均衡 前端开发
Nginx负载均衡
Nginx负载均衡
|
16天前
|
负载均衡 Java 应用服务中间件
Nginx负载均衡配置
Nginx负载均衡配置
|
17天前
|
负载均衡 算法 应用服务中间件
nginx反向代理与负载均衡
nginx反向代理与负载均衡
19 1
|
13天前
|
负载均衡 算法 Java
java中nginx负载均衡配置
java中nginx负载均衡配置
30 0
|
16天前
|
负载均衡 算法 应用服务中间件
【nginx】配置Nginx实现负载均衡
【nginx】配置Nginx实现负载均衡