zoukankan      html  css  js  c++  java
  • Couchbase进阶-集群与版本升级

    最近在负责公司Couchbase版本升级工作,之前只有一台Cache服务器,使用Couchbase Enterprise Edition 1.8,为避免单点故障现在需要新增加一台Cache服务器做负载,并对老版本couchbase进行升级。(以下均在windows系统下操作)

    在进行主题之前先提一下Couchbase一些基本概念:在Couchbase的集群架构中,没有中心节点和Router的概念,这些工作是由Smartclient完成的,在客户端与couchbase server交互时,Couchbase集群是作为一个黑匣子存在的。客户端负责客户程序与群集里独立节点的通信,首次连接的那个节点并不会充当代理或者风发的角色。Smartclient或Moxi(couchbase server端的proxy组件)会加载vBucket映射表,并决定连接到集群里的哪个节点去获取和存储数据。如果集群的拓扑图改变了(比如执行rebalance或者failover操作),客户端库会自动处理任何会话错误。可以这样理解,集群的配置和结构,对应用程序是透明的,你无需去关注。

    什么是Buckets,Buckets是独立的虚拟的数据容器,一个bucket就是couchbase服务器集群中的一个逻辑组,可以被集群中的多个客户端应用使用。它提供安全的机制来组织、管理、分析数据存储资源。

    什么是vBuckets,一个vBucket定义为couchbase集群里key空间的一个子集的拥有者。通过使用vBuckets,信息在集群里分发更有效。vBucket系统被用于分布式数据,以及支持多节点间的数据复制。

    在Couchbase中bucket有两种类型,一种是couchbase类型,另一种是memcache类型,Couchbase类型bucket支持数据的持久化,因为它的数据是存储在磁盘上,把活跃的数据读取到内存中供客户端使用(后续的备份和Failover也仅是针对着用类型的bucket),而memcache类型的bucket是内存级别的,所有的数据均保存在内存中。现在我们开始切入主题,我们老的couchbase服务器,使用了这两种类型的bucket,我们使用couchbase类型的bucket存储的是持久化的数据,供我们的客户端调用,这部分数据相当重要且不能丢失。

    基本思路:

    • 备份老的couchbase服务数据
    • 将新couchbase服务器加入到老服务器集群中,并通过rebalance同步两台服务器cache数据
    • 修改客户端Couchbase配置节点
    • Failover老服务器进行升级

    第一步备份:

    根据Couchbase官方说明(http://docs.couchbase.com/couchbase-manual-2.5/cb-install/#getting-started)couchbase由1.8升级到2.0+必须要经过1.8.1版本,这个过程是要对数据类型的升级。

    而且couchbase1.8和2.5版本的备份方式不一致,这里提供两个版本的备份脚本(注意只能备份Couchbase类型的bucket

    #1.8版本:

    @echo off

    echo 开始执行Couchbase buckets备份

    cd "C:Program FilesCouchbaseServerin"

    echo 当前路径:%cd%

    cbbackup "C:Program FilesCouchbaseServervarlibcouchbasedatadefault-datadefault" c:/cbbackup/

    pause...

     

    #2.5版本

    @echo off

    echo 开始执行Couchbase buckets备份

    cd "C:Program FilesCouchbaseServerin"

    echo 当前路径:%cd%

    cbbackup http://localhost:8091 c:/cbbackup/ -u Administrator -p 123456 --single-node

    pause...

     

    第二步 将新couchbase服务器加入集群,操作如下:(10.4.18.26老Server,10.4.18.101新Server)

    1. 打开10.4.18.26 Couchbase 控制台"MANAGE->ServerNodes"节点,单击"Add Server",如图:

    1. 点击当前页面的"Pending Rebalance",单击"Rebalcnce"进行两台server的数据同步,如图:

    1. 系统自动实现数据同步,该过程可能会持续很长时间,如图:

    说明:Couchbase有两种类型的Bucket:Couchbase和Memcache,Couchbase类型可实现每台server node拥有完整的副本,支持故障转移Failover;Memcache不支持Failover,多server node共同实现完整数据。

     

     

    1. 开启Auto-Failover,保证一台机器down掉,另一台机器能正常工作,操作如图:

    说明:Couchbase默认是关闭Auto-Failover,需要手动开启,Timeout默认最低为30秒。

    第三步 修改客户端配置节点:

    <servers bucket="default" bucketPassword="">

    <add uri="http://10.4.18.101:8091/pools" />

    <add uri="http://10.4.18.26:8091/pools" />

    </servers>

    说明:在原有uri后添加一个uri

    第四步 升级Couchbase版本

    升级老版本couchbase直线需要将老的服务从集群中挂起,操作如下:

    1. 登录10.4.18.26 Couchbase 控制台,使用Failover 挂起10.4.18.26服务,如图:

    1.8版本Couchbase升级到2.5版本,要经过1.8.1版本,先停掉Couchbase服务(windows服务),直接运行1.8.1版本couchbase客户端文件,这个版本会重复安装两次,第一次是upgrade 注册表数据,第二次才是完整的安装升级,升级完1.8.1,再次进入windows服务关闭couchbase服务,进行2.5版本的升级,该过程只执行一次。

    升级完成后,我们需要将服务器重新加入集群,操作如下:

    1. Add Back让10.4.18.26重新加入集群,使用Rebalace同步数据。

    整个操作过程看起来简单,其中做了很多次的实验和测试,生产环境的更新只能确保万无一失。测试代码已分享至github。点击这里!

  • 相关阅读:
    【python】UI自动化框架搭建.优化
    【fiddler】mock测试
    【postman】对于postman简单的理解
    【pycharm】报错:windows找不到文件chrome
    【python】UI自动化操作属于div标签的滚动条滚动
    【fiddler】fiddler监听local host和127.0.0.1
    【PLSQL】PLSQL过期解决方案(注册机或者修改注册表)
    【奇怪的知识四】:一些常用的下载网站地址
    【奇怪的知识三】:一个可以变色的心形.bat
    python中request获取json数据
  • 原文地址:https://www.cnblogs.com/long-gengyun/p/3772504.html
Copyright © 2011-2022 走看看