安装kong api网关 和 配置动态负载均衡
一、安装kong
docker network create kong-net
docker volume create kong-volume
docker run -d --name kong-database --network=kong-net -p 5432:5432 -v kong-volume:/var/lib/postgresql/data -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=kong" postgres:9.6 #start
docker run --rm --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "KONG_PG_PASSWORD=kong" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" kong:latest kong migrations bootstrap
docker run -d --name kong --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "KONG_PG_PASSWORD=kong" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" -e "KONG_PROXY_ERROR_LOG=/dev/stderr" -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" -p 8000:8000 -p 8443:8443 -p 8001:8001 -p 8444:8444 -p 8010-8019:8010-8019 kong:latest #start
#http://127.0.0.1:8001/ 访问出现一串json 说明正常
二、安装konga(kong的开源ui界面)
docker volume create konga-postgresql
docker run -d --name konga-database --network=kong-net -p 5433:5432 -v konga-postgresql:/var/lib/postgresql/data -e "POSTGRES_USER=konga" -e "POSTGRES_DB=konga" -e "POSTGRES_PASSWORD=konga" postgres:9.6 # start
docker run --rm --network=kong-net pantsel/konga:latest -c prepare -a postgres -u postgres://konga:konga@konga-database:5432/konga
docker run -d -p 1337:1337 --network kong-net -e "DB_ADAPTER=postgres" -e "DB_URI=postgres://konga:konga@konga-database:5432/konga" -e "NODE_ENV=production" -e "DB_PASSWORD=konga" --name konga pantsel/konga #start
#http://127.0.0.1:1337/ 可以进入ui界面
#进入后需要配置kong的访问地址 #Name:kong(随意) Kong Admin URL:http://127.0.0.1:8001/
三、动态负载均衡实现 (可以使用ui 界面直接配置 一下是通过命令配置)
参照nginx负载均衡 (以下是咱们使用nginx实现负载均衡的配置)
upstream tulingmall-product-upstream{
server 192.168.65.190:8867 weight=100;
server 192.168.65.190:8868 weight=100;
}
server {
listen 80;
#server_name www.usc.com;
localtion /pms {
proxy_pass http://tulingmall-product-upstream;
}
}
#接下来我们用kong 实现以上nginx的配置实现 (如果curl执行报错 应该是环境不支持 百度自行调整)
#创建一个upstream
curl -X POST http://127.0.0.1:8001/upstreams --data "name=tulingmall-product-upstream"
#创建两个upstream下的target
curl -X POST http://127.0.0.1:8001/upstreams/tulingmall-product-upstream/targets --data "target=192.168.65.190:8867" --data "weight=100"
curl -X POST http://127.0.0.1:8001/upstreams/tulingmall-product-upstream/targets --data "target=192.168.65.190:8868" --data "weight=100"
#创建 service
curl -X POST http://127.0.0.1:8001/services --data "name=tulingmall-product" --data "host=tulingmall-product-upstream" --data "path=/pms"
#创建 route
curl -X POST http://127.0.0.1:8001/services/tulingmall-product/routes --data "name=tulingmall-product-route" --data "paths[]=/pms"