部署

环境准备

要使用 SOFARegistry,需要先准备好基础环境,SOFARegistry 依赖以下环境:

  • Linux/Unix/Mac/Windows
  • JDK8
  • 需要采用 Apache Maven 3.2.5 或者以上的版本来编译

两种部署模式

  • 集成部署模式
    • 将 meta/data/session 三个角色打包集成在一个 jvm 里运行,可单机或集群部署,部署简单。
  • 独立部署模式
    • 将 meta/data/session 三个角色分开部署,每个角色都可以单机或集群部署,可根据实际情况为每个角色部署不同的数量。
    • 生产环境建议使用这种部署模式。

部署步骤

1. 下载源码和编译打包

1.1 下载源码

  1. git clone https://github.com/alipay/sofa-registry.git
  2. cd sofa-registry

1.2 编译打包

  1. mvn clean package -DskipTests

2. 部署注册中心

2.1 集成部署模式

集成部署模式,是将 meta/data/session 三个角色打包集成在一个 JVM 里运行,可单机或集群部署。

2.1.1 单机部署

集成部署的单机部署模式可以直接参考快速开始-服务端部署部分。

2.1.2 集群部署
  • 解压 registry-integration.tgz,并修改配置文件

集群部署,即搭建2台以上的集群,建议至少使用3台(注意:目前不支持在同一台机器部署多个 SOFARegistry,因此您必须有3台不同的机器)。在每一台机器上的部署方法同上:

  1. cp server/distribution/integration/target/registry-integration.tgz <somewhere>
  2. cd <somewhere> && mkdir registry-integration
  3. tar -zxvf registry-integration.tgz -C registry-integration

区别是每台机器在部署时需要修改 conf/application.properties 配置:

  1. # 将3台机器的ip或hostname配置到下方(填入的hostname会被内部解析为ip地址)
  2. nodes.metaNode=DefaultDataCenter:<hostname1>,<hostname2>,<hostname3>
  3. nodes.localDataCenter=DefaultDataCenter
  4. nodes.localRegion=DefaultZone
  • 启动 registry-integration

每台机器都修改以上配置文件后,按照“单机部署”的步骤去启动 registry-integration 即可。

  • Linux/Unix/Mac:sh bin/startup.sh。
  • Windows: 双击 bin 目录下的 startup.bat 运行文件。
    • 确认运行状态:对每一台机器,都可访问三个角色提供的健康监测api,或查看日志 logs/registry-startup.log
  1. # 查看meta角色的健康检测接口:(3台机器,有1台是Leader,其他2台是Follower)
  2. $ curl http://localhost:9615/health/check
  3. {"success":true,"message":"... raftStatus:Leader"}
  4. # 查看data角色的健康检测接口:
  5. $ curl http://localhost:9622/health/check
  6. {"success":true,"message":"... status:WORKING"}
  7. # 查看session角色的健康检测接口:
  8. $ curl http://localhost:9603/health/check
  9. {"success":true,"message":"..."}

2.2 独立部署模式

独立部署模式,是将 meta/data/session 三个角色分开部署,每个角色都可以单机或集群部署,可根据实际情况为每个角色部署不同的数量,生产环境推荐使用这种部署模式。

以下介绍332模式(即 3台meta + 3台data + 2台session)的部署步骤。

2.2.1 部署meta

  • 解压 registry-meta.tgz,并修改配置文件

在3台机器上部署 meta 角色。在每一台机器上的部署方法如下:

  1. cp server/distribution/meta/target/registry-meta.tgz <somewhere>
  2. cd <somewhere> && mkdir registry-meta
  3. tar -zxvf registry-meta.tgz -C registry-meta

每台机器在部署时需要修改 conf/application.properties 配置:

  1. # 将3台meta机器的ip或hostname配置到下方(填入的hostname会被内部解析为ip地址)
  2. nodes.metaNode=DefaultDataCenter:<meta_hostname1>,<meta_hostname2>,<meta_hostname3>
  3. nodes.localDataCenter=DefaultDataCenter
  • 启动 registry-meta
    • Linux/Unix/Mac:sh bin/startup.sh。
    • Windows: 双击 bin 目录下的 startup.bat 运行文件。
  • 确认运行状态:对每一台机器,都可访问meta提供的健康监测api,或查看日志 logs/registry-startup.log
  1. # 查看 meta 角色的健康检测接口:(3台机器,有1台是 Leader,其他2台是 Follower)
  2. $ curl http://localhost:9615/health/check
  3. {"success":true,"message":"... raftStatus:Leader"}

2.2.2 部署data

  • 解压 registry-data.tgz,并修改配置文件

在3台机器上部署 data 角色。在每一台机器上的部署方法如下:

  1. cp server/distribution/data/target/registry-data.tgz <somewhere>
  2. cd <somewhere> && mkdir registry-data
  3. tar -zxvf registry-data.tgz -C registry-data

每台机器在部署时需要修改 conf/application.properties 配置:

  1. # 将3台 meta 机器的 ip 或 hostname 配置到下方(填入的 hostname 会被内部解析为 ip 地址)
  2. nodes.metaNode=DefaultDataCenter:<meta_hostname1>,<meta_hostname2>,<meta_hostname3>
  3. nodes.localDataCenter=DefaultDataCenter
  4. data.server.numberOfReplicas=1
  • 启动 registry-data
    • Linux/Unix/Mac:sh bin/startup.sh。
    • Windows: 双击 bin 目录下的 startup.bat 运行文件。
  • 确认运行状态:对每一台机器,都可访问data提供的健康监测api,或查看日志 logs/registry-startup.log
  1. # 查看 data 角色的健康检测接口:
  2. $ curl http://localhost:9622/health/check
  3. {"success":true,"message":"... status:WORKING"}

2.2.3 部署session

  • 解压 registry-session.tgz,并修改配置文件

在2台机器上部署 session 角色。在每一台机器上的部署方法如下:

  1. cp server/distribution/session/target/registry-session.tgz <somewhere>
  2. cd <somewhere> && mkdir registry-session
  3. tar -zxvf registry-session.tgz -C registry-session

每台机器在部署时需要修改 conf/application.properties 配置:

  1. # 将3台 meta 机器的 ip 或 hostname 配置到下方(填入的 hostname 会被内部解析为 ip 地址)
  2. nodes.metaNode=DefaultDataCenter:<meta_hostname1>,<meta_hostname2>,<meta_hostname3>
  3. nodes.localDataCenter=DefaultDataCenter
  4. nodes.localRegion=DefaultZone
  • 启动 registry-session
    • Linux/Unix/Mac:sh bin/startup.sh。
    • Windows: 双击 bin 目录下的 startup.bat 运行文件。
  • 确认运行状态:对每一台机器,都可访问session提供的健康监测api,或查看日志 logs/registry-startup.log
  1. # 查看session角色的健康检测接口:
  2. $ curl http://localhost:9603/health/check
  3. {"success":true,"message":"..."}