2014/5/8
设想:每台服务器上都部署相关模块,比如在192.168.1.9上部署所有模块,不同的模块部署到不同的tomcat上。假如有10个模块,则分别配置10个tomcat,他们的端口号各不相同。同样的,在其他服务器上也同时部署相同的模块。
使用nginx做负载均衡。
下面是我写的一个小demo和配置。
为了是Url好看一点,我在host上配置了如下
192.168.1.6 liuyiyou.com
在一台机器上配置两个tomcat。端口分别是8080,9080.
每个tomcat上都部署了一个模块test。事实上,两个模块应该完全相同。但是为了测试。我显示的内容不同。其中8080上显示的是1而8081上显示的是2
在nginx上做如下配置:
http {
upstream test {
#根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。
#同一机器在多网情况下,路由切换,ip可能不同
#ip_hash;
server liuyiyou.com:9080;
server liuyiyou.com:8080;
}
server {
listen 80;
server_name liuyiyou.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_pass http://test/;
}
}
}
主要是upstream中的配置。该种配置下,是按照时间分别访问不同的模块
启动两个tomcat。在浏览器中输入:http://liuyiyou.com/test/index.jsp
则分别打印1 和2
假如1死了。则直接打印2
实验成功后:
之前:
1:192.168.1.5 已启动 lcp_server_5 登录模块
2:192.168.1.9 已启动 lcp_server_3 搜索模块和用户中心模块
3:192.168.1.11 已启动 lcp_server_1
3:192.168.1.10 已启动 lcp_server_4 购物车模块
3:192.168.1.12 已启动 lcp_server_2
修改后:
每个服务器上都有全部的模块。
只是不同的模块对应不同端口的tomcat
这样,其中一台宕机,任然可以正常访问。