20171030

主机地址:10.45.82.64 root/nyztesoft$123 spnr90/spnr90

检查linux系统:

确认是否已经安装yum:

这个主机是新申请的,需要安装JDK、Tomcat

安装JDK:http://www.linuxidc.com/Linux/2016-09/135556.htm

安装tomcat:http://www.linuxidc.com/Linux/2016-09/135555.htm

JDK安装目录:

[email protected][/root]#echo $JAVA_HOME
/home/jdk1.7.0_80

[email protected][/root]#java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[email protected][/root]#

Tomcat安装目录:

/ztesoft/Apache/apache-tomcat-7.0.82

接下来就是按照文档安装ZCache了。

环境准备中的执行脚本,主要是为了安装相关依赖软件包:Python、ruby、rubygems、lua、tcl.

需要先从svn下载http://10.45.4.4:8080/svn/Platform/zcache/doc/交付/V2.1/release/prepare.tar

放到主机上,解压之后需要设置脚本的可执行权限。然后执行以下脚本即可:

#解压环境准备工具包
tar xzvf prepare.tar.gz

#进入解压后的工具包目录
cd prepare

#执行环境准备脚本工具
./preinstall.sh 10.45.82.64 root nyztesoft$123 [yumrepo]
./preinstall.sh 47.88.221.247 root IOToblivion$ztesoft [yumrepo]

如果带第四个参数,需要手动将http://10.45.4.4:8080/svn/Platform/zcache/tool/repo/RHEL7_REPO.tar.gz 放到preinstall.sh同一级目录,如果不带第四个参数,脚本中会自动到这个svn路径去找。

安装ZCache Server

今天安装的版本:ZCache_3.2.10_build2.1.0_Linux_x86_64.tar

SVN路径:http://10.45.4.4:8080/svn/Platform/zcache/doc/交付/V2.1/release/ZCache_3.2.10_build2.1.0_Linux_x86_64.tar

“3.2.10_build2.1.0”为产品版本号,其中3.2.10为redis官网版本号,build2.1.0为内部修改版本号;“Linux_x86_64”为产品适用平台

集群安装包中提供了很多脚本  rcinstall/目录下
./rcinstall.py   安装部署ZCache集群    安装参数./install.options
./rcaddnodes.py  新增节点(集群扩容)   安装参数./addnode.options
./rcdelnodes.py  删除节点(集群缩容)   安装参数./delnode.options

安装参数:

/home/rcinstall/install.options


#各节点IP列表(分隔符为,)集群将被安装到IP列表所属的主机上
hosts = 10.45.82.64
#安装目录,redis程序将被安装到该目录中。【需要确保root_name具备该安装目录的读写权限】
install_dir = /usr/local
#数据根目录,安装程序将在该目录下,根据各redis节点的服务端口来自动创建子目录,作为节点的数据目录。【该参数不配置时,默认为$HOME/data】
data_dir = /home/redis/data
#集群归属的系统用户组;redis程序归属的系统用户组,不存在时自动创建。
redis_cluster_group = rcluster
#集群拥有的master节点个数;master个数需要 >= 3,因为ZCache server集群是通过选举机制来判断节点可用性,需要有半数以上master节点投票才有效。【如果master个数小于3,那么将无法有效认定节点的可用性,当某个节点故障时,ZCache server集群也就无法在master故障时自动进行主从切换】
redis_cluster_masters = 3
#redis节点开始分配的端口号;分配端口号段的开始值。例如redis_cluster_port= 7380,当主机A上部署3个redis节点,则三个节点使用的端口号将依次为7380,7381,7382;(因为redis cluster的实现特性,redis节点同时将分别占用17380,17381,17382端口)
redis_cluster_port = 7670
#集群中每个节点的副本个数;集群创建的节点个数为: redis_cluster_masters ×(1 + redis_cluster_replicas)
redis_cluster_replicas = 0
#集群归属的系统用户;redis程序归属的系统用户,不存在时自动创建。
redis_cluster_user = cache
#集群归属用户的密码;redis程序归属用户的密码,自动创建用户时设置。
redis_cluster_user_password = cache
#集群归属用户的HOME目录
#redis程序归属用户的HOME目录,创建用户时自动建立该目录。【该参数不配置时,默认为:/home/用户名 】
redis_cluster_user_home = /home/cache
#集群安装使用的系统用户名;系统用户必须具备root权限,或者可以使用sudo授权。否则:【如果为普通用户,那么root_name必须与redis_cluster_user用户一致(即当前登录用户),redis_cluster_user_password也要与root_password一致。】
root_name = root
#系统用户(root_name)的密码;各主机的系统用户(root_name)密码,集群安装时使用该系统用户进行操作。【对于使用非通用密码的主机,需要在hosts参数中设置,例如主机10.10.10.2使用的系统用户密码为passwd,则设置hosts = 10.10.10.1,[email protected],…】
root_password = nyztesoft$123

