更新时间:2024-04-18 GMT+08:00
分享

产品集群部署(单redis部署)

产品集群需要redis支持,redis部署分为两种。一种是单redis部署,适应于可靠性要求不高的场景;一种是redis哨兵部署,适应于可靠性要求非常高的场景;本章讲解单redis部署的情况

集群场景说明

集群4个节点部署在两台服务器上,对应的服务器IP、端口、工作目录如下。Redis单独一台服务器部署。以双机双节点的配置ABI集群为例,说明在ABI中如何配置集群。

表1 集群场景说明1

物理机器

节点名称

IP地址

端口号

工作目录

Machine1

Server1(主控)

172.21.160.1

9001

/work_dir/ABIrootdir1/

Machine1

Server2

172.21.160.1

9002

/work_dir/ABIrootdir2/

Machine2

Server3

172.21.160.2

9003

/work_dir/ABIrootdir3/

Machine2

Server4

172.21.160.2

9004

/work_dir/ABIrootdir4/

表2 集群场景说明2

物理机器

安装软件

IP地址

端口号

Machine3

Redis

192.168.1.103

6379

工作目录指定

涉及到集群的工作目录指定,每个节点必须指定一个单独的工作目录,而且多节点不能同时使用同一个工作目录。

指定工作目录需要在中间件启动文件设置,在Server1的启动文件中设置:

-Desen.abi.workdir =/work_dir/ABIrootdir1

在Server2的启动文件中设置:

-Desen.abi.workdir =/work_dir/ABIrootdir2

在Server3的启动文件中设置:

-Desen.abi.workdir =/work_dir/ABIrootdir3

在Server4的启动文件中设置:

-Desen.abi.workdir =/work_dir/ABIrootdir4

JVM参数设置

表3 JVM参数设置

节点名称

参数设置

备注

Server1

-Desen.abi.workdir=/work_dir/ABIrootdir1

-Djava.awt.headless=true

-Duser.timezone=Asia/Shanghai

-Dfile.encoding=GBK

-Dsun.jnu.encoding=GBK

-Xms4096m -Xmx8192m

-XX:PermSize=256m

-XX:MaxPermSize=512m

-Djava.net.preferIPv4Stack=true

-Xmx和-Xms根据服务器内存大小设置,64位OS建议分配8G-16G

注:jdk1.8开始取消了PermGen,取而代之的是Metaspace,需要将PermSize改为MetaspaceSize,如下:-XX:MetaspaceSize=256m

-XX: MetaspaceSize =512m

Server2

-Desen.abi.workdir=/work_dir/ABIrootdir2

-Djava.awt.headless=true

-Duser.timezone=Asia/Shanghai

-Dfile.encoding=GBK

-Dsun.jnu.encoding=GBK

-Xms4096m -Xmx8192m

-XX:PermSize=256m

-XX:MaxPermSize=512m

-Djava.net.preferIPv4Stack=true

同上

Server3

-Desen.abi.workdir=/work_dir/ABIrootdir3

-Djava.awt.headless=true

-Duser.timezone=Asia/Shanghai

-Dfile.encoding=GBK

-Dsun.jnu.encoding=GBK

-Xms4096m -Xmx8192m

-XX:PermSize=256m

-XX:MaxPermSize=512m

-Djava.net.preferIPv4Stack=true

同上

Server4

-Desen.abi.workdir=/work_dir/ABIrootdir4

-Djava.awt.headless=true

-Duser.timezone=Asia/Shanghai

-Dfile.encoding=GBK

-Dsun.jnu.encoding=GBK

-Xms4096m -Xmx8192m

-XX:PermSize=256m

-XX:MaxPermSize=512m

-Djava.net.preferIPv4Stack=true

同上

Redis安装

