安装手册
# 前言
本文档为金蝶Apusic分布式缓存(AMDC)V2.0.4产品的安装手册,提供产品各种部署模式(含单机、哨兵、集群)在各操作系统、容器环境的安装部署过程指导以及相关配置说明。
# 适用对象
本文档适用于AMDC运维工程师、IT系统运维工程师、开发工程师、软件架构师等人员。
# 相关文档
了解更多AMDC V2.0.4产品相关的信息,请参阅以下AMDC V2.0.4产品手册文档集:
| 序号 | 手册文档 | 说明 |
|---|---|---|
| 1 | 金蝶Apusic分布式缓存 V2.0.4 快速使用手册 | 简单介绍了如何快速上手使用AMDC 。 |
| 2 | 金蝶Apusic分布式缓存 V2.0.4 安装手册 | 详细介绍如何在各操作系统上安装AMDC,以及AMDC服务启停操作,产品的注册过程。 |
| 3 | 金蝶Apusic分布式缓存 V2.0.4 缓存核心用户手册 | 详细介绍 AMDC 相关功能的使用、配置、管理及配套工具的使用方法。 |
| 4 | 金蝶Apusic分布式缓存 V2.0.4 管控台用户手册 | 详细介绍AMDC管控台相关功能的使用和操作说明。 |
| 5 | 金蝶Apusic分布式缓存 V2.0.4 开发手册 | 详细介绍基于各开发语言进行AMDC客户端应用开发的说明。 |
| 6 | 金蝶Apusic分布式缓存 V2.0.4 迁移手册 | 详细介绍AMDC历史版本迁移升级到V2.0.4版本的说明,以及Redis迁移到AMDC的说明。 |
| 7 | 金蝶Apusic分布式缓存 V2.0.4 运维手册 | 详细介绍AMDC的监控、运维、安全加固等运维说明。 |
| 8 | 金蝶Apusic分布式缓存 V2.0.4 性能优化手册 | 详细介绍AMDC性能调优的说明。 |
# 技术支持
AMDC产品提供全面的技术支持服务,您可以通过以下方式获得技术支持:
网址:www.apusic.com
电话:400-855-5800
邮箱:support@apusic.com
金蝶云社区:https://vip.kingdee.com/?productId=73&productLineId=14&lang=zh-CN
您在取得技术支持时,请提供如下信息:
您的姓名
公司信息与联系方式
操作系统及其版本
产品版本号
出现异常及错误的日志、截图等详细信息
# 相关概念
| 名词 | 含义 | 使用说明 |
|---|---|---|
| 单机 | 存储数据,负责数据读写,负责数据同步 | AMDC的默认模式,单机模式,单机模式下,主节点为单机模式 |
| 主从 | 从主节点复制数据,负责数据读写,不参与数据同步 | 主节点数据的实时副本。它主动连接到指定的主节点,并接收主节点发送的数据流,从而保持与主节点的数据同步。默认情况下,从节点是只读的,所有写操作必须发送到主节点。 |
| 哨兵 | 监控主从节点,负责主节点故障转移,负责主从节点同步 | 哨兵模式,当主节点挂掉时,自动切换为从节点,当从节点挂掉时,自动切换为主节点。 |
| 集群 | 由多台相互独立的计算机组成的计算机服务系统 | 在本文中,主从/哨兵/集群三种模式都可以算是集群,cluster集群模式特指多主节点数据分片存储的模式。 |
# 安装说明
# 概述
AMDC 产品包分为缓存和控制台两个部分,其中缓存是AMDC核心组件,控制台是AMDC管理组件。
# 环境支持
| 平台类型 | 系统类型 |
|---|---|
| 芯片类型 | 华为鲲鹏、海思、飞腾、兆芯等X86/ARM架构芯片 |
| 操作系统 | 银河麒麟系列、统信UOS、中标麒麟等 |
| 其他Linux系列 | RedHat系列、CentOS系列、Ubuntu系列等 |
# 推荐配置
| 部署模式 | 操作系统 | 安装内容 | 硬件规格 (CPU/内存/硬盘) | 服务器台数 |
|---|---|---|---|---|
| 单机 | Linux | AMDC服务 | 8核/16G/100G | 1 |
| 主从 | Linux | AMDC服务 | 8核/16G/100G | 2 |
| 哨兵 | Linux | AMDC哨兵服务 | 8核/16G/100G | 3 |
| 集群 | Linux | AMDC控制台、AMDC服务 | 8核/16G/100G | 3 |
# AMDC缓存安装
# 缓存核心安装包命名规范
- 解压安装包:
AMDC-版本-构建日期-CPU架构.tar.gz解压到目标机器任意路径即可使用。 - docker安装包:
AMDC-Docker-构建日期-CPU架构-基础操作系统.tar.gz。 - RPM包:
AMDC-构建日期-CPU架构.rpm,使用rpm -ivh 安装包名安装,安装完成后,其安装路径为/opt/amdc。
注:构建日期为AMDC产品包具体构建日期,同一个版本可能存在多个构建日期,获取安装包以最新日期为准。
# 单机模式
安装步骤:
- 上传AMDC缓存核心安装包(
AMDC-版本-构建日期-CPU架构.tar.gz)至目标服务器的安装目录下(如:/opt目录下) - 解压安装包:
tar -zxf AMDC-版本-构建日期-CPU架构.tar.gz - 进入解压后的文件夹:
cd amdc - 上传授权文件
license.lic至每个节点安装目录/opt/amdc下。授权可参考本文档的AMDC 授权管理指南[root@private amdc]# tree -L 2 . ├── acls.properties ├── amdc-benchmark ├── amdc-check-aof ├── amdc-check-rdb ├── amdc-cli ├── amdc-conf-conv ├── amdc-sentinel ├── amdc-server ├── amdc.yaml ├── license.lic # 授权文件 └── sentinel.y1
2
3
4
5
6
7
8
9
10
11
12
13 - 执行启动命令启动AMDC缓存核心:
./amdc-server amdc.yaml
# 验证安装
./amdc-cli
若正常打出info信息,即连接成功。
./amdc-cli
127.0.0.1:6359> info
# Server
amdc_version:2.0.4
amdc_git_sha1:61420466
amdc_git_dirty:0
amdc_build_id:905134ad61530534
amdc_build_date:2026-02-03
amdc_mode:cluster
os:Linux 3.10.0-1160.119.1.el7.x86_64 x86_64
arch_bits:64
monotonic_clock:POSIX clock_gettime
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:7075
process_supervised:no
run_id:69ffa6dd5f6bfa0250f5b0ee2bd38f8b9de143a3
tcp_port:6359
server_time_usec:1770275528738835
uptime_in_seconds:5201
uptime_in_days:0
hz:10
configured_hz:10
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 主从模式
主从部署图

