kong+postgresql+konga集群环境部署
kong简介
Kong是Mashape开源的一款API网关,起初是用来管理 Mashape 公司15000个微服务的,后来在2015年开源,现在已经在很多创业公司、大型企业和政府机构中广泛使用。基于nginx,Lua和Cassandra或PostgreSQL,支持分布式操作,有很强的可移植性和可扩展性。可以在任何一种基础设施上运行,作为应用和API之间的中间层,加上众多功能强大的插件,可以实现认证授权、访问控制等功能。并且提供易于使用的RESTful API来操作和配置系统。
有关kong的详细介绍请参考官网.
–
postgreSQL简介
PostgreSQL 是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。
–
集群架构
- kong cluster
kong 集群并不意味着客户端请求将会负载均衡到kong集群中的每个节点上,kong集群并不是开箱即用,仍然需要在kong集群多节点上层搭建负载均衡,以便分发请求。 一个kong集群只是意味着集群内的节点,都共享同样的配置。
有关Kong cluster集群的详细介绍请参考官网:Kong cluser document
为了提高冗余性和健壮性.我们对kong的每个环节都进行了冗余设计.一个基本的kong集群架构大概如下图所示:
–
部署步骤
环境:
阿里云ECS Centos7.4操作系统
Kong: 1.0最新版
postgresql 9.6
konga 最新版
集群架构说明:
dwd-kong-node1节点服务器部署postgresql master主库
dwd-kong-node2节点服务器部署postgresql slave从库
在两个Kong节点服务器上都部署konga,但是konga指向postgresql master主库
–
安装postgresql
安装方式官网参考: Installing Postgresql
安装步骤
1.安装Postgre9.6版本的Yum源
1 | yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm |
2.安装postgresql
1 | sudo yum install postgresql96 postgresql96-server -y |
3.切换到root用户下,初始化数据库
1 | sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb |
4.修改数据库的配置文件,监听所有接口
postgresql的配置文件默认路径在:/var/lib/pgsql/9.6/data/postgresql.conf
修改下列配置:
1 | listen_addresses = '*' #监听所有接口.由于我服务器只有内网地址,所有可以侦听在所有接口,(如果有公网地址,最好不要只样做) |
5.修改数据库远程访问配置文件.开启远程访问
1 | vim /var/lib/pgsql/9.6/data/postgresql.conf/pg_hba.conf |
6.创建日志目录,并且赋权给postgres用户(安装postgresql后默认会创建这个用户)
1 | [root@dwd-kong-node1 data]# mkdir /data/logs/postgre |
7.启动postgresql数据库
1 | systemctl enable postgresql-9.6 |
创建数据库用户密码
1.切换到postgres用户,输入psql登陆数据库
1 | [root@dwd-kong-node1 data]# su - postgres |
2.创建kong用户和kong数据库
1 | CREATE USER kong; |
3.创建konga的数据库
1 | CREATE DATABASE konga OWNER kong; |
4.为kong用户创建一个密码,密码也是kong
1 | alter user kong with password 'kong'; |
5.输入\l,可以看到当前的数据库
1 | postgres=# \l |
6.查看当前数据库有哪些用户
1 | postgres=# select * from pg_roles; |
安装Kong
安装方法可以参考官网:Install Kong
1.下载,安装rpm安装包
1 | wget -O kong-community-edition-1.0.0.el7.noarch.rpm https://kong.bintray.com/kong-community-edition-rpm/centos/7/:kong-community-edition-1.0.0.el7.noarch.rpm |
2.dwd-kong-node1修改kong配置文件
1 | cd /etc/kong |
3.dwd-kong-node2修改kong配置文件
1 | [root@dwd-kong-node2 system]# clear |
唯一区别就是这里的数据库指向dwd-kong-node1上的postgresql(IP:10.111.30.174),而非本机.
3.创建kong目录
1 | mkdir /data/logs/kong/ |
4.在dwd-kong-node1上准备数据库
1 | kong migrations bootstrap -c /etc/kong/kong.conf |
由于dwd-kong-node2上指向了node1的数据库,所以在node2上不需要执行这个命令
5.启动kong
1 | kong start -c /etc/kong/kong.conf |
查看端口.可以看到postgresql和kong的侦听端口都已经成功启动
1 | [root@dwd-kong-node1 data]# netstat -tulpn |
搭建konga
konga是管理kong各个组件(serveice,route,plugin,upstream,consumer)的可视化UI管理工具.在增删改查各个组件的配置时非常方便.
个人觉得UI界面比kong-dashboard要漂亮
konga的github参考:konga
1.确保需要有node.js环境.如果没有npm工具,必须先安装nodejs
1 | [work@DWD-BETA kong]$ npm -v |
2.安装bower,gulp包.安装git软件
1 | npm install bower |
3.work用户下安装konga
1 | $ git clone https://github.com/pantsel/konga.git |
4.编辑.env环境文件(dwd-kong-node2的文件内容中将下列的localhost修改为node1服务器的IP:10.111.30.174)
1 | work@dwd-kong-node1 konga]$ cat .env_example |
5.启动konga
1 | work@dwd-kong-node1 konga]$ npm start |
6.如果启动报错,则安装依赖
1 | work@dwd-kong-node1 konga]$ npm run bower-deps |
这个程序默认是前台启动
1 | [work@dwd-kong-node1 konga]$ npm start |
注意: 如果kong是1.0版本(我这里是1.0.3).那么konga的版本不能超过0.14.3.否则会有兼容性问题
此时在浏览器输入:http://10.111.30.174:1337 就能访问konga了.
systemctl管理kong和konga进程
- kong
在/usr/lib/systemd/system路径下编辑kong.service文件.内容如下:
1 | work@dwd-kong-node1 system]$ pwd |
- konga
在/usr/lib/systemd/system路径下编辑konga.service文件.内容如下:
1 | [work@dwd-kong-node1 system]$ cat konga.service |
- 启动进程,且设置开机启动
1 | [work@dwd-kong-node2 ~]$ sudo systemctl enable kong |