文章目的:对apisix安装与日志配置过程进行进路。
安装
#apisix安装
docker-compose up -d
#apisix-dashboard安装
docker run -d --name dashboard \
--network=example_apisix \
-p 9000:9000 \
-v /home/wuqf/gateway/apisix/apisix-docker/all-in-one/apisix-dashboard/conf.yaml:/usr/local/apisix-dashboard/conf/conf.yaml \
apache/apisix-dashboard
创建上游
#创建上游
curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
"type": "roundrobin",
"nodes": {
"httpbin.org:80": 1
}
}'
#创建路由
curl "http://127.0.0.1:9180/apisix/admin/routes/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
"methods": ["GET"],
"host": "example.com",
"uri": "/anything/*",
"upstream_id": "1"
}'
#访问
curl -i -X GET "http://127.0.0.1:9080/anything/get?foo1=bar1&foo2=bar2" -H "Host: example.com"
日志配置
#开启kafka log插件
curl -i "http://127.0.0.1:9180/apisix/admin/routes" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
"plugins": {
"kafka-logger": {
"brokers" : [
{
"host" :"10.246.1.152",
"port" : 9092
}
],
"kafka_topic" : "kg-log",
"key" : "key1",
"batch_max_size": 1,
"name": "kafka logger"
}
},
"id": "getting-started-ip",
"uri": "/ip",
"upstream": {
"type": "roundrobin",
"nodes": {
"10.53.207.10:8080": 1
}
}
}'
curl "http://127.0.0.1:9080/ip"
##开启插件并记录request与reponse
#开启kafka log插件
curl -i "http://127.0.0.1:9180/apisix/admin/routes" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
"plugins": {
"kafka-logger": {
"brokers" : [
{
"host" :"10.246.1.152",
"port" : 9092
}
],
"kafka_topic" : "kg-log",
"key" : "key1",
"batch_max_size": 1,
"name": "kafka logger",
"include_req_body":true,
"include_resp_body":true
}
},
"id": "getting-started-ip",
"uri": "/apisix/*",
"upstream": {
"type": "roundrobin",
"nodes": {
"10.53.207.10:8080": 1
}
}
}'
curl "http://127.0.0.1:9080/apisix/ip"
#日志格式配置
curl http://127.0.0.1:9180/apisix/admin/plugin_metadata/kafka-logger -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"log_format": {
"host": "$host",
"@timestamp": "$time_iso8601",
"client_ip": "$remote_addr",
"request_uri":"$request_uri",
"request_body":"$request_body",
"response _body":"$resp_body"
}
}'
负载均衡
curl -i "http://10.53.207.10:9180/apisix/admin/routes" -X PUT -d '
{
"id": "getting-started-headers",
"uri": "/headers",
"upstream" : {
"type": "roundrobin",
"nodes": {
"httpbin.org:443": 1,
"mock.api7.ai:443": 1
},
"pass_host": "node",
"scheme": "https"
}
}'
hc=$(seq 100 | xargs -I {} curl "http://10.53.207.10:9080/headers" -sL | grep "httpbin" | wc -l); echo httpbin.org: $hc, mock.api7.ai: $((100 - $hc))