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

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

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
1月前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
66 0
|
1月前
|
负载均衡 应用服务中间件 Linux
高可用系列文章之三 - NGINX 高可用实施方案
高可用系列文章之三 - NGINX 高可用实施方案
|
1月前
|
负载均衡 应用服务中间件 nginx
nginx-tomcat反向代理以及负载均衡测试
nginx-tomcat反向代理以及负载均衡测试
|
1月前
|
负载均衡 应用服务中间件 API
Nginx配置文件详解Nginx负载均衡Nginx静态配置Nginx反向代理
Nginx配置文件详解Nginx负载均衡Nginx静态配置Nginx反向代理
63 4
|
11天前
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
17 2
|
6天前
|
存储 负载均衡 应用服务中间件
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
|
25天前
|
监控 负载均衡 应用服务中间件
Keepalive 解决nginx 的高可用问题
Keepalive 解决nginx 的高可用问题
|
1月前
|
存储 运维 负载均衡
Heartbeat+Nginx实现高可用集群
通过Heartbeat与Nginx的结合,您可以建立一个高可用性的负载均衡集群,确保在服务器故障时仍能提供无中断的服务。这种配置需要仔细的计划和测试,以确保系统在故障情况下能够正确运行。
32 2
|
1月前
|
负载均衡 应用服务中间件 PHP
使用nginx-haproxy实现七层负载均衡
【4月更文挑战第13天】使用nginx实现动静分离的负载均衡集群
63 4
|
1月前
|
Kubernetes 搜索推荐 应用服务中间件
通过keepalived+nginx实现 k8s apiserver节点高可用
通过keepalived+nginx实现 k8s apiserver节点高可用
94 16