首页 > 编程知识 正文

微服务网关kong,kong网关性能

时间:2023-05-05 17:06:04 阅读:143986 作者:1380

2019独角兽企业大额募集Python工程师标准

它是微服务中不可缺少的一部分,包括所有请求流量入口、参数验证侦听和用户权限验证,但除JAVA的spring cloud外,公共网关数不胜数其中最引人注目的是KONG。 笔者半年前已经在使用KONG的时候使用了0.11.2-2,直到前几天终于发布了1.X的正式版,笔者在这里分享KONG网关的基本情况和安装的使用方法。

附上:

喵咪的博客: w-blog.cn

kong官网: https://konghq.com/

PS :本文使用的是Kong版本1.0.3

一、kong是什么

kong在girhub很受欢迎,star有一支2W以上的疏忽钢笔,也知道大家对kong的爱。 (确实,不使用JAVA堆栈没有好的选择) )。 从下面的官方配图可以看出,kong总结了需要为自己的每项服务重复制作的操作,关注业务并实现业务,为了很多规则进行了不重复的处理。

从笔者总结数看kong的主要优势:

插件丰富,很多插件可以降低开发成本; 基于openResty,openResty基于Nginx提供了强大的性能保障,可以编写可扩展性、lua脚本来定制自己的参数验证权限验证等操作; 需要简单的性能扩展、负载平衡运行状况检查2、Docket部署kong PS:postgreSql数据库9.4版,只要提高服务器资源级别即可提高性能

因为无法在docker-composer中启动的容器必须具有相同的网络名称才能相互访问

docker网络创建孔- net数据库使用postgres

docker run-d-- namekong-database- network=kong-net- p 543233605432- e ' postgres _ ser=kong '- 1

坞站运行--RM--network=kong-net- e ' kong _ database=postgres '- e ' kong _ pg _ host=kong-datababase

启动kong-service

docker run-d-- namekong--network=kong-net- e ' kong _ database=postgres '- e ' kong _ pg _ host=kost - e ' kong _ proxy _ access _ log=/dev/stdout ' _ _ )-e ' kong _ proxy _ error _ log=/dev/stderr '- e - p 844:8443- p 800133608001- p 84433608444 kong :1.0.3 containeridimagecommandcreatedstatusportsnamesd 82 c2b 7729 AE kong :1.0.3 '/docker-entry poin.'3seses

nt..." 26 seconds ago Up 25 seconds 0.0.0.0:5432->5432/tcp kong-database

然后调用了一下地址有输出即可:

curl -i http://localhost:8001/ 使用docker-compose部署kong version: '2.1'services: kong-migrations: image: "kong:1.0.3" command: kong migrations bootstrap depends_on: db: condition: service_healthy environment: KONG_DATABASE: postgres KONG_PG_DATABASE: kong KONG_PG_HOST: db KONG_PG_PASSWORD: kong KONG_PG_USER: kong links: - db:db kong: image: "kong:1.0.3" depends_on: db: condition: service_healthy environment: KONG_ADMIN_ACCESS_LOG: /dev/stdout KONG_ADMIN_ERROR_LOG: /dev/stderr KONG_ADMIN_LISTEN: '0.0.0.0:8001' KONG_CASSANDRA_CONTACT_POINTS: db KONG_DATABASE: postgres KONG_PG_DATABASE: kong KONG_PG_HOST: db KONG_PG_PASSWORD: kong KONG_PG_USER: kong KONG_PROXY_ACCESS_LOG: /dev/stdout KONG_PROXY_ERROR_LOG: /dev/stderr links: - db:db ports: - "8000:8000/tcp" - "8001:8001/tcp" - "8443:8443/tcp" - "8444:8444/tcp" restart: on-failure db: image: postgres:9.6 environment: POSTGRES_DB: kong POSTGRES_PASSWORD: kong POSTGRES_USER: kong healthcheck: test: ["CMD", "pg_isready", "-U", "kong"] interval: 30s timeout: 30s retries: 3 restart: on-failure stdin_open: true tty: true

db的 healthcheck 做了数据层初始化完成检测,数据库完成之后才会按照顺序继续启动接下来的容器

docker-compose up -d 三,使用外部数据库

很多使用我们并不在容器中运行DB实例,因为如果出现任何问题数据丢失,我们先准备好对应的postgres数据库

{DB-host}:{DB-port}{DB-user}{DB-pass}

创建数据库

CREATE DATABASE "kong" WITH ENCODING='UTF8';

初始化kong需要的数据库

version: '2.1'services: kong-migrations: image: "kong:1.0.3" command: kong migrations bootstrap environment: KONG_DATABASE: postgres KONG_PG_DATABASE: kong KONG_PG_HOST: {DB-host} KONG_PG_PORT: {DB-port} KONG_PG_PASSWORD: {DB-pass} KONG_PG_USER: {DB-user} > docker-compose up -dCreating network "kong_default" with the default driverCreating kong_kong-migrations_1 ...Creating kong_kong-migrations_1 ... done

在通过docker-compose来运行kong服务

version: '2.1'services: kong: image: "kong:1.0.3" environment: KONG_ADMIN_ACCESS_LOG: /dev/stdout KONG_ADMIN_ERROR_LOG: /dev/stderr KONG_ADMIN_LISTEN: '0.0.0.0:8001' KONG_CASSANDRA_CONTACT_POINTS: db KONG_DATABASE: postgres KONG_PG_DATABASE: kong KONG_PG_HOST: {DB-host} KONG_PG_PORT: {DB-port} KONG_PG_PASSWORD: {DB-pass} KONG_PG_USER: {DB-user} KONG_PROXY_ACCESS_LOG: /dev/stdout KONG_PROXY_ERROR_LOG: /dev/stderr ports: - "8000:8000/tcp" - "8001:8001/tcp" - "8443:8443/tcp" - "8444:8444/tcp" restart: on-failure docker-compose up -dCreating kong_kong_1 ...Creating kong_kong_1 ... done kubernetes编排 apiVersion: extensions/v1beta1 # K8S对应的API版本kind: Deployment # 对应的类型metadata: name: kong labels: name: kong namespace: kong # namespacespec: replicas: 1 # 镜像副本数量 template: metadata: labels: # 容器的标签 可和service关联 app: kong spec: containers: - name: kong # 容器名和镜像 image: kong:1.0.3 imagePullPolicy: Always ports: - containerPort: 8000 env: # 环境变量 - name: KONG_DATABASE value: postgres - name: KONG_PG_DATABASE value: dev-kong - name: KONG_PG_HOST value: {DB-host} - name: KONG_PG_PORT value: {DB-port} - name: KONG_PG_PASSWORD value: {DB-pass} - name: KONG_PG_USER value: {DB-user} - name: KONG_LOG_LEVEL value: warn resources: # 资源限制 requests: memory: "256Mi" cpu: "200m" limits: memory: "512Mi" cpu: "400m"---apiVersion: v1kind: Servicemetadata: namespace: kong # 在哪个命名空间中创建 name: kong # 名称 labels: name: kongspec: type: NodePort # 开放端口的类型 selector: # service负载的容器需要有同样的labels app: kong ports: - name: http port: 8000 # 通过service来访问的端口 targetPort: 8000 # 对应容器的端口 nodePort: 30180 - name: https port: 8443 # 通过service来访问的端口 targetPort: 8443 # 对应容器的端口 nodePort: 30143 - name: api port: 8001 # 通过service来访问的端口 targetPort: 8001 # 对应容器的端口 nodePort: 30801

转载于:https://my.oschina.net/wenzhenxi/blog/3044505

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。