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

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
5月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
5月前
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
159 21
|
5月前
|
负载均衡 Java 应用服务中间件
Tomcat与Nginx的负载均衡与动静分离技巧
总的来说,Tomcat和Nginx各有各的优点,在负载均衡和动静分离这两方面它们都有很好的应用。灵活使用这两个工具能够让Web应用具有更好的扩展性和用户体验。
132 14
|
5月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
180 11
|
6月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
342 0
|
10月前
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
348 11
|
11月前
|
缓存 负载均衡 算法
如何配置Nginx反向代理以实现负载均衡?
如何配置Nginx反向代理以实现负载均衡?
|
10月前
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
1425 4
|
12月前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
492 5
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全

热门文章

最新文章