在集群模式下部署服务中心(Service-Center)

服务中心是无状态应用,其使用 etcd 作为对象存储保存微服务的元数据。

搭建单机版服务中心,服务中心发布版本默认内置一个 etcd,开箱即用;用户亦可以通过简单配置方式外接指定的 etcd 环境。

搭建服务中心集群,首先需要部署 etcd 集群,其次对服务中心做简单配置即可实现集群管理,如下举例简单说明,

准备工作:

  • 两个VM(虚拟机),分别安装一个服务中心实例

    NameAddress
    VM110.12.0.1
    VM210.12.0.2
  • etcd集群 已安装部署就绪,服务开放端口为 http://10.12.0.4:2379

  • 运行环境为 Linux

Step 1

下载 服务中心版本 ,如:ServiceComb Service-Center 1.1.0

  1. # Untar the release
  2. tar -xvf service-center-X.X.X-linux-amd64.tar.gz

注意:请勿运行 start.sh 脚本,因为该脚本会启动版本默认内置的 etcd。

Step 2

配置服务中心运行参数,配置文件默认为发布包的 /conf/app.conf,打开文件编辑如下字段

VM1
  1. #Replace the below values
  2. httpaddr = 10.12.0.1
  3. manager_cluster = "10.12.0.4:2379"
VM2
  1. #Replace the below values
  2. httpaddr = 10.12.0.2
  3. manager_cluster = "10.12.0.4:2379"

注意:在 manger_cluster 中,可以将 etcd 的多个实例放在集群中

  1. manager_cluster= "10.12.0.4:2379,10.12.0.X:2379,10.12.0.X:2379"

Step 4

验证实例是否已成功运行,调用API:curl http://10.12.0.1:30101/v4/default/registry/health

  1. {
  2. "instances": [
  3. {
  4. "instanceId": "d6e9e976f9df11e7a72b286ed488ff9f",
  5. "serviceId": "d6e99f4cf9df11e7a72b286ed488ff9f",
  6. "endpoints": [
  7. "rest://10.12.0.1:30100"
  8. ],
  9. "hostName": "service_center_10_12_0_1",
  10. "status": "UP",
  11. "healthCheck": {
  12. "mode": "push",
  13. "interval": 30,
  14. "times": 3
  15. },
  16. "timestamp": "1516012543",
  17. "modTimestamp": "1516012543"
  18. },
  19. {
  20. "instanceId": "16d4cb35f9e011e7a58a286ed488ff9f",
  21. "serviceId": "d6e99f4cf9df11e7a72b286ed488ff9f",
  22. "endpoints": [
  23. "rest://10.12.0.2:30100"
  24. ],
  25. "hostName": "service_center_10_12_0_2",
  26. "status": "UP",
  27. "healthCheck": {
  28. "mode": "push",
  29. "interval": 30,
  30. "times": 3
  31. },
  32. "timestamp": "1516012650",
  33. "modTimestamp": "1516012650"
  34. }
  35. ]
  36. }

可以看到服务中心可以自动发现在集群中运行的所有实例。

Step 5

在基于ServiceComb微服务SDK servicecomb-java-chassis 构建的微服务工程中,通过配置 microservice.yaml 文件中的 servicecomb.service.registry.address 参数,使微服务自动发现集群中所有的实例。

  1. servicecomb:
  2. service:
  3. registry:
  4. address: "http://10.12.0.1:30100,http://10.12.0.2:30100"
  5. autodiscovery: true

注:允许配置一个或多个服务中心的实例地址,配置多个服务中心实例的场景可以起到单点故障备份的作用