Redis支持32位和64位的Windows和Linux操作系统。

  1. Windows下安装redis

    下载地址:https://github.com/MSOpenTech/redis/releases

    图1 Redis安装

    根据需要选择合适版本的Redis,下载zip包,下载完成后解压缩,会得到一个redis-server.exe。下载完成后,双击安装,安装完成后,启动服务即可

    使用客户端测试连接:redis-desktop-manager-0.9.3.817.exe

    其实Redis在Windows上不需要安装,在命令行下执行这个redis-server.exe,就会启动redis服务,启动后不要关闭这个命令行窗口,关闭它服务就停止了。

  2. Linux下安装redis(支持国产CPU,如:鲲鹏、龙芯等)

    redis在linux下的安装使用包管理器来安装即可,对于没有外网的环境也可以复制压缩包,解压后手动安装。

    安装

    # wget http://download.redis.io/releases/redis-5.0.5.tar.gz
    # tar -zxf redis-5.0.5.tar.gz
    # cd redis-5.0.5
    # make
    # make install

    启动;编译完成以后,启动 redis-server

    # cd src
    # ./redis-server ../redis.conf &

    访问redis

    用自带的redis-cli客户端工具就可以访问Redis服务器了。

    Redis的默认服务端口是6379

    # redis-cli
    127.0.0.1:6379>

    Redis配置文件说明

    Redis的配置文件Redis.conf在Redis的安装目录下,里面有很多关于Redis的设置。用户可以通过直接修改文件更改配置,也可以通过命令像设置key-value数据库一样修改配置

    config get xxx   //获取某一个配置的值
    config set xxx  xxx //设置某一项配置
    config get * 获取所有配置

    建议直接修改配置文件,因为通过命令修改,重启Redis后就会失效。

    表4 主要配置参数列表

    参数

    描述

    port

    6379

    redis的端口

    bind

    127.0.0.1

    绑定的ip地址,默认是127.0.0.1 。

    如果本机有多个网卡,且限制只能通过其中一个网卡对应的IP才能访问redis时,可绑定该IP,例:bind IP

    protected-mode

    yes

    保护模式,默认为yes,如果要其他网络能访问,改为no即可

    requirepass

    -

    登录密码,默认是空

    maxclients

    0

    同一时间能够连接到redis的客户端数量,默认是无限制,0表示不限制

    maxmemory

    -

    redis能够使用的最大内存 单位byte, 默认无限制

    建议修改如下,如果考虑安全性,设置密码即可:

    图2 设置密码

部署包和产品注册和配置

当在所有节点部署ABI包后,需要分别访问下列地址完成产品的注册。

http://172.21.160.1:9001/ABI

http://172.21.160.1:9002/ABI

http://172.21.160.2:9003/ABI

http://172.21.160.2:9004/ABI

在所有4个节点均完成注册后,分别登录所有节点,确认所有节点可以单独访问。

集群文件配置

停掉所有服务器,分别在各个工作目录的conf文件夹中放置cluster.properties,其中Server1为主控节点

表5 集群文件配置1

节点名称

配置内容

Server1

#charset UTF-8

#必须配置的属性:

cluster.enabled=true

cluster.iscontrol=true

cluster.type=redis

cluster.group=group1

cluster.nodeid=node1

cluster.name=测试集群节点1

#单redis连接配置方式

cluster.redis.ip=192.168.1.103

cluster.redis.port=6379

#视情况配置的属性:

#如果redis设置了密码,则配置

#cluster.redis.password=123

#可以不配置的属性:

#集群服务器与redis最大时间差 默认120s

#cluster.health.maxtimegap=120

#两次心跳间隔时间默认3s

#cluster.health.interval=3000

#离开时间间隔算离开 默认30s

#cluster.health.leavetime=30

#加入时间算加入 默认8s

#cluster.heath.jointime=8

#是否使用连接池

#cluster.redis.usepool=false

Server2

#charset UTF-8

#必须配置的属性:

cluster.enabled=true

cluster.iscontrol=false

cluster.type=redis

cluster.group=group1

cluster.nodeid=node2

cluster.name=测试集群节点2

#单redis连接配置方式

cluster.redis.ip=192.168.1.103

cluster.redis.port=6379

#视情况配置的属性:

#如果redis设置了密码,则配置

#cluster.redis.password=123

#可以不配置的属性:

#集群服务器与redis最大时间差 默认120s

#cluster.health.maxtimegap=120

#两次心跳间隔时间默认3s

#cluster.health.interval=3000

#离开时间间隔算离开 默认30s

#cluster.health.leavetime=30

#加入时间算加入 默认8s

#cluster.heath.jointime=8

#是否使用连接池

#cluster.redis.usepool=false

Server3

#charset UTF-8

#必须配置的属性:

cluster.enabled=true

cluster.iscontrol=false

cluster.type=redis

cluster.group=group1

cluster.nodeid=node3

cluster.name=测试集群节点3

#单redis连接配置方式

cluster.redis.ip=192.168.1.103

cluster.redis.port=6379

#视情况配置的属性:

#如果redis设置了密码,则配置

#cluster.redis.password=123

#可以不配置的属性:

#集群服务器与redis最大时间差 默认120s

#cluster.health.maxtimegap=120

#两次心跳间隔时间默认3s

#cluster.health.interval=3000

#离开时间间隔算离开 默认30s

