玩转高性能网关_KONG_随笔_v1.0.0_持续更新。。。

版本号 作者 qq 备注
v1.0.0 山人 8416837 kong1.2.1

前言

KONG.基于Nginx的高性能网关,名称来源于著名作品《King Kong》,象征肉盾坚强耐用(脑补的).

部署

  • 流程
数据库
KONG
UI

普通部署

CentOS

数据库

Postgresql
下载
  • 下载地址 https://www.postgresql.org/ftp/source/v9.5.5/
    wget命令亦可
  • 选择 xx.tar.gz在这里插入图片描述
  • 解压tar xvzf postgresql-9.5.5.tar.gz,目录如下
    在这里插入图片描述
编译
./configure --help # 查看帮助
./configure --prefix=/usr/local/psqlcc # 执行配置,且指定编译目录

在这里插入图片描述

./configure --prefix=/usr/local/psqlcc在这里插入图片描述
若配置失败,请执行↓

yum install gcc
yum install readline-devel
yum install zlib-devel

配置成功,编译。

make # 如果make进入死循环,请修正服务器时间 date -s 2019-08-06 date -s 18:30:30
make install

说明编译成功↓
在这里插入图片描述

试水
useradd postgres # 新建用户,因为root不能执行postgresql
chown -R postgres:postgres /usr/local/psqlcc/ # 给新用户授权
su - postgres # 切换用户
sudo vim ~/.bash_profile # 编辑配置,以便于命令执行
source ~/.bash_profile
mkdir -p /usr/local/psqlcc/data # 建目录
which psql # 检验
psql -V #检验

配置内容

PGHOME=/usr/local/psqlcc
PGDATA=/usr/local/psqlcc/data
export PGDATA
PATH=$PATH:$HOME/bin:$PGHOME/bin

检验成功
在这里插入图片描述

初始化
sudo chown -R postgres:postgres /usr/local/psqlcc/data
initdb

在这里插入图片描述
没创建目录,执行mkdir -p /usr/local/psqlcc/data/pg_xlog创建
空间不足,更改初始化数据目录initdb -D /home/project/postgresql/data/,成功↓
在这里插入图片描述
注意这句:pg_ctl -D /home/project/postgresql/data/ -l logfile start,后面要用
cd /home/project/postgresql/data/ 查看安装目录
在这里插入图片描述
更新pg_hba.conf/postgresql.conf
pg_hba.conf
在这里插入图片描述
postgresql.conf 改监听
在这里插入图片描述
开放5432端口

启停
pg_ctl start -D /home/project/postgresql/data/ -l /home/project/postgresql/data/pg_xlog/pg_server.log # 使用postgres账号启动,root不可启动

启动错误
在这里插入图片描述
在这里插入图片描述
空间不足。释放空间后.
再次启动成功。

psql # 检验
psql --help

在这里插入图片描述

# 切换用户
su postgres
# 停止
pg_ctl stop -D /home/project/postgresql/data/

在这里插入图片描述
Perfectly!

使用
CREATE USER kong_user WITH PASSWORD 'kong_pass';
create database "kong_db";
GRANT ALL PRIVILEGES ON DATABASE "kong_db" to kong_user;

在这里插入图片描述

亦可选用另一个数据库 - Apache Cassandra

  • 地址 https://cassandra.apache.org/
  • 简介 The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandra's support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages.
  • 待续。。。

KONG

下载

https://docs.konghq.com/install/centos/?_ga=2.200831720.757660222.1565099763-2092167039.1564731930
抑或wget

安装
sudo yum install epel-release # 安装前提软件
sudo yum install kong-1.2.1.*.noarch.rpm --nogpgcheck # 安装kong

安装了一定时间,成功。
在这里插入图片描述

mv /etc/kong/kong.conf.default /etc/kong/kong.conf
vim /etc/kong/kong.conf

更新配置
在这里插入图片描述

初始化
kong migrations up # 初始化
cd /usr/local/share/lua/5.1/kong/plugins/ # 插件位置