Redis的配置参数可以在执行rcinstall.py安装前,修改目录中的配置文件模板:redis.conf 来进行调整。另外也可以在集群安装部署好以后,通过redis的config set命令进行调整

安装脚本

 ./rcinstall.py --silent=install.options

其操作过程主要包括:创建集群系统用户&用户组、创建SSH密钥授权、创建数据目录、创建节点配置文件、启动各redis节点、建立ZCache server集群等

安装完成

#查看环境变量:
[email protected][/ztesoft]#grep REDIS_HOME /home/cache/.bashrc
export REDIS_HOME=/usr/local/redis
export PATH=$REDIS_HOME/bin:$PATH

#查看redis安装目录:
[email protected][/ztesoft]#ls -l /usr/local/redis
total 4
drwxr-xr-x 2 cache rcluster 4096 Oct 31 10:47 bin
drwxr-xr-x 2 cache rcluster   32 Oct 31 10:46 conf
drwxr-xr-x 2 cache rcluster   54 Oct 31 10:46 examples
drwxr-xr-x 4 cache rcluster   38 Oct 31 10:47 include
drwxr-xr-x 2 cache rcluster  139 Oct 31 10:47 lib

#查看redis(cache)的home目录,conf中存放该用户下所有的节点配置,data中存放各节点的数据目录(运行目录):
[email protected][/ztesoft]#ls -l /home/cache/*
total 20
-rw-r--r-- 1 cache rcluster  117 Oct 31 10:47 rc-manage.log
-rw-r--r-- 1 cache rcluster 1126 Oct 31 10:47 redis-7670.conf
-rw-r--r-- 1 cache rcluster 1126 Oct 31 10:47 redis-7671.conf
-rw-r--r-- 1 cache rcluster 1126 Oct 31 10:47 redis-7672.conf
-rw-r--r-- 1 cache rcluster 1086 Oct 31 10:47 redis.conf.example

[email protected][/ztesoft]#ls -l /home/redis/data 
total 0
drwxr-xr-x 2 cache rcluster 73 Oct 31 10:47 7670
drwxr-xr-x 2 cache rcluster 73 Oct 31 10:47 7671
drwxr-xr-x 2 cache rcluster 73 Oct 31 10:47 7672

#查看redis cluster运行状态
[email protected][/ztesoft]# /usr/local/redis/bin/redis-cli -p 7670 cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:3
cluster_size:3
cluster_current_epoch:3
cluster_my_epoch:1
cluster_stats_messages_sent:21884
cluster_stats_messages_received:21884

新增节点部署(集群扩容)

对于已存在的ZCache集群,当要新增节点时,通过使用集群安装包中的rcaddnodes.py进行新增节点的安装部署,并将其添加到集群中。其操作过程主要包括:在新增节点所属主机上创建集群系统用户&用户组、创建数据目录、创建节点配置文件、启动各redis节点,另外还要建立新增节点主机与集群中原有主机的SSH密钥授权,并将新增节点加入到ZCache server集群等。