#cluster.health.leavetime=30

#加入时间算加入 默认8s

#cluster.heath.jointime=8

#是否使用连接池

#cluster.redis.usepool=false

Server4

#charset UTF-8

#必须配置的属性:

cluster.enabled=true

cluster.iscontrol=false

cluster.type=redis

cluster.group=group1

cluster.nodeid=node4

cluster.name=测试集群节点4

#单redis连接配置方式

cluster.redis.ip=192.168.1.103

cluster.redis.port=6379

#视情况配置的属性:

#如果redis设置了密码,则配置

#cluster.redis.password=123

#可以不配置的属性:

#集群服务器与redis最大时间差 默认120s

#cluster.health.maxtimegap=120

#两次心跳间隔时间默认3s

#cluster.health.interval=3000

#离开时间间隔算离开 默认30s

#cluster.health.leavetime=30

#加入时间算加入 默认8s

#cluster.heath.jointime=8

#是否使用连接池

#cluster.redis.usepool=false

配置文件中参数说明:

表6 集群文件配置2

参数名

描述

例子

cluster.enabled

是否启用集群

默认false不启用

cluster.nodeid

集群节点id

node1

cluster.name

集群节点名称

测试集群节点1

cluster.type

集群类型(redis:redis集群,netty:netty集群)

redis,默认使用redis

cluster.message.retry

消息发送失败后重发次数

3

cluster.health.interval

心跳时间间隔(单位:毫秒)

1500,默认1500

cluster.health.retry

集群节点离线时重试次数,即连续几次没有收到心跳则判定节点离线

3

cluster.heath.rejoin

集群节点离线后重新加入重试次数,即集群节点连续几次都受到心跳消息则判定节点加入

3

cluster.redis.ip

redis ip

172.21.1.65

cluster.redis.port

redis端口

6379

cluster.redis.password

redis密码,没有密码可不传

默认注释掉

启动服务器

集群配置文件完成后,先启动server1,待server1启动完成后,可同时启动其它三个服务器

集群检查

以admin身份登录ABI,依次进入“系统设置 > 性能与维护 > 集群信息”,检查如下信息:

  • 检查所有配置节点是否存在
  • 检查所有节点在线状态
  • 检查所有节点同步状态
  • 检查是否存在控制节点,且只有一个

集群扩容说明

新增N个节点,与原集群各节点配置保持一致,连接同一个Redis,即可达到集群扩容目的。

例如新增物理机器Machine4,节点名称Server5,IP地址172.21.160.3,端口号9005

表7 集群扩容说明1

物理机器

节点名称

IP地址

端口号

工作目录

Machine4

Server5

172.21.160.3

9005

/work_dir/ABIrootdir5/

指定工作目录、设置JVM参数后,正常注册ABI(参考本章第3、4、6节内容),然后停掉新增节点服务器,在工作目录的conf文件夹中放置cluster.properties,配置内容为:

表8 集群扩容说明2

节点名称

配置内容

Server5

#必须配置的属性:

cluster.enabled=true

cluster.iscontrol=false

cluster.type=redis

cluster.group=group1

cluster.nodeid=node5

cluster.name=测试集群节点5

#需要二选一配置的属性:

#集群连接配置方式1

cluster.redis.ip=192.168.1.103

cluster.redis.port=6379

#视情况配置的属性:

#如果redis设置了密码,则配置

#cluster.redis.password=123

#可以不配置的属性:

#集群服务器与redis最大时间差 默认120s

#cluster.health.maxtimegap=120

#两次心跳间隔时间默认3s

#cluster.health.interval=3000

#离开时间间隔算离开 默认30s

#cluster.health.leavetime=30

#加入时间算加入 默认8s

#cluster.heath.jointime=8

#是否使用连接池

#cluster.redis.usepool=false

该配置文件中cluster.redis.ip与原集群各节点保持一致。

然后启动新增节点服务器,启动成功后以admin身份登录ABI,依次进入“系统设置 > 性能与维护 > 集群信息”,检查如下信息:

  • 检查所有配置节点是否存在
  • 检查所有节点在线状态
  • 检查所有节点同步状态
  • 检查是否存在控制节点,且只有一个

注意事项

  1. 集群内各服务器版本需保持一致

    只能同一版本的服务器做集群

  2. 各服务器的数据库配置需一致

    各服务器数据库配置需要保持一致,其中url中ip地址也要一致

  3. 各服务器redis配置需一致

    各服务器配置的redis相关参数需要是一致的,如redis ip、端口、密码

相关文档