Reputation: 191
I want to test Zeebe (camunda version) then I followed the steps described on the following documentation. In a nutshell, I am running Zeebe as a docker container based on the command docker run --name zeebe -p 26500:26500 camunda/zeebe:latest
.
Looking at the initial logs, everything seems to be working fine. However, when I try to access the broker using Chrome, I can see the following error on the logs:
Mar 10, 2020 1:53:18 PM io.grpc.netty.NettyServerTransport notifyTerminated
INFO: Transport failed
io.netty.handler.codec.http2.Http2Exception: Unexpected HTTP/1.x request: GET /
at io.netty.handler.codec.http2.Http2Exception.connectionError(Http2Exception.java:103)
at io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.readClientPrefaceString(Http2ConnectionHandler.java:302)
at io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.decode(Http2ConnectionHandler.java:239)
at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:438)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:505)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:444)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:283)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1421)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:794)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:424)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:326)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Unknown Source)
I checked the Zeebe status using zbctl (zbctl status --insecure) and it looks healthy:
Cluster size: 1
Partitions count: 1
Replication factor: 1
Gateway version: 0.23.0-alpha2
Brokers:
Broker 0 - 172.17.0.2:26501
Version: 0.23.0-alpha2
Partition 1 : Leader
Has anyone seen this issue before?
Upvotes: 2
Views: 11479
Reputation: 81
grpc uses HTTP2. Your browser may be making an http1 request based on that error. Here is an interesting article on the 3 ways that clients and servers can communicate with http2 that is definitely worth a read: https://kennethjenkins.net/posts/go-nginx-grpc/
I have not tried the curl command mentioned by tentacle but I would definitely recommend checking out grpcurl https://github.com/fullstorydev/grpcurl
It has saved me some pain when other clients have failed. You can use the -insecure flag to get around TLS (shouldn't be done on production environments).
A simple command you can run is
grpcurl -insecure -import-path . -proto ./gateway.proto localhost:26500 gateway_protocol.Gateway/Topology
That grpcurl command will make an http2 request to your grpc port 26500 on your local zeebe server and should return back the topology of your cluster.
You will have to save the gateway.proto file somewhere and execute the command from that same folder otherwise you get a reflection api error. The file can be found here https://github.com/camunda/zeebe/blob/1610a36a9131e3aeb5fa89a7a264279631a9a0df/zeebe/gateway-protocol/src/main/proto/gateway.proto#L4
Other commands you can execute against your server are here https://docs.camunda.io/docs/apis-tools/zeebe-api/gateway-service/#topology-rpc
And if unfamiliar with grpc, definitely check out https://grpc.io/docs/what-is-grpc/introduction/
Upvotes: 0
Reputation: 4877
There is nothing to access in the broker using a browser. The only thing the broker has is a gRPC command API. You need to use either zbctl
or one of the language clients to communicate with it.
If you are looking for a web GUI to interact with, then you want to use zeebe-docker-compose with the "operate" or "simple-monitor" profile. Those are web front-ends that allow you to inspect and (to some degree) interact with the broker.
Upvotes: 4
Reputation: 553
Apparently, browser is sending plain old http/1.x request. Try it with something more flexible, like curl:
curl -I -k --http2 https://yourhost
Upvotes: 0