网关介绍
kong官网安装文档!
网关是微服务中不可或缺的一部分,它承载了所有请求流量入口,参数验证拦截,用户权限验证,但是除了JAVA的spring cloud之外,公共网关屈指可数,其中轻量级最小、最受欢迎的无疑就是Kong了,玩过springcloud的小伙伴肯定知道zuul这一个组件,它只提供了动态路由的功能,开发者需要自己研发zuul filter,当然,一个功能点你会看不出什么,但是如果在此基础上提出更多的要求,那完犊子,zuul使用者需要自己承担这些责任,加班加班加班!!!(最重要的当然是zuul官方已经停止更新啦~)而对于kong来说,限流、动态路由、权限都只是插件,简单配置下,开箱即用,方便的一批。
kong在github上人气也是高的一逼,star有24k+次,相比也知道大家对kong网关的喜爱,从下面这张官方配图可以看出,kong把本身每个服务都需要重复编写的操作汇总到了一起,让业务关注业务实现不用在为很多的规则进行重复的处理。
个人觉得kong的主要优势:
插件市场丰富,很多插件可以降低开发成本;
可扩展性,可以编写lua脚本来定制自己的参数验证权限验证等操作;
基于openResty,openResty基于Nginx保障了强劲的性能;
便捷性能扩容,只需要水平增加服务器资源性能就能提升 ;
负载均衡健康检查
docker部署kong
废话了那么多,现在开始步入主题。PS:postgreSql数据库版本必须 > 9.4
(postgres跟kong网关版本请跟我一致,谢谢。)
1、docker安装(略过!)
2、创建kong-net网络
docker network create kong-net
3、数据库使用 postgres
docker run -d
--name kong-database
--network=kong-net -p 5432:5432
-e "POSTGRES_USER=kong"
-e "POSTGRES_DB=kong" postgres:9.6
4、准备数据库数据和配置
docker run --rm --network=kong-net -e "KONG_DATABASE=postgres"
-e "KONG_PG_HOST=kong-database"
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database"
kong:1.0.3 kong migrations bootstrap
出现此消息就代表kong安装配置好啦!
5、启动kong-service
docker run -d --name kong --network=kong-net
-e "KONG_DATABASE=postgres"
-e "KONG_PG_HOST=kong-database"
-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 kong:1.0.3
6、使用docker命令查看容器是否启动
//查看已运行的容器
docker ps
//查看所有容器
docker ps -a
7、调用了一下地址看下是否有输出!
curl -i http://localhost:8001/
8、安装konga
docker run --rm pantsel/konga:latest -c prepare -a postgres -u postgresql://kong:@(自己服务器的ip地址):5432/konga
9、启动konga
docker run -p 1337:1337 \
--network kong-net \
--name konga \
-e "NODE_ENV=production" \
-e "DB_ADAPTER=postgres" \
-e "DB_URI=postgresql://kong:(自己服务器的ip地址)/konga" \
pantsel/konga