修改新增节点的参数文件addnode.options

#addnode.options

#各节点IP列表(分隔符为, )新增节点将被安装到IP列表所属的主机上。
hosts = 10.45.82.64
#新增节点后是否进行数据重分片处理
#yes – 进行重分片处理(新增节点会根据当前集群中的主从比例,来自动生成新的主从组合,并将集群数据分片,重新进行均衡分配,使新增节点也能够承载数据)。集群中数据量越大,集群新增节点扩容耗时将越久。
#no – 不进行重分片处理(新增的节点并不承载数据,需要人工后续处理)
rebalance = yes
#集群中的某个节点信息。通过该节点信息,可以连接到ZCache server集群,获取集群中各节点的情况。
exist_node = 10.45.82.64:7670
#安装目录。redis程序将被安装到该目录中
install_dir = /usr/local
#数据根目录。安装程序将在该目录下,根据各redis节点的服务端口来自动创建子目录,作为节点的数据目录。【该参数不配置时,默认为$HOME/data】
data_dir = /home/redis/data
#集群归属的系统用户组。redis程序归属的系统用户组,不存在时自动创建。
redis_cluster_group = rcluster
#新增节点个数。此次新增节点操作要增加的节点个数
#【假设主机(hosts)个数为x,新增节点个数为y,而每个主机上安装的节点数为z,那么:y/x  <=  z  <= y/x + 1】。
redis_cluster_addnodes = 3
#redis新增节点开始分配的端口号。分配端口号段的开始值。例如redis_cluster_port= 7380,当主机A上部署3个redis节点,则三个节点使用的端口号将依次为7380,7381,7382;(因为redis cluster的实现特性,redis节点同时将分别占用17380,17381,17382端口)
redis_cluster_port = 7680
#集群归属的系统用户。redis程序归属的系统用户,不存在时自动创建。
redis_cluster_user = cache
#集群归属用户的密码。redis程序归属用户的密码,自动创建用户时设置。
redis_cluster_user_password = cache
#集群安装使用的系统用户名。系统用户必须具备root权限,或者可以使用sudo授权
root_name = root
#系统用户(root_name)的密码。各主机的系统用户(root_name)的密码,新增节点时使用该系统用户进行操作。
#【对于使用非通用密码的主机,需要在hosts参数中设置,例如主机10.10.10.2使用的系统用户密码为passwd,则设置hosts = 10.10.10.1,[email protected],…】
root_password = nyztesoft$123

注意:该参数文件中的配置项,均可以在命令行中以参数形式传入,执行rcaddnodes.py -h可以查看到安装脚本支持的所有参数说明。例如参数文件中不设置root_password项,而是在命令行中传入,则安装命令为:rcaddnodes.py --silent=addnode.options -P nyztesoft$123

新增节点安装参数配置完毕后,执行rcaddnodes.py脚本进行安装:

[email protected][/home/rcinstall]#./rcaddnodes.py --silent=addnode.options
ZCache Expand Tool 

Starting installation tasks... 

Getting cluster info...
10.45.82.64: ['RHEL7']

Creating/Checking ZCache DBA group

Creating/Checking ZCache DBA user

Creating ZCache Data Directory...

Installing/Repairing SSH keys for cache on ['10.45.82.64']

Install ZCache on ['10.45.82.64']
Init ZCache node...

Init ZCache nodes(10.45.82.64:7680) ok.
Init ZCache nodes(10.45.82.64:7681) ok.
Init ZCache nodes(10.45.82.64:7682) ok.
Add node[10.45.82.64:7680] to cluster OK.
Add node[10.45.82.64:7681] to cluster OK.
Add node[10.45.82.64:7682] to cluster OK.
Waiting for the cluster OK...

Auto rebalance the cluster...

