微服务 API 网关 kong 的爬坑之路
不写概述了网上有很多介绍,这里就主要讲一下安装部署的过程。官网地址https://konghq.com/get-started/#install 大家后续的学习可以去官网,非常详细了。
一、部署kong
1、配置yum源
sudo yum update -ysudo yum install -y wgetwget https://bintray.com/kong/kong-rpm/rpm -O bintray-kong-kong-rpm.repoexport 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.reposudo mv bintray-kong-kong-rpm.repo /etc/yum.repos.d/sudo yum update -ysudo yum install -y kong
2、数据库安装
Kong支持PostgreSQL v9.5+和Cassandra 3.x.x作为数据存储。
官网地址https://www.postgresql.org/download/linux/redhat/
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpmyum install -y postgresql11-server/usr/pgsql-11/bin/postgresql-11-setup initdbsystemctl enable postgresql-11systemctl start postgresql-11
创建需要的数据库和用户
# 登录psqlsudo su postgrespsql# 创建数据库,官方默认无密码,此处我使用密码# CREATE USER kong; CREATE DATABASE kong OWNER kong;CREATE USER kong with password 'kong';CREATE DATABASE kong OWNER kong; grant all privileges on database kong to kong;#此时也要把postgres的密码设置一下,不然待会开启md5认证之后,这个用户没有密码就不能登录了。#然后我们需要复原配置重启数据库才可以。所以我们要把密码设置一下。ALTER USER postgres WITH PASSWORD 'postgres';# 修改安全配置(为了使用密码登录)vim /var/lib/pgsql/11/data/pg_hba.conf# METHOD指定如何处理客户端的认证。常用的有ident,md5,password,trust,reject# ident是Linux下PostgreSQL默认的local认证方式,凡是能正确登录服务器的操作系统用户(注:不是数据库用户)就能使用本用户映射的数据库用户不需密码登录数据库。# md5是常用的密码认证方式,如果你不使用ident,最好使用md5。密码是以md5形式传送给数据库,较安全,且不需建立同名的操作系统用户。# password是以明文密码传送给数据库,建议不要在生产环境中使用。# trust是只要知道数据库用户名就不需要密码或ident就能登录,建议不要在生产环境中使用。# reject是拒绝认证。# 将peer改为md5()# "local" is for Unix domain socket connections onlylocal all all md5# IPv4 local connections:host all all 127.0.0.1/32 ident# IPv6 local connections:host all all ::1/128 ident# 重启psqlsystemctl restart postgresql-11# 登录postgrepsql -U kong# 输入密码# 查看帮助\h# 退出\q
3、修改kong的配置文件
# 这里需要提前配置kong配置文件,默认/etc/kong/kong.conf.defaultcp /etc/kong/kong.conf.default /etc/kong/kong.conf# 修改里面的数据库配置,写入用户、密码、数据库、端口等信息vim /etc/kong/kong.conf[root@kong-server software]# egrep -v "^#|^$|^[[:space:]]+#" /etc/kong/kong.confdatabase = postgres # Determines which of PostgreSQL or Cassandrapg_host = 127.0.0.1 # Host of the Postgres server.pg_port = 5432 # Port of the Postgres server.pg_timeout = 5000 # Defines the timeout (in ms), for connecting,pg_user = kong # Postgres user.pg_password = kong # Postgres user's password.pg_database = kong # The database name to connect to. # Kong migrations#kong migrations bootstrap [-c /path/to/kong.conf][root@kong-server software]# kong migrations bootstrap -c /etc/kong/kong.confBootstrapping database...migrating core on database 'kong'...core migrated up to: 000_base (executed)core migrated up to: 001_14_to_15 (executed)core migrated up to: 002_15_to_1 (executed)core migrated up to: 003_100_to_110 (executed)core migrated up to: 004_110_to_120 (executed)core migrated up to: 005_120_to_130 (executed)migrating hmac-auth on database 'kong'...hmac-auth migrated up to: 000_base_hmac_auth (executed)hmac-auth migrated up to: 001_14_to_15 (executed)migrating oauth2 on database 'kong'...oauth2 migrated up to: 000_base_oauth2 (executed)oauth2 migrated up to: 001_14_to_15 (executed)oauth2 migrated up to: 002_15_to_10 (executed)migrating jwt on database 'kong'...jwt migrated up to: 000_base_jwt (executed)jwt migrated up to: 001_14_to_15 (executed)migrating basic-auth on database 'kong'...basic-auth migrated up to: 000_base_basic_auth (executed)basic-auth migrated up to: 001_14_to_15 (executed)migrating key-auth on database 'kong'...key-auth migrated up to: 000_base_key_auth (executed)key-auth migrated up to: 001_14_to_15 (executed)migrating rate-limiting on database 'kong'...rate-limiting migrated up to: 000_base_rate_limiting (executed)rate-limiting migrated up to: 001_14_to_15 (executed)rate-limiting migrated up to: 002_15_to_10 (executed)rate-limiting migrated up to: 003_10_to_112 (executed)migrating acl on database 'kong'...acl migrated up to: 000_base_acl (executed)acl migrated up to: 001_14_to_15 (executed)migrating response-ratelimiting on database 'kong'...response-ratelimiting migrated up to: 000_base_response_rate_limiting (executed)response-ratelimiting migrated up to: 001_14_to_15 (executed)response-ratelimiting migrated up to: 002_15_to_10 (executed)migrating session on database 'kong'...session migrated up to: 000_base_session (executed)27 migrations processed27 executedDatabase is up-to-date#迁移过程中可能会报错,如果包认证问题,做如下修改vim /var/lib/pgsql/11/data/pg_hba.conf #host all all 127.0.0.1/32 identhost all all 127.0.0.1/32 md5#原因是postgresql设置不允许本地主机访问。(127.0.0.1允许IP连接,而不是通过套接字)
4、启动
#kong start [-c /path/to/kong.conf][root@kong-server software]# kong start -c /etc/kong/kong.confKong started[root@kong-server software]# kong healthnginx.......runningKong is healthy at /usr/local/kong[root@kong-server software]# netstat -lntupActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 127.0.0.1:8444 0.0.0.0:* LISTEN 31050/nginx: mastertcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 31050/nginx: mastertcp 0 0 127.0.0.1:8001 0.0.0.0:* LISTEN 31050/nginx: mastertcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1453/sshdtcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 30638/postmastertcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 31050/nginx: mastertcp6 0 0 ::1:5432 :::* LISTEN 30638/postmasterudp 0 0 0.0.0.0:68 0.0.0.0:* 780/dhclientudp 0 0 172.16.16.16:123 0.0.0.0:* 3006/ntpdudp 0 0 127.0.0.1:123 0.0.0.0:* 3006/ntpdudp6 0 0 fe80::5054:ff:fe94::123 :::* 3006/ntpdudp6 0 0 ::1:123 :::* 3006/ntpd[root@kong-server software]# curl http://localhost:8001..................#停止:kong stop#重新加载:kong reload
二、安装konga
konga为目前最先版本的kong的dashboard,由于kong-dashboard目前为更新适应新版本的kong,推荐使用konga
konga带来的一个最大的便利就是可以很好地通过UI观察到现在kong的所有的配置,并且可以对于管理kong节点情况进行查看、监控和预警,konga主要特性如下:
多用户管理
管理多个Kong节点
电子邮件异常信息通知
管理所有Kong Admin API
使用快照备份,还原和迁移Kong节点
使用运行状况检查监控节点和API状态
轻松的数据库集成(MySQL,postgresSQL,MongoDB)
1、node 安装
yum -y install gitcd /data/software && wget https://npm.taobao.org/mirrors/node/v10.16.2/node-v10.16.2-linux-x64.tar.xztar -xf node-v10.16.2-linux-x64.tar.xz mv node-v10.16.2-linux-x64 node# 修改为root的权限chown root.root node -Rcat > /etc/profile.d/node.sh << EOFexport PATH=\$PATH:/data/software/node/binEOFsource /etc/profile.d/node.shnode -v# 安装插件#为了在安装插件的时候速度快一点,可以更换一下镜像源npm config set registry https://registry.npm.taobao.org#配置后可通过下面方式来验证是否成功npm config get registry# 或npm info express#如果想还原npm仓库地址的话,只需要在把地址配置成npm镜像就可以了npm config set registry https://registry.npmjs.org/#有的插件还需要gcc环境,需要提前安装yum install gcc* -y#开始安装插件npm install -g glupnpm install -g bowernpm install -g sailsnpm install -g node-gypnpm install -g grunt-sassnpm install -g node-sassnpm install sails-postgresql #用来支持postgresql数据库#安装插件的时候,可能还会有问题,gyp ERR! stack Error: EACCES: permission denied, mkdir。#如果有这样的问题 在安装插件的命令后面加上 --unsafe-perm#就是说 npm 出于安全考虑不支持以 root 用户运行,即使你用 root 用户身份运行了,npm 会自动转成一个叫 nobody 的用户来运行,#而这个用户几乎没有任何权限。这样的话如果你脚本里有一些需要权限的操作,比如写文件(尤其是写 /root/.node-gyp),就会崩掉了。#为了避免这种情况,要么按照 npm 的规矩来,专门建一个用于运行 npm 的高权限用户;要么加 --unsafe-perm 参数,#这样就不会切换到 nobody 上,运行时是哪个用户就是哪个用户,即是 root。
2、安装konga
git clone https://github.com/pantsel/konga.gitcd konganpm install konga#使用postgresql,创建konga用到的数据库#需要使用postgres用户登录,要输入前文设置的密码sudo su postgrespsqlCREATE USER konga with password 'konga';CREATE DATABASE konga OWNER konga; grant all privileges on database konga to konga;
3、配置
cd konga/cp config/local_example.js config/local.js# 配置默认数据库vi config/local.jsmodels: { connection: process.env.DB_ADAPTER || 'localDiskDb',},# 改成models: { connection: process.env.DB_ADAPTER || 'postgres', // 这里可以用‘mysql’,‘mongo’,‘sqlserver’,‘postgres’},# 保存# 修改数据库默认配置vi connections.js postgres: { adapter: 'sails-postgresql', url: process.env.DB_URI, host: process.env.DB_HOST || 'localhost', user: process.env.DB_USER || 'konga', password: process.env.DB_PASSWORD || 'konga', port: process.env.DB_PORT || 5432, database: process.env.DB_DATABASE ||'konga', // schema: process.env.DB_PG_SCHEMA ||'public', poolSize: process.env.DB_POOLSIZE || 10, ssl: process.env.DB_SSL ? true : false // If set, assume it's true }, # 保存# 启动cd ../npm startnfo:info: .-..-.info:info: Sails <| .-..-.info: v0.12.14 |\info: /|.\info: / || \info: ,' |' \info: .-'.-==|/_--'info: `--'-------'info: __---___--___---___--___---___--___info: ____---___--___---___--___---___--___-__info:info: Server lifted in `/data/software/konga`info: To see your app, visit http://0.0.0.0:1338info: To shut down Sails, press <CTRL> + C at any time.# pm2 管理npm install -g pm2 cd kongapm2 start app.js --name kongapm2 logs
pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控,进程守护,负载均衡等功能
1、 pm2需要全局安装 npm install -g pm22、进入项目根目录 启动进程/应用 pm2 start bin/www 或 pm2 start app.js 重命名进程/应用 pm2 start app.js --name wb123 添加进程/应用 watch pm2 start bin/www --watch 结束进程/应用 pm2 stop www 结束所有进程/应用 pm2 stop all 删除进程/应用 pm2 delete www 删除所有进程/应用 pm2 delete all 列出所有进程/应用 pm2 list 查看某个进程/应用具体情况 pm2 describe www 查看进程/应用的资源消耗情况 pm2 monit 查看pm2的日志 pm2 logs 若要查看某个进程/应用的日志,使用 pm2 logs www 重新启动进程/应用 pm2 restart www 重新启动所有进程/应用 pm2 restart all
4、访问
地址 IP:1338
默认用户:admin,密码:adminadminadmin
到这一步已经算是安装完成了,不过这里还有一个问题,访问到的界面是空白的,还需要一步操作。
cd kong
npm run bower-deps
这一过程要等很久,之后在访问就可以了。
配置kong的链接地址: http://localhost:8001
版权声明: 本文为 InfoQ 作者【Dream】的原创文章。
原文链接:【http://xie.infoq.cn/article/b0dd443b0710ef4880e230179】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
Dream
还未添加个人签名 2019.12.16 加入
还未添加个人简介
评论