一、下载安装nginx,本人下载的是nginx-1.0.11版本;
二、下载安装tomcat,本人使用的是apache-tomcat-7.0.62,复制分别命名为:apache-tomcat-7.0.62_1和apache-tomcat-7.0.62_2作为后台服务tomcat;
三、修改tomcat配置文件
1、 apache-tomcat-7.0.62_1\conf下server.xml
修改关闭端口<Server port="8005" shutdown="SHUTDOWN">
修改请求端口<Connector port="8080" .../>
2、apache-tomcat-7.0.62_2\conf下server.xml
修改关闭端口<Server port="8015" shutdown="SHUTDOWN">
修改请求端口<Connector port="8090" .../>
四、二个tomcat下分别部署工程test.war:
apache-tomcat-7.0.62_1/webapps/test下index.html页面值为Server 1;
apache-tomcat-7.0.62_2/webapps/test下index.html页面值为Server 2;
启动验证访问:http://localhost:8080/test/ 页面显示Server 1
http://localhost:8090/test/ 页面显示Server 2
五、修改nginx的配置文件
#定义Nginx运行的用户和用户组
#user www;
#nginx进程数,建议设置为等于CPU总核心数
worker_processes 1;
#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#进程文件
pid logs/nginx.pid;
#工作模式及连接数上限
events {
#use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 1024;#单个后台worker process进程的最大并发链接数
# multi_accept on;
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型,类型由mime.type文件定义
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#设定日志格式
#access_log logs/access.log main;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
#必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;
#连接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;
#开启gzip压缩
#gzip on;
#设定请求缓冲
#client_header_buffer_size 1k;
#large_client_header_buffers 4 4k;
#include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*;
#设定负载均衡的服务器列表
upstream myServer{
server 127.0.0.1:8080 ;
server 127.0.0.1:8090 ;
}
server {
#监听访问域名绑定那台服务器8000端口的请求
listen 8000;
server_name 127.0.0.1;
location / {
root /root; #定义服务器的默认网站根目录位置;
index index.html; #定义首页索引文件的名称
proxy_pass http://myServer ; #请求转向myServer定义的服务器列表
}
}
}
七、启动nginx
操作命令
启动:start nginx.exe
重启:nginx.exe -s reload
停止:nginx.exe -s stop(或者quit)
八、负载均衡策略
nginx的upstream目前支持的5种方式的分配
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream myServer{
server 127.0.0.1:8080 ;
server 127.0.0.1:8090 ;
}
访问http://127.0.0.1:8000/test/后,页面循环显示server 1和server 2
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream backserver {
server 127.0.0.1:8080 weight=10;
server 127.0.0.1:8090 weight=5;
}
访问http://127.0.0.1:8000/test/后,页面循环显示server 1 、server 1和server 2
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8090;
}
访问http://127.0.0.1:8000/test/后,页面循环显示server 1
4、fair(未验证)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backserver {
server server1;
server server2;
fair;
}
5、url_hash(未验证)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}