nohup: ignoring input
>>> Performing Cluster Check (using node 10.45.82.64:7670)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Rebalancing across 6 nodes. Total weight = 6
Moving 2732 slots from 10.45.82.64:7671 to 10.45.82.64:7681
############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
Moving 2731 slots from 10.45.82.64:7670 to 10.45.82.64:7682
###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
Moving 2731 slots from 10.45.82.64:7672 to 10.45.82.64:7680
#################################################################################################################################################################################################################################
##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
Waiting for the cluster to join
Add all nodes to cluster OK

9fe944c229221823e4f50f3ce94f76c2c98d890b 10.45.82.64:7672 master - 0 1510056205448 3 connected 13654-16383
6d604078c10b80070c19709cd0f53325904d673e 10.45.82.64:7681 master - 0 1510056201429 6 connected 5461-8192
4aeb672cac05eede6949e7124bab1e7299490fe3 10.45.82.64:7680 master - 0 1510056203439 8 connected 10923-13653
e169a287a75fee34b2739e11d64901d6b918b105 10.45.82.64:7671 master - 0 1510056204443 2 connected 8193-10922
259c81ba95cd00621855ffa6857152ef6d200426 10.45.82.64:7670 myself,master - 0 0 1 connected 2731-5460
1223f1c83c6baa5b3c11074db96f51b61825b0d2 10.45.82.64:7682 master - 0 1510056204443 7 connected 0-2730

执行完成后可以看到,集群中已经新增了3个节点:10.45.82.64:7680、10.45.82.64:7681和10.45.82.64:7682,三个节点都被部署在主机10.45.82.64上;这里由于设置rebalance = yes,主从配置和分片迁移都在脚本中自动进行处理了。

下面验证新增节点后不进行数据重分片处理

配置文件addnode.options中配置如下:

hosts = 10.45.82.64
rebalance = no
exist_node = 10.45.82.64:7670
install_dir = /usr/local
redis_cluster_group = rcluster
redis_cluster_addnodes = 3
redis_cluster_port = 7690
redis_cluster_user = cache
redis_cluster_user_password = cache
root_name = root
root_password = nyztesoft$123

执行rcaddnodes.py脚本进行安装:

[email protected][/home/rcinstall]#./rcaddnodes.py --silent=addnode.options
ZCache Expand Tool 

Starting installation tasks... 

Getting cluster info...
10.45.82.64: ['RHEL7']

Creating/Checking ZCache DBA group

Creating/Checking ZCache DBA user

Creating ZCache Data Directory...

Installing/Repairing SSH keys for cache on ['10.45.6.24', '10.45.82.64']

Install ZCache on ['10.45.82.64']
Init ZCache node...

Init ZCache nodes(10.45.82.64:7690) ok.
Init ZCache nodes(10.45.82.64:7691) ok.
Init ZCache nodes(10.45.82.64:7692) ok.
Add node[10.45.82.64:7690] to cluster OK.
Add node[10.45.82.64:7691] to cluster OK.
Add node[10.45.82.64:7692] to cluster OK.

Add all nodes to cluster OK