在这里插入图片描述
这台机启动不了kong,重装。`yum -y remove kong

 $ sudo yum update -y
 $ sudo yum install -y wget
 $ wget https://bintray.com/kong/kong-rpm/rpm -O bintray-kong-kong-rpm.repo
 $ export major_version=`grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release | cut -d "." -f1`
 $ sed -i -e 's/baseurl.*/&\/centos\/'$major_version''/ bintray-kong-kong-rpm.repo
 $ sudo mv bintray-kong-kong-rpm.repo /etc/yum.repos.d/
 $ sudo yum update -y
 $ sudo yum install -y kong

在这里插入图片描述
执行kong start没反应,重装了几次几个版本也不行,该机子kong普通部署不成功,可能这台CENTOS6.10配置有点问题,另一台6.8可以安装启停成功,如图↓
在这里插入图片描述
帅气的King Kong↓
在这里插入图片描述

技术内幕

  • ui使用有坑,为了快速上手,先在命令行调用kong的admin api进行CRUD.
  • 8000/8443 分别是 Http 和 Https 的转发端口,等价于 Nginx 默认的 80 端口,而 8001 端口便是默认的管理端口,我们可以通过 HTTP Restful API 来动态管理 Kong 的配置
  • 你可能见过api对象,在博客或者kong数据库,但是 0.13版已经弃用api,经由 service 和 route 替代.
  • 名词解释
概念 解释 备注
upstream 对上游服务器的抽象 upstream 和 target :1 对 n
target 代表了一个物理服务,是 ip + port 的抽象
service 抽象层面的服务,他可以直接映射到一个物理服务(host 指向 ip + port),也可以指向一个 upstream 来做到负载均衡 service 和 upstream :1 对 1 或 1 对 0 (service 也可以直接指向具体的 target,相当于不做负载均衡)
route 路由的抽象,他负责将实际的 request 映射到 service service 和 route:1 对 n
插件 部分插件,可能是全局的,影响范围是整个 Kong 服务;大多数插件都是装在 service 或者 route 之上。这使得插件的影响范围非常灵活,我们可能只需要对核心接口进行限流控制,只需要对部分接口进行权限控制,这时候,对特定的 service 和 route 进行定向的配置即可
kong admin api
  • 转发
curl -i -X POST --url http://192.168.4.152:8001/services/ --data 'name=example-service' --data 'url=http://mockbin.org' # 添加服务,指向设定的url
curl -i -X POST --url http://192.168.4.152:8001/services/example-service/routes --data 'hosts[]=example.com' # 添加路由。example.com后续会用到
curl -i -X GET --url http://192.168.4.152:8000/ --header 'Host: example.com' # 检验。example.com对应创建路由时的hosts[]

命令日志依次↓
在这里插入图片描述
在这里插入图片描述
转发成功,成功转发到mockbin.org
在这里插入图片描述
再添加一个天气接口,配置如下,与上文类似。

curl -i -X POST --url http://192.168.4.152:8001/services/ --data 'name=weather-service' --data 'url=https://www.tianqiapi.com/api/' # 添加服务,指向设定的url
curl -i -X POST --url http://192.168.4.152:8001/services/weather-service/routes --data 'hosts[]=tianqiapi.com' # 添加路由。tianqiapi.com后续会用到.tianqiapi.com改成163.com也好使.
curl -i -X GET --url http://192.168.4.152:8000/ --header 'Host: tianqiapi.com' # 检验。tianqiapi.com对应创建路由时的hosts[]

转发成功,但是响应码是301
在这里插入图片描述
添加路由时,host改为tianqiapi.com就成功了↓
在这里插入图片描述
换百度.com,转发成功↓
在这里插入图片描述
根据路径添加路由

curl -i -X POST --url http://192.168.4.152:8001/services/ --data 'name=cc-weather-service' --data 'url=https://www.tianqiapi.com/api/' # url带路径,api/注意/必有
curl -i -X POST --url http://192.168.4.152:8001/services/cc-weather-service/routes --data 'paths[]=/ccapi' # 路径路由
curl -i -X POST --url http://192.168.4.152:8001/services/new-weather-service/routes --data 'paths[]=/api_2' # 加多一个路径路由

在这里插入图片描述
在这里插入图片描述
向service传参,有效。
在这里插入图片描述

  • 继续转发
    虽说大概0.13+版本之后,api对象已经不推荐使用。但是为了理解原理,也演示一遍api转发的方式↓
curl -i -X POST --url http://192.168.4.152:8001/apis/ --data 'name=example-api' --data 'hosts=example.com' --data 'upstream_url=http://www.baidu.com'

执行后,404
在这里插入图片描述
在这里插入图片描述
没有apis这个接口?

UI

KONGA
下载源码

AngularJS项目,亦可Docker部署,先本地运行看看效果.
git clone https://github.com/pantsel/konga.git

运行
cd konga目录
cnpm i
cnpm start # 启动前端

界面↓
在这里插入图片描述

使用
  • 有了上文的命令行基础,下面的操作就轻车熟路了。上文命令行添加的service|route在UI都可以看到了.
  • UI初始化都会连接kong,kong地址是上文的http://ip:8001,跨机器需要开启/etc/kong/kong.conf里的listen ip.
    在这里插入图片描述
  • 新增服务
    添加一个API到Kong.为了达到这个目的,首先你要添加一个服务(Service),这是Kong用来指定它管理的上游Api和微服务的名称
    在这里插入图片描述
  • 新增路由
    开始请求Service之前,你需要先添加一个Route。Route定义了请求在到达Kong以后如何发送到他们的Service.一个Service可以有多个Route.
    在这里插入图片描述
    在这里插入图片描述
kong-dash
  • 版本对应
Kong-Dashboard versions Kong versions Node versions
1.x.x = 0.6,< 0.10
2.x.x 0.10
3.0.x = 0.9, <0.12 >= 6.0.0
3.1.x, 3.2.x = 0.9, <0.13
3.3.x, 3.4.x = 0.9, <0.14
3.5.x = 0.9, <0.15
3.6.x = 0.9, <2.0.0
  • 部署。MVVM式前端,部署方法与上文konga类似
  • 启动命令
nohup kong-dashboard start --kong-url http://192.168.4.152:8001 --basic-auth admin=123456 & # 默认8080端口

在这里插入图片描述

UbuntuOS

类似,略

Docker部署

待续

其它网关产品

go-api-gateway

  • 部署
docker pull fagongzi/gateway:v2.6.0-RC
docker run -d -p 80:80 -p 9093:9093 -p 9092:9092  fagongzi/gateway:v2.6.0-RC
  • 效果
发布了49 篇原创文章 · 获赞 6 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/cc007cc009/article/details/98611120
今日推荐