tomcat集群(windows)

怎么说呢.....不了解之前觉得tomcat集群应该超级复杂,后面做完发现,ennnnn和我想的不太一样,不过还是记录一下吧,方便有需要的人也方便自己的日后查看(后面的操作使用的是基于反向代理的负载均衡,条件限制,使用了单机部署多应用)

一、首先我们先要对集群、反向代理和负载均衡的概念有一定的了解:

1、集群分为:高可用集群,负载均衡集群,科学计算集群

使用负载均衡集群,在一台服务器宕机的情况下,不会影响程序的运行

要想负载均衡必须集群

2、负载均衡集群的实现方式:

1)基于DNS的负载均衡:

DNS(Domain Name System)是因特网的一项服务,它作为域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。人们在通过浏览器访问网站时只需要记住网站的域名即可,而不需要记住那些不太容易理解的IP地址。在DNS系统中有一个比较重要的的资源类型叫做主机记录也称为A记录,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。如果你有一个自己的域名,那么要想别人能访问到你的网站,你需要到特定的DNS解析服务商的服务器上填写A记录,过一段时间后,别人就能通过你的域名访问你的网站了。DNS除了能解析域名之外还具有负载均衡的功能。

在DNS服务器中应该配置了多个A记录,如:

      www.apusapp.com IN A 114.100.20.201;

      www.apusapp.com IN A 114.100.20.202;

      www.apusapp.com IN A 114.100.20.203;

因此,每次域名解析请求都会根据对应的负载均衡算法计算出一个不同的IP地址并返回,这样A记录中配置多个服务器就可以构成一个集群,并可以实现负载均衡。上图中,用户请求www.apusapp.com,DNS根据A记录和负载均衡算法计算得到一个IP地址114.100.20.203,并返回给浏览器,浏览器根据该IP地址,访问真实的物理服务器114.100.20.203。所有这些操作对用户来说都是透明的,用户可能只知道www.apusapp.com这个域名。

2)基于反向代理的负载均衡:

使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的。这种代理方式 与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反 向代理模式。

3)基于NAT(NetWork Address Translation, 网络地址转换)的负载均衡

这种方法需要在专用网连接到因特网的路由器上面安装NAT软件,将一个IP地址转换为另外一个ip地址。

网络地址转换为在内部地址和外部地址之间进行转换,以便具备内部地址的计算机能访问外部网络,而当外部网络中的计算机访问地址转换网关拥有的某一外部地址 时,地址转换网关能将其转发到一个映射的内部地址上。因此如果地址转换网关能将每个连接均匀转换为不同的内部服务器地址,此后外部网络中的计算机就各自与 自己转换得到的地址上服务器进行通信,从而达到负载分担的目的。

3、正向代理和反向代理

正向代理:是一个位于客户端和原始服务器之间的一个代理服务器,客户端向代理服务器发送一个请求并指定目标服务器,代理服务器访问目标服务器并返回访问内容,这种方式下客户端知道自己访问的服务器,而代理服务器对原始服务器隐藏了客户端的信息。客户端需要配置才可以访问代理服务器

反向代理:代理服务器接受来自网络的请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给客户端,代理服务器对外表现为一个服务器,客户端无法感知代理的存在,因为客户端不需要任何配置就可以访问

反向代理的用处:1)保证内网的安全 2)实现负载均衡,优化网络的负载

 

好了做了这么多铺垫,现在开始吧

二、首先我们需要需要多个tomcat,第一个原来的tomcat不变,这里以第二个为例

1、tomcat2设置环境变量:

CATALINA_HOME_2 :D:\java\apache-tomcat2-8.0.46

2、tomcat2文件夹下conf文件中Server.xml的操作:

1)<Server port="9005" shutdown="SHUTDOWN"> :将8005改成9005没使用过的即可

2)<Connector port="9080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" URIEncoding="utf-8"/> :将8080改成9080,在后面添加URIEncoding,防止服务器乱码问题

3)<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />:8009改成9009,重定向地址不变

3、修改bin目录下的catlina.bat和startup.bat

用sublime打开然后修改里面的CATALINA_HOME为CATALINA_HOME_2与上面环境变量的修改保持一致,可以在sublime上方的find中找到replace进行替换(打开方式随意,替换掉即可)。

4、修改webapps中的ROOT里面的tomcat.png图片,替换成我们自己的,方便后面区分两个tomcat

5、修改完成之后分别启动两个服务器在浏览器访问下8080和9090端口看是否可以成功访问

在这一步我就遇见一个极其愚蠢的错误,服务器启动正常但是就是没有办法访问页面,后来才发现webapps文件下面根本就没有ROOT,重新解压然后将ROOT目录复制过去才可以的

三、然后我们需要一个nginx实现反向代理,从而实现负载均衡(默认已经安装好nginx了)

1、此时直接访问localhost是访问不了的,我们在进行一下配置

C -> Windows -> Sysytem32 -> drivers -> etc ->hosts

打开hosts文件在后面添加:127.0.0.1 www.imooc.com,验证下是否已经配置成功,命令行ping一下

ping www.imooc.com看ip是否为本机

2、启动nginx,看访问localhost和www.imooc.com是否都可以访问到nginx

3、在nginx安装文件夹下新建vhost文件夹,新建www.imooc.com.conf文件里面修改为:

server {

listen 80;

autoindex on;

server_name www.imooc.com;

access_log c:/access.log combined;

index index.html index.htm index.jsp index.php;

#error_page 404 /404.html;

if ( $query_string ~* ".*[\;'\<\>].*" )

{

return 404;

}

 

location / {

proxy_pass http://127.0.0.1:8080; //转发到8080端口

add_header Access-Control-Allow-Origin *;

}

}

修改文件后需要重启一个命令行窗口执行nginx.exe -s reload

尝试将8080端口变成9080端口,因为我们修改了tomcat2的图标,所以这里可以区分,这时候如果reload不生效的话需要清空浏览器缓存。

4、nginx安装目录下conf文件中的nginx.conf文件修改:

      include vhost/*.conf; 把所有的conf文件都读进去

5、在测试两个服务器都可以被nginx代理后进行负载均衡,在www.imooc.com里面修改,添加upstream节点:

upstream www.imooc.com{

server 127.0.0.1:8080 weight=1;//如果不设置权重的话权重默认为一

server 127.0.0.1:9080 weight=1;

}

修改server里面的location:

proxy_pass http://www.imooc.com;

这时候当访问www.imooc.com的时候就会去上面upstream节点设置的服务器进行负载均衡了

到此为止windows环境下小的tomcat集群就完成了哈哈哈哈

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值