tomcat6_apache2.2_ajp 负载均衡加集群实战分享

环境:
--------------------------------------------
一台apache2.2服务器,三台tomcat服务器:

apache2.2服务器
1.ip:192.168.1.20
2.只装apache软件:httpd-2.2.6.tar.bz2
安装路径:/usr/local/apache2

tomcat服务器:均配置相同的应用。
1.集群名:balancer://tomcatcluster
2.三台集群服务器ip:
IP_1:192.168.1.31
IP_2:192.168.1.32
IP_3:192.168.1.33
3.测试应用程序test文件夹放在tomcat6的webapps目录下

操作系统均为:centos 4.5_x86
jre:1.6:jdk-6u1-linux-i586-rpm.bin
tomcat6.0:编译好的二进制软件包apache-tomcat-6.0.13.tar.gz
tomcat6.0 安装路径:/usr/local/tomcat6

oralce的jdbc:class12.jar

软件包存放的路径:/home/xiutuo/software/
java安装路径:/usr/java/jdk1.6.0_01
使用普通用户:xiutuo来启动tomcat6
tomcat6开机自动启动脚本:/etc/init.d/tomcat

下载路径:
http://java.sun.com/javase/downloads/index.jsp
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

一:前言:

1.apache对tomcat集群支持有俩种方式:

a.通过apache2.1之后版本后内置的proxy_ajp。
b.对于apache2.1之版本则通过tomcat的jk2.0.4的mod_jk2.so:
(该版本已经停止开发)
将解压缩后的目录中的modules目录中的mod_jk2.so
文件复制到apache的安装目录下的modules目录中。
********************
俩种方式比较:
proxy_ajp配置较简单,主要表现在proxy_ajp目前只支持配置到目录,
还不支持对文件名称的pattern模式匹配
(即还不能定义到只对jsp文件起作用)。

而jk2则可配置性强,但已经停止开发
********************

官方对ajp和jk2说明:
JK2 has been put in maintainer mode and no further development will take place.
The reason for shutting down JK2 development was the lack of developers interest.
Other reason was lack of users interest in adopting JK2,
caused by configuration complexity when compared to JK.

The latest official JK2 release is 2.0.4.

JK2 will have it's successor within core Apache2.1/2.2 distribution.
We have developed new proxy_ajp that is an addition to the mod_proxy
and uses Tomcat's AJP protocol stack. It is developped in httpd-2.1
and integrated in it. We have also developed a new proxy_balancer
module for load balancing http and ajp protocol stacks.

JK will be fully supported for all other web servers.
The next JK release is planned for the end of November.
Lots of code from JK2 has been ported to JK

2.tomcat集群方式:
a.DeltaManager
--现在采用的该方式:内部机器集群少采用
b.BackupManager
********************
两种集群方式官方说明:
using the DeltaManager to replicate session deltas.
By all-to-all we mean that the session gets replicated to
all the other nodes in the cluster. This works great for smaller cluster
but we don't recommend it for larger clusters(a lot of tomcat nodes).
Also when using the delta manager it will replicate to all nodes,
even nodes that don't have the application deployed.

To get around this problem, you'll want to use the BackupManager.
This manager only replicates the session data to one backup node,
and only to nodes that have the application deployed.Downside of
the BackupManager: not quite as battle tested as the delta manager.
********************

3.负载均衡(load-balance)定义:
在服务器端短时间内获得大量的请求,单一服务器无法在一个较短的时间内响应这些请求,
此时服务器需要一个机制,请求按照多个服务器不同的负载能力,把这些请求合理的分配。

4.集群(cluster):
在多个服务器之间共享用户信息,资源等。

tomcat6_apache2.2负载均衡加集群:高可用性至高体现。
现在的带集群功能相关软件oracle10g,mysql5,tomcat等。

二:软件安装

1.apache服务器安装:
这里主要介绍apache2的源码安装
# cd /home/xiutuo/software/
# tar -zvxf httpd-2.2.6.tar.gz
# cd httpd-2.2.6
# mkdir -p /usr/local/apache2
# ./configure \
--prefix=/usr/local/apache2 \
--enable-modules=so \
--enable-mods-shared=all \
--enable-proxy \
--enable-proxy-connect \
--enable-proxy-ftp \
--enable-proxy-http \
--enable-proxy-ajp \
--enable-proxy-balancer

