一、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