当前位置: 首页 > news >正文

Nginx负载均衡demo

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、准备Demo

新增Dockerfile文件,编辑内容:
	FROM java:8
	MAINTAINER yuantx
	ADD demo.jar /usr/local/demo.jar
	EXPOSE 8083
	ENTRYPOINT ["java","-jar","/usr/local/demo.jar"]

	生成Demo镜像:
	docker build -t demo .

启动8083和8084容器:
	docker run -d -p 8083:8083 --name compose_demo_1 demo:latest
	docker run -d -p 8083:8084 --name compose_demo_2 demo:latest

二、配置Nginx default.conf

upstream demo_server{
	server 192.168.0.10:8083 weight=1;
	server 192.168.0.10:8084 weight=2;
}

server {
	listen       80;
	server_name  192.168.0.10;

	location /index{
		proxy_pass  http://demo_server;
		proxy_set_header  X-Real-IP  $remote_addr;
		proxy_redirect default;
		proxy_connect_timeout 6s;
	}

	location /ytx{
		proxy_pass  http://demo_server;
		proxy_set_header  X-Real-IP  $remote_addr;
		proxy_redirect default;
		proxy_connect_timeout 6s;
	}

	location /qyh{
		proxy_pass  http://demo_server;
		proxy_set_header  X-Real-IP  $remote_addr;
		proxy_redirect default;
		proxy_connect_timeout 6s;
	}

	error_page   500 502 503 504  /50x.html;
	location = /50x.html {
		root   /usr/share/nginx/html;
	}
}

upstream demo_server{}几种负载均衡策略:

1.轮询
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
	upstream demo_server {
		server 192.168.0.10;
		server 192.168.0.11;
	}

2.weight:权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,权重越高,在被访问的概率越大。
	upstream demo_server {
		server 192.168.0.10:8083 weight=1;
		server 192.168.0.10:8084 weight=2;
	}

3.ip_hash:根据IP分配
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
	upstream demo_server {
		ip_hash;
		server 192.168.0.10:8083;
		server 192.168.0.11:8084;
	}

4.fair(第三方):根据响应时间
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
	upstream demo_server {
		server server1;
		server server2;
		fair;
	}

5.url_hash(第三方):根据URL分配
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
	upstream demo_server {
		server squid1:3128;
		server squid2:3128;
		hash $request_uri;
		hash_method crc32;
	}

三、将default.conf拷贝到/etc/nginx/conf.d/

	先进入nginx容器,删除默认的default.conf
	docker exec -it compose_nginx_1 /bin/bash
	
	rm -f default.conf
	
	拷贝刚才准备的nginx配置default.conf:
	docker cp default.conf compose_nginx_1:/etc/nginx/conf.d/

四、重启Nginx

	docker restart compose_nginx_1

五、测试

六、遇到的问题

解决方案:
	关闭防火墙
	systemctl stop firewalld.service
	systemctl disable firewalld.service (禁止开机启动)

转载于:https://my.oschina.net/yuantangxi/blog/2994893

相关文章:

  • Mysql 字符串截取
  • Go语言的序列化与反序列化(gob)
  • SqlServer将表中数据复制到另一张表
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • hdu 1222 Wolf and Rabbit
  • css实现移入文字顶部出现提示的效果
  • 【转】使用 Android 的日志工具LogCat
  • 原创教程“ActionScript3.0游戏中的图像编程”开始连载啦!
  • c++避免掩盖继承来的名称
  • MySQL列的默认值主键索引与自增 删除增加与修改
  • DoraemonKit,一款功能齐全的客户端 (iOS、Android) 研发助手,你值得拥有。
  • 欧美斯项目签到功能,实时获取当前所在位置的经纬度
  • 云原生的浪潮下,为什么运维人员适合学习Go语言?
  • HDU 2122 Ice_cream’s world III
  • 九、IIC驱动原理分析
  • @jsonView过滤属性
  • 《剑指offer》分解让复杂问题更简单
  • Android Volley源码解析
  • Babel配置的不完全指南
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Linux快速复制或删除大量小文件
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • PHP面试之三:MySQL数据库
  • react 代码优化(一) ——事件处理
  • 仿天猫超市收藏抛物线动画工具库
  • 回流、重绘及其优化
  • 力扣(LeetCode)21
  • 批量截取pdf文件
  • 前端知识点整理(待续)
  • 设计模式(12)迭代器模式(讲解+应用)
  • 温故知新之javascript面向对象
  • 正则与JS中的正则
  • 回归生活:清理微信公众号
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​如何在iOS手机上查看应用日志
  • # Maven错误Error executing Maven
  • #1015 : KMP算法
  • (1)虚拟机的安装与使用,linux系统安装
  • (20050108)又读《平凡的世界》
  • (4)(4.6) Triducer
  • (6)STL算法之转换
  • (6)设计一个TimeMap
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (TOJ2804)Even? Odd?
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (层次遍历)104. 二叉树的最大深度
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (三)Honghu Cloud云架构一定时调度平台
  • (转)winform之ListView
  • .NET 表达式计算:Expression Evaluator
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET关于 跳过SSL中遇到的问题
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET框架设计—常被忽视的C#设计技巧