Linkerd服务网格部署

要将现有的 Java 应用程序(gateway.jar, admin.jar, user.jar, order.jar)接入到 Linkerd 网格中,通过 Linkerd 提供流量代理和负载均衡,可以按以下步骤操作。

由于你已使用 linkerd-1.6.3-exec config/linkerd.yaml 启动了 Linkerd 服务,假设这个版本为 Linkerd 1.x,而不是 2.x。Linkerd 1.x 是非 Kubernetes 部署版本,专为传统服务设计,与 Kubernetes 上使用的 Linkerd 2.x 有较大差异。以下指导适用于 Linkerd 1.x。


1. 环境设置

确保以下条件满足:

  • Linkerd 服务运行正常。
  • 你的 Java 服务正在本地(或同一服务器上的不同端口)监听。
  • 准备一个 Linkerd 配置文件,通过 Linkerd 服务代理流量。

2. 配置 Linkerd

Linkerd 1.x 管理服务的流量需要通过一个 linkerd.yaml 配置文件定义服务的路由规则。创建或更新你的 linkerd.yaml,为每个 Java 服务定义一个逻辑服务名和运行的地址端口。

示例 linkerd.yaml

以下是一份 linkerd.yaml 配置文件的示例:

admin:
  ip: 0.0.0.0
  port: 9990

routers:
- protocol: http
  label: gateway
  servers:
  - ip: 0.0.0.0
    port: 4140
  dtab: |
    /svc/gateway => /$/inet/127.0.0.1/8080 ;
  client:
    kind: io.l5d.static
    configs:
    - prefix: "/$/inet/127.0.0.1/8080"
      tls:
        disableValidation: true

- protocol: http
  label: admin
  servers:
  - ip: 0.0.0.0
    port: 4141
  dtab: |
    /svc/admin => /$/inet/127.0.0.1/8081 ;
  client:
    kind: io.l5d.static
    configs:
    - prefix: "/$/inet/127.0.0.1/8081"
      tls:
        disableValidation: true

- protocol: http
  label: user
  servers:
  - ip: 0.0.0.0
    port: 4142
  dtab: |
    /svc/user => /$/inet/127.0.0.1/8082 ;
  client:
    kind: io.l5d.static
    configs:
    - prefix: "/$/inet/127.0.0.1/8082"
      tls:
        disableValidation: true

- protocol: http
  label: order
  servers:
  - ip: 0.0.0.0
    port: 4143
  dtab: |
    /svc/order => /$/inet/127.0.0.1/8083 ;
  client:
    kind: io.l5d.static
    configs:
    - prefix: "/$/inet/127.0.0.1/8083"
      tls:
        disableValidation: true

在上面配置中:

  • 每个 Java 服务都有一个逻辑名(如 gateway, admin, user, order)。
  • 每个服务的流量根据 dtab 设置被路由到不同的服务端点。例如:
    • /svc/gateway 的流量会转发到 127.0.0.1:8080,这是 gateway.jar 的实际地址。
    • /svc/admin -> 127.0.0.1:8081(admin.jar`)。
    • /svc/user -> 127.0.0.1:8082user.jar)。
    • /svc/order -> 127.0.0.1:8083order.jar)。

注意
如果 Java 服务不在本地,或者运行在不同服务器上,你需要将 127.0.0.1 替换为实际机器的 IP 地址,同时确保网络连接畅通。


3. 重启 Linkerd

更新配置后,重启 Linkerd 以加载新的路由设置:

./linkerd-1.6.3-exec config/linkerd.yaml

4. 修改 Java 服务的配置

让每个 Java 服务通过 Linkerd 代理来与其他服务通信。

修改服务通信地址:

例如,gateway.jar 如果需要调用 user.jar,原先可能使用地址 http://127.0.0.1:8082。现在你应该更新它的配置改为通过 Linkerd 代理的地址:

user.service.url=http://127.0.0.1:4142
admin.service.url=http://127.0.0.1:4141
order.service.url=http://127.0.0.1:4143
修改每个服务的调用:

确保 gateway.jar, admin.jar, user.jar, 和 order.jar 的配置文件中所有服务调用都指向 Linkerd 的代理端口。

  • 127.0.0.1:4140 -> gateway
  • 127.0.0.1:4141 -> admin
  • 127.0.0.1:4142 -> user
  • 127.0.0.1:4143 -> order

5. 测试服务网格

测试服务的基本通畅性:

在 Linkerd 路由规则生效之后,尝试从一个服务调用另一个服务,验证代理是否拦截并转发流量。

例如:

  • 访问 gateway 的 API,你可以在终端中运行:
curl http://127.0.0.1:4140/api/endpoint
  • 确保它调用的下游服务(如 userorder)也返回正确结果。
查看 Linkerd 管理页面:

Linkerd 提供了管理页面,你可以查看代理的健康状态和流量信息。在你的浏览器中访问以下地址:

http://<your-server-ip>:9990

这里会显示 Linkerd 的流量路由、成功率以及各服务的健康状态。


6. 监控 & 优化

添加 Metrics(指标收集):

Linkerd 提供指标监控功能。如果你需要对服务性能和流量情况进行详细的分析,可以通过 Prometheus 或其他监控工具收集 Linkerd 曝露的 metrics

使用以下命令可以快速查看指标:

curl http://127.0.0.1:9990/admin/metrics.json
流量策略调整:

如果需要更高级的功能(如负载均衡、重试、超时设置等),可以在 linkerd.yaml 文件中进一步配置。

例如,为每个服务增加超时配置:

timeoutMs: 5000  # 超时设置为5秒

或为每个服务增加重试机制:

failureAccrual:
  kind: io.l5d.successRate
  numRequests: 5
  backoff:
    kind: constant
    ms: 500

总结

通过以上步骤,你已成功将 Linkerd 配置为代理,用来路由和管理流量到各个 Java 服务。

核心流程:
  1. 编辑 linkerd.yaml,配置每个服务的路由规则。
  2. 重启 Linkerd 以应用配置。
  3. 修改 Java 服务的调用配置,将终点地址指向 Linkerd 代理。
  4. 验证服务功能并测试代理流量。
  5. 可选地,配置监控或流量策略(如超时、重试)。

这样,你的 Java 服务就已接入到 Linkerd 服务网格之中,并通过 Linkerd 提供负载均衡、监控、和故障处理等功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值