如上图,将部署三个AMDC缓存核心,其中一个主节点,两个从节点,其部署步骤是:
1.准备三个服务器节点(以下节点为示例)
- 主节点: 172.21.61.46
- 从节点: 172.21.61.66和172.21.61.32
2.上传AMDC缓存核心安装包(
AMDC-版本-构建日期-CPU架构.tar.gz)至目标服务器的安装目录下(如:/opt目录下)3.解压安装包:
tar -zxf AMDC-版本-构建日期-CPU架构.tar.gz4.进入解压后的文件夹:
cd amdc5.上传授权文件
license.lic至每个节点安装目录/opt/amdc下。授权可参考本文档的AMDC 授权管理指南[root@private amdc]# tree -L 2 . ├── acls.properties ├── amdc-benchmark ├── amdc-check-aof ├── amdc-check-rdb ├── amdc-cli ├── amdc-conf-conv ├── amdc-sentinel ├── amdc-server ├── amdc.yaml ├── license.lic # 授权文件 └── sentinel.yaml1
2
3
4
5
6
7
8
9
10
11
12
135.配置amdc.yaml文件
主节点: 修改
amdc.yaml中的bind为当前机器IPNETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.46" # 修改为本机IP地址 - "-::1" # 保护模式,当未指定 bind 且无密码时,仅允许本地回环地址和 Unix 域套接字连接1
2
3
4
5
6从节点:
- 172.21.61.66: 修改
amdc.yaml中的bind为当前机器IP和replicaof为主节点IP和端口NETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.66" # 添加本机IP - "-::1" # 省略非配置项 REPLICATION: replicaof: "172.21.61.46 6359" # 添加主节点IP和端口1
2
3
4
5
6
7
8
9 - 172.21.61.32: 修改
amdc.yaml中的bind为当前机器IP和replicaof为主节点IP和端口NETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.32" # 添加本机IP - "-::1" # 省略非配置项 REPLICATION: replicaof: "172.21.61.46 6359" # 添加主节点IP和端口1
2
3
4
5
6
7
8
9
- 172.21.61.66: 修改
6.在每个节点上启动AMDC缓存核心
- 启动主节点:
./amdc-server amdc.yaml - 启动从节点:
./amdc-server amdc.yaml
- 启动主节点:
7.验证安装
# 在主节点上执行 ./amdc-cli -h 172.21.61.46 -p 6359 然后输入info replication ```bash 172.21.61.46:6359> info replication # Replication role:master connected_slaves:2 slave0:ip=172.21.61.66,port=6359,state=online,offset=322,lag=0 slave1:ip=172.21.61.32,port=6359,state=online,offset=322,lag=1 master_failover_state:no-failover master_replid:c246dd7c8902e4ca62fc72df6473d9386b502c8e master_replid2:0000000000000000000000000000000000000000 master_repl_offset:322 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:11
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17- 如上图,成功出现两个从节点信息,标识启动三节点的主从模式成功
# 哨兵模式
哨兵模式部署图

