[.com速译]像RedisEnterprise这样的双活数据库非常适合地理分布的应用程序。其架构基于无冲突复制数据类型(CRDT)领域的开创性学术研究。与其他双活数据库相比,这种方法有很多优势,包括:1.为读写操作提供本地延迟2.为简单和复杂的数据类型提供内置的冲突解决方案3.跨区域故障转移4.实现的简化用例,例如排行榜、分布式缓存、共享会话和多用户计费。最近我们发布了一篇关于如何使用双活RedisEnterprise开发应用程序的教程。为了模拟生产环境,开发人员或测试人员需要一个易于使用Docker设置的小型化开发环境。RedisEnterprise在Dockerhub上作为redislabs/redis存在,我们在RedisEnterprise文档页面和dockerhub本身上提供了有关如何在Docker上构建RedisEnterprise的详细分步说明。在本文中,我们描述了通过命令行创建基于Docker的RedisEnterprise集群的步骤。整个过程概述如下(下面有更多详细信息):1.安装数据库1)创建一个3节点的RedisEnterprise集群,每个节点在一个单独的子网上2)创建一个基于CRDT的RedisEnterprise数据库3)连接到三个不同的实例2.验证安装环境3.拆分网络4.恢复连接5.停止RedisEnterprise在开始之前,确保你有一个bashshell,并且已经为docker进程分配了足够的内存。您可以转到Docker->Preferences->Advanced检查内存。图1:Docker内存选项高级选项卡1.安装数据库以下脚本在3节点集群上创建基于CRDT的RedisEnterprise数据库。将其保存在文件中并为其命名,如“create_3_node_cluster.sh”。然后将模式更改为可执行(chmod+xcreate_3_node_cluster.sh)并运行脚本([path]/create_3_node_cluster.sh)。#!/bin/bash#Deletethebridgenetworksiftheyalreadyexistdockernetworkrmnetwork12>/dev/nulldockernetworkrmnetwork22>/dev/nulldockernetworkrmnetwork32>/dev/null#Createnewbridgenetworksecho“Creatingnewsubnets…”dockernetworkcreatenetwork1–subnet=172.18.0.0/16–gateway=172.18.0.0/16–gateway=172.18.0.0/16–gateway=172.18.0.0/16–createnetwork.subnetwork19.subnetwork190.0/16–gateway=172.19.0.1dockernetworkcreatenetwork3–subnet=172.20.0.0/16–gateway=172.20.0.1#Start3dockercontainers.Eachcontainerisanodeinaseparatenetwork#Thesecommandspullredislabs/redisfromthedockerhub.Becauseofthe#portmappingrules,RedisEnterpriseinstancesareavailableonports#12000,12002,12004echo“”echo“StartingRedisEnterpriseasDockercontainers…”dockerrun-d–cap-addsys_resource-hrp1–namerp1-p8443:8443-p9443:9443-p12000:12000–network=network1–ip=172.18.0.2redislabs/redisdockerrun-d–cap-addsys_resource-hrp2–namerp2-p8445:8443-p9445:9443-p12002:12000–network=network2–ip=172.19.0.2redislabs/redisdockerrun-d–cap-addsys_resource-hrp3–namerp3-p8447:8443-p9447:9443-p12004:12000–网络=network3–ip=172.20.0.2redislabs/redis#Connectthenetworksdockernetworkconnectnetwork2rp1dockernetworkconnectnetwork3rp1dockernetworkconnectnetwork1rp2dockernetworkconnectnetwork3rp2dockernetworkconnectnetwork1rp3dockernetworkconnectnetwork2rp3#Sleepwhilethenodesstart.Increasethesleeptimeifyournodestake#longerthan60secondstostartecho“”echo“Waitingfortheserverstostart…”sleep60#Create3RedisEnterpriseclusters–oneforeachnetwork.Youcanloginto#aclusterashttps://localhost:8443/(or8445,8447).Theusernameis#r@r.com,passwordispassword.Changetheuserecho“”echo“Creatingclusters”dockerexec-itrp1/opt/redislabs/bin/rladminclustercreatenamecluster1.localusernamer@r.compasswordtestdockerexec-itrp2/opt/redislabs/bin/rladminclustercreatenamecluster2.localusernamer@r.compasswordtestdockerexec-itrp3/opt/redislabs/bin/rladminclustercreatenamecluster3.localusernamer@r.compasswordtest#CreatetheCRDBecho""echo"CreatingaCRDB"dockerexec-itrp1/opt/redislabs/bin/ddbate-clicrdb–memory-size512mb–port12000–replicationfalse–shards-count1–instancefqdn=cluster1.local,username=r@r.com,password=test–instancefqdn=cluster2.local,username=r@r.com,password=test–instancefqdn=cluster3.local,用户名=r@r.com,密码=test2。验证安装的环境是否在端口12000、12002和12004上运行redis-cli,如果安装应用程序,验证是否可以连接到所有三个RedisEnterprise端口连接到RedisEnterprise需要应用程序的三个实例连接到三个不同的端口。例如:$redis-cli-p12000127.0.0.1:12000>incrcounter(integer)1127.0.0.1:12000>getcounter"1"3.拆分网络拆分网络可以帮助您在RedisEnterprise副本之间引入“网络分区””。当你设计你的应用程序时,你必须设计它在副本断开时平稳运行。这个脚本帮助你隔离三个副本。将脚本保存在文件“split_networks.sh”中,并在运行之前更改模式以使其可执行(chmod+xsplit_networks.sh)。#!/bin/bashdockernetworkdisconnectnetwork2rp1dockernetworkdisconnectnetwork3rp1dockernetworkdisconnectnetwork1rp2dockernetworkdisconnectnetwork3rp2dockernetworkdisconnectnetwork1rp3dockernetworkdisconnectnetwork2rp34。重新连接运行脚本“split_netorks.sh”后,本地副本停止与其他副本共享数据库更新。恢复连接将允许他们交换所有更新并达到相同的最终状态,这要归功于RedisEnterprise提供的强大的最终一致性。以下脚本恢复副本之间的网络连接。将其保存在文件“restore_networks.sh”中并更改模式以使其可执行(chmod+xrestore_networks.sh)。#!/bin/bashdockernetworkconnectnetwork2rp1dockernetworkconnectnetwork3rp1dockernetworkconnectnetwork1rp2dockernetworkconnectnetwork3rp2dockernetworkconnectnetwork1rp3dockernetworkconnectnetwork2rp35。停止RedisEnterprise完成开发和测试后,只需运行以下脚本即可停止RedisEnterprise的所有三个节点。将该文件保存在文件中并将文件命名为“stop.sh”,更改模式以使其可执行(chmod+xstop.sh)。#!/bin/bashdockerstoprp1rp2rp3dockerrmrp1rp2rp3dockernetworkrmnetwork1dockernetworkrmnetwork2dockernetworkrmnetwork3就是这样。完成以上步骤后,您就拥有了自己的基于Docker的RedisEnterprise双活数据库环境。有问题欢迎留言交流。原标题:双活Redis企业版如何搭建基于Docker的开发环境,作者:RoshanKumar
