要将现有的 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:8082(user.jar)。/svc/order->127.0.0.1:8083(order.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->gateway127.0.0.1:4141->admin127.0.0.1:4142->user127.0.0.1:4143->order
5. 测试服务网格
测试服务的基本通畅性:
在 Linkerd 路由规则生效之后,尝试从一个服务调用另一个服务,验证代理是否拦截并转发流量。
例如:
- 访问
gateway的 API,你可以在终端中运行:
curl http://127.0.0.1:4140/api/endpoint
- 确保它调用的下游服务(如
user和order)也返回正确结果。
查看 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 服务。
核心流程:
- 编辑
linkerd.yaml,配置每个服务的路由规则。 - 重启 Linkerd 以应用配置。
- 修改 Java 服务的调用配置,将终点地址指向 Linkerd 代理。
- 验证服务功能并测试代理流量。
- 可选地,配置监控或流量策略(如超时、重试)。
这样,你的 Java 服务就已接入到 Linkerd 服务网格之中,并通过 Linkerd 提供负载均衡、监控、和故障处理等功能。
1299

被折叠的 条评论
为什么被折叠?