718125f4d9b89cc9874c186c534e28dd9127985d 10.45.82.64:7690 master - 0 1510059392505 15 connected
4aeb672cac05eede6949e7124bab1e7299490fe3 10.45.82.64:7680 master - 0 1510059390800 8 connected 11834-13653
6d604078c10b80070c19709cd0f53325904d673e 10.45.82.64:7681 master - 0 1510059393808 6 connected 6373-8192
259c81ba95cd00621855ffa6857152ef6d200426 10.45.82.64:7670 myself,master - 0 0 1 connected 3641-5460
fb3423e7a7b1d63aabd1f8d4d884ad09e3c6160e 10.45.82.64:7691 master - 0 1510059391802 0 connected
9fe944c229221823e4f50f3ce94f76c2c98d890b 10.45.82.64:7672 master - 0 1510059391802 3 connected 14564-16383
6568131fdabc9edf9fad7416a0881de62e5109e9 10.45.6.24:7670 master - 0 1510059393808 11 connected 0-909 5461-6372
abdf90c34452e59968fa8c3467b6313412c7dac0 10.45.6.24:7671 master - 0 1510059393808 13 connected 2731-3640 9102 13654-14563
ce7adb006fb321f5d8a4b0e182dfd8907f037e84 10.45.6.24:7672 master - 0 1510059394812 12 connected 910 8193-9101 10923-11833
2b7ea1255cdebb0df28410dbe0728d8446cbdbc4 10.45.82.64:7692 master - 0 1510059393707 14 connected
e169a287a75fee34b2739e11d64901d6b918b105 10.45.82.64:7671 master - 0 1510059394812 2 connected 9103-10922
1223f1c83c6baa5b3c11074db96f51b61825b0d2 10.45.82.64:7682 master - 0 1510059392806 7 connected 911-2730

这里因为设置了rebalance = no,所以新增的节点目前并没有承担数据分片(slots),也没有作为某个master的slave。

通过分片迁移操作可以使节点来承担slots;通过redis的CLUSTER REPLICATE命令可以使新增节点成为某个主节点的从节点

通过新增节点之后,可以看到已经生成的数据目录

上面是在同一个主机上新增节点,也可以在不同主机上新增节点,配置都是一样的:

hosts = 10.45.6.24
rebalance = yes
exist_node = 10.45.82.64:7670
install_dir = /usr/local
redis_cluster_group = rcluster
redis_cluster_addnodes = 3
redis_cluster_port = 7670
redis_cluster_user = cache
redis_cluster_user_password = cache
root_name = root
root_password = dev3

执行rcaddnodes.py脚本安装之后,我们看到生成的数据目录:

删除指定节点(集群缩容)

对于已存在的ZCache集群,当要缩减集群规模时,通过使用集群安装包中的rcdelnodes.py删除指定节点处理。其操作过程主要包括:将节点从集群信息中删除,退出节点进程,使用ssh登录到节点所在主机删除节点配置文件和相关数据文件;删除主节点时还会进行数据分片迁移,将数据迁移至继续保留的主节点上,因此待删除主节点上的数据量越大,集群缩容耗时将越久。【从节点的删除不存在数据迁移,因此缩容会比较快】。

删除节点的参数文件delnode.options

#delnode.options

#集群收缩待删除节点的信息。节点信息为IP:PORT,各节点以逗号(,)间隔
nodes = 10.45.82.64:7691
#集群归属的系统用户。redis程序归属的系统用户,不存在时自动创建。
redis_cluster_user = cache
#集群归属用户的密码。redis程序归属用户的密码,自动创建用户时设置。
redis_cluster_user_password = cache
#集群节点(redis)的授权密码.如果集群中各节点设置了密码授权访问,则需要配置该参数,否则无需设置。
redis_auth =

删除节点参数配置完毕后,执行rcdelnodes.py脚本进行缩容处理:

[email protected][/home/rcinstall]#./rcdelnodes.py --silent=delnode.options
ZCache Shrink Tool 

Starting deletion tasks... 

Nodes [10.45.82.64:7691]
Delete the node(10.45.82.64:7691) from cluster.

Delete all nodes from cluster OK

