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

五、测试

Nginx负载均衡demo_第1张图片

六、遇到的问题

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

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

你可能感兴趣的:(Nginx负载均衡demo)