了解upstream标签
1.upstream 支持4种负载均衡调度算法:
A、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器;
B、ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。
C、url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。
D、fair:这是比上面两个更加智能的负载均衡算法。按后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持 fair的,如果需要使用这种调度算法,必须下载Nginx的 upstream_fair模块。
2、配置实例
1)、热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。
2)、轮询:nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB…(weight=?)
3)、加权轮询:跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB…
4)、ip_hash:nginx会让相同的客户端ip请求相同的服务器。
upstream myweb {
server 172.17.14.2:8080;
server 172.17.14.3:8080;
ip_hash;
}
5)、nginx负载均衡配置状态参数
• down,表示当前的server暂时不参与负载均衡。
• backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
• max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
• fail_timeout,在经历了max_fails次失败后,暂停服务的时间单位秒。max_fails可以和fail_timeout一起使用。
安装Nginx
如果你未安装nginx,请点击:nginx安装链接
配置
本实验的架构图为

- 关闭每一台服务器的防火墙
systemctl stop firewalld && setenforce 0
配置nginx-1
- 创建网站发布目录及信息
/usr/share/nginx/html/index.html //默认网站发布目录
echo "this is nginx-1 " >/usr/share/nginx/html/index.html
- 检测
nginx---负载均衡---upstream标签
配置nginx-1
- 创建网站发布目录及信息
/usr/share/nginx/html/index.html //默认网站发布目录
echo "this is nginx-2 " >/usr/share/nginx/html/index.html
- 检测
nginx---负载均衡---upstream标签
配置proxy
- 修改主配置文件
vim /etc/nginx/nginx.conf
注意:在HTTP标签内添加upstream标签,其格式如下:
upstream
name
{
server ip:端口;
server ip:端口;
server ip:端口;
}
- 修改子配置文件
vim /etc/nginx/conf.d/default.conf
其修改内容为:
server {
listen 80;
server_name www.hualaotouvip.com; //域名自定义
charset utf-8;
#access_log logs/host.access.log main;
location / {
proxy_pass http://testweb; //跟upstream对应的`name`一致
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
- 检测是否有语法错误
nginx -t
nginx -s reload
- 在客户端添加域名解析:
vim /etc/hosts
- 检测 注意:默认调度算法为轮询
nginx---负载均衡---upstream标签