本文案例仅介绍最常用的负载均衡和反向代理
- 反向代理
- 负载均衡
1.下载
进入Nginx网站 http://nginx.org/en/download.html下载最新稳定版
2.创建目录并上传至自己的服务器
# mkdir -p /opt/install/nginx
[root@localhost redis]# ls -l
-rw-r--r--. 1 root root 1061461 9月 25 19:43 nginx-1.20.1.tar.gz
3.安装
# 1.安装类库
# yum -y install gcc-c++ pcre-devel openssl openssl-devel
# 2.解压安装nginx
# cd /opt/install/nginx
# tar zxvf nginx-1.20.1.tar.gz
# cd /opt/install/nginx/nginx-1.20.1/
# ./configure
# make install
3.启动nginx
#默认配置运行nignx服务
# cd /usr/local/nginx/sbin
# ./nginx
#因为我本地部署的虚拟机IP地址是192.168.3.200 所以打开浏览器输入http://192.168.3.200 进行验证
4.nginx常用命令
# cd /usr/local/nginx/sbin
# 1.启动
# ./nginx
# 2.关闭
# ./nginx -s stop
# 3.刷新配置(修改nginx.conf后刷新可使配置生效)
# ./nginx -s reload
5.nginx 配置案例
5.1 搭建静态资源服务器
# 1.备份原有配置文件
# cd /usr/local/nginx/conf
# cp nginx.conf nginx.conf_back
# 2.准备静态资源包并放入服务器指定目录下(这里模拟创建一个html页面)
# mkdir -p /data/web/
# cd /data/web
# vim my.html;
# 输入如下内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<H1>第一个页面</H1>
</body>
</html>
# 保存退出
# 现在我们在 /data/web/ 下有一个my.html的页面
# 3.配置静态代理
# cd /usr/local/nginx/conf
# vim nginx.conf
# 做如下配置
# 4.刷新nginx配置
# cd /usr/local/nginx/sbin
# ./nginx -s reload
# 查看页面代理情况-注意此时的访问地址是 http://ip/my.html
# 5.修改默认初始页
# cd /usr/local/nginx/conf
# vim nginx.conf
# cd /usr/local/nginx/sbin
# ./nginx -s reload
# 查看页面代理情况-注意此时的访问地址是 http://ip/
5.2 反向代理配置
修改配置文件nginx.conf 如下:
server {
listen 80;
server_name localhost;
location /aaa {
proxy_pass http://192.168.3.101:8081;
proxy_set_header Host $host:$server_port;
}
location /bbb {
proxy_pass http://192.168.3.102:8082;
proxy_set_header Host $host:$server_port;
}
location /ccc {
proxy_pass http://192.168.3.103:8083;
proxy_set_header Host $host:$server_port;
}
}
5.3 负载均衡配置
- 默认算法
- ip_hash 算法
- 权重算法
5.3.1 默认算法配置
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
upstream servers {
server 192.168.3.101:8081;
server 192.168.3.102:8082;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://servers;
proxy_set_header Host $host:$server_port;
}
}
5.3.2 ip_hash 算法配置
请求可能分发到任意一个服务器,当我们的程序不是无状态(非JWT认证策略)的时候(采用了session保存数据),这时候会把登录信息保存到了session中,那么跳转到另外一台服务器的时候就会存在会话丢失的情况,而iphash的每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务
IP_HASH负载均衡策略,可在后端服务进行集群化改造的时候,规避会话共享的问题,是实现老系统集群化改造的快速解决方案
upstream servers {
ip_hash;
server 192.168.3.101:8081;
server 192.168.3.102:8082;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://servers;
proxy_set_header Host $host:$server_port;
}
}
5.3.3 权重算法配置
权重算法可以指定轮询几率,访问分配几率和权重配置成正比,常用于后端服务器计算性能不均的情况
upstream servers {
server 192.168.3.101:8081 weight=3;
server 192.168.3.102:8082 weight=7;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://servers;
proxy_set_header Host $host:$server_port;
}
}