如上图,将部署三个AMDC缓存核心+三个哨兵,其部署步骤是:
1.准备三个服务器节点(以下节点为示例)
- 172.21.61.46: 主节点+哨兵
- 172.21.61.66: 从节点+哨兵
- 172.21.61.32: 从节点+哨兵
2.上传AMDC缓存核心安装包(
AMDC-版本-构建日期-CPU架构.tar.gz)至目标服务器的安装目录下(如:/opt目录下)3.解压安装包:
tar -zxf AMDC-版本-构建日期-CPU架构.tar.gz4.进入解压后的文件夹:
cd amdc5.上传授权文件
license.lic至每个节点安装目录/opt/amdc下。授权可参考本文档的AMDC 授权管理指南6.缓存配置
amdc.yaml文件主节点: 修改
amdc.yaml中的bind为当前机器IPNETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.46" # 修改为本机IP地址 - "-::1" # 保护模式,当未指定 bind 且无密码时,仅允许本地回环地址和 Unix 域套接字连接1
2
3
4
5
6从节点:
- 172.21.61.66: 修改
amdc.yaml中的bind为当前机器IP和replicaof为主节点IP和端口NETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.66" # 添加本机IP - "-::1" # 省略非配置项 REPLICATION: replicaof: "172.21.61.46 6359" # 添加主节点IP和端口1
2
3
4
5
6
7
8
9 - 172.21.61.32: 修改
amdc.yaml中的bind为当前机器IP和replicaof为主节点IP和端口NETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.32" # 添加本机IP - "-::1" # 省略非配置项 REPLICATION: replicaof: "172.21.61.46 6359" # 添加主节点IP和端口1
2
3
4
5
6
7
8
9
- 172.21.61.66: 修改
7.哨兵配置
- 172.21.61.46 节点哨兵修改bind为当前IP,以及主节点的IP
NETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.46" - "-::1" # 省略非配置项 SENTINEL: # 定义要监控的主节点,格式为 <master-name> <ip> <amdc-port> <quorum>(如 mymaster 127.0.0.1 6359 2 表示至少 2 个 Sentinel 认为主节点下线才判定为客观下线) sentinel monitor: mymaster 172.21.61.46 6359 21
2
3
4
5
6
7
8
9 - 172.21.61.66 节点哨兵修改bind为当前IP,以及主节点的IP
NETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.66" - "-::1" # 省略非配置项 SENTINEL: # 定义要监控的主节点,格式为 <master-name> <ip> <amdc-port> <quorum>(如 mymaster 127.0.0.1 6359 2 表示至少 2 个 Sentinel 认为主节点下线才判定为客观下线) sentinel monitor: mymaster 172.21.61.46 6359 21
2
3
4
5
6
7
8 - 172.21.61.32 节点哨兵修改bind为当前IP,以及主节点的IP
NETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.32" - "-::1" # 省略非配置项 SENTINEL: # 定义要监控的主节点,格式为 <master-name> <ip> <amdc-port> <quorum>(如 mymaster 127.0.0.1 6359 2 表示至少 2 个 Sentinel 认为主节点下线才判定为客观下线) sentinel monitor: mymaster 172.21.61.46 6359 21
2
3
4
5
6
7
8
9
- 172.21.61.46 节点哨兵修改bind为当前IP,以及主节点的IP
8.在每个节点上启动缓存和哨兵
- 启动主节点:
./amdc-server amdc.yaml - 启动从节点:
./amdc-server amdc.yaml - 启动哨兵:
./amdc-sentinel sentinel.yaml
- 启动主节点:
9.验证哨兵模式
- 使用
amdc-cli客户端工具通过指定-p和-h参数,指定哨兵的IP和端口./amdc-cli -p 26359 -h 172.21.61.46 172.21.61.46:26359> info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=mymaster,status=ok,address=172.21.61.46:6359,slaves=2,sentinels=31
2
3
4
5
6
7
8
9 - 如上,出现主节点信息、从节点数量和哨兵数量都是正确的即部署成功。
- 使用
# 集群模式
集群部署图

