nginx双机高可用及Tomcat集群负载均衡

nginx双机高可用及Tomcat集群负载均衡

********试验环境及常用命令********************

---》试验机器

192.188.32.83tomcat1

192.188.32.55tomcat2

---》nginxlinux下安装

注意:其实把pcre-devel-7.8-3.1.el6.i686.rpm(在cd安装盘上找)安装过去就能正确编译。

---》tomcat安装(略)

---》启动关闭tomcat服务器

/usr/local/apache-tomcat-6.0.32/bin/startup.sh

/usr/local/apache-tomcat-6.0.32/bin/shutdown.sh

---》配置nginx文件

vi/usr/local/nginx/conf/nginx.conf

---》启动nginx

/usr/local/nginx/sbin/nginx

---》关闭nginx

关闭nginx

[root@LinuxTestsbin]#ps-ef|grepnginx

root34621013:07?00:00:00nginx:masterprocess./nginx

nobody34633462013:07?00:00:00nginx:workerprocess

root346731523013:08pts/100:00:00grepnginx

[root@LinuxTestsbin]#kill3462

******单nginx配置tomcat集群(单机)负载均衡************

******单nginx配置tomcat集群(多机器)负载均衡**********

---》分别在两台试验机器上Tomcatweb服务器

分别修改两套tomcat的ROOT/index.html,在<body>中加入

<h2>fromtomcat1:192.188.32.83</h2>

<h2>fromtomcat2:192.188.32.85</h2>

便于观察。

---》在192.188.32.83上部署nginx,配置参考

#usernobody;

userrootroot;

worker_processes4;

#error_loglogs/error.log;

#error_loglogs/error.lognotice;

#error_loglogs/error.loginfo;

#pidlogs/nginx.pid;

events{

#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue

useepoll;

worker_connections1024;

}

http{

includemime.types;

default_typeapplication/octet-stream;

#log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'

#'$status$body_bytes_sent"$http_referer"'

#'"$http_user_agent""$http_x_forwarded_for"';

#access_loglogs/access.logmain;

sendfileon;

#tcp_nopushon;

#keepalive_timeout0;

keepalive_timeout65;

#gzipon;

upstreamtomcat{

server192.188.32.83:8080;

server192.188.32.55:8080;

}

server{

listen80;

server_name192.188.32.83;

#charsetkoi8-r;

#access_loglogs/host.access.logmain;

location/{

roothtml;

indexindex.htmlindex.htm;

proxy_passhttp://tomcat;

proxy_redirectoff;

proxy_set_headerHost$host;

proxy_set_headerX-Real-IP$remote_addr;

proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

client_max_body_size10m;

client_body_buffer_size128k;

proxy_connect_timeout90;

proxy_send_timeout90;

proxy_read_timeout90;

proxy_buffer_size4k;

proxy_buffers432k;

proxy_busy_buffers_size64k;

proxy_temp_file_write_size64k;

}

#error_page404/404.html;

#redirectservererrorpagestothestaticpage/50x.html

#error_page500502503504/50x.html;

location=/50x.html{

roothtml;

}

}

}

---》测试

测试一:启动nginx\tomcat1\tomcat2

访问http://192.188.32.83/观察,会轮询83和85两台服务器。

测试二:关闭tomcat1

访问http://192.188.32.83/观察,能正常访问85web服务器。

测试三:启动tomcat1

访问http://192.188.32.83/观察,会轮询83和85两台服务器。

测试四:关闭tomcat2结果参考上述步骤

******双机nginx配置tomcat集群(多机器)负载均衡**********

单nginx配置tomcat集群(单机)负载均衡、单nginx配置tomcat集群(多机器)负载均衡

缺陷是高度依赖负载均衡服务器,负载均衡服务器故障会导致整个网络无法访问,所以考虑把负载均衡服务器也做成双机高可用。

--》方案

采用linux虚拟ip(ip漂移技术)实现Nginx双机高可用。下述为虚拟ip阐述了ip虚拟技术:

通常情况下,两台服务器都具有一块以上的网卡,每块网卡都应该有一个IP地址,同时,还应该有一个漂移IP地址,该地址为工作IP地址。因此,最简单的主从方式下,双机系统要占用3个网络地址。

在分配IP地址时,要分清工作IP地址和主机自由地址。如在主从方式、单网卡的情况下,主机一地址为200.10.10.1,主机二的地址为200.10.10.2,工作地址为200.10.10.3,正常情况下,工作主机的自由地址是被工作地址取代的(若主机一在工作,主机一得地址由200.10.10.1变为200.10.10.3)。在发生主机切换的情况下,主机一的地址恢复为200.10.10.1,而主机二的地址会由200.10.10.2变为200.10.10.3,这就是地址漂移。

网卡上增加一个IP:

/sbin/ifconfigeth0:1192.168.3.104netmask255.255.255.0

/sbin/routeadd-host192.168.3.104deveth0:1

删除网卡的第二个IP地址:

ipaddrdel192.168.0.1deveth0

---》分别给两台服务器配置虚拟ip

两台机器的虚拟ip定为192.188.32.81

***32.83添加虚拟ip

/sbin/ifconfigeth1:1192.188.32.81netmask255.255.255.0

/sbin/routeadd-host192.188.32.81deveth1:1

***32.85添加虚拟ip

/sbin/ifconfigeth0:1192.188.32.81netmask255.255.255.0

/sbin/routeadd-host192.188.32.81deveth0:1

--》分别安装nginx和tomcat

---》nginx配置参考

#usernobody;

userrootroot;

worker_processes4;

#error_loglogs/error.log;

#error_loglogs/error.lognotice;

#error_loglogs/error.loginfo;

#pidlogs/nginx.pid;

events{

#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue

useepoll;

worker_connections1024;

}

http{

includemime.types;

default_typeapplication/octet-stream;

#log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'

#'$status$body_bytes_sent"$http_referer"'

#'"$http_user_agent""$http_x_forwarded_for"';

#access_loglogs/access.logmain;

sendfileon;

#tcp_nopushon;

#keepalive_timeout0;

keepalive_timeout65;

#gzipon;

upstreamtomcat{

server192.188.32.83:8080;

server192.188.32.55:8080;

}

server{

listen80;

#####需要修改的地方###

server_name192.188.32.81;

#charsetkoi8-r;

#access_loglogs/host.access.logmain;

location/{

roothtml;

indexindex.htmlindex.htm;

proxy_passhttp://tomcat;

proxy_redirectoff;

proxy_set_headerHost$host;

proxy_set_headerX-Real-IP$remote_addr;

proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

client_max_body_size10m;

client_body_buffer_size128k;

proxy_connect_timeout90;

proxy_send_timeout90;

proxy_read_timeout90;

proxy_buffer_size4k;

proxy_buffers432k;

proxy_busy_buffers_size64k;

proxy_temp_file_write_size64k;

}

#error_page404/404.html;

#redirectservererrorpagestothestaticpage/50x.html

#error_page500502503504/50x.html;

location=/50x.html{

roothtml;

}

}

}

---》测试

测试1:启动两台tomcat、nginx,访问http://192.188.32.81/,结果能正常访问;

测试2:关闭某一台nginx,访问http://192.188.32.81/,结果能正常访问;

(可以关闭nginx,或删除虚拟ip模拟服务器故障情况)

**删除83上的虚拟ip

ipaddrdel192.188.32.81deveth1

**删除55上的虚拟ip

ipaddrdel192.188.32.81deveth0

参考:

http://www.cnblogs.com/xiaogangqq123/archive/2011/03/04/1971002.html

http://www.php100.com/html/program/nginx/2013/0905/5525.html

相关推荐