十一、Nginx反向代理及高可用
反向代理是服务器端的代理。客户端访问反向代理服务器,由代理服务器将请求转发给后 端真实服务器,再将响应返回给客户端。客户端并不知道真实服务器的存在。
1. 反向代理概念
1.1什么是反向代理?
反向代理是服务器端的代理。客户端访问反向代理服务器,由代理服务器将请求转发给后 端真实服务器,再将响应返回给客户端。客户端并不知道真实服务器的存在
1.2 反向代理的作⽤
第⼀,负载均衡。将请求分发到多台后端服务器,提⾼系统处理能⼒。
第⼆,安全隔离。后端服务器隐藏在内⽹,不直接暴露给公⽹。
第三,SSL 终⽌。在代理层处理 HTTPS 加解密,减轻后端负担。
第四,缓存加速。缓存后端响应,减少重复请求
2.高可用
高可用是什么?
高可用:就是业务尽量不宕机、不停服、不挂掉
干什么的:
防止单点故障,一台服务器挂了有另外的服务器接手业务
为什么要用:
1.避免服务宕机
服务器死机、虚拟机崩溃、意外重启、网线断了、系统崩了,单台直接废;高可用自动切机,业务不中断。
2.可以不停机维护
想升级配置、更新程序、打补丁、重启服务:
一台下线维护,另一台顶着对外提供服务,用户完全没感觉。
3.企业业务不能停
电商、银行、系统、官网、OA 系统,停一分钟都损失钱,必须高可用。
4.分担流量
不只是防挂,还能多台一起扛并发,人多也不会崩。
3.举例:
使用nginx + keepalived 实现高可用场景,并可以使用www.503.com访问到后端httpd服务器(自定义页面方便区分)
虚拟机A:
# 安装、开启,设置开机自启动nginx服务,并查看nginx状态
yum install -y nginx
systemctl start nginx
systemctl enable nginx
systemctl status nginx
# 下载 keepalived
yum install -y keepalived
# 查看keepalived配置文件路径
rpm -qc keepalived
# cd 进入 并 vi编辑
cd /etc/keepalived
vi keepalived.conf
global_defs {
router_id nginx-master
script_user root
enable_script_security
}
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 2
fall 2
rise 1
}
vrrp_instance NGINX {
state MASTER
interface ens33
virtual_router_id 42
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass abc123
}
track_script {
check_nginx
}
virtual_ipaddress {
192.168.202.100/24 dev ens33 label ens33:0
}
}
# 编辑健康检查脚本
vi /etc/keepalived/check_nginx.sh
vi check_nginx.sh
#!/bin/bash
#判断 Nginx 是否存活
counter=`ps -C nginx --no-header | wc -l`
if [ $counter -eq 0 ]; then
systemctl stop keepalived
fi
# 开启keepalived服务并查看状态确认
systemctl start keepalived
systemctl status keepalived
# 查看vip地址
ip a
# 配置DNS映射
vi /etc/hosts
192.168.202.100 www.503.com
# 编辑nginx配置文件
vi /etc/nginx/nginx.conf
……
upstream httpd_server {
server 192.168.202.133:80;
}
server {
listen 80;
server_name www.503.com;
root /usr/share/nginx/html;
location / {
proxy_pass http://httpd_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
……
# 重启nginx服务
systemctl restart nginx
# curl 访问
[root@localhost keepalived]# curl http://www.503.com This is Nginx Node A
远程传输文件给另一台虚拟机B(虚拟机B需先下载keepalived)
[root@localhost keepalived]# scp /etc/keepalived/* 192.168.202.132:/etc/keepalived/ root@192.168.202.132's password: check_nginx.sh 100% 460 155.2KB/s 00:00 keepalived.conf 100% 519 441.2KB/s 00:00
注意关闭主机和备机的防火墙(可能导致备机找不到主机的路由)
systemctl stop firewalld systemctl disable firewalld
虚拟机B:
# 下载nginx、keepalived
yum install -y nginx keepalived
# cd 进入
cd /etc/keepalived
# 修改主备关系和服务器优先级
vi keepalived.conf
……
state BACKUP
……
priority 90
……
# 修改健康检测脚本
vi check_nginx.sh
#!/bin/bash
#判断 Nginx 是否存活
counter=`ps -C nginx --no-header | wc -l`
if [ $counter -eq 0 ]; then
systemctl stop keepalived
fi
# 修改nginx配置文件
vi /etc/nginx/nginx.conf
……
upstream httpd_server {
server 192.168.202.133:80;
}
server {
listen 80;
server_name www.503.com;
root /usr/share/nginx/html;
location / {
proxy_pass http://httpd_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
……
# 配置DNS映射
vi /etc/hosts
192.168.202.100 www.503.com
# 开启并设置自启动
systemctl start nginx
systemctl enable nginx
systemctl start keepalived
systemctl enable keepalived
# 关闭防火墙
systemctl disable firewalld --now
后端httpd服务器C:
# 下载httpd yum install -y httpd # 写入页面文件 echo "this is httpd web page" > /var/www/html/index.html # 开启,自启动 systemctl start httpd systemctl enable httpd # DNS域名解析 vi /etc/hosts 192.168.202.100 www.503.com # 关闭防火墙 systemctl disable firewalld --now # 验证 [root@128 ~]# curl www.503.com this is httpd web page [root@132 ~]# curl www.503.com this is httpd web page [root@128 ~]# curl 192.168.202.128 this is httpd web page [root@132 ~]# curl 192.168.202.132 this is httpd web page [root@128 ~]# systemctl stop nginx [root@128 ~]# curl 192.168.202.128 curl: (7) Failed connect to 192.168.202.128:80; 拒绝连接 [root@132 ~]# ip a | grep 202.100 inet 192.168.202.100/24 scope global secondary ens33:0
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)