集群

集群

一:概念

    有一种常见的方法可以大幅提高服务器的安全性,这就是集群。

    Cluster集群技术可如下定义:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。

大多数模式下,集群中所有的计算机拥有一个共同的名称,集群内任一系统上运行的服务可被所有的网络客户所使用。Cluster必须可以协调管理各分离的组件的错误和失败,并可透明地向Cluster中加入组件。

一个Cluster包含多台(至少二台)拥有共享数据存储空间的服务器。任何一台服务器运行一个应用时,应用数据被存储在共享的数据空间内。每台服务器的操作系统和应用程序文件存储在其各自的本地储存空间上。

Cluster内各节点服务器通过一内部局域网相互通讯。当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。当一个应用服务发生故障时,应用服务将被重新启动或被另一台服务器接管。当以上任一故障发生时,客户将能很快连接到新的应用服务上。

注意点:同应用的多个服务节点构成一个集群,一个集群中的多个服务节点均是同一个应用的不同实例;同一个应用的多个实例可以属于不同的集群。

二:功能点

    使用集群常用的功能点为:

    1、负载均衡:集群中有多个同应用不同实例,对外暴露的是集群中的代理服务器的IP地址等信息。当客户端访问应用时,请求先会由代理服务器接收,接着,代理服务器再转发给多个不同实例中的其中一个,由其完成对请求的处理,处理完之后,将结果返回给代理服务器,再由代理服务器将结果返回给客户端。总的一句话就是对外暴露的是代理服务器,对客户端而言,代理服务器就是其要请求的应用。当有大量请求过来时,代理服务器就会判断应该将请求转发给哪个应用实例。由此降低系统的处理压力,并及时响应请求。

    2、高可用性:可用性指的是一个服务实例挂了,还有另一个服务实例来完成任务。

三:配置

1、正向代理

(1) 概念

    正向代理指的是客户端要访问一个目标服务器,但因各种原因,其无法直接访问这个目标服务器,此时就需要有个正向代理服务器(其可以访问目标服务器)。客户端配置好代理服务器的地址,然后请求目标服务器的时候,会将请求及目标服务器地址一致发送给代理服务器,代理服务器接收之后,会将请求直接转给目标服务器,再又代理服务器将响应返回给客户端。这个概念有点类似翻墙。

2、反向代理

(1) 概念

   对于客户端而言,反向代理服务器就是其要访问的目标服务器。客户端不需要任何额外配置,其将请求发送给代理服务器,代理服务器在把该请求转发给真正的目的服务器。最后代理服务器再将响应内容发送给客户端。

反向代理与正向代理的区别:

   反向代理服务器对于客户端而言,就是真正要访问的服务器;而实际上访问的服务器仅有代理服务器知道,对客户端而言是透明的;

   正向代理服务器对于客户端而言,只是个通往真正服务器的手段。其是知道真正要访问的服务器的。

apache中的反向代理可以为如下配置:

(1) 开放apache的代理模块:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

(2) 反向代理配置:

ProxyRequests off
ProxyPass /test http://10.19.133.107:8081/test
ProxyPassReverse /test http://10.19.133.107:8081/test

ProxyPass /tomcat1 http://10.19.133.107:8081/tomcat1
ProxyPassReverse /tomcat1 http://10.19.133.107:8081/tomcat1

2、通过上下文代理不同的集群

    多个集群(同应用的多个实例集合为一个集群)共存时,需要反向代理服务器做代理(apache或ngix)。这里以apache为例。使用上下文将请求转发给不同的集群。

(1) 开放apache的代理模块,同1、(1);

(2) 进行集群配置:

ProxyRequests off
<Proxy balancer://testcluster>
BalancerMember http://10.19.133.107:8080/test
BalancerMember http://10.19.133.107:8081/test
</Proxy>
ProxyPass /test balancer://testcluster
ProxyPassReverse /dsw balancer://dswcluster


<Proxy balancer://tomcat1cluster>
BalancerMember http://10.19.133.107:8080/tomcat1
BalancerMember http://10.19.133.107:8081/tomcat1
</Proxy>
ProxyPass /tomcat1 balancer://tomcat1cluster
ProxyPassReverse /tomcat1 balancer://tomcat1cluster

3、通过端口代理不同的集群

apache监听不同的端口,一个端口管理一个集群,通过虚拟主机实现该功能,配置如下:

(1) 开放apache的代理模块,同1、(1);

(2) httpd.conf

Listen 80
Listen 81

(3) 集群配置

ProxyRequests off
<VirtualHost *:80>
DocumentRoot "D:/apache/htdocs/test"
ServerName test
ProxyPass /test balancer://testcluster
ProxyPassReverse /dsw balancer://testcluster
ErrorLog "logs/error.log"
CustomLog "logs/access.log" common
</VirtualHost>
<Proxy balancer://testcluster>
BalancerMember http://10.19.133.107:8080/test
BalancerMember http://10.19.133.107:8081/test
</Proxy>

<VirtualHost *:81>
DocumentRoot "D:/apache/htdocs/tomcat1"
ServerName tomcat1
ServerAlias tomcat1
ProxyPass /tomcat1 balancer://tomcat1cluster
ProxyPassReverse /tomcat1 balancer://tomcat1cluster
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>
<Proxy balancer://tomcat1cluster>
BalancerMember http://10.19.133.107:8080/tomcat1
BalancerMember http://10.19.133.107:8081/tomcat1
</Proxy>

也可以这样配置:

ProxyRequests off
<VirtualHost *:80>
DocumentRoot "D:/apache/htdocs/dsw"
ServerName dsw
ProxyPass /dsw balancer://dswcluster
ProxyPassReverse /dsw balancer://dswcluster
ProxyPass /tomcat1 balancer://tomcat1cluster
ProxyPassReverse /tomcat1 balancer://tomcat1cluster
ErrorLog "logs/error.log"
CustomLog "logs/access.log" common
</VirtualHost>
<Proxy balancer://dswcluster>
BalancerMember http://10.19.133.107:8080/dsw
BalancerMember http://10.19.133.107:8081/dsw
</Proxy>

# Add any other Virtual Hosts below

<VirtualHost *:81>
DocumentRoot "D:/apache/htdocs/tomcat1"
ServerName tomcat1
ServerAlias tomcat1
ProxyPass /tomcat1 balancer://tomcat1cluster
ProxyPassReverse /tomcat1 balancer://tomcat1cluster
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>
<Proxy balancer://tomcat1cluster>
BalancerMember http://10.19.133.107:8080/tomcat1
BalancerMember http://10.19.133.107:8081/tomcat1
</Proxy>

四:问题

原文地址:https://www.cnblogs.com/sandyflower/p/6830846.html