注释:这里测试用,编译了所有可用模块,并激活了tomcat集群需要的
enable-proxy,enable-proxy-http,enable-proxy-connect,enable-proxy-ajp
和enable-proxy-balancer,其中proxy-ajp和proxy-balancer必须依赖proxy,
如果是自定义的编译除了以上几个必须的模块外,mod_status也要编译进去,切记。
enable-proxy-ftp可以不编译。
# make
# make install

2. 三台tomcat服务器安装

主要介绍jdk1.6u1和tomcat6的安装,三台机器重复此工作就可以了,
当然记得ip一定要设置正确。

jdk1.6安装
-------------------------------
a.卸载系统自带jdk
# rpm -e j2sdk-1.4.1-fcs

b.安装新jdk
# cd /home/xiutuo/software
进入软件包存放目录

# chmod a+x jdk-6u1-linux-i586-rpm.bin
使它有执行权限

# ./jdk-6u1-linux-i586-rpm.bin
多敲几个空格,然后看到[yes]的时候输入yes,回车
然后在当前目录下就生成了jdk-6u1-linux-i586-rpm

# rpm -ivh jdk-6u1-linux-i586-rpm

c.设置环境变量    
仅设置某个用户而不是所有用户可以修改~/.cshrc,~/.bash_profile文件,
追加下面一段,如果为所有用户以及以后添加的用户都加上环境变量的话,
追加/etc/profie文件.    
***主意不要在profile和~/.cshrc或~/.bash_profile中重复追加**

这里:
# vi /etc/profile    
//java    
//如果你安装的j2sdk的路径不一样,请自行修改
    
JAVA_HOME=/usr/java/jdk1.6.0_01  
export JAVA_HOME   
CLASSPATH=/usr/java/jdk1.6.0_01/lib:/usr/java/jdk1.6.0_01/jre/lib   
export CLASSPATH  
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin   
export PATH   
JRE=/usr/java/jdk1.6.0_01/jre   
export JRE

d:立即生效    
//如果你修改的是/etc/profile    
# source /etc/profile    
//如果你修改的是~/.cshrc    
# source ~/.cshrc    
//如果你修改的是~/.bash_profile    
# source ~/.bash_profile    
   
e:测试成功否    
# java -version
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)
看到这个消息,就ok啦
----------------------------------------------

tomcat6安装
tomcat6更详细的安装请看blog上tomcat文章
----------------------------------------------
a.安装tomcat,
# cd /home/xiutuo/software                     //进入软件包存放目录
# tar -zvxf apache-tomcat-6.0.13.tar.gz        //解压
# mv apache-tomcat-6.0.13 /usr/local/tomcat6 //安装

# cd /usr/local/tomcat6/bin/                  //进入安装目录
# tar -zvxf jsvc.tar.gz                        //解压
# cd jsvc-src                                 //进入jsvc-src目录
# autoconf
# ./configure --with-java=/usr/java/jdk1.6.0_01
# configure时切记加java的jdk路径,否则无法使用普通用户开机自动启动tomcat
                                                                                            
# make                                        //编译生成jsvc文件
# cp jsvc ..                                  //拷贝jsvc到上级目录
# cd ..                                       //回到上级目录

# cd /usr/local/tomcat6/

//运行下面的命令可以使tomcat以daemon方式运行
# ./bin/jsvc -cp ./bin/bootstrap.jar \     
     -outfile ./logs/catalina.out \
     -errfile ./logs/catalina.err \
     org.apache.catalina.startup.Bootstrap

b.配置oralce的jdbc
//拷贝oracle的jdbc到/usr/local/tomcat6/lib目录下
# cp /home/software/class12.jar ./lib/

c.配置tomcat用户
# cd /usr/local/tomcat6/conf
# vi tomcat-users.xml
内容如下:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
    <role rolename="tomcat"/>
    <role rolename="role1"/>
    <role rolename="manager"/>
    <role rolename="admin"/>
    <user username="tomcat" password="tomcat" roles="tomcat"/>
    <user username="role1" password="tomcat" roles="role1"/>
    <user username="both" password="tomcat" roles="tomcat,role1"/>
    <user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>
请修改tomcat里所有定义用户的密码:即修改password为自己想要的值。

d.把应用程序文件夹test放到webapps下

3.tomcat负载均衡和集群配置
参考官方配置文档:
http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html
http://tomcat.apache.org/tomcat-6.0-doc/balancer-howto.html

a.tomcat6配置文件server.xml和应用程序的web.xml

