文章目录
- 前言
- 准备工作
- 单机版
- 集群版
- 哨兵版
- 多个中心节点配置
前言
由于一些特殊原因(例如服务器没有联网,没有办法直接更新和下载unzip指令,从而导致控制台版本安装节点之后,会报file not found的错误,或者使用不了rds的控制台等等因素),有时需要用到手动部署来部署RDS,而RDS手动部署版对于刚接触的新手来说相对会比较麻烦,所以开一个帖子作为指引。
准备工作
1.安装jdk,配置好jdk环境变量。
2.准备好安装包和授权文件,其中TongRDS-2.2.1.4.MC.tar.gz为中心节点,TongRDS-2.2.1.4.Node.tar.gz为服务节点。
这两个安装包解压后,会得到以下两个目录。
其中pmemdb就是服务节点,pcenter就是中心节点。
3.确定用哪种模式的rds服务。本次涉及到三种模式的rds服务:单机版,集群版和哨兵版。
4.单机版只需要一个中心节点和一个服务节点(最低配置)。
5.集群版需要一个中心节点和一个分片(分片里至少两个服务节点,一个主节点一个从节点),可配置多个中心节点和多个分片,本次示范一个中心节点三个分片的配置。
6.哨兵版需要一个中心节点,一个哨兵节点和两个服务节点(最低配置),可配置多个中心节点和哨兵节点,服务节点,本次示范一个中心节点,三个哨兵节点三个服务节点,其中哨兵节点可以用服务节点进行配置。
7.如需配置密码和多个中心节点,会单独起一个章节来说,先尝试不设置密码和配置多个中心节点的情况下运行成功再去配置。
单机版
单机版需要一个中心节点和一个服务节点,其中TongRDS-2.2.1.4.MC.tar.gz为中心节点,TongRDS-2.2.1.4.Node.tar.gz为服务节点。
找一个目录解压以下两个安装包,一般解压后会得到以下两个目录:
tar -zvxf TongRDS-2.2.1.4.MC.tar.gz
tar -zvxf TongRDS-2.2.1.4.Node.tar.gz
其中pmemdb就是服务节点,pcenter就是中心节点。
将授权文件放入到pcenter下:
进入到pcenter里,修改中心节点配置文件(pcenter/etc/cluster.properties)
改成这样(需要检查对应服务器的6200端口是否被占用,是的话改成其他端口)
其中webservice.node0=服务器ip
WebService.type=default
WebService.nodes=1
WebService.node0=192.168.10.7:6200
检查一下pcenter/etc/sync.properties(单节点的话使用默认配置也行,主要是检查端口有没有冲突,默认用的6300)
修改pmemdb下的dynamic.xml配置文件,这里的port要跟上图pcenter/etc/sync.properties里的端口一致:
host为服务器ip,port建议用6300,除非端口占用。
检查一下pmemdb/etc/cfg.xml,看看里面的端口是否被占用(例如6379是redis连接端口),以及是否和pcenter的cluster.properties对应。
cluster.properties对应的部分:
pcenter/bin 下面是启动中心节点的脚本, StartCenter.sh 和 StopCenter.sh 为linux 下启停脚本(如果没有执行权限,可使用 chmod +x 命令赋执行权限,这两个脚本不能后台运行,所以建议接下来使用后台启动脚本)。
sh RestartCenter.sh
启动服务节点使用 pmemdb/bin 目录下的 StartServer.sh 脚本,在 bin 目录下执行此脚本。因为使用中心节点管理授权问题,node 节点可以不单独引入自己的(这个脚本不能后台运行,所以建议接下来使用后台启动脚本)。
sh RestartServer.sh
启动后,可以查看安装目录的logs下的日志文件,并且使用脚本连接上6379(redis连接端口,配置在pmemdb的cfg.xml下)
使用pmemdb/bin/Client.sh客户端连接,验证是否成功:
./Client.sh -p -r 6379
集群版
集群版跟其他版本最大的区别在于是否有分片(下图圈起来的就是分片,每个分片的第一个ip就是分片里的主节点)。
请解压好一个中心节点,六个服务节点(也就是一个pcenter,六个pmemdb)。
本次案例三台服务器ip分别为:192.168.10.9,192.168.10.29,192.168.10.30,其中192.168.10.9为中心节点安装目录。
如果多个服务节点在同一个目录,每解压一个pmemdb,改一下名字,不然会被之后解压的覆盖的。
pcenter放入授权。
检查一下pcenter/etc/sync.properties(使用默认配置也行,主要是检查端口有没有冲突,默认用的6300)
到pcenter的安装目录的etc目录,找到cluster.propeities,修改成这样
WebSession.type=cluster
WebSession.shards=3
WebSession.shard0.nodes=192.168.10.9:6200,192.168.10.9:6201
WebSession.shard0.slots=0-4999
WebSession.shard1.nodes=192.168.10.29:6202,192.168.10.29:6203
WebSession.shard1.slots=5000-10000
WebSession.shard2.nodes=192.168.10.30:6204,192.168.10.30:6205
WebSession.shard2.slots=10001-16383
WebSession.type配成cluster,意思是配置成集群,WebSession.shards意思是要用几个分片,这里配了三个分片,下面的就是每个分片里,用了哪几个节点。
留意一下,cluster.properties里面这个websession跟每个pmemdb/etc/cfg.xml里的一致:
三台服务器分别进入到/pmemdb1/etc和/pmemdb2/etc目录下,对cfg.xml里边的配置文件进行编辑,三台机器六个服务节点对应的端口号概不能冲突,修改内容参考之前修改的cluster.propeities和下面的参考配置:
10.9服务节点1(示范,redis连接端口6379):
10.9服务节点2(示范,redis连接端口6380):
其余服务器的根据上面的进行参考和配置就行,主要注意同一台服务器里端口别被占用。
配置完后,每一个pmemdb的etc下的dynamic.xml配置一下中心节点的信息(参考一下:pcenter/etc/sync.properties里的端口,ip就不要配localhost了,用回pcenter所在服务器的ip)
配置完后,启动一下pcenter和pmemdb。
pcenter/bin 下面是启动中心节点的脚本, StartCenter.sh 和 StopCenter.sh 为linux 下启停脚本(如果没有执行权限,可使用 chmod +x 命令赋执行权限,这两个脚本不能后台运行,所以建议接下来使用后台启动脚本)。
sh RestartCenter.sh
启动服务节点使用 pmemdb/bin 目录下的 StartServer.sh 脚本,在 bin 目录下执行此脚本。因为使用中心节点管理授权问题,node 节点可以不单独引入自己的(这个脚本不能后台运行,所以建议接下来使用后台启动脚本)。
sh RestartServer.sh
启动后,可以查看安装目录的logs下的日志文件,并且使用脚本连接上6379(redis连接端口,配置在pmemdb的cfg.xml下)
使用pmemdb/bin/Client.sh客户端连接,验证是否成功:
./Client.sh -p -r 6379
另外集群模式跟其他模式不同的在于,还可以使用cluster nodes查看节点信息,如下图所示:
哨兵版
本次示范使用ip地址10.222.12.77,10.222.12.105,10.222.12.161作为示范,使用一个中心节点,三个服务节点作为服务节点,另外再使用三个服务节点作为哨兵节点进行配置(也就是需要一个pcenter,6个pmemdb,为了方便区分,哨兵节点的pmemdb会改名为pmemdb_shaobing)。
pcenter放入授权。
检查一下pcenter/etc/sync.properties(使用默认配置也行,主要是检查端口有没有冲突,默认用的6300)
到pcenter的安装目录的etc目录,找到cluster.propeities,修改成这样(其中77是主节点)
WebSession.type=sentinel
WebSession.nodes=3
WebSession.node0=10.222.12.77:6200
WebSession.node1=10.222.12.105:6200
WebSession.node2=10.222.12.161:6200
轮到pmemdb,每个pmemdb/etc/的cfg.xml都需检查以下两项内容(要和cluster.properties一致):
下图是cluster.properties的对应位置:
然后轮到每个pmemdb/etc/下的dynamic.xml(参考cluster.properties来配,其中center下配的是中心节点,endpoint下是cluster.properties里配的,要一致)
<?xml version="1.0" encoding="UTF-8"?>
<Server>
<Center>
<Password>454d51192b1704c60e19734ce6b38203</Password>
<EndPoint>
<Host>10.222.12.77</Host>
<Port>6300</Port>
</EndPoint>
</Center>
<Synchronize>
<EndPoint>
<Host>10.222.12.77</Host>
<Port>6200</Port>
</EndPoint>
<EndPoint>
<Host>10.222.12.105</Host>
<Port>6200</Port>
</EndPoint>
<EndPoint>
<Host>10.222.12.161</Host>
<Port>6200</Port>
</EndPoint>
</Synchronize>
</Server>
之后是每个pmemdb_shaobing/etc/下的sentinel.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server>
<Common>
<JmxUrl>localhost:29074</JmxUrl>
<MasterPolicy>node</MasterPolicy>
</Common>
<Log>
<!-- nothing, error, warn, info, debug, dump. >
< error is the default -->
<Level>warn</Level>
</Log>
<Listen>
<Port>26379</Port>
<Threads>4</Threads>
<!-- 0: telnet; 1: SSL; 2: password; 3: SSL + password. -->
<Secure>0</Secure>
<!-- <IsPlainPassword>true</IsPlainPassword>
-->
<!-- <Password>454d?51192b1704c60e19734ce6b38203</Password>-->
<!-- <Password>123</Password>
-->
</Listen>
<Center>
<Password>454d51192b1704c60e19734ce6b38203</Password>
<EndPoint>
<Host>10.222.12.77</Host>
<Port>6300</Port>
</EndPoint>
</Center>
<Sentinels>
<Sentinel>
<Host>10.222.12.77</Host>
<Port>26380</Port>
</Sentinel>
<Sentinel>
<Host>10.222.12.105</Host>
<Port>26379</Port>
</Sentinel>
<Sentinel>
<Host>10.222.12.161</Host>
<Port>26379</Port>
</Sentinel>
</Sentinels>
<Services>
<WebSession>
<!-- 0: telnet; 1: SSL; 2: password; 3: SSL + password. -->
<Secure>0</Secure>
<!--<IsPlainPassword>true</IsPlainPassword>
<Password>123</Password>
-->
<EndPoints>10.222.12.77:6379,10.222.12.105:6379,10.222.12.161:6379</EndPoints>
</WebSession>
</Services>
</Server>
备注:
1.sentinel.xml 的这两处要一致 (本次案例的77服务器里配的是26380,,其余用的都是26379)
endpoints里的端口需要跟cfg.xml上的一致
启动中心节点:
cd /opt/rds2214/pcenter/bin
sh RestartCenter.sh
查看中心节点安装目录logs目录日志
启动服务节点:
cd /opt/rds2214/pmemdb/bin
sh RestartServer.sh
查看服务节点安装目录logs目录下的日志文件和状态文件
启动哨兵节点
cd /opt/rds2214/pmemdb_shaobing/bin
sh RestartSentinel.sh
验证哨兵模式(26380是在每个pmemdb_shaobing/etc/下的sentinel.xml 下配的)
SENTINEL masters
查一下name是什么,如下图所示:
这里的 WebSession就是查出的name
#这里的 WebSession就是查出的name
SENTINEL slaves WebSession
多个中心节点配置
pmemdb/etc/dynamic.xml下進行配置:
设置密码
pmemdb/etc下的cfg.xml,找到这一块
修改成这样:
<Secure>2</Secure>
<Password>537cb0e6b7fbad3b75f2245e61b4d2e4</Password>
<RedisPort>6379</RedisPort>
<RedisPlainPassword>true</RedisPlainPassword>
<RedisPassword>123456</RedisPassword>
其中537cb0e6b7fbad3b75f2245e61b4d2e4就是123456加密后的密码,加密脚本在bin目录下:
./sM4.sh encrypt 要加密的密碼(尽量别用符号)