我在启动Dapr和运行我的微服务时遇到了很大的问题。每次我尝试调用另一个服务时,它都会返回消息中的500个错误。
client error: the server closed connection before returning the first response byte. Make sure the server returns 'Connection: close' response header before closing the connection服务和dapr侧写器目前正在我们的开发机器上运行,但在正确部署时将以Kubernetes的形式运行。
当我查看Docker中的dapr容器的日志时,我可以看到在端口443上发现的应用程序和一些初始化消息,但是在那之后就再也没有其他的日志记录了,即使我发出了调用请求。
我有一个名为clients的容器,我在其中调用了一个名为test的API,然后尝试在另一个名为simpleapi的容器中调用Microsoft的示例天气预报API。
我使用swaggerUI调用apis。测试api返回200,但是当我在invoke上放置一个断点时,我可以看到响应是500。
如果我直接使用swaggerui调用气象预报api,它将返回一个带有预期有效载荷的200。
我在容器中运行了Dapr仪表板,它没有显示任何应用程序。
Docker-Compose.yml
version: '3.4'
services:
clients:
image: ${DOCKER_REGISTRY-}clients
container_name: "Clients"
build:
context: .
dockerfile: Clients/Dockerfile
ports:
- "50002:50002"
depends_on:
- placement
- database
networks:
- platform
clients-dapr:
image: "daprio/daprd:edge"
container_name: clients-dapr
command: [
"./daprd",
"-app-id", "clients",
"-app-port", "443",
"-placement-host-address", "placement:50006",
"-dapr-grpc-port", "50002"
]
depends_on:
- clients
network_mode: "service:clients"
simpleapi:
image: ${DOCKER_REGISTRY-}simpleapi
build:
context: .
dockerfile: SimpleAPI/Dockerfile
ports:
- "50003:50003"
depends_on:
- placement
networks:
- platform
simpleapi-dapr:
image: "daprio/daprd:edge"
container_name: simpleapi-dapr
command: [
"./daprd",
"-app-id", "simpleapi",
"-app-port", "443",
"-placement-host-address", "placement:50006",
"-dapr-grpc-port", "50003"
]
depends_on:
- simpleapi
network_mode: "service:simpleapi"
placement:
image: "daprio/dapr"
container_name: placement
command: ["./placement", "-port", "50006"]
ports:
- "50006:50006"
networks:
- platform
dashboard:
image: "daprio/dashboard"
container_name: dashboard
ports:
- "8080:8080"
networks:
- platform
networks:
platform:来自客户端API的测试控制器。
[Route("api/[controller]")]
[ApiController]
public class TestController : ControllerBase
{
[HttpGet]
public async Task<ActionResult> Get()
{
var httpClient = DaprClient.CreateInvokeHttpClient();
var response = await httpClient.GetAsync("https://simpleapi/weatherforecast");
return Ok();
}
}对于我的公司来说,这是一个重大的新项目,如果我们不能尽快做到这一点,我们将不得不放弃Dapr,自己实现一切。
我希望这里有一些显而易见的问题。
发布于 2021-05-28 15:44:25
其实其实很简单。
我需要告诉dapr使用ssl。客户端-dapr需要-app-ssl参数,因此客户端-dapr应该如下所示( simpleapi-dapr也需要相同的param添加)
clients-dapr:
image: "daprio/daprd:edge"
container_name: clients-dapr
command: [
"./daprd",
"-app-id", "clients",
"-app-port", "443",
"-app-ssl",
"-placement-host-address", "placement:50006",
"-dapr-grpc-port", "50002"
]
depends_on:
- clients
network_mode: "service:clients"发布于 2022-11-04 10:55:58
您可以在没有停靠器的情况下运行特定于服务的端口,并检查dapr是否正常工作。您可以指定http端口和grpc端口。
dapr run `
--app-id serviceName `
--app-port 5139 `
--dapr-http-port 3500 `
--dapr-grpc-port 50001 `
--components-path ./dapr-components如果上述设置有效,则可以使用对接程序进行安装。检查上述解
https://stackoverflow.com/questions/67741216
复制相似问题