精华内容
下载资源
问答
  • 使用多台服务器搭建kettle集群,并用集群运行转换和作业。
  • 服务器集群

    万次阅读 2018-09-29 16:57:30
    计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。 集群系统中的单个计算机通常称为节点,通常通过...

    目录

    集群

    LVS

    LVS-NAT  

    LVS-DR 

    LVS-TUN

    LVS的调度算法


    集群

    计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。 集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。 集群计算机通常用来改进单个计算机的计算速度和可靠性。 集群就是一组独立的计算机,通

    展开全文
  • 服务器集群搭建

    2017-11-08 10:00:23
    服务器集群搭建,nginx服务器,wx服务器,redis服务器,业务处理服务器。返回客户端
  • 服务器集群日志统一收集 用ELK来作服务器集群日志统计分析.zip
  • linux服务器集群的详细配置群分为同构与异构两种,它们的区别在于:组成集群系统的计算机之间的体系结构是否相同
  • Tomcat服务器集群搭建

    万次阅读 2018-05-23 15:10:06
    Tomcat服务器集群与负载均衡一、前言在单一的服务器上执行WEB应用程序有一些重大的问题,当网站成功建成并开始接受大量请求时,单一服务器终究无法满足需要处理的负荷量,所以就有点显得有 点力不从心了。...

                             Tomcat服务器集群与负载均衡


    一、前言


    在单一的服务器上执行WEB应用程序有一些重大的问题,当网站成功建成并开始接受大量请求时,单一服务器终究无法满足需要处理的负荷量,所以就有点显得有 点力不从心了。另外一个常见的问题是会产生单点故障,如果该服务器坏掉,那么网站就立刻无法运作了。不论是因为要有较佳的扩充性还是容错能力,我们都会想 在一台以上的服务器计算机上执行WEB应用程序。所以,这时候我们就需要用到集群这一门技术了。


    在进入集群系统架构探讨之前,先定义一些专门术语:

    1. 集群(Cluster):是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。

    2. 负载均衡(Load Balance):先得从集群讲起,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同硬件构成的计算机。如一个提供Web服务的集群,对外界来看是一个大Web服务器。不过集群的节点也可以单独提供服务。

    3. 特点:在现有网络结构之上,负载均衡提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。集群系统(Cluster)主要解决下面几个问题: 
    高可靠性(HA):利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。 
    高性能计算(HP):即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析,化学分析等。 
    负载平衡:即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。

    总体来说,在负载均衡的思路下,多台服务器为对等方式,每台服务器都具有同等的地位,可以单独对外提供服务而无须其他服务器的辅助。通过负载分担技术,将外部发送来的请求按一定规则分配到对称结构中的某一台服务器上,而接收到请求的服务器都独立回应客户机的请求。

    提供服务的一组服务器组成了一个应用服务器集群(cluster),集群下的对等多机环境可以增加系统的并发处理能力,和单台机器出现故障系统的错误冗余能力;同时实现了负载均衡和系统高可靠性。


    二、常用负载均衡技术



    1. 基于DNS的负载均衡

    通过DNS服务中的随机名字解析来实现负载均衡,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时 得到其中一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,他们也就访问不同地址上的Web服务器,从而达到负载均衡的目的。

    2. 反向代理负载均衡 (如Apache+JK2+Tomcat这种组合)

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

    3. 基于NAT(Network Address Translation)的负载均衡技术 (如Linux Virtual Server,简称LVS)

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

    三、Apache+JK2实现Tomcat集群与负载均衡


    客户系统一般采用Apache httpd作为web服务器,即作为Tomcat的前端处理器,根据具体情况而定,有些情况下是不需要Apache httpd作为 web 服务器的,如系统展现没有静态页面那就不需要Apache httpd,那时可以直接使用Tomcat作为web 服务器来使用。使用Apache httpd主要是它在处理静态页面方面的能力比Tomcat强多了。

                                                


    为了实现这个原理我们就需要解决两个问题:
    1:如何实现多应用服务器间的session共享:(一台服务器崩溃,另外一台服务器可以继续支持)
    2:如何分发请求到各个应用服务器实现压力分解:(这里的解决方案是用apache做 web服务器)
    下面我们就是实际行动来看看如何实现这种实现。
    环境配置:
    App应用服务器apache-tomcat-7.0.52-1 
    web服务器:apache的apache 2.0.55
    Java环境:jdk1.6及以上


    3、web服务器配置
    首先安装apache的web服务器:
    apache服务器和tomcat的连接方法其实有三种:mod_JK、http_proxy和ajp_proxy。


    3.1、软件环境:

       3.1.1、 Apache: apache 2.0.55 (由http://httpd.apache.org/进入下载)(点击下载apache 2.0.55)
       3.1.2、 Tomcat: apache-tomcat-7.0.52-1
       3.1.3、 mod_jk: 在页面 http://tomcat.apache.org/Download 标题下找到 Tomcat Connectors 链接进入(点击下载mod_jk-apache-2.0.55.so),看起来像是个Unix/Linux下的动态库,实际应是个Win32 的 DLL 动态库,大概是为保持不同平台配置的一致性,才用了这个扩展名。


    3.2、负载均衡:

       用Apache进行分流,把请求按照权重以及当时负荷分tomcat1,tomcat2...去处理


     3.2.1、 安装apache,tomcat
       我把Apache安装在D:\Program Files\Apache Group\Apache2,Tomcat解压两分Tomcat, 分别在 D:\Program Files\Apache Group\apache-tomcat-7.0.72-1,D:\Program Files\Apache Group\apache-tomcat-7.0.72-1,我的结构如下:

                                            


     3.2.2、修改Apache配置文件http.conf

       在apache安装目录下conf目录中找到http.conf,在文件最后加上下面一句话就可以了:   

    [html]  view plain  copy
    1. include conf/mod_jk.conf  

     3.3.3、 http.conf 同目录下新建mod_jk.conf文件,内容如下:

    [java]  view plain  copy
    1. #加载mod_jk Module       
    2. LoadModule jk_module modules/mod_jk-apache-2.0.55.so       
    3.       
    4. #指定 workers.properties文件路径       
    5. JkWorkersFile conf/workers.properties       
    6.       
    7. #指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器       
    8. JkMount /*.jsp controller  

    配置说明:

    如果还要指定*.do也进行分流就再加一行
    JkMount /*.do controller

    如果你想对所有的请求进行分流只需要写成
    JkMount /* controller


     3.3.4、 在http.conf同目录下新建 workers.properties文件:

    [java]  view plain  copy
    1. worker.list = controller,tomcat1,tomcat2  #server 列表(tomcat1,tomcat2分别指tomcat的具体路径)        
    2. #========tomcat1========        
    3. worker.tomcat1.port=8019       #ajp13 端口号,在tomcat下server.xml配置,默认8009        
    4. worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址        
    5. worker.tomcat1.type=ajp13        
    6. worker.tomcat1.lbfactor = 1    #server的加权比重,值越高,分得的请求越多        
    7.        
    8. #========tomcat2========        
    9. worker.tomcat2.port=8029       #ajp13 端口号,在tomcat下server.xml配置,默认8009        
    10. worker.tomcat2.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址        
    11. worker.tomcat2.type=ajp13        
    12. worker.tomcat2.lbfactor = 2    #server的加权比重,值越高,分得的请求越多        
    13.        
    14. #========controller,负载均衡控制器========        
    15. worker.controller.type=lb        
    16. worker.controller.balanced_workers=tomcat1,tomcat2   #指定分担请求的tomcat        
    17. worker.controller.sticky_session=1   

    3.3.5、 修改tomcat配置文件server.xml:

    如果你是水平集群,即在不同电脑上安装tomcat,tomcat的安装数量为一个,可以不必修改tomcat配置文件。我这里是在同一台电脑上安装两个tomcat,实现的是垂直集群方式,所以必须修改其中一个的设置,以避免端口冲突,按照参考文章是把原来以9开头的端口号改为以9开头端口号,但是在我机器上如果以9开头的端口号,例如9080、9082会与我的WebSphere Application Server配置冲突,所以我这里采取的策略是把原来端口号的第三位改为1,如8080改为8180。

    打开tomcat2/conf/server.xml文件


    3.3.5.1、将关闭Tomcat的监听端口改成由8005改为8105
    即把
     <Server port="8005" shutdown="SHUTDOWN">
    改为
     <Server port="8105" shutdown="SHUTDOWN">


    3.3.5.2、把http服务端口号由8080改为8180
    找到
     <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
        <CONNECTOR port="8080" 
    把这里的8080改为8180


    3.3.5.3、 把AJP端口号由8009改为8109
    找到
     <!-- Define an AJP 1.3 Connector on port 8009 -->
        <CONNECTOR port="8009"
    把这里的8009改为8109


    3.3.5.4、 把 HTTP 代理端口从8082改为8182(这个配置默认是被注释掉的,可跳过这一步)
    找到
    <CONNECTOR port="8082"
    把这里的8082改为8182


    3.3.5.5、 编写一个测试 jsp
    建立一个目录TestCluster,里面新建一个test.jsp,内容为:

    [java]  view plain  copy
    1. <%       
    2.     System.out.println("=============hello yangwenxue!!!==============");      
    3. %>  

    把TestCluster放到tomcat1,tomcat2的webapps下


    3.3.5.6、启动apache,tomcat1,tomcat2,进行测试:

    通过 http://localhost/TestCluster/test.jsp 访问,多刷新几次页面,查看Tomcat1和Tomcat2的窗口,你将可以看到打印了一行行“=============hello yangwenxue!!!==============”,并且从统计上来说,大约在tomcat2打印的数量是在Tomcat1中的两倍,可以看到请求会被tomcat1,tomcat2按照不同的权重分流处理,实现了负载均衡,如下图:



    3.3.6、集群(session复制):

    在workers.properties把tomcat1和tomcat2的权重改为一样的,使请求较平均分配,将有便于看到实验的效果。


    首先配置web应用服务器配置apache-tomcat-7.0.72-1配置

    3.3.6.1、修改tomcat的server.xml文件增加如下内容(在<Engine>或<Host>元素下添加以下内容均可):

    [java]  view plain  copy
    1. <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"  
    2. managerClassName="org.apache.catalina.cluster.session.DeltaManager"  
    3. expireSessionsOnShutdown="false"  
    4. useDirtyFlag="true"  
    5. notifyListenersOnReplication="true">  
    6. <Membership  
    7. className="org.apache.catalina.cluster.mcast.McastService"  
    8. mcastAddr="228.0.0.4"  
    9. mcastPort="45564"  
    10. mcastFrequency="500"  
    11. mcastDropTime="3000"/>  
    12. <Receiver  
    13. className="org.apache.catalina.cluster.tcp.ReplicationListener"  
    14. tcpListenAddress="auto"  
    15. tcpListenPort="4001"  
    16. tcpSelectorTimeout="100"  
    17. tcpThreadCount="6"/>  
    18. <Sender  
    19. className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"  
    20. replicationMode="pooled"  
    21. ackTimeout="15000"  
    22. waitForAck="true"/>  
    23. <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"  
    24. filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>  
    25. <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"  
    26. tempDir="/tmp/war-temp/"  
    27. deployDir="/tmp/war-deploy/"  
    28. watchDir="/tmp/war-listen/"  
    29. watchEnabled="false"/>  
    30. <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>  
    31. </Cluster>  

    按照apache tomcat官方文档上面的说法,对于tomcat6要做集群的话,只需要将<Engine>元素下的

    [java]  view plain  copy
    1. <!--  
    2.   <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>  
    3. -->  

    的注释符号去掉,启用这句配制就可以正常使用集群了。不过由于我搭建的测试环境2个tomcat是在同一台机子上面,因此只启用这个<Cluster>的话,这个元素下的默认Receiver port就会冲突。因此必须补全这些配置。
    另外,按照官方文档里说明的<Cluster>的默认配置,<Membership>元素下的address属性默认值为228.0.0.4 .  这个配置在我的系统上始终会出现2个tomcat无法交换数据包的问题。需改成224.0.0.1才能正常使用。
    需要而外注意的是,2个tomcat里添加到上面这段<Cluster>配置,其<Receiver>下的Port元素必需配置成不同的。如其中一个是4001,一个是4002.(tomcat默认可以检测到4000~4100之间的端口)。


    3.3.6.2、修改<Engine>的属性。

    将原来的:


    改为:


    tomcat2对应修改为tomcat2。

    2个tomcat, jvmRoute分别配置成tomcat1和tomcat2,即和apache/conf里worker.properites配置文件中配置的worker名称对应。


    3.3.6.3、项目集群配置及测试:


    a)、用eclipse新建一个web工程,并修改项目的web.xml,添加 <Context distributable="true" />,所有需要集群的web项目,其web.xml中都必须添加

    [java]  view plain  copy
    1. <distributable/>  

    这个定义,如下图:


    b)、在该web工程的WebContext目录下新建一个test.jsp文件,编辑内容如下:

    [java]  view plain  copy
    1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
    2.     pageEncoding="UTF-8"%>  
    3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    4. <%@ page import="java.util.*"%>  
    5. <html>  
    6. <head><title>Cluster app test</title></head>  
    7. <body>  
    8.     Server info:  
    9.     <%  
    10.         out.print(request.getLocalAddr() + ":" + request.getLocalPort() + "<br>");  
    11.     %>  
    12.       
    13.     <%  
    14.         out.print("<br>ID " + session.getId() + " <br>");  
    15.         //如果有新的session属性设置  
    16.         String dataName = request.getParameter("dataName");  
    17.         if(dataName != null && dataName.length() > 0){  
    18.             String dataValue = request.getParameter("dataValue");  
    19.             session.setAttribute(dataName,dataValue);  
    20.         }  
    21.         out.print("<b>session列表</b>");  
    22.         Enumeration e = session.getAttributeNames();  
    23.         while(e.hasMoreElements()){  
    24.             String name = (String)e.nextElement();  
    25.             String value = session.getAttribute(name).toString();  
    26.             out.print(name + " = " + value + "<br>");  
    27.             System.out.println(name + " = " + value);  
    28.         }  
    29.     %>  
    30.       
    31.     <form action="test.jsp" method="POST">  
    32.         名称:<input type="text" size=20 name="dataName"><br>  
    33.         值:<input type="text" size=20 name="dataValue"><br>  
    34.         <input type="submit">  
    35.     </form>  
    36. </body>  
    37. </html>  

    c)、打包发布到两个tomcat的webapps下。


    d)、启动测试:

    启动第一个tomcat,先启动哪个都行:



    启动tomcat2:

    启动过程和tomcat1一样,值得注意的是,在tomcat2启动的时候,tomcat1会打印出集群中加入member的提示:



    e)、打开浏览器,输入地址:http://localhost/Test/test.jsp,该请求分配给了tomcat1;添加几条测试session,浏览器和tomcat的请求情况:



    f)、换个浏览器,输入:http://localhost/Test/test.jsp,改请求分配给了tomcat2,添加几条测试session:


    以上就是集群中的对tomcat的分流,负载均衡。

    现在我们来测试如果一台服务器宕机后session是否能达到共享:

    g)、关闭tomcat1,tomcat2会有集群中服务关闭的提示:



    tomcat1关闭后,原来在tomcat1的session能否复制到tomcat2呢?

    刷新ie浏览器,在tomcat2的请求中确实收到了原来tomcat1的session:


    刷新两个浏览器,tomcat2的请求结果:


    这样,其中一个tomcat服务宕掉了,原来的session的信息不会丢失,工作交给其他tomcat来工作,这就是集群的好处。


    说明:

    1、本篇文章参考了几篇tomcat的集群,tomcat的session共享,及官网文档,并亲自搭建成功,总结每个实现步骤。

    2、为了尊重前人铺路成果,所以本篇文章标为转载。

    3、在此也声明:转载请注明出处:http://blog.csdn.net/yangwenxue_admin/article/details/72845360


    相关文章:

    Tomcat集群应用部署的实现机制

    https://blog.csdn.net/wangyangzhizhou/article/details/52167894


    展开全文
  • 服务器集群是什么

    万次阅读 多人点赞 2018-11-22 17:36:48
    随着用户越来越多,访问量越来越大,硬盘、CPU、内存越来越吃紧,一台服务器满足不了这还有文件服务器 数据服务与应用服务分离,我们给应用服务器配置更好的CPU、内存 给数据服务器更好更快的硬盘 缓存提高访问...

    扫盲

    以前的项目是   一个服务器就够了  文件+数据库   所谓的All in One

    随着用户越来越多,访问量越来越大,硬盘、CPU、内存越来越吃紧,一台服务器满足不了这还有文件服务器

    数据服务与应用服务分离,我们给应用服务器配置更好的CPU、内存

    给数据服务器更好更快的硬盘

    缓存提高访问速度

    假设Applicate Server 为Tomcat,Tomcat成为了一个瓶颈,我们可以购买更强大的硬件,但总会有上限   后期这成本呈指数型增长  

    这个时候需要做服务器的集群, 

    Load Balancer为负载均衡服务器

     

    数据库读写分离(一切为提高访问速度)

    W读   R写

     

    小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是集群。为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群

    链接:https://www.zhihu.com/question/20004877/answer/112124929

    分布式:一个业务分拆多个子业务,部署在不同的服务器上
    集群:同一个业务,部署在多个服务器上

    图解

    下面是充字数的

     

    单机结构

    一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上就好了。整个项目所有的服务都由这台服务器提供。这就是单机结构。

    那么,单机结构有啥缺点呢?我想缺点是显而易见的,单机的处理能力毕竟是有限的,当你的业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。此时便出现了集群模式,往下接着看。

    集群结构

    集群模式在程序猿界有各种装逼解释,有的让你根本无法理解,其实就是一个很简单的玩意儿,且听我一一道来。

    单机处理到达瓶颈的时候,你就把单机复制几份,这样就构成了一个“集群”。集群中每台服务器就叫做这个集群的一个“节点”,所有节点构成了一个集群。每个节点都提供相同的服务,那么这样系统的处理能力就相当于提升了好几倍(有几个节点就相当于提升了这么多倍)。

    但问题是用户的请求究竟由哪个节点来处理呢?最好能够让此时此刻负载较小的节点来处理,这样使得每个节点的压力都比较平均。要实现这个功能,就需要在所有节点之前增加一个“调度者”的角色,用户的所有请求都先交给它,然后它根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。这个“调度者”有个牛逼了名字——负载均衡服务器。

    集群结构的好处就是系统扩展非常容易。如果随着你们系统业务的发展,当前的系统又支撑不住了,那么给这个集群再增加节点就行了。但是,当你的业务发展到一定程度的时候,你会发现一个问题——无论怎么增加节点,貌似整个集群性能的提升效果并不明显了。这时候,你就需要使用微服务结构了。

    分布式结构

    先来对前面的知识点做个总结。

    从单机结构到集群结构,你的代码基本无需要作任何修改,你要做的仅仅是多部署几台服务器,每台服务器上运行相同的代码就行了。但是,当你要从集群结构演进到微服务结构的时候,之前的那套代码就需要发生较大的改动了。所以对于新系统我们建议,系统设计之初就采用微服务架构,这样后期运维的成本更低。但如果一套老系统需要升级成微服务结构的话,那就得对代码大动干戈了。所以,对于老系统而言,究竟是继续保持集群模式,还是升级成微服务架构,这需要你们的架构师深思熟虑、权衡投入产出比。

    OK,下面开始介绍所谓的分布式结构。

    分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,它们之间通过RPC方式通信。

    举个例子,假设需要开发一个在线商城。按照微服务的思想,我们需要按照功能模块拆分成多个独立的服务,如:用户服务、产品服务、订单服务、后台管理服务、数据分析服务等等。这一个个服务都是一个个独立的项目,可以独立运行。如果服务之间有依赖关系,那么通过RPC方式调用。

    这样的好处有很多:

    1. 系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升。
    2. 系统之间的耦合度降低,从而系统更易于扩展。我们可以针对性地扩展某些服务。假设这个商城要搞一次大促,下单量可能会大大提升,因此我们可以针对性地提升订单系统、产品系统的节点数量,而对于后台管理系统、数据分析系统而言,节点数量维持原有水平即可。
    3. 服务的复用性更高。比如,当我们将用户系统作为单独的服务后,该公司所有的产品都可以使用该系统作为用户系统,无需重复开发。

     

     

     

    展开全文
  • Web服务器集群搭建

    千次阅读 2019-05-24 15:31:10
    Web服务器集群搭建 1、需求分析 1.1、整体需求 搭建一个高可用的网站服务器集群,能承受高并发请求,能抵御一般的网络攻击,任何一台服务器的退服不影响整个集群的运作,并且能对各服务器的运行情况作出实时监控。 ...

    Web服务器集群搭建
    1、需求分析
    1.1、整体需求
    搭建一个高可用的网站服务器集群,能承受高并发请求,能抵御一般的网络攻击,任何一台服务器的退服不影响整个集群的运作,并且能对各服务器的运行情况作出实时监控。
    1.2、详细需求
    Web主服务器(Centos1 Nginx+Keepalive NFS server):Eth0(192.168.48.139),Eth1(10.0.0.1);
    Web备用服务器(Centos4 Nginx+Keepalive):Eth0(192.168.48.140),Eth1(10.0.0.4);
    后台主服务器(Centos2 Apache+Mysql Django):Eth1(10.0.0.2);
    后台备用服务器(Centos3 Apache+Mysql Django):Eth1(10.0.0.3);
    监控服务器(Centos5 Nagios+Saltstack master):Eth0(192.168.48.160),Eth1(10.0.0.5);
    Virtual ip:192.168.48.138
    2、详细功能描述
    2.1、前端服务器采用nginx实现反向代理和负载均衡,用keepalive实现HA。此部分由centos1和centos4实现,centos1作为主服务器,centos4作为热备服务器。Nginx会根据不同的请求ip机会均等地把请求发送到后端两台服务器,并且以ip hash的方式保持各个ip的会话。
    2.2、后端服务器构建在centos2与centos3上,采用apache作为web发布软件,mysql作为数据库,测试网页用Django来实现。两台服务器的数据库能够自动同步。
    2.3、作为热备服务器,centos4在centos1没有故障时并没有业务流量,处于相对空闲的状态,因此在centos4上配置nfs使它成为文件共享服务器,网站文件放在这台服务器上。
    2.4、centos5作为监控服务器,运行nagios监控各服务器状态。出现告警时通过告警通知管理员。另外centos5还作为saltstack的服务器,其他主机的软件安装、文件传输、命令运行等操作均通过saltstack批量实现。
    3、总体部署描述
    3.1、各服务器均安装centos 64位版本,采用cobbler实现批量自动安装;
    3.2、各软件均安装稳定版本,centos自带软件也要进行升级,低版本可能会影响Django的运行。
    4、详细部署描述
    4.1、nginx设置
    Nginx的主要作用是反向代理,作为用户和服务器之间的缓存,并以负载均衡的方式把请求发送到后端两台服务器。
    建议采用编译安装的方式安装Nginx,为使入侵者难以查出Nginx的版本号,编译前修改安装文件nginx.h,相关字段修改如下:
    #define NGINX_VERSION      "1.0"
    #define NGINX_VER          "webserver" NGINX_VERSION
    Nginx配置文件如下:
    user  www www;
    worker_processes  2;

    events {
    worker_connections  12800;
    use epoll;
    }

    http {
        include       mime.types; #协助部分浏览器(如firefox)识别网页文件的类型
        default_type  application/octet-stream;
        limit_conn_zone $binary_remote_addr zone=addr:10m;

        sendfile  on;#指定nginx是否调用sendfile函数来输出文件,能提高性能。
        tcp_nopush   on;
        tcp_nodelay  on;
        keepalive_timeout 20;  #客户端连接保持活动的超时时间
        send_timeout 20;  #指定响应客户端的超时时间
        client_body_buffer_size 1k;  #指定客户端请求主体缓冲区大小
        client_header_buffer_size 1k;  #指定来自客户端请求头的headerbuffer大小
        large_client_header_buffers 2 1k; #客户端请求中较大的消息头指定的缓存最大数量和大小
        server_tokens off;  #禁止在错误页面上显示nginx版本号
        client_body_timeout 20;  #设置客户端请求主体读取超时时间
        client_header_timeout 20; #设置客户端请求头读取超时时间
        gzip  on;
        upstream WebServers{   #指定负载均衡服务器
            ip_hash;           #以ip_hash的方式保持会话
            server 10.0.0.3;     #没有设定权重,因此两台后端服务器将机会均等地接受请求
            server 10.0.0.2;
            }
        server {
            listen       80;
            server_name  localhost;

            location / {
                proxy_pass   http://WebServers;
                limit_conn addr 100;     #指定每个ip最多只允许建立100个连接
                limit_rate 500k;         #每个ip最大带宽是500k
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404;
            }

            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    设置完毕后,把nginx设置为开机启动
    echo “/usr/local/nginx/sbin/nginx” >>/etc/rc.local
    4.2、Keeplive设置
    Keeplive的作用是在两台服务器(centos1、centos4)之间,以VRRP协议实现HA。通过虚拟出一个Virtul IP(本例子中是192.168.48.138)来对外发布业务。两台服务器中的任一台退服了,keeplive会自动把业务转到另一台上。在这里centos1是主服务器,centos4是备用服务器。平时的数据流量只会通过centos1,只有centos1退服了,数据流量才会割接到centos4上。
    centos1上的keepalive配置:
    ! Configuration File for keepalived

    global_defs {
       notification_email {
       test@test.com       #指定告警邮箱,当发现对端服务器退服时发邮件警报 
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }

    vrrp_instance VI_1 {
        state MASTER
        interface eth0   #绑定网卡接口
        virtual_router_id 51
        mcast_src_ip 192.168.48.139   #设置本机通过哪个ip发送vrrp包     
        priority 100    #设置优先级
        advert_int 1    #检查间隔,这里设置为1秒
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.48.138
        }
    }
    对于从服务器centos4,把配置文件的部分内容修改:
    state BACKUP
    mcast_src_ip 192.168.48.140
    priority 90
    同样,配置好配置文件后,把keepalive添加到开机启动中。

    对于keepalive,由于是使用VRRP协议来检查对端是否在线的,只要对端能ping通,那么keeplive就会认为对端在线。但也有一种情况是对端服务器没有宕机,但nginx出错关闭了,这种情况下keepalive仍然会判断对端在线,不会把业务割接到备用服务器。因此我们需要在服务器上运行一个脚本,监控nginx进程的状态。假如nginx进程关闭了,先尝试重启nginx,无法重启时就关闭keepalive的进程,使业务割接到备用端。脚本如下:
    #!/bin/bash
    #nginxStatus.sh
    while :
    do
        nginxStatus=`ps -C nginx --no-header |wc -l`
        if ((nginxStatus==0));then
            /usr/local/nginx/sbin/nginx
            sleep 5
            nginxStatus=`ps -C nginx --no-header |wc -l`
            if ((nginxStatus==0));then
                /etc/init.d/keepalived stop
            fi
        else  #当判断到主服务器的nginx已经重新启动后,再启动keepalive,使业务倒置回主
             #服务器
            keepaliveStatus=`ps -C keepalived --no-header |wc -l` 
            if ((keepaliveStatus==0));then
                /etc/init.d/keepalived start
            fi
        fi
        sleep 5
    done
    把这个脚本放在centos1上,设置开机后于后台运行
    echo “nohup ~/nginxStatus.sh &”>>/etc/rc.local
    由于脚本中的while会不断循环下去来检查进程运行情况,因此没必要添加进计划任务。不过谨慎起见,防止脚本意外停止,也可以在计划任务中设置每30分钟运行一次。
    4.3、后端Web服务器设置
    后端web服务器运行在centos2、centos3上,采用apache搭建,测试网页使用Django编写,网页文件存放在共享文件服务器centos4上,分别挂载在本机的/var/www/html目录。

    用saltstack批量在两台服务器上安装apache、apache-devel、wsgi、Django、mysql以及升级python,过程省略。

    部署好运行环境后,修改一下apache的配置文件(http.conf),把运行用户名和组名改为apache,根目录指向/var/www/html

    接下来设置mysql,把两台服务器的mysql设置互为主从,使得其中一台服务器的数据库变更了,马上同步到另一台,保证两台服务器的数据一致。设置步骤如下:
    首先设置centos2
    打开centos2上mysql的配置文件my.cnf,作如下修改:
    [mysqld]
    log-bin=MySQL-bin  #开启二进制日志,从服务器靠读取主服务器的二进制日志来执行同步
    server-id=1  #设置为1表明这是主服务器。
    binlog-ignore-db=mysql  
    binlog-ignore-db=information_schema  # binlog-ignore-db用来指定忽略哪些数据库记录到二进制日志,这样在同步的时候就会忽略掉这些数据库。其中“mysql”数据库用于记录用户信息,“information_schema”用于记录整个数据库各个库和表的信息。
    然后以root身份登陆mysql,执行下面命令:
    grant replication slave on *.* to ‘test’@’10.0.0.3’  identified ‘test123’;
    这命令的含义是,在10.0.0.3机器上建立一个test用户,用户密码为test123,这个用户拥有对centos2上所有数据库的所有表同步到centos3(10.0.0.3)的权限。
    然后执行:
    show master status;
    记录好这个信息,然后以root身份登陆centos3的mysql,执行下面的命令(有一点需要注意,假如同步之前需要同步的数据库不是空的话,需要先在数据库上加上读锁,把主服务器的相关数据库导入到从数据库中):
    change master to
    master_host='10.0.0.2',
    master_user='test',
    master_password='test123',
    master_log_file='MySQL-bin.000070',
    master_log_pos=106;
    上面的master_log_file和master_log_pos的信息就是之前centos2上执行show master status命令后所显示的信息。执行show slave status;命令,查看一下centos3是否已经成功成为从服务器:
    可以看到centos3的mysql已经成为centos2(10.0.0.2)的从服务器了。至此centos3的mysql已经能主动同步centos2的数据了,我们只需要把以上操作在centos3上操作一次(先修改my.cnf,其中server-id要设为2,然后再执行创建用户以及授权命令),就能实现两个数据库互为主从,相互之间自动同步。
    4.4、共享文件服务器nfs
    需要把centos4配置成共享文件的服务器端,后端两台web服务器的网页内容将放在共享文件服务器上,以此保证两台web服务器的网页文件内容一致。
    nfs在centos6.2上默认已安装,我们首先在centos4的/etc目录下新建exports文件,加入以下内容:
    /home/apache/html 10.0.0.2(rw,sync)  #sync是指数据同时写入缓存和硬盘中,执行较慢但保证数据精确
    /home/apache/html 10.0.0.3(rw,sync)
    然后在centos4上一步步执行下面的命令:
    groupadd apache
    useradd -g apache -s /sbin/nologin apache
    passwd apache
    mkdir -p /home/apache/html
    #把网页文件复制到/home/apache/html,然后再执行下面命令:
    chown -R apache:apache /home/apache/html
    chmod -R 700 /home/apache/html
    chkconfig --level 35 nfs on
    service nfs start
    关于共享目录的权限设置,由于后端两台web服务器的apache都是以apache:apache这个用户来执行的,文件的读写也是通过这个用户,因此为保证数据安全,共享目录只开放权限给这个用户即可,其他用户一律什么权限都不给予。另外还要把共享文件夹的所属者设为apache:apache这个用户。

    接下来到centos2、centos3两台web服务器上作如下设置,使它们开机时自动加载共享目录:
    echo "mount -t nfs 10.0.0.4:/home/apache/html /var/www/html -o hard,bg,nfsvers=3 ">>/etc/rc.local
    上面选项中hard表示网络短暂中断时会继续尝试连接服务器,并且不会显示错误信息;

    bg表示执行mount时如果无法顺利mount上时,系统会将mount的操作转移到后台并继续尝试mount,直到mount成功为止;

    nfsvers=3表示采用第3版的nfs。
    4.5、.nagios设置
    监控软件安装在centos5上,负责监控其他4台服务器的情况,出现异常时发出邮件给管理员进行警报。
    安装过程:需要在centos5上安装nagios、nagios插件包、nrpe、apache(用于搭建监控网页)、pnp(用于生成监控数据的分析图表)。4台被监控的主机需要安装nagios插件包以及nrpe,详细安装过程这里省略。

    以下项目是对于4台服务器都需要监控的:

    1.Check Swap:监控交换分区的剩余空间
    2.Check Zombie Procs:监控僵尸进程的数目
    3.Total Processes:监控总进程的数目
    4.check-no_alowed_user:监控是否有非允许的用户登陆
    5.check-system-load:监控系统负载
    对于nagios的工作原理,简单来说就是:在服务端的nagios目录下的services.cfg文件上定义需要监控各个客户端的哪个监控项目,对应的监控脚本被放在客户端执行,执行结果通过客户端上的nrpe守护进程反馈给nagios服务器端。
    默认情况下监控脚本返回的值所代表的的含义如下:
    OK—退出代码 0—表示服务正常地工作。
    WARNING—退出代码 1—表示服务处于警告状态。
    CRITICAL—退出代码 2—表示服务处于危险状态。
    UNKNOWN—退出代码 3—表示服务处于未知状态。
    因此,要实现上述5个监控项目,首先修改nagios服务器端(即centos5)上的services.cfg文件,添加上以下内容:
    define service{
            use                      local-service
            host_name                centos1
            service_description      check-no_alowed_user
            check_command            check_nrpe!check_no_allowed_user #对于脚本在客户端执行的命令,都要在命令前加上check_nrpe!
            notifications_enabled           1       #开启告警功能
            flap_detection_enabled          0       #关闭抖动检测(当数据出现较大抖动时nagios不会作出提示)
            notification_options            w,c,r   #warning、critical、recover时发出告警
            notification_interval           5       #假如服务的状态没有恢复正常的话,告警将每5分钟发一次
            notification_period             24x7    #设定告警的时段,这里设置为24X7
    }

    define service{
            use                        local-service,services-pnp #对于添加上services-pnp的服务,nagios将调用pnp把服务返回的数据画成图表。
            host_name                  centos1
            service_description        check-system-load
            check_command              check_nrpe!check_load
            notifications_enabled         1
            flap_detection_enabled        0
            notification_options          w,c,r
            notification_interval         5
            notification_period           24x7
    }


    define service{
            use                         local-service,services-pnp
            host_name                   centos1
            service_description         Total Processes
            check_command               check_nrpe!check_total_procs
            notifications_enabled           1
            flap_detection_enabled          0
            notification_options            w,c,r
            notification_interval           5
            notification_period             24x7
    }


    define service{
            use                     local-service,services-pnp
            host_name               centos1
            service_description     Check Zombie Procs
            check_command           check_nrpe!check_zombie_procs
            notifications_enabled           1
            flap_detection_enabled          0
            notification_options            w,c,r
            notification_interval           5
            notification_period             24x7
    }

    define service{
            use                     local-service,services-pnp
            host_name               centos1
            service_description     Check Swap
            check_command           check_nrpe!check_swap
            notifications_enabled           1
            flap_detection_enabled          0
            notification_options            w,c,r
            notification_interval           5
            notification_period             24x7
    }
    以上写出了描述centos1监控服务的描述,其他3台服务器的描述都是一样的,只是host_name不一样,限于篇幅,这里就不把剩余部分列出了。

    接下来修改客户端的设置,同样以centos1为例,修改nagios目录下的nrpe.cfg文件,添加以下内容(部分内容默认已经存在的,修改的时候需要注意有没有重复):
    command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10% #-w后面的参数告诉脚本当交换空间小于20%时,返回warming状态(即返回1),-c后面的参数告诉脚本当交换空间小于10%时,返回critical状态(即返回2)
    command[check_load]=/usr/local/nagios/libexec/check_load -w 1.8,1.5,1.2 -c 2.5,2,1.8
    command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
    command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
    command[check_no_allowed_user]=/usr/local/nagios/libexec/check_no_allowed_user.py –a cjyfff
    上面这5个命令对应的脚本中,check_no_allowed_user.py是我编写的脚本,另外4个是nagios自带的。check_no_allowed_user.py的作用是检测是否有允许用户以外的用户登录系统。使用方法是脚本后面加上选项-a,然后添加允许登录的用户列表(格式是-a user1,user2...,root默认已添加到允许列表,因此无需添加root)。当允许用户列表以外的用户登录时,将会触发nagios的critial告警。这个脚本的内容如下:
    #! /usr/bin/env python
    #coding=utf-8
    #check_no_allowed_user.py
    import os, sys, getopt

    def Usage():
        print "Usage:\n\tpython check_no_allowed_user.py [-h|--help][-a|--add allowedUser01,allowUser02...]\n"
        print "\tTo creat the allowed user list,please use this format:-a user1,user2...."
        print "\tAny user(s) not in allowed user list login this system will alter Nagios." 
        sys.exit(3)

    def CheckUser(args):
        a = os.popen("who").read() #这里a被赋值成一个包含换行符的字符串
                                 #下面需要以换行符分隔把a建成列表,然后提取列表元素的第一个字段,这才是
                                 #我们所需要的当前用户名
        b = list(a.split("\n"))
        c = []
        i = 0
        while i<len(b)-1:
            c.append(b[i].split(" ")[0])
            i += 1
        userList = set(c)
        allowedList = list(args.split(","))  #创建允许用户的列表
        allowedList.append("root")         #允许用户的列表中默认添加上root
        #print allowedList
        rs = [user for user in userList if user not in allowedList] #查出在当前用户列表中但不在允许列表中的用户
        #print rs

        if rs :
            print "Detected NO ALLOWED user(s)%s"%rs
            sys.exit(2)
        else:
            print "All user is ALLOWED."
            sys.exit(0)

    try:
        options, args = getopt.getopt(sys.argv[1:], "ha:", ["help", "add="])
    except getopt.GetoptError:
        Usage()        

    for o,r in options:
        if o in ("-h", "--help"):
            Usage()
        if o in ("-a", "--add"):
            #print type(r)
            CheckUser(r)
    另外,对于centos1、centos4两台前端服务器,还需要添加2项监控服务:
    80port:监控80端口的情况
    CheckNginxState:监控nginx进程是否启动
    同样,以centos1为例,修改centos5上的services.cfg,添加上以下内容:
    define service{
            use                     local-service,services-pnp
            host_name               centos1
            service_description     80port
            check_command           check_tcp!80 #这个命令是通过服务器端的脚本来监控客户端的80端口的,因此无需加上check_nrpe!,客户端也不需要存在这个命令对应的脚本。
    }

    define service{
            use                             local-service
            host_name                       centos1
            service_description             CheckNginxState
            check_command                   check_nrpe!check_nginx
    }
    然后修改centos1上的nrpe.cfg,添加上以下内容:
    command[check_nginx]=/usr/local/nagios/libexec/check_nginx.sh
    这里的check_nginx.sh也是我自己编写的脚本,脚本内容如下:
    #!/bin/bash
    #check_nginx.sh
    use_age="This script is for checking nginx status,if nginx is stop Nagios will alarm."
    if (($#!=0));then
        echo $use_age
        exit 3
    fi
    a=`ps -C nginx --no-header |wc -l`
    if ((a!=0));then
        echo "nginx is running."
        exit 0
    else
        echo "nginx is NOT running."
        exit 2
    fi
    对于centos4这台共享文件服务器,还需要增加一个监控项目,监控硬盘的容量大小,这里可以用nagios自带的check_disk脚本,方法和上面一样的,这里就不在叙述了。

    对于作为后端web服务器的centos2、centos3,也很有必要监控服务器上apache以及mysql是否正在运行。监控脚本很简单,只需要把上面check_nginx.sh中“a=`ps -C nginx --no-header |wc -l`”修改一下,把“nginx”替换为“httpd”和“mysqld”即可。
    最后,客户端都设置好监控设置了,作为服务器端,也可以为centos5增加监控内容,服务器端的监控脚本同样放在服务器端的libexec/下,监控服务是在localhost.cfg中定义的。
    谨记添加自己写的脚本后要把用户改为nagios:nagios,并且增加执行权限。
    最终配置完毕后,打开nagios监控页面的效果。
    4.6、安全设置
    为了减少ssh密码被暴力破解的风险,在各个服务器上把ssh端口从默认的22端口更改为其他端口(本例子中改为2002),并且在/etc/hosts.allow中指定允许sshd通信的ip,在/etc/hosts.deny中添加sshd:ALL
    考虑到服务器都是在内网环境,已经能隔绝外网的很多攻击,并且开启防火墙的话会影响服务器之间数据转发速度,因此我在这4台服务器上都关闭iptables,仅在centos5上开启。在实际生产环境中,依靠在集群前面的防火墙对集群进行进一步保护。
    centos5的iptables脚本如下:
    !#/bin/bash
    #centos5-iptables.sh
    iptables -F
    iptables -X
    iptables -Z
    iptables -P INPUT DROP
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT

    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT

    iptables -A INPUT -p icmp -j ACCEPT#允许icmp协议包通过
    iptables -A INPUT -s 192.168.48.139 -j ACCEPT
    iptables -A INPUT -s 192.168.48.140 -j ACCEPT
    iptables -A INPUT -s 10.0.0.2 -j ACCEPT
    iptables -A INPUT -s 10.0.0.3 -j ACCEPT
    iptables -A INPUT -p tcp -m multiport --dport 22,80 -j ACCEPT
    /etc/rc.d/init.d/iptables save

    展开全文
  • 根据研究和咨询公司大佬 本人搭建的生产环境运行的es集群配置文件,版本6.5.4,操作系统是CentOS7.6 3台es做成的集群,亲测可用。 只需要更改集群名称和每台节点的名称即可使用。
  • 怎么创建服务器集群

    千次阅读 2019-05-09 22:45:04
    一个集群 (cluster)指容器运行所需要的云资源组合,关联了若干云服务器节点、负载均衡等云资源。 通过多种方式创建一个集群: 方法一: 创建一个集群,并同时创建若干个云服务器。 您可以通过容器服务直接创建一...
  • Linux服务器集群系统(一)

    千次阅读 2018-03-29 13:42:39
    LVS项目介绍 章文嵩 (wensong@linux-vs.org) 2002 年 3 月本文介绍了Linux服务器集群系统--LVS(Linux Virtual Server)项目的产生背景和目标,并描述了LVS服务器集群框架及目前提供的软件,列举LVS集群系统的...
  • 服务器集群负载均衡原理

    千次阅读 2018-03-07 19:49:13
    当系统面临大量用户访问,负载过高的时候,通常会使用增加服务器数量来进行横向扩展,使用集群和负载均衡提高整个系统的处理能力。而我们讨论的负载均衡一般分为两种,一种是基于DNS,另一种基于IP报文。利用DNS实现...
  • RTP直播分发服务器集群方案

    万次阅读 2016-12-01 18:17:09
    当前支持RTMP接入的服务器比较多,SRS、Nginx-rtmp、FMS、WOWza、RED5等等,但支持RTP接入并支 持集群化的并不多,为此我们开发了一款RTP接入的直播分发服务器集群
  • 如何创建服务器集群

    千次阅读 2019-04-10 20:10:12
    一个集群 (cluster)指容器运行所需要的云资源组合,关联了若干云服务器节点、负载均衡等云资源。通过多种方式创建一个集群: 方法一:创建一个集群,并同时创建若干个云服务器。您可以通过容器服务直接创建一个...
  • 实验室gpu服务器集群 使用方法探索

    千次阅读 热门讨论 2019-09-17 20:44:25
    文章主要介绍实验室GPU集群服务器的使用方法,具体可以参考官方手册SitonHoly Cluster Manager Platform(SCM)用户手册。如有雷同,请联系作者删除。 目录 普通用户: 一 向管理员申请账号 二 服务器连接外网 ...
  • Nginx与服务器集群

    千次阅读 2018-09-29 00:37:43
    集群 集群的概念 集 集合 集中 服务器的集合 群 一堆 一群 服务器的集合 解决实际网站运营过程中,出现的大流量、大并发的问题。解决整个网站架构,出现的突发问题。提高网站的可用性和稳定性。 服务器的概念:...
  • Linux服务器集群LVS

    千次阅读 2016-06-12 03:05:41
    本文主要介绍了Linux服务器集群系统–LVS(Linux Virtual Server),并简单描述下LVS集群的基本应用的体系结构以及LVS的三种IP负载均衡模型(VS/NAT、VS/DR和VS/TUN)的工作原理,以及它们的优缺点和LVS集群的IP负载...
  • 服务器集群cms批量识别。服务器集群cms批量识别服务器集群cms批量识别服务器集群cms批量识别
  • 服务器集群中服务器之间如何通信

    万次阅读 2018-08-13 17:26:18
    服务器集群中服务器之间如何通信? 网上看到好多人是通过以下方式去做的: 在做服务器集群时,集群中的服务器需要通信,比如Client1(简称C1)连接到Server1(简称S1),Client2连接到Server2,Client1需要向...
  • linux在服务器集群的应用

    千次阅读 2016-07-10 16:42:13
     随着服务器需求量的不断增长,关于操作系统的研究也在近几年进行的异常火热。虽然Unix在服务器领域盘踞多年,因此作为类Unix系统的Linux,近几年在人们视野的曝光率也越来越高。著名的科技杂志《网络世界》从2010...
  • 国内linux服务器集群管理的平台

    千次阅读 2019-05-17 10:44:50
    对于使用服务器集群来管理操作的站长或运维人员来说,手动部署环境和和一键式部署环境大家都有见解. 对于服务器集群管理,这里我推荐两个平台,方便站长或运维人员使用最简单便捷的方式管理服务器. 第一个...
  • 服务器集群,热备搭建思路

    千次阅读 2018-11-16 11:39:09
    之前在公司搭建的集群服务器,用的6台服务器做的集群,现在有时间记录下整体思路,本文是个人搭建服务器的思路,供参考。 所用资源:ip:一个移动,一个联通。分别为100MBps  应用服务器:两台,配置为8核32G内存...
  • 顾名思义使用Vmware station12搭建集群,首先就是要安装好Vmware station12,由于我安装Vmware已经很久了,所以在这里针对它的安装就不说了,自行百度去,本文从安装虚拟机开始。 安装完Vmware station12,大致是...
  • Tomcat服务器集群与负载均衡

    千次阅读 2017-06-02 17:28:28
    Tomcat服务器集群与负载均衡 一、前言 在单一的服务器上执行WEB应用程序有一些重大的问题,当网站成功建成并开始接受大量请求时,单一服务器终究无法满足需要处理的负荷量,所以就有点显得有 点力不从心了。...
  • 一个分布式服务器集群架构方案

    万次阅读 2016-12-07 16:21:16
    分布式 集群
  • go语言MQTT服务器(五)MQTT服务器集群 GOMQ服务器,写的不好,别见外 一、节点间数据交互端口配置 二、配置两个节点,上面的节点间数据交互端口图也要修改里面的三个参数 三、MQTT.fx测试工具测试:连接配置,...
  • 这在一台服务器运行的时候似乎是没有问题的,但是如果多台web服务器的话,就出现问题了。 一个不错的办法就是,可以将读写分离,所有的读操作都可以直接从数据库服务器当中读出。但写操作,一般web服务器没有这个...
  • Linux 服务器集群管理面板 `可视化、简易高效、操作透明、高可扩展`
  • 应用服务器集群部署

    千次阅读 2019-01-08 06:33:57
    业务拆分后形成N个子系统,每个子系统再进行应用集群部署。  

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 517,150
精华内容 206,860
关键字:

服务器集群