微服务集群部署

业务微服务集群

业务高可用是基于spring cloud架构实现,每一个业务服务的实例通过eureka client将服务的信息注册到eureka注册中心集群,当请求到达网关(Zuul)时,根据配置的负载均衡策略,熔断策略将请求路由到业务服务实例,下图按照两个业务微服务(edge-mangement和data-query-service)的示例说明如下:

业务微服务集群部署

业务微服务在进行集群部署时,主要时配置eureka client,将服务信息注册到eureka server,eureka server集群和gateway集群必须先部署好

典型的eureka client的配置在spring配置文件中(application.yml)对应如下, client可以根据运行情况调整某些那默认参数,这里不展开详细描述

eureka:
  instance:
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${server.port}
  client:
    service-url:
      defaultZone: http://192.168.1.101:8763/eureka/,http://192.168.1.102:8763/eureka/  
    registry-fetch-interval-seconds: 10
server:
  port: 9700
  

eureka client部分的字段说明如下:

名称 说明 默认值
registryFetchIntervalSeconds 从Eureka服务端获取注册信息的时间间隔,单位为秒 30
serviceUrl.defaultZone eureka server连接的地址,server为集群部署时,配置为多个url地址,中间用,隔开

eureka instance字段说明如下:

名称 说明 默认值
prefer-ip-address 是否通过IP地址注册到服务中心,如果网络支持主机名称的解析,可以配置成false
instance-id Eureka的实例id,可以配置成application name的名称加端口的形式,当业务服务为集群时,可以再加入节点名称以区分

下面以edge-management服务为例示例如何进行业务微服务集群部署

前置条件

  1. 准备两个服务节点(ip地址信息根据实际部署环境进行对应调整)
节点1: 192.168.1.101
节点2: 192.168.1.102
  1. gateway和eureka集群已经部署完成(ip地址信息根据实际部署环境进行对应调整)

eureka集群url为: http://192.168.1.101:8763/eureka/,http://192.168.1.102:8763/eureka/
gateway需要部署完成,业务服务不需要gateway配置,在请求时需要

  1. rabbitmq,mysql,redis服务已经搭建完成

rabbitmq: 以docker的形式运行,container名称为rabbitmq,端口5672,用户名和密码为 guest/guest
redis: 以docker的形式运行,container名称为redis
mysql: 192.168.1.101:3306 用户名密码为 root/123456

docker部署业务微服务集群

节点1上运行:

docker run -d --name edge-management --restart always --net iot \
    -p 9700:9700 \
    -e JAVA_OPTS=" \
        -Dserver.port=9700 \
        -Deureka.instance.prefer-ip-address=true \
        -Deureka.instance.ip-address=192.168.1.101 \
        -Deureka.instance.instance-id=edge-management-1:9000 \
        -Deureka.client.service-url.defaultZone=http://192.168.1.101:8763/eureka/,http://192.168.1.102:8763/eureka/ \
        -Drabbitmq.host=rabbitmq \
        -Drabbitmq.port=5672 \
        -Drabbitmq.username=guest \
        -Drabbitmq.password=guest \
        -Dspring.datasource.url=jdbc:mysql://192.168.1.101:3306/equipment_management?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 \
        -Dspring.datasource.username=root \
        -Dspring.datasource.password=123456 \
        -Dspring.redis.host=redis \
        -Dlogging.level.root=INFO \
        -Dlogging.level.org.reflections.Reflections=INFO \
        -Dlogging.file.name=/opt/log/equip-management.log \
        -Dsetting.schema.path=/opt/schema-template \
        -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9998  \
        -Dcloud.rpc.enable=false \
        -Diot.command.type=MQ \
        -XX:+HeapDumpOnOutOfMemoryError  \
        -Xmx256m \
    " \
    harbor.hipermatrix.com:10300/edge/edge-management:1.1.4

节点2上运行:

docker run -d --name edge-management --restart always --net iot \
    -p 9700:9700 \
    -e JAVA_OPTS=" \
        -Dserver.port=9700 \
        -Deureka.instance.prefer-ip-address=true \
        -Deureka.instance.ip-address=192.168.1.102 \
        -Deureka.instance.instance-id=edge-management-2:9000 \
        -Deureka.client.service-url.defaultZone=http://192.168.1.101:8763/eureka/,http://192.168.1.102:8763/eureka/ \
        -Drabbitmq.host=rabbitmq \
        -Drabbitmq.port=5672 \
        -Drabbitmq.username=guest \
        -Drabbitmq.password=guest \
        -Dspring.datasource.url=jdbc:mysql://192.168.1.101:3306/equipment_management?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 \
        -Dspring.datasource.username=root \
        -Dspring.datasource.password=123456 \
        -Dspring.redis.host=redis \
        -Dlogging.level.root=INFO \
        -Dlogging.level.org.reflections.Reflections=INFO \
        -Dlogging.file.name=/opt/log/equip-management.log \
        -Dsetting.schema.path=/opt/schema-template \
        -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9998  \
        -Dcloud.rpc.enable=false \
        -Diot.command.type=MQ \
        -XX:+HeapDumpOnOutOfMemoryError  \
        -Xmx256m \
    " \
    harbor.hipermatrix.com:10300/edge/edge-management:1.1.4

注意:

  1. eureka相关的参数配置参考前面eureka client配置的说明
  2. 相应ip地址,服务地址,用户名密码请根据实际环境进行相关的调整

windows部署业务微服务集群

2022-08-11
0