JSON-RPC を使用した haproxy httpchk

JSON-RPC を使用した haproxy httpchk

POST JSON-RPC リクエストでバックエンドを確認する必要があります。すべて試しましたが、機能せず、バックエンドが本文を解析できません。何が間違っているのか、何か分かりますか?

curl -vX POST http://localhost:5555 --data '{"jsonrpc":"2.0", "method":"xxx", "params":[],"id":1}'
* Connected to localhost (127.0.0.1) port 5555 (#0)
> POST / HTTP/1.1
> User-Agent: curl/7.37.1
> Host: localhost:5555
> Accept: */*
> Content-Length: 53
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 63 out of 63 bytes
< HTTP/1.1 200 OK
< Content-Type: application/json
< Date: Sat, 22 Aug 2015 15:28:33 GMT
< Content-Length: 39
<
{"id":1,"jsonrpc":"2.0","result":true}

この設定を試しました:

option httpchk POST / HTTP/1.1\r\nContent-Type: application/json\r\nContent-Length: 53\r\n\r\n{"jsonrpc":"2.0", "method":"xxx", "params":[],"id":1}

答え1

おそらく、チェックに使用する文字列を適切にエスケープする必要があります。

あなたは

option httpchk POST / HTTP/1.1\r\nContent-Type: application/json\r\nContent-Length: 53\r\n\r\n{"jsonrpc":"2.0", "method":"xxx", "params":[],"id":1}

このほうがうまくいくかもしれないと思うが

option httpchk POST / HTTP/1.1\r\nContent-Type:\ application/json\r\nContent-Length:\ 53\r\n\r\n{"jsonrpc":"2.0","method":"xxx","params":[],"id":1}

:違いは、両方のContent-Typeヘッダーの後のスラッシュContent-Lengthと、JSON の「本文」内のすべてのスペースが削除されていることです。

これをテストしたわけではありませんが、なぜ機能しないのかわかりません。

関連情報