集群节点规划
| 服务器IP | 角色 | 端口 |
|---|---|---|
| 172.21.61.46 | 集群节点1+从节点1 | 6359,6360 |
| 172.21.61.66 | 集群节点2+从节点2 | 6359,6360 |
| 172.21.61.32 | 集群节点3+从节点3 | 6359,6360 |
# 集群安装步骤
1.准备服务器节点
2.上传AMDC缓存核心安装包(
AMDC-版本-构建日期-CPU架构.tar.gz)至上述目标服务器的安装目录下(如:/opt/amdc目录下)3.解压安装包:
tar -zxf AMDC-版本-构建日期-CPU架构.tar.gz4.复制一份安装包为
slave节点:cp -r amdc amdc-slave5.上传授权文件
license.lic至每个节点安装目录/opt/amdc/下,(包括slave)。授权可参考本文档的AMDC 授权管理指南[root@private opt]# tree -L 3 . ├── amdc │ ├── amdc # 主节点目录 │ │ ├── acls.properties │ │ ├── amdc-benchmark │ │ ├── amdc-check-aof │ │ ├── amdc-check-rdb │ │ ├── amdc-cli │ │ ├── amdc-conf-conv │ │ ├── amdc-sentinel │ │ ├── amdc-server │ │ ├── amdc.yaml │ │ ├── license.xml #授权文件 │ │ └── sentinel.yaml │ └── amdc-slave # 从节点目录 │ ├── acls.properties │ ├── amdc-benchmark │ ├── amdc-check-aof │ ├── amdc-check-rdb │ ├── amdc-cli │ ├── amdc-conf-conv │ ├── amdc-sentinel │ ├── amdc-server │ ├── amdc.yaml │ ├── license.xml #授权文件 │ └── sentinel.yaml1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
276.集群配置
- 集群节点1(172.21.61.46): 修改
amdc.yaml中的bind为当前机器IP和开启集群模式,并开启后台运行模式NETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.46" # 添加本机IP - "-::1" GENERAL: # 是否以守护进程模式运行 daemonize: yes # 省略非配置项 CLUSTER: # 是否启用集群模式 cluster-enabled: yes1
2
3
4
5
6
7
8
9
10
11
12 - 集群节点2(172.21.61.66): 修改
amdc.yaml中的bind为当前机器IP和开启集群模式,并开启后台运行模式NETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.66" # 添加本机IP - "-::1" # 省略非配置项 CLUSTER: # 是否启用集群模式 cluster-enabled: yes1
2
3
4
5
6
7
8
9
10 - 集群节点3(172.21.61.32): 修改
amdc.yaml中的bind为当前机器IP和开启集群模式,并开启后台运行模式NETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.32" # 添加本机IP - "-::1" # 省略非配置项 CLUSTER: # 是否启用集群模式 cluster-enabled: yes1
2
3
4
5
6
7
8
9
10
- 集群节点1(172.21.61.46): 修改
7.从节点配置
- 由于主节点和从节点在同一台机器上,这里修改监听端口为:
6360 - 下面操作进入
amdc-slave目录下操作 - 从节点1(172.21.61.46): 修改
amdc.yaml中的bind为当前机器IP、Port和开启集群模式,并开启后台运行模式NETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.46" # 添加本机IP - "-::1" prot: 6360 GENERAL: # 是否以守护进程模式运行 daemonize: yes # pid 文件路径 pidfile: "/var/run/amdc-server-slave.pid" # 省略非配置项 CLUSTER: # 是否启用集群模式 cluster-enabled: yes # 集群配置文件路径,由节点自动维护 cluster-config-file: "node-6360.conf"1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 - 从节点2(172.21.61.66): 修改
amdc.yaml中的bind为当前机器IP、Port和开启集群模式,并开启后台运行模式NETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.66" # 添加本机IP - "-::1" prot: 6360 GENERAL: # 是否以守护进程模式运行 daemonize: yes # pid 文件路径 pidfile: "/var/run/amdc-server-slave.pid" # 省略非配置项 CLUSTER: # 是否启用集群模式 cluster-enabled: yes # 集群配置文件路径,由节点自动维护 cluster-config-file: "node-6360.conf"1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 - 从节点3(172.21.61.32): 修改
amdc.yaml中的bind为当前机器IP、Port和开启集群模式,并开启后台运行模式NETWORK: # 监听的网络地址,默认仅监听本地回环地址,注释此行可监听所有接口(暴露在公网有安全风险) bind: - "172.21.61.32" # 添加本机IP - "-::1" prot: 6360 GENERAL: # 是否以守护进程模式运行 daemonize: yes # pid 文件路径 pidfile: "/var/run/amdc-server-slave.pid" # 省略非配置项 CLUSTER: # 是否启用集群模式 cluster-enabled: yes # 集群配置文件路径,由节点自动维护 cluster-config-file: "node-6360.conf"1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- 由于主节点和从节点在同一台机器上,这里修改监听端口为:
8.在每个节点上启动缓存和从节点
- 启动主节点:
./amdc-server amdc.yaml - 启动从节点(切换至amdc-slave):
./amdc-server amdc.yaml
- 启动主节点:
9.使用
amdc-cli客户端工具创建集群amdc-cli:./amdc-cli --cluster create 172.21.61.46:6359 172.21.61.66:6359 172.21.61.32:6359 172.21.61.46:6360 172.21.61.66:6360 172.21.61.32:6360 --cluster-replicas 1注:
amdc-cli --cluster命令使用手册可参考用户手册。- 创建过程中,要输入“yes”,确认集群节点安排,如下:
[root@private amdc]# ./amdc-cli --cluster create 172.21.61.46:6359 172.21.61.66:6359 172.21.61.32:6359 172.21.61.46:6360 172.21.61.66:6360 172.21.61.32:6360 --cluster-replicas 1 >>> Performing hash slots allocation on 6 nodes... Master[0] -> Slots 0 - 5460 Master[1] -> Slots 5461 - 10922 Master[2] -> Slots 10923 - 16383 Adding replica 172.21.61.66:6360 to 172.21.61.46:6359 Adding replica 172.21.61.32:6360 to 172.21.61.66:6359 Adding replica 172.21.61.46:6360 to 172.21.61.32:6359 M: a11b0a053f596321a4e310046e2b69bca8c96d4a 172.21.61.46:6359 slots:[0-5460] (5461 slots) master M: ab6dcd5d434ce3ec8ad199ac1a3d610ac33f3a7f 172.21.61.66:6359 slots:[5461-10922] (5462 slots) master M: 70451b10ef6f7793083b47a994c900cccc218b39 172.21.61.32:6359 slots:[10923-16383] (5461 slots) master S: 37ffc8538d24b332d45d6732b1df7e9386114522 172.21.61.46:6360 replicates 70451b10ef6f7793083b47a994c900cccc218b39 S: 3ffc63268838f02dd4e1d66f11b5a6ffdc83cdfe 172.21.61.66:6360 replicates a11b0a053f596321a4e310046e2b69bca8c96d4a S: 4862dfb143cf5de0bebb64370f77c8bbe5bfc917 172.21.61.32:6360 replicates ab6dcd5d434ce3ec8ad199ac1a3d610ac33f3a7f Can I set the above configuration? (type 'yes' to accept): yes >>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join . >>> Performing Cluster Check (using node 172.21.61.46:6359) M: a11b0a053f596321a4e310046e2b69bca8c96d4a 172.21.61.46:6359 slots:[0-5460] (5461 slots) master 1 additional replica(s) S: 4862dfb143cf5de0bebb64370f77c8bbe5bfc917 172.21.61.32:6360 slots: (0 slots) slave replicates ab6dcd5d434ce3ec8ad199ac1a3d610ac33f3a7f S: 37ffc8538d24b332d45d6732b1df7e9386114522 172.21.61.46:6360 slots: (0 slots) slave replicates 70451b10ef6f7793083b47a994c900cccc218b39 S: 3ffc63268838f02dd4e1d66f11b5a6ffdc83cdfe 172.21.61.66:6360 slots: (0 slots) slave replicates a11b0a053f596321a4e310046e2b69bca8c96d4a M: 70451b10ef6f7793083b47a994c900cccc218b39 172.21.61.32:6359 slots:[10923-16383] (5461 slots) master 1 additional replica(s) M: ab6dcd5d434ce3ec8ad199ac1a3d610ac33f3a7f 172.21.61.66:6359 slots:[5461-10922] (5462 slots) master 1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
4910.查看集群状态
./amdc-cli --cluster info
[root@private amdc]# ./amdc-cli --cluster info 172.21.61.46:6359> cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 cluster_size:3 cluster_current_epoch:7 cluster_my_epoch:1 cluster_stats_messages_ping_sent:100 cluster_stats_messages_pong_sent:131 cluster_stats_messages_auth-ack_sent:1 cluster_stats_messages_sent:232 cluster_stats_messages_ping_received:131 cluster_stats_messages_pong_received:96 cluster_stats_messages_fail_received:1 cluster_stats_messages_auth-req_received:1 cluster_stats_messages_received:2291
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Docker容器环境安装
AMDC提供arm和x86的Docker系统安装包,可通过AMDC-Docker安装包直接部署AMDC.
# 安装包说明
- AMDC-Docker压缩安装包名称
- x86_64:
AMDC-Docker-20260204-amd64-kylin.tar.gz - arm64:
AMDC-Docker-20260204-arm64-kylin.tar.gz
注: 安装包日期可能不同,请根据实际情况选择。
- 安装包目录结构
tree -l 1 AMDC-Docker-20260204-amd64-kylin
AMDC-Docker-20260204-amd64-kylin # docker安装包解压后目录
|-- AMDC-Docker-20260204-amd64-kylin.tar.gz # docker镜像文件
|-- amdc
| |-- amdc.conf # AMDC配置文件
| |-- license.xml # 授权文件
|-- amdc-dockercompose.yaml # docker compose配置文件
2
3
4
5
6
7
# 安装步骤
下面的操作以AMDC-Docker-20260204-amd64-kylin.tar.gz为例说明。
- 解压和导入镜像
- 解压
tar -zxvf AMDC-Docker-20260204-amd64-kylin.tar.gz - 进入解压后的文件夹
cd AMDC-Docker-20260204-amd64-kylin - 加载镜像:
docker load < AMDC-Docker-20260204-amd64-kylin.tar.gz
- 修改授权文件
AMDC授权文件需要挂载到容器内部安装目录,当前样例是amdc/license.xml,在启动容器前,请更换授权文件。
授权文件挂载说明
- license.xml 支持旧授权
- license.lic 支持KBC授权,将申请的license.lic文件放到amdc目录,并在
amdc-dockercompose.yaml配置挂载- acls.properties统一授权配置文件需要添加挂载到容器路径:
/opt/amdc
- 镜像启动与停止
- 启动命令:
docker-compose -f amdc-dockercompose.yaml up -d - 停止命令:
docker-compose -f amdc-dockercompose.yaml down
amdc-dockercompose.yaml配置说明
version: '3'
services:
amdc:
image: harbor.apusic.com/apusic/amdc:V2.0.4.20260204-kylin-amd64
ports:
- 6359:6359
volumes:
- ./amdc/amdc.yaml:/opt/amdc/amdc.yaml:z # 配置文件挂载
- ./amdc/license.xml:/opt/amdc/license.xml:z # 授权文件挂载(若是licnese.lic,请修改)
- ./amdc/acls.properties:/opt/amdc/acls.properties:z # 统一授权文件挂载
- ./amdc/dump.rdb:/opt/amdc/dump.rdb:z # 缓存rdb文件挂载(需要重新添加)
working_dir: /opt/amdc
command: ./amdc-server
2
3
4
5
6
7
8
9
10
11
12
13
# RPM包安装
RPM(Red Hat Package Manager)安装包是一种在 Linux 系统中用于软件包管理的格式,最初由 Red Hat 开发,现在广泛用于基于 Red Hat 的发行版,AMDC提供arm和x86的RPM安装包,可通过rpm命令安装。其支持的操作系统有:
- Kylin
- OpenEuler
- CentOS
# 安装包安装
- x86_64:
AMDC-2.0.4-20260206-1.el7.x86_64.rpm - arm64:
AMDC-2.0.4-20260206-1.el7.aarch64.rpm
- 安装命令:
rpm -ivh AMDC-2.0.4-20260206-1.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:amdc-2.0.4-1.el7 ################################# [100%]
2
3
4
- 安装完后,产品介质安装目录在
/opt/amdc-2.0.4目录下 - 将授权文件导入到
/opt/amdc-2.0.4/license.xml文件中 - 启动命令:
/opt/amdc-2.0.4/amdc-server
# 停止缓存核心服务
AMDC 缓存核心提供多种停止方式,为确保数据安全和系统稳定性,建议按照以下优先级顺序选择合适的停止方法:
# 停止方式
通过客户端发送 SHUTDOWN 命令
这是最安全的停止方式,AMDC 会在完成数据持久化后再退出,确保数据完整性。
./amdc-cli -h [IP地址] -p [端口] -a [密码] shutdown1交互式客户端停止
当已连接到 AMDC 客户端时,可直接执行 shutdown 命令:
127.0.0.1:6359> shutdown1
执行流程:
- 断开所有客户端连接
- 根据配置执行 RDB/AOF 持久化操作
- 安全退出服务进程
# 紧急停止方式
当 AMDC 服务无响应或无法正常停止时,可使用此方式。注意:此操作可能导致数据丢失!
操作步骤:
查找 AMDC 进程 PID:
ss -nltp | grep amdc # 或者 ps -ef | grep amdc1
2
3强制终止进程:
kill -9 [进程ID]1
# 停止方式对比
| 停止方式 | 数据安全性 | 适用场景 | 推荐度 |
|---|---|---|---|
| 客户端 SHUTDOWN 命令 | 高 | 正常维护、计划停机 | 推荐 |
| 交互式 shutdown | 高 | 调试、测试环境 | 推荐 |
| 强制 kill -9 | 低 | 服务无响应、紧急故障处理 | 不推荐 |
重要提示:生产环境中请优先使用优雅停机方式,避免因强制终止导致的数据丢失风险。只有在 AMDC 服务完全无响应且无法通过正常方式停止时,才考虑使用强制终止方式。
# License(许可)授权管理
# 授权模式概述
金蝶Apusic分布式缓存(AMDC)V2.0.4 支持三种License许可授权验证模式,用户可根据实际需求选择合适的授权方式:
| 授权模式 | 适用场景 | 配置文件 | 特点 |
|---|---|---|---|
| 金蝶天燕本地授权 | 独立部署、离线环境 | license.xml | 本地文件授权,支持绑定IP、MAC地址 |
| 金蝶KBC授权 | 标准生产环境 | license.lic | 本地授权文件,通过授权码方式验证 |
| 金蝶统一授权中心 | 多租户、云环境 | acls.properties | 集中式授权管理,支持多租户 |
默认授权模式:金蝶天燕本地授权和金蝶KBC授权验证
# 授权配置详解
# 金蝶天燕本地授权
适用场景:离线环境、独立部署、测试环境
配置步骤:
- 获取
license.xml授权文件 - 将授权文件放置在AMDC安装目录下
- 在
amdc.yaml中配置授权文件路径:
license: "license.xml"
# 金蝶KBC授权
适用场景:标准生产环境、需要设备绑定的场景、离线环境
配置步骤:
获取设备特征码
执行AMDC服务启动命令,系统将自动输出设备特征码:
./amdc-server1输出示例:
400987:C 05 Feb 2026 17:33:59.232 # Warning: no config file specified, using the ./amdc.yaml 400987:C 05 Feb 2026 17:33:59.232 # oO0OoO0OoO0Oo AMDC is starting oO0OoO0OoO0Oo 400987:C 05 Feb 2026 17:33:59.232 * AMDC KBC authorization code: 'SZTY-1486655719' for mac: 00-15-5D-BC-65-3F 400987:C 05 Feb 2026 17:33:59.235 # No valid license file found: ./license.xml or ./license.lic 400987:C 05 Feb 2026 17:33:59.235 # Local license verification failed!1
2
3
4
5特征码说明:
- 格式:
SZTY-XXXXXXXXXX(以SZTY开头) - 绑定信息:MAC地址或其他硬件特征
- 注意:每个设备的特征码唯一,不可跨设备使用
- 格式:
申请授权文件
- 访问金蝶KBC授权系统(此操作由金蝶天燕销售、实施或研发人员操作)
- 使用获取的特征码申请授权
- 下载生成的
license.lic文件
配置授权文件
- 将
license.lic文件放置在AMDC安装目录下 - 在
amdc.yaml中配置授权文件路径:
license: "license.lic"1- 将
# 金蝶统一授权中心
适用场景:多租户环境、云平台部署、集中式授权管理
配置步骤:
创建
acls.properties配置文件配置授权中心连接信息:
# 是否开启统一授权中心 apusic_acls_enable=true # 授权中心地址(多个地址用逗号分隔) apusic_acls_authUrls=192.168.1.100:8080,192.168.1.101:8080 # 命名空间 apusic_acls_ns=public # 租户名称(如不确定可填写为public) apusic_acls_tenant=public1
2
3
4
5
6
7
8
9
10
11将
acls.properties文件放置在AMDC安装目录下
# 授权文件管理
# 授权文件位置
所有授权文件均需放置在AMDC安装目录下,与 amdc-server 可执行文件同级目录。
# 授权热更新
AMDC支持授权文件热更新,无需重启服务:
- 直接替换现有的授权文件内容
- 系统会自动检测并加载新的授权信息
- 注意:确保新授权文件格式正确,避免授权失效
# 授权验证优先级
当多种授权文件同时存在时,AMDC按照以下优先级进行验证:
acls.properties(统一授权中心)license.lic(KBC授权)license.xml(本地授权)
# 故障排查
# 常见错误信息
- "No valid license file found":未找到有效的授权文件
- "Local license verification failed":授权文件无效或已过期
- "Authorization code mismatch":特征码与设备不匹配
# 处理方案
- 确认授权文件放置在正确目录
- 验证授权文件格式和内容是否正确
- 检查设备特征码是否与授权文件匹配
- 确认授权文件是否在有效期内
# 缓存核心服务相关参数说明
# 网络配置参数
# 监听地址配置
| 参数名称 | 默认值 | 说明 | 使用方式 |
|---|---|---|---|
bind | 127.0.0.1 -::1 | 监听的网络地址,指定客户端访问缓存的IP地址,除绑定地址外无法连接 | 可绑定多个地址,如:bind:- "127.0.0.1"- "192.168.0.190" |
# 端口配置
| 参数名称 | 默认值 | 说明 | 使用方式 |
|---|---|---|---|
port | 6359 | 监听的TCP端口,设为0则不监听TCP套接字 | port: 6359 |
# 保护模式
| 参数名称 | 默认值 | 说明 |
|---|---|---|
protected-mode | yes | 保护模式,当未指定bind且无密码时,仅允许本地回环地址和Unix域套接字连接 |
# 后台运行配置
# 守护进程模式
| 参数名称 | 默认值 | 说明 | 使用方式 |
|---|---|---|---|
daemonize | no | 是否以守护进程模式运行,yes则后台运行并生成pid文件 | daemonize: yes, 注:logfile参数需要填写,以便查看日志 |
# PID文件配置
| 参数名称 | 默认值 | 说明 | 使用方式 |
|---|---|---|---|
pidfile | /var/run/amdc-sentinel.pid | pid文件路径,守护进程模式下默认生成 | pidfile: "/var/run/amdc-server.pid" |
# 安全认证配置
# 密码认证
| 参数名称 | 说明 | 使用方式 |
|---|---|---|
requirepass | 设置密码,可以为空。从节点密码建议与主节点密码保持一致 | requirepass: "123456"注:在users.acl存在的情况下,server优先使用users.acl中的密码 |
masterauth | 主节点的密码,若主节点无密码则不需要填,若有密码,不分主从所有节点都需要填写该参数 | masterauth: "123456" |
# 集群配置
# 集群模式
| 参数名称 | 默认值 | 说明 | 使用方式 |
|---|---|---|---|
cluster-enabled | - | 是否开启集群模式 | cluster-enabled: "yes" |
# 集群配置文件
| 参数名称 | 默认值 | 说明 |
|---|---|---|
cluster-config-file | - | 集群配置文件路径,由节点自动维护 |
# 集群端口
| 参数名称 | 默认值 | 说明 | 使用方式 |
|---|---|---|---|
port | 6359 | 监听的TCP端口,设为0则不监听TCP套接字 | port: 6359 |
| 集群总线 | 16359 | 集群节点间Gossip通信端口(=缓存端口+10000) |
# 哨兵配置
# 哨兵端口
| 参数名称 | 默认值 | 说明 |
|---|---|---|
port | 26359 | 哨兵进程监听的TCP端口 |
# 哨兵监控配置
| 参数名称 | 说明 | 使用方式 |
|---|---|---|
sentinel monitor | 监控的主节点配置 | sentinel monitor: mymaster 127.0.0.1 6379 1 |
sentinel auth-pass | 主节点密码校验 | sentinel auth-pass: mymaster 123456 |
# 主从模式
# 主从配置
| 参数名称 | 说明 | 使用方式 |
|---|---|---|
replicaof | 指定主节点地址和端口 | replicaof: "172.21.61.46 6359" |
# 存储配置
# 数据文件配置
| 参数名称 | 默认值 | 说明 |
|---|---|---|
dbfilename | "dump.rdb" | RDB文件名,不包括路径 |
dir | "./" | RDB文件、AOF文件夹、license文件、apusic-acls文件、aclfile文件、cluster-config-file文件等其他相对路径文件均受dir参数影响 |
# AOF持久化配置
| 参数名称 | 默认值 | 说明 | 使用方式 |
|---|---|---|---|
appendonly | no | 是否启用AOF持久化 | appendonly: yes |
appendfilename | "appendonly.aof" | AOF文件名称 | appendfilename: "amdc.aof" |
appendfsync | everysec | AOF刷盘策略:no(依赖系统)always(每次写入)everysec(每秒一次) | appendfsync: everysec |
no-appendfsync-on-rewrite | no | AOF重写期间是否禁用主进程的fsync | no-appendfsync-on-rewrite: yes |
auto-aof-rewrite-percentage | 100 | AOF自动重写的触发百分比 | auto-aof-rewrite-percentage: 100 |
auto-aof-rewrite-min-size | 64mb | AOF自动重写的最小文件大小 | auto-aof-rewrite-min-size: 64mb |
aof-load-truncated | yes | 启动时是否加载被截断的AOF文件 | aof-load-truncated: yes |
aof-use-rdb-preamble | yes | AOF重写时是否使用RDB前缀 | aof-use-rdb-preamble: yes |
# 重要配置示例
# 单机模式配置示例
NETWORK:
bind:
- "0.0.0.0" # 允许所有IP访问
port: 6359
protected-mode: yes
GENERAL:
daemonize: yes # 后台运行
pidfile: "/var/run/amdc-server.pid"
SECURITY:
requirepass: "your_password" # 设置访问密码
2
3
4
5
6
7
8
9
10
11
12
# 主从模式配置示例
# 主节点配置
NETWORK:
bind:
- "172.21.61.46" # 主节点IP
port: 6359
GENERAL:
daemonize: yes
SECURITY:
requirepass: "master_password" # 主节点密码
# 从节点配置
NETWORK:
bind:
- "172.21.61.66" # 从节点IP
port: 6359
GENERAL:
daemonize: yes
REPLICATION:
replicaof: "172.21.61.46 6359" # 指定主节点
SECURITY:
requirepass: "master_password" # 从节点密码需与主节点一致
masterauth: "master_password" # 主节点密码
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 哨兵模式配置示例
NETWORK:
bind:
- "172.21.61.46" # 哨兵节点IP
port: 26359
GENERAL:
daemonize: yes
SENTINEL:
sentinel monitor: mymaster 172.21.61.46 6359 2 # 监控主节点
sentinel auth-pass: mymaster master_password # 主节点密码
2
3
4
5
6
7
8
9
10
11
# 集群模式配置示例
NETWORK:
bind:
- "172.21.61.46" # 集群节点IP
port: 6359
GENERAL:
daemonize: yes
CLUSTER:
cluster-enabled: yes # 启用集群模式
cluster-config-file: "nodes.conf" # 集群配置文件
SECURITY:
requirepass: "cluster_password" # 集群密码
2
3
4
5
6
7
8
9
10
11
12
13
14
# Web管控台安装
# 安装包介绍
- 安装包:
AMDC-Console-【版本】-【日期】-【硬件架构】.tar.gz
# 安装步骤
其安装步骤主要有:
- 上传AMDC控制台安装包至目标服务器的安装目录下(如:/opt目录下)
- 解压安装包:
tar -zxf AMDC-Console-【版本】-【日期】-【硬件架构】.tar.gz - 进入解压后的文件夹:
cd amdc-console - 执行启动命令:
nohup ./amdc-console >nohup.out 2>&1 &(后台启动) - 启动完成后即可通过浏览器访问AMDC控制台:用浏览器访问
http://ip:port(其中ip表示部署AMDC控制台服务器的IP,port为控制台端口,如:192.168.0.129:9001
启动完成后即可通过浏览器访问控制台。
# 停止Web管控台
停止AMDC Web控制台的服务,需要强制结束AMDC控制台服务进程。
步骤:
- 通过查看端口进程命令找到控制台进程PID:
netstat -nltp | grep 9001或者netstat -nltp | grep amdc-console - 执行kill -9命令,强制杀死进程:
kill -9 进程ID