2018.2.27 java电商从1到2--chapter4 tomcat集群与nginx负载均衡

chapter4 tomcat集群与nginx负载均衡

4.1 tomcat集群

问题1:tomcat集群能带来什么优势?

性能up,并发up,高可用,横向拓展...


问题2:tomcat集群会带来什么问题?

session如何共享,定时任务并发,分布式锁,分布式事务...


4.2 tomcat单机部署多应用

假设现在一台机器上安装了两个tomcat,tomcat1和tomcat2。


4.2.1 linux/mac

(1)环境变量文件

修改/etc/profile文件,增加如何配置:

export CATALINA_BASE=/user/imooc/tocmat1
export CATALINA_HOME=/user/imooc/tocmat1
export TOMCAT_HOME=/user/imooc/tocmat1

export CATALINA_2_BASE=/user/imooc/tocmat2
export CATALINA_2_HOME=/user/imooc/tocmat2
export TOMCAT_2_HOME=/user/imooc/tocmat2

执行命令source /etc/profile是修改生效

执行命令echo $CATALINA_HOME等查看生效后的值是否正确。


(2)tomcat2的catalina.sh文件

在#OS的后行增加:

export CATALINA_BASE=$CATALINA_2_BASE
export CATALINA_HOME=$CATALINA_2_HOME

(3)tomcat2的server.xml

需要修改端口,避免和tomcat1冲突。

8005->9005,8080->9080,8009->9009


(4)依次启动两个tomcat


4.2.2 windows

(1)环境变量

和上面类似,使用windows的方式加上6个环境变量。


(2)tomcat2的catalina.bat和startup.bat

注意,linux下只需要修改catalina.sh,windows还需要修改startup文件。

将文件中的CATALINA_HOME替换为CATALINA_2_HOME,CATALINA_BASE替换为CATALINA_2_BASE。


(3)tomcat2的server.xml

同上。


(4)依次启动两个tomcat


4.3 tomcat多机部署多应用

(1)仍然是单机多实例模式

即虽然是多机的,但每台机器仍然部署了多个tomcat,参看上节。


(2)单机单部署模式

正常部署即可,端口和配置文件互不影响。


注意,不同机器上的tomcat要保证网络畅通,且与nginx也是互通。


4.4 nginx负载均衡

4.4.1 策略

(1)轮询

简单,但是没考虑服务器各自的能力。

upstream www.happymmall.com{
	server www.happymmall:8080;
	server www.happymmall:9080;
}


(2)权重

用的较多。

upstream www.happymmall.com{
	server www.happymmall:8080 weight=10;
	server www.happymmall:9080 weight=18;
}


(3)ip hash

同一用户可访问同一台server,但是hash的结果不一定平均,并没有考虑到服务器的利用率和各自的能力。

upstream www.happymmall.com{
        ip.hash;
        server www.happymmall:8080;
        server www.happymmall:9080;
}

(4)url hash

同一个url会访问同一台server,但是hash的结果不一定平均,并没有考虑到某些被频繁访问的url。

upstream www.happymmall.com{
	server www.happymmall:8080;
	server www.happymmall:9080;
	hash $request_url;
}


(5)fair

server响应时间短的先分配。

upstream www.happymmall.com{
	server www.happymmall:8080;
	server www.happymmall:9080;
	fair;
}

4.4.2 其他配置

down:不工作

backup:其他服务器全down才工作。


4.5 tomcat+nginx集群搭建

4.5.1 tomcat准备

(1)区分tomcat1和tomcat2

修改tomcat的图标(webapp/ROOT/tomcat.png),以方便区分最终访问的是哪台服务器。

(2)启动tomcat

按照前面所说的,启动好两台tomcat。


4.5.2 域名准备

(1)hosts文件

因为没有申请域名,所以修改hosts文件。

127.0.0.1 www.imooc.com


(2)验证

ping www.imooc.com,没有问题。

分别访问www.imooc.com:8080和www.imooc.com:9080,没有问题。


4.5.3 nginx准备

(1)启动nginx

linux下nginx的默认安装路径为/usr/local/nginx。执行sbin目录下的nginx.sh。

windows下,执行bin目录下的nginx.exe,注意用命令行启动且不关闭窗口,如果使用双击exe的方式启动容易造成启动多个而不自知。


(2)验证

访问http:www.imooc.com或者http:localhost均可,出现nginx首页即可。默认是80端口,可以不输入。


(3)配置文件

在nginx.conf中增加:

include vhost/*.conf

创建vhost/www.imooc.com.conf,以后自定义的配置都放在vhost目录下。


访问imooc.com/时,会被转发到http://www.imooc.com,然后找到上方的upstream,会被转发到这两个server上。

upstream www.imooc.com{
	server www.imooc:8080;
	server www.imooc:9080;
}

server{
	//其余略
	server_name imooc.com
	access_log c:/access.log combind;
	location /{
		proxy_pass http://www.imooc.com;
		...
	}
}


(4)重新加载

修改了配置文件后,不需要重启nginx,重新加载即可。

linux:sudo ./nginx -s reload

window:原窗口不关闭,新开一个窗口,执行nginx.exe -s reload


(5)验证负载均衡

访问imooc.com,多次刷新,发现图片有所变化,表明是不同的tomcat。








猜你喜欢

转载自blog.csdn.net/liyuhui195134/article/details/79385019
今日推荐