2b7ea1255cdebb0df28410dbe0728d8446cbdbc4 10.45.82.64:7692 master - 0 1510061104791 14 connected
718125f4d9b89cc9874c186c534e28dd9127985d 10.45.82.64:7690 master - 0 1510061103787 15 connected
4aeb672cac05eede6949e7124bab1e7299490fe3 10.45.82.64:7680 master - 0 1510061103787 8 connected 11834-13653
6d604078c10b80070c19709cd0f53325904d673e 10.45.82.64:7681 myself,master - 0 0 6 connected 6373-8192
e169a287a75fee34b2739e11d64901d6b918b105 10.45.82.64:7671 master - 0 1510061105815 2 connected 9103-10922
9fe944c229221823e4f50f3ce94f76c2c98d890b 10.45.82.64:7672 master - 0 1510061107872 3 connected 14564-16383
1223f1c83c6baa5b3c11074db96f51b61825b0d2 10.45.82.64:7682 master - 0 1510061106854 7 connected 911-2730
ce7adb006fb321f5d8a4b0e182dfd8907f037e84 10.45.6.24:7672 master - 0 1510061106854 12 connected 910 8193-9101 10923-11833
259c81ba95cd00621855ffa6857152ef6d200426 10.45.82.64:7670 master - 0 1510061105815 1 connected 3641-5460
6568131fdabc9edf9fad7416a0881de62e5109e9 10.45.6.24:7670 master - 0 1510061103788 11 connected 0-909 5461-6372
abdf90c34452e59968fa8c3467b6313412c7dac0 10.45.6.24:7671 master - 0 1510061105815 13 connected 2731-3640 9102 13654-14563

执行完成后可以看到,集群中之前新增的1个节点10.45.82.64:7691已经被删除,集群信息中已经不存在;登录到节点所在主机上也能看到节点已经退出,相关配置和数据文件也已删除。如下图所示:

集群升级

对于已存在的ZCache server集群,当要升级服务程序时,通过使用集群安装包中的rcupgrade.py进行集群的服务升级。

升级工具支持离线升级和在线升级两种模式:

  • 离线升级:对于大版本升级,因为可能存在集群通信协议变更等问题,只能进行离线升级。离线升级将只更新主机上的缓存服务程序文件,更新完成后,用户需要手动停止集群服务,然后重新启动集群。

  • 在线升级:对于普通版本升级,可以选择在线升级模式。在线升级除了更新程序文件外,还会自动重启节点服务。同时为了保障集群服务的正常运行,节点重启时会进行主从切换等控制,重启完成后会恢复原有的主从关系。

修改安装参数文件upgrade.options

#upgrade.options

#各节点IP列表(分隔符为, )要升级的缓存集群所在的主机IP列表。
hosts = 10.45.82.64
#集群归属的系统用户组。redis程序归属的系统用户组,不存在时自动创建。
redis_cluster_group = rcluster
#集群归属的系统用户。redis程序归属的系统用户,不存在时自动创建。
redis_cluster_user = cache
#集群归属用户的密码。redis程序归属用户的密码,自动创建用户时设置。
redis_cluster_user_password = cache
#集群安装使用的系统用户名。系统用户必须具备root权限,或者可以使用sudo授权。
#【如果为普通用户,那么root_name必须与redis_cluster_user用户一致(即当前登录用户),redis_cluster_user_password也要与root_password一致。】
root_name = root
#系统用户(root_name)的密码。各主机的系统用户(root_name)密码,集群安装时使用该系统用户进行操作。
#【对于使用非通用密码的主机,需要在hosts参数中设置,例如主机10.10.10.2使用的系统用户密码为passwd,则设置hosts = 10.10.10.1,[email protected],…】
root_password = nyztesoft$123
#缓存服务的访问密码。如果要升级的缓存集群设置了访问密码,则需要设置该参数,否则无需设置
cache_auth =
#是否离线升级。该参数设置为yes时,表示要进行离线升级;否则进行在线升级。
offline_upgrade = no

注意:该参数文件中的配置项,均可以在命令行中以参数形式传入,执行rcupgrade.py -h可以查看到安装脚本支持的所有参数说明。例如参数文件中不设置root_password项,而是在命令行中传入,则安装命令为:rcupgrade.py --silent=upgrade.options -P nyztesoft$123

升级参数配置完毕后,执行安装脚本rcupgrade.py进行集群升级:

./rcupgrade.py --silent=upgrade.options

results matching ""

    No results matching ""