nginx简单的分布式部署方案

经验分享 (909) 2023-09-16 10:57:17
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
这样,其中一台宕机,任然可以正常访问。

THE END

发表回复