Nginx作为负载均衡——实战演练
配置语法
Syntax:upstream name {...}
Default:——
Context:http
演示
准备两台虚拟主机192.168.96.188、192.168.96.188
在188这台主机上创建3个html静态文件
vi /opt/app/code1/index.html
<html>
<head>
<meta charset="utf-8">
<title>server1</title>
</head>
<body style="">
<h1>Server 1<h1>
</body>
</html>
vi /opt/app/code2/index.html
<html>
<head>
<meta charset="utf-8">
<title>server2</title>
</head>
<body style="">
<h1>Server 2<h1>
</body>
</html>
vi /opt/app/code3/index.html
<html>
<head>
<meta charset="utf-8">
<title>server3</title>
</head>
<body style="">
<h1>Server 3<h1>
</body>
</html>
在188这台主机上创建3个.conf配置文件。配置如下
vi /etc/nginx/conf.d/server1.conf
server {
listen 8001; #请求的8001端口
server_name localhost;
#charset koi8-r;
access_log /var/log/nginx/server1.access.log main;
location / {
root /opt/app/code1; #静态文件目录
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 404 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
vi /etc/nginx/conf.d/server2.conf
server {
listen 8002; #请求的8002端口
server_name localhost;
#charset koi8-r;
access_log /var/log/nginx/server1.access.log main;
location / {
root /opt/app/code2; #静态文件目录
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 404 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
vi /etc/nginx/conf.d/server3.conf
server {
listen 8003; #请求的8003端口
server_name localhost;
#charset koi8-r;
access_log /var/log/nginx/server1.access.log main;
location / {
root /opt/app/code3; #静态文件目录
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 404 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
在135这台主机上配置负载均衡
添加配置文件
vi /usr/local/nginx/conf/hosts/upstream.conf
upstream test {
server 192.168.96.188:8001; # 添加 test 配置监听的ip+端口
server 192.168.96.188:8002;
server 192.168.96.188:8003;
}
server {
listen 80;
server_name localhost jeson.t.imooc.io;
#charset koi8-r;
#access_log /usr/local/nginx/logs/test_proxy.access.log main;
resolver 8.8.8.8;
location / {
proxy_pass http://test; # 添加需要监听 test
include proxy_params; # 存储语法的文件名称
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
在/usr/local/nginx/conf/目录新建文件
vi proxy_params #对应楼上配置文件中的文件名称
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
配置好两台主机的nginx。记得检查语法、重启nginx。
使用本地浏览器访问192.168.96.135,按F5刷新,会循环访问server1、server2、server3、

这是关闭主机188的8002端口
iptables -I INPUT -p tcp --dport 8002 -j DROP
再次本地浏览器访问192.168.96.135,按F5刷新。这时候就不会有server2访问页面了

现实场景中,三台主机有一台主机宕机了,没有做负载均衡,会导致其他主机也无法访问。
有做负载均衡,一台主机宕机了,其他主机照样也能访问
Nginx作为负载均衡——实战演练的更多相关文章
- ASP.NET Core使用Docker-Swarm集群部署实现负载均衡实战演练
一.需求背景 人生苦短,我用.NET Core!阿笨对Docker是这样评价的:Docker在手,环境我有!Docker出手,集群我有!前面的Doc基础课程我们学习了如何使用Docker来部署搭建单机 ...
- nginx+tomcat负载均衡
最近练习nginx+tomcat负载均衡.根据一些资料整理了大体思路,最终实现了1个nginx+2个tomcat负载均衡. 安装JDK 1>进入安装目录,给所有用户添加可执行的权限 #chmod ...
- 使用Nginx实现负载均衡
使用Nginx实现负载均衡 一.nginx简介 nginx是一个高性能的HTTP服务器和反向代理服务器.它起初是俄罗斯人Igor Sysoev开发的,至今支撑者俄罗斯的很多大型的网站. 二.nginx ...
- nginx作为负载均衡服务器——测试
i. 需求 nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器. nginx负载均衡服务器:192.168.101.3 tomcat1服 ...
- windows配置nginx实现负载均衡集群
windows配置nginx实现负载均衡集群2014-08-20 09:44:40 来源:www.abcde.cn 评论:0 点击:617 网上大部分关于nginx负载均衡集群的教程都是lin ...
- 使用nginx做负载均衡的session共享问题
查了一些资料,看了一些别人写的文档,总结如下,实现nginx session的共享PHP服务器有多台,用nginx做负载均衡,这样同一个IP访问同一个页面会被分配到不同的服务器上,如果session不 ...
- 【Nginx】配置Nginx的负载均衡
参考的优秀文章 tomcat配置文件server.xml详解 AJP协议总结与分析 Using nginx as HTTP load balancer 在本机运行2个Tomcat 现需要运行两个Tom ...
- Nginx的负载均衡 - 整体架构
Nginx的负载均衡 - 整体架构 Nginx版本:1.9.1 我的博客:http://blog.csdn.net/zhangskd Nginx目前提供的负载均衡模块: ngx_http_upstre ...
- Nginx作为负载均衡服务器(Windows环境)
一个最简单的负载均衡测试,不涉及到session复制,只是将请求分配到不同的服务器上去而已. 1.创建一个简单的web应用.只有一个index.jsp页面,,内容如下. <%@ page lan ...
随机推荐
- H5 多媒体标签
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CodeForces 1216C(假的计算几何+扫描线)
传送门 •题意 给你三个矩形,依次编号为 1,2,3: 判断 矩形1 是否被 矩形2 和 矩形3 完全覆盖: 如果没有完全覆盖,输出 "YES",反之,输出 "NO&qu ...
- Spark in action Spark 以及SparkR的安装配置说明
Spark以及SparkR的安装(standalone模式) From :ssdutsu @ Inspur Company suzhiyuan2006@gmail.com 操作系统 CentOS 7 ...
- 2018-2-13-C#-解析-sln-文件
title author date CreateTime categories C# 解析 sln 文件 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23 ...
- 原生js实现继承
在多数语言中继承都很重要.JavaScript是一个基于原型的语言,这意味着对象可以直接从其他对象继承.以下列出几种常见的js继承方式. 原型链继承 function Father(){ this.s ...
- neo4j-查询示例
查找名为"Cloud Atlas"的电影 match(cloudAtlas {title:"Cloud Atlas"}) return cloudAtlas 查 ...
- 第二阶段:4.商业需求文档MRD:6.PRD-其他需求
- 使用element的upload组件实现一个完整的文件上传功能(上)
说到标题就有点心塞了,前段时间项目上需要实现一个文件上传的功能,然后就咔咔的去用了element的upload组件,不用不知道一用吓一跳哇. 在使用的过程中遇到了很多让意想不到的问题,后来也因为时间问 ...
- 开发当中curl简单使用
curl是linux上可以发送http请求的命令.当然Postman是一个很好的接口调用管理工具,但在验证一个linux服务器调用另外一个linux服务器API是否可用的场景下,非curl命令莫属. ...
- 驾驭git merge——git merge的规范化操作
这两天负责将一个开发了较长时间,代码量数万行的C语言项目(A项目)的代码分支合并到主线.由于之前参与过一些其他项目分支收编时采用git merge引入问题的修改,个人从心理上对git merge有所抵 ...