Linux中部署kong和kong集群

324 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、Linux中部署kong

1.安装

yum install kong-1.4.2.el7.amd64.rpm --nogpgcheck

image.png

image.png

2.kong的配置

进入kong配置文件目录

cd /etc/kong/

拷贝默认的配置到新建的kong.conf   

cp  kong.conf.default  kong.conf

编辑kong.conf文件

vim  kong.conf
log_level = debug

admin_listen = 0.0.0.0:8001, 0.0.0.0:8444 ssl

prefix =/aifs01/tools/base/kong/kong/kong_data

database = postgres

pg_host=10.10.10.2

pg_port=8432

pg_user=kong

pg_password=kong

pg_database=kong

参数说明:

prefix:kong的配置目录

database:数据库类型(默认postgres)

postgres的安装可以参考juejin.cn/post/713876…

pg_host:pgsql数据库IP地址

pg_port:pgsql数据库端口号

pg_user:pgsql数据库用户名

pg_password:pgsql数据库用户密码

pg_database:pgsql数据库名

dns_resolver:consul dns地址

dns_order:dns排序方式

3.初始化数据库  

kong migrations bootstrap -c /etc/kong/kong.conf

image.png

4.启动kong,账号没有权限的话,需要自己配置权限    

kong start  -c /etc/kong/kong.conf

image.png

启动的时候如果报错:

image.png

修改/etc/security/limits.conf文件

vim /etc/security/limits.conf

在文件末尾添加

* soft nofile 204800 

* hard nofile 204800 

* soft nproc 204800 

* hard nproc 204800 

修改/etc/security/limits.d/20-nproc.conf文件

vim /etc/security/limits.d/20-nproc.conf

文件尾部添加(注:系统不同20-nproc.conf名称也不同 有可能是60-nproc.conf需要根据实际修改)

* soft nproc 204800 

* hard nproc 204800

保存后,重新使用xshell工具登录即可生效

5.停止kong    

kong start  -c /etc/kong/kong.conf

6.验证kong启动成功    

curl -i <http://localhost:8001/>

image.png

7.查看kong状态

curl 10.10.10.1:8001/status

image.png

二、kong集群部署

在另一台服务器上根据上述步骤部署kong,二者配置连接同一数据库,重启两个节点即可

如果在一台机器上要部署2个节点

1.复制/etc/kong.conf文件

cp /etc/kong.conf  /etc/kong_2.conf

2.修改kong_2.conf文件内容与前面不同

vim /etc/kong_2.conf
log_level = debug

admin_listen = 0.0.0.0:8002, 0.0.0.0:8445 ssl

proxy_listen = 0.0.0.0:8003, 0.0.0.0:8442

prefix =/aifs01/iam/iam_soft/kong2_data

database = postgres

pg_host=10.10.10.1

pg_port=8432

pg_user=kong

pg_password=kong

pg_database=kong

3.启动

kong start  -c /etc/kong/kong_2.conf

image.png

4.测试集群

通过node1来注册一个服务:

curl -i -X POST \

  --url  <http://10.21.171.12:8001/services/> \

  --data 'name=service-stock' \

  --data 'url=[http://hq.sinajs.cn](http://hq.sinajs.cn/)'

显示注册成功:

image.png

{

    "host":"hq.sinajs.cn",

    "created_at":1631759101,

    "connect_timeout":60000,

    "id":"bf61a962-4b39-41fc-b580-dbc25dced5bd",

    "protocol":"http",

    "name":"service-stock",

    "read_timeout":60000,

    "port":80,

    "path":null,

    "updated_at":1631759101,

    "retries":5,

    "write_timeout":60000,

    "tags":null,

    "client_certificate":null

}

通过node2来查询这个Service:       

curl -i -X GET   --url  <http://10.21.171.12:8002/services/service-stock>

image.png

可以横向扩展任意多个node节点,只要它们连接的是同一个数据库(或集群)即可,如果kong对外希望是一个入口,则可以将这些kong节点作为反向代理的上游,通过nginx转发即可。