tengine 负载均衡备忘
环境
Centos 6.6 X86_64
Tengine-2.1.1
负载均衡
http{
...
upstream backendServs {
server localhost:8180;
server localhost:8280;
server localhost:8380;
#session_sticky;
#session_sticky cookie=ngroute fallback=on path=/ mode=insert option=direct;
}
limit_req_zone $binary_remote_addr $uri zone=allips:10m rate=10r/s;
server{
...
location / {
limit_req zone=allips burst=10 nodelay;
root html;
index index.html index.htm;
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;
proxy_pass http://backendServs;
}
...
}
...
}
说明:
1.limit_req_zone 是限流设置,1秒钟同一ip,对同一uri只能限制10次访问。
2.session_sticky 是session粘着设置,注释掉,有需要的自己打开
3.特别注意proxy_set_header Host
host:
server_port;设置,如果你的前端不是80,如果不把$server_port;传到后端,会出现莫明其妙跳转到80端口问题。
测试页面
test.jps
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>测试session</title>
</head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"");
out.println("<br>ID " + session.getId()+"");
out.println("<br>");
out.println("=============================================<br>");
out.print("Session 列表");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"");
System.out.println( name + " = " + value+"<br>");
}
//设置user_count值,累加到session中
String user_count=(String)session.getAttribute("user_count");
if(user_count == null || user_count.length()==0) {
session.setAttribute("user_count","1");
}
else{
user_count=Integer.parseInt(user_count)+1+"";
session.setAttribute("user_count",user_count);
}
%>
</body>
</html>
说明
所有相关的目录,链接,参数等请根据实际情况自行调整。