准备工作
本次试验都是在win7下完成
安装apache-tomcat-7.0.50
1.设置conf下server.xml 端口为
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
复制tomcat,端口改为
<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444" />
<Server port="8008" shutdown="SHUTDOWN">
<Connector port="8011" protocol="AJP/1.3" redirectPort="8444" />
端口不要重复,避免带了不必要的麻烦导致启动失败
注意是否设置了调试接口查看catalina.bat中
SET "CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5888"
如果设置了5888,那么要保证不能重复,或者直接加上rem注释(如果不这么做,会出现下面这个错误
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197))
2.将各自webapp文件夹下建ROOT文件夹,里面新建index.html,内容为
<!DOCTYPE html>
<html>
welcome 8080
</html>
<!DOCTYPE html>
<html>
welcome 8082
</html>
3.启动startup.bat
安装nginx-1.10.1
1.直接启动nginx.exe ,启动成功logs文件下会出现nginx.pid,浏览器输入localhost能查看成功页面
我第一次没启动成功,error.log提示bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
80端口被占用了!
因为nginx.conf文件中配置了
server {
listen 80;
通过netstat -aon|findstr "80" 找到占用的进程,tasklist|findstr "1908"找到对应的进程名
httpd.exe 1908 Services 0 9,380 K
通过进程管理器杀之,再启动nginx.exe就可以了
2.配置nginx.conf
红色部分是修改的
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 10;
upstream tomcat_servers {
server 127.0.0.1:8080 ;
server 127.0.0.1:8082 backup;
}
server {
listen 80;
server_name mylocalhost;
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat_servers;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
测试结果
1.浏览器输入localhost,页面展示8080,不会访问到backup
这时关掉8080对应tomcat窗口,继续访问,会很久(90秒左右)才会响应8082,就算改成
server 127.0.0.1:8080 max_fails=1 fail_timeout=3s也无济于事,求大神解答
再启动8080tomcat,页面能很快访问到8080,总结就是主tomcat访问很快,备tomcat访问很慢,而且是每次都慢!
看样子还是得用keepalived做主备啊!
2.配置成下面这样
server 127.0.0.1:8080 weight=5;
server 127.0.0.1:8082 weight=5;
浏览器响应页面很随机的出现8080,8082,达到负载均衡的效果