**开放负载均衡,默认使用ajp协议时使用8009端口(使用http协议时为8080端口)
**修改tomcat 的 conf/server.xml 的<Engine>(使用ajp协议时配置)

<!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
    -->
    <Engine name="Catalina" defaultHost="localhost">
改成

<!-- You should set jvmRoute to support load-balancing via AJP ie :
-->
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">
<!--
    <Engine name="Catalina" defaultHost="localhost">
    -->
说明:
第一台tomcat就把jvmRoute="tomcat1"
第二台tomcat就把jvmRoute="tomcat2"
第三台tomcat就把jvmRoute="tomcat3"

**开放集群
**修改tomcat 的 conf/server.xml (使用ajp协议时配置)
在<Engine> 后面或者 <Host>后面简单的加上  
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
也可以加上更详细参数的集群配置内容(这是官方默认,请自行修改相关参数):

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
   channelSendOptions="8">

<Manager className="org.apache.catalina.ha.session.DeltaManager"
         expireSessionsOnShutdown="false"
         notifyListenersOnReplication="true"/>

<Channel className="org.apache.catalina.tribes.group.GroupChannel">
    <Membership className="org.apache.catalina.tribes.membership.McastService"
          address="228.0.0.4"
          port="45564"
          frequency="500"
          dropTime="3000"/>
     <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
          address="auto"
          port="4000"
          autoBind="100"
          selectorTimeout="5000"
          maxThreads="6"/>

<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
      <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
      </Sender>
      <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
      <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
      </Channel>

<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
          filter=""/>
       <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
           tempDir="/tmp/war-temp/"
           deployDir="/tmp/war-deploy/"
           watchDir="/tmp/war-listen/"
           watchEnabled="false"/>

<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

***配置应用的web.xml
***在每个webapps应用中,修改配置文件web.xml文件 添加元素<distributable/>
在web.xml文件中<web-app>元素下增加以下内容:
<!--此应用将与群集服务器复制Session-->
<distributable/>
具体修改如下:
修改前:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
</web-app>
修改后:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<!--此应用将与群集服务器复制Session-->
<distributable/>
</web-app>

4.配置apache的ajp负载均衡功能,这里请务必启用反向代理。
******************************
至于其中的原理请参考官方文档说明。

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。
正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率。

反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。
反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
另外,还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时
存在于同一个URL空间下。
*****************************

参考文档:
tomcat6官方文档
http://tomcat.apache.org/tomcat-6.0-doc/balancer-howto.html
apache中文版本
http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_proxy.html
http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_proxy_balancer.html
apache官方英文版本
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html

***配置apache
***修改/usr/local/apache2/conf/httpd.conf文件

确保将以下Module的注释去掉
LoadModule proxy_module modules/mod_proxy.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
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule status_module modules/mod_status.so

并在最后面,增加
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
</Location>
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
</Location>
ProxyRequests Off
ProxyPass /test balancer://tomcatcluster/ stickysession=jsessionid nofailover=On

<Proxy balancer://tomcatcluster>
BalancerMember ajp://192.168.1.30:8009 loadfactor=1
BalancerMember ajp://192.168.1.31:8009 loadfactor=2
BalancerMember ajp://192.168.1.32:8009 loadfactor=3
</Proxy>
注释:
ProxyRequests Off 表示启用反向代理。
ProxyPass为代理转发的Url,即将所有访问/的请求转发到
群集balancer://tomcatcluster,这里为/test即将所有访问/的请求转发到群集balancer://tomcatcluster的/test目录

BalancerMember为群集的成员,
即群集服务器1或2或3,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember。

配置好后,启动Apahce服务器,访问localhost就会看到群集服务器中应用返回的结果。

访问http://192.168.1.20/balancer-manager,显示负载均衡有关信息

5.调试负载均衡集群系统

调试前务必:
先开启三台tomcat6服务器的tomcat服务!
再开启apache服务器的apache服务,切记!

a.开启tomcat服务
# cd /usr/local/tomcat6/bin
# ./shutdown.sh //停止tomcat
# ./start.sh      //启动tomcat

查看tomcat的进程:
# ps -e | grep java
出现了java这个进程的话,说明你的tomcat起来了。

b.开启apache服务
# cd /usr/local/apache2/bin
# ./apachectl configtest
//命令检查一下配置是否有误,显示Syntax OK,说明配置正确
# ./apachectl stop //停止apache
# ./apachectl start //启动apache

6.检验是否负载均衡集群系统成功

访问apache服务器的web服务
http://192.168.1.20/balancer-manager
如果显示负载均衡有关信息则说明成功了。
接着可以访问http://192.168.1.20/test即访问到了tomcat的test应用

7.具体的tomcat集群负载均衡优化请参考文档自行设置相关参数
具体的apache优化请参考文档自行设置相关参数

(0)

相关推荐

  • 一个JSP页面导致的tomcat内存溢出的解决方法

    今天新能测试组的同事找我看一个奇怪的现象.一个tomcat应用,里面只有一个单纯的jsp页面,而且这个jsp页面没有任何java代码(想用这个jsp页面测试在她的服务器上的一个tomcat的最大QPS).但是用loadrunner压测了几分钟之后,分配了1024M堆内存的tomcat居然包heap space outofmemory!这个页面的代码如下: 复制代码 代码如下: <%@ page language="java" contentType="text/html

  • windows下配置两个或多个Tomcat启动的方法

    确保window的环境变量中找不到CATALINA_HOME和CATALINA_BASE 修改server.xml,用解压版的tomcat,不要用安装版的. 1.修改http访问端口 conf下的server.xml文件的服务访问端口,默认是8080可以改成其它的,如7000 2.修改shutdown端口 默认8005 3.修改jvm启动默认端口,默认端口为8009 <br><Connector port="8009" protocol="AJP/1.3&q

  • Nignx 连接tomcat时会话粘性问题分析及解决方法

    在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接.使用什么方式来实现这种连接呢,常见的有使用nginx自带的ip_hash来做,我想这绝对不是一个好的办法,如果前端是CDN,或者说一个局域网的客户同时访问服务器,导致出现服务器分配不均衡,以及不能保证每次访问都粘滞在同一台服务器.如果基于cookie会是一种什么情形,想想看, 每台电脑都会有不同的cookie,在保持长连接的同时还保证了服务器的压力均衡. 问题分析: 1. 一开始请求过来,没有带session信

  • CentOS下停止Tomcat运行脚本代码

    代码验证通过,保留,以备后用 #!/bin/sh # # Firstly find the process of the tomcat.... TOMCAT_PROCESS_STR=`ps aux | grep 'java.*tomcat' | grep -v grep` PROCESS_ARRAY=(${TOMCAT_PROCESS_STR// / }) TOMCAT_PROCESS_ID=${PROCESS_ARRAY[1]} echo $TOMCAT_PROCESS_ID # # Seco

  • python分析nignx访问日志脚本分享

    #!/usr/bin/env python # coding=utf-8 #------------------------------------------------------ # Name: nginx 日志分析脚本 # Purpose: 此脚本只用来分析nginx的访问日志 # Version: 1.0 # Author: LEO # Created: 2013-05-07 # Modified: 2013-05-07 # Copyright: (c) LEO 2013 #-----

  • Tomcat ssl报错Connector attribute SSLCertificateFile must be defined when using SSL with APR解决方法

    今天同事要求帮忙配置tomcat ssl,直接把linux下tomcat配置ssl这篇文章发给他了,没想到他居然说启动tomcat的时候,报Connector attribute SSLCertificateFile must be defined when using SSL with APR的错误,马上跑过去看,原来他的tomcat版本是7.0的,我发给他的是tomcat6的,检查了key,检查了配置文件,因为他直接复制的我发他文章的配置,折腾了2-3个小时,终于把问题给解决了. 系统:wi

  • tomcat6_apache2.2_ajp 负载均衡加集群实战分享

    环境: -------------------------------------------- 一台apache2.2服务器,三台tomcat服务器: apache2.2服务器 1.ip:192.168.1.20 2.只装apache软件:httpd-2.2.6.tar.bz2 安装路径:/usr/local/apache2 tomcat服务器:均配置相同的应用. 1.集群名:balancer://tomcatcluster 2.三台集群服务器ip: IP_1:192.168.1.31 IP_

  • java开发Dubbo负载均衡与集群容错示例详解

    目录 负载均衡与集群容错 Invoker 服务目录 RegistryDirectory 获取Invoker列表 监听注册中心 刷新Invoker列表 StaticDirectory 服务路由 Cluster FailoverClusterInvoker FailfastClusterInvoker FailsafeClusterInvoker FailbackClusterInvoker ForkingClusterInvoker BroadcastClusterInvoker Abstract

  • Google Kubernetes Engine 集群实战详解

    目录 GKE 集群介绍 K8s 带来的好处 使用 GKE 编排集群 GKE 集群介绍 Google Kubernetes Engine (GKE) 集群由 Kubernetes 开源集群管理系统提供支持.Kubernetes 为用户提供了与容器集群进行交互的机制.您可以使用 Kubernetes 命令和资源来部署和管理应用.执行管理任务.设置政策,以及监控您部署的工作负载的运行状况. K8s 带来的好处 自动管理 对应用容器进行监控和活跃性探测 自动扩缩 滚动更新 Google Cloud 上的

  • springboot+nginx+https+linux实现负载均衡加域名访问简单测试

    1.把springboot项目打包成三个jar包,并指定端口为 14341,14342,14343 2.下载腾讯云免费ssl证书,解压后会出现如下图文件夹 3.把nginx文件夹下的 .crt 和 .key文件复制到服务器,例如复制到 /home/ssl/xxx.crt /home/ssl/xxx.key 4.安装好nginx默认配置文件在 /usr/local/nginx/conf/nginx.conf 5.修改nginx.conf配置文件实现https+负载均衡的简单测试(此测试是在一台服务

  • 用apache和tomcat搭建集群(负载均衡)

    一.集群和负载均衡的概念 (一)集群的概念 集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库.Web服务和文件服务等)的单一客户视图,同时提供接近容错机的故障恢复能力.集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器.这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程序.系统资源和数据.除了作为单一系统提供服务,集群系统还

  • 浅谈sqlserver的负载均衡问题

    截至到SQL Server 2008 R2 版本,微软还是没有推出官方的负载均衡组件,只能通过SQL Server的其他技术特性或者利用第三方组件来DIY. 在以前的文章中,小编也总结了一些常见的"sqlserver集群""sqlserver数据同步""sqlserver故障转移"...等相关的实现技巧.今天就不仔细讲解了. 今天想推荐大家尝试使用第三方的组件和工具,典型的就是一款ICX数据库路由.当然,我和这些工具的厂商也不熟,所以本文显然不是

  • C#使用Consul集群进行服务注册与发现

    前言 我个人觉得,中间件的部署与使用是非常难记忆的:也就是说,如果两次使用中间件的时间间隔比较长,那基本上等于要重新学习使用. 所以,我觉得学习中间件的文章,越详细越好:因为,这对作者而言也是一份珍贵的备忘资料. Consul简介 Consul一个什么,我想大家通过搜索引擎一定可以搜索到:所以,我就不在重复他的官方描述了. 这里,我为大家提供一个更加好理解的描述. Consul是什么? Consul本质上是一个Socket通信中间件. 它主要实现了两个功能,服务注册与发现与自身的负载均衡的集群.

  • mongodb3.4集群搭建实战之高可用的分片+副本集

    前言 最近因为工作的原因,在学习使用mongodb数据库,mongodb是最常用的nodql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置服务器等. 相关概念 先来看一张图: 从图中可以看到有四个组件:mongos.config server.shard.replica set. mongos,数据库集群请求的入口,

  • Docker部署Mysql集群的实现

    单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构必须要特殊设计 单节点的数据库无法满足性能上的要求 单节点的数据库没有冗余设计,无法满足高可用 单节点MySQL的性能瓶领颈 2016年春节微信红包巨大业务量,数据库承受巨大负载 常见MySQL集群方案 mysql 集群方案介绍,建议使用pxc,因为弱一致性会有问题,比如说a节点数据库显示我购买成功,b 节点数据库显示没有成功,这就麻烦了,pxc 方案是在全部节点都写入成功之后才会告诉你成功,是可读可写双向同步的,但是replication

  • Pulsar负载均衡原理及优化方案详解

    目录 前言 Pulsar 负载均衡原理 ThresholdShedder 原理 问题原因 优化方案 总结 前言 前段时间我们在升级 Pulsar 版本的时候发现升级后最后一个节点始终没有流量. 虽然对业务使用没有任何影响,但负载不均会导致资源的浪费. 和同事沟通后得知之前的升级也会出现这样的情况,最终还是人工调用 Pulsar 的 admin API 完成的负载均衡. 这个问题我尝试在 Google 和 Pulsar 社区都没有找到类似的,不知道是大家都没碰到还是很少升级集群. 我之前所在的公司

随机推荐