微服务API网关-kong+postgresql+konga安装配置

微服务API网关拓扑图:

配置环境:

[root@node154 kong]# cat /etc/redhat-release 


CentOS Linux release 7.6.1810 (Core) 


部署版本:


kong:  1.1.2-1.noarch 


postgresql: v10.4 (注意:psql版本必须与kong版本对应)


安装依赖包
安装gcc编译环境


$ sudo yum install -y gcc gcc-c++
pcre安装
pcre(Perl Compatible Regular Expressions) 是一个 Perl 库,包括 perl 兼容的正则表达式,nginx 的 http 库使用 pcre 解析正则表达式。
$ sudo yum install -y pcre pcre-devel
zlib安装
zlib 库提供多种压缩和加压缩的方式。
$ sudo yum install -y zlib zlib-devel
openssl安装
openssl 是一个请打的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议
$ sudo yum install -y openssl openssl-devel
postgresql 部署
  PostgreSQL是完全由社区驱动的开源项目,由全世界超过1000名贡献者所维护。它提供了单个完整功能的版本。可靠性是PostgreSQL的最高优先级。Kong 默认使用 postgresql 作为数据库。
  这里安装kong的版本是1.1.2,对应的psql版本需要在v10+,否则启动kong会报


安装psql-10
$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-latest-x86_64/pgdg-centos10-10-2.noarch.rpm
$ sudo  yum install -y postgresql10-server postgresql10-contrib
初始化数据库
$ sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Initializing database ... OK
设置成centos7开机自启动
sudo systemctl enable postgresql-10.service
启动postgresql服务
# 启动服务
$ sudo systemctl start postgresql-10.service
# 查看psql运行状态
$ sudo systemctl status postgresql-10
Postgresql配置
执行完初始化任务之后,postgresql 会自动创建和生成两个用户和一个数据库:
  linux 系统用户 postgres:管理数据库的系统用户;
  postgresql 用户 postgres:数据库超级管理员;
  数据库 postgres:用户 postgres 的默认数据库;
  密码由于是默认生成的,需要在系统中修改一下。
修改初始密码
$ passwd postgres
Changing password for user postgres.
New password:
BAD PASSWORD: The password contains the user name in some form
Retype new password:
passwd: all authentication tokens updated successfully.
创建用户
为了安全以及满足 Kong 初始化的需求,需要在建立一个 postgre 用户 kong 和对应的 linux 用户 kong,并新建数据库 kong。


# 新建 linux kong 用户
$ sudo adduser kong


# 使用管理员账号登录 psql 创建用户和数据库
# 切换 postgres 用户
# 切换 postgres 用户后,提示符变成 `-bash-4.3$` 
$ su postgres


# 进入psql控制台,此时会进入到控制台(系统提示符变为'postgres=#')
bash-4.3$ psql
could not change directory to "/root": Permission denied
psql (10.4)
Type "help" for help.


#为管理员用户postgres修改密码,之前改过了这里就不用改了
postgres=# password postgres


#建立新的数据库用户(和之前建立的系统用户要一样)
postgres=# create user kong with password 'kong';
CREATE ROLE


需要单独赋予角色login权限:
postgres=# alter role kong login;


#为新用户建立数据库
postgres=# create database kong owner kong;
CREATE DATABASE


#把新建的数据库权限赋予 kong
postgres=# grant all privileges on database kong to kong;
GRANT


#退出控制台
postgres=# \q
bash-4.3$
注意:在 psql 控制台下执行命令,一定记得在命令后添加分号。


而且postgresql的用户要和系统用户一样:


$ cat /etc/passwd
...
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
kong:x:1002:1002::/home/kong:/bin/bash
问题一:


用命令行登录,在root账户下登录postgresql 数据库会提示权限问题:


$ psql -U kong -d kong -h 127.0.0.1 -p 5432
psql: FATAL:  Ident authentication failed for user "kong"
原因是postgres没有配置对外访问策略。


认证权限配置文件为 /var/lib/pgsql/10/data/pg_hba.conf
常见的四种身份验证为:
  trust:凡是连接到服务器的,都是可信任的。只需要提供psql用户名,可以没有对应的操作系统同名用户;
  password 和 md5:对于外部访问,需要提供 psql 用户名和密码。对于本地连接,提供 psql 用户名密码之外,还需要有操作系统访问权。(用操作系统同名用户验证)password 和 md5 的区别就是外部访问时传输的密码是否用 md5 加密;
  ident:对于外部访问,从 ident 服务器获得客户端操作系统用户名,然后把操作系统作为数据库用户名进行登录对于本地连接,实际上使用了peer;
  peer:通过客户端操作系统内核来获取当前系统登录的用户名,并作为psql用户名进行登录。
psql 用户必须有同名的操作系统用户名。并且必须以与 psql 同名用户登录 linux 才可以登录 psql 。想用其他用户(例如 root )登录 psql,修改本地认证方式为 trust 或者 password 即可。
$ vim /var/lib/pgsql/10/data/pg_hba.conf
# 增加如下两条配置
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 trust
问题二:
通过本地连接会提示拒绝连接,因为pgsql 默认只能通过本地访问,需要开启远程访问。
修改配置文件  var/lib/pgsql/10/data/postgresql.conf ,将 listen_address 设置为 '*'
$ vim var/lib/pgsql/10/data/postgresql.conf


# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------


# - Connection Settings -


listen_addresses = '*'             # what IP address(es) to listen on;
修改以上两个配置文件后,重启postgresql服务:


$ sudo systemctl restart postgresql-10.service


$ psql -U kong -d kong -h 127.0.0.1 -p 5432
psql (10.4)
Type "help" for help.


kong=> \l
                             List of databases
   Name    |  Owner   | Encoding  | Collate | Ctype |   Access privileges
-----------+----------+-----------+---------+-------+-----------------------
 kong      | kong     | SQL_ASCII | C       | C     | =Tc/kong             +
           |          |           |         |       | kong=CTc/kong
 postgres  | postgres | SQL_ASCII | C       | C     |
 template0 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
 template1 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
(4 rows)


kong=>
相关postgres命令参考:postgres常见命令


kong部署
kong这块按照官网的方法不成功,最终下载了rpm包安装成功的。


安装kong
配置YUM源:
[root@contoso ~]# cat  /etc/yum.repos.d/kong-community-edition.repo
[kong-community-edition] 
name=kong-community-edition 
baseurl=https://kong.bintray.com/kong-community-edition-rpm/centos/7 
gpgcheck=0 
repo_gpgcheck=0 
enabled=1


$ sudo yum install kong-community-edition 


Running transaction


  正在安装    : kong-community-edition-1.1.2-1.noarch                                                         1/1 


  验证中      : kong-community-edition-1.1.2-1.noarch                                                         1/1 


已安装:

  kong-community-edition.noarch 0:1.1.2-1   


修改 kong 的配置文件
默认配置文件位于 /etc/kong/kong.conf.default
sudo cp /etc/kong/kong.conf.default /etc/kong/kong.conf
将之前安装配置好的 postgresql 信息填入 kong 配置文件中:
$ sudo vi /etc/kong/kong.conf
#------------------------------------------------------------------------------
# DATASTORE
#------------------------------------------------------------------------------


# Kong will store all of its data (such as APIs, consumers and plugins) in
# either Cassandra or PostgreSQL.
#
# All Kong nodes belonging to the same cluster must connect themselves to the
# same database.


database = postgres              # Determines which of PostgreSQL or Cassandra
                                 # this node will use as its datastore.
                                 # Accepted values are `postgres` and
                                 # `cassandra`.


pg_host = 127.0.0.1             # The PostgreSQL host to connect to.
pg_port = 5432                  # The port to connect to.
pg_user = kong                  # The username to authenticate if required.
pg_password = kong              # The password to authenticate if required.
pg_database = kong              # The database name to connect to.


ssl = off                       # 如果不希望开放 8443 的 ssl 访问可关闭
初始化数据库表


$ kong migrations up -c  /etc/kong/kong.conf
 


[root@node154 kong]# kong migrations up -c /etc/kong/kong.conf


Error: cannot run migrations: database needs bootstrapping; run 'kong migrations bootstrap'


  Run with --v (verbose) or --vv (debug) for more details


[root@node154 kong]# kong migrations bootstrap


bootstrapping database...


migrating core on database 'kong'...


core migrated up to: 000_base (executed)


core migrated up to: 001_14_to_15 (executed)


[root@node154 kong]# kong migrations up -c /etc/kong/kong.conf


database is already up-to-date


启动kong服务
$ kong start
Kong started
服务已经正常启动


$ curl 127.0.0.1:8001
{"plugins":{"enabled_in_cluster":[],"available_on_server":{"response-transformer":true,"correlation-id":true,"statsd":true,"jwt":true,"cors":true,"basic-auth":true,"key-auth":true,"ldap-auth":true,"http-log":true,"oauth2":true,"hmac-auth":true,"acl":true,"datadog":true,"tcp-log":true,"ip-restriction":true,"request-transformer":true,"file-log":true,"bot-detection":true,"loggly":true,"request-size-limiting":true,"syslog":true,"udp-log":true,"response-ratelimiting":true,"aws-lambda":true,"runscope":true,"rate-limiting":true,"request-termination":true}},"tagline":"Welcome to kong","configuration":{"error_default_type":"text\/plain","client_ssl":false,"lua_ssl_verify_depth":1
....
 

kong api可视化管理工具konga安装使用教程
安装环境:
[root@node154 config]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@node154 config]# uname -a
Linux node154 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


安装依赖
yum  install nodejs npm
npm i  #安装全部依赖


npm install -g gulp
npm install -g bower
npm install -g sails
npm run bower-deps
npm install dotenv-extended
npm install angular
npm install dotenv
npm install n
n stable        #最新最新稳定版本
npm install sails-postgresql
npm install lodash
npm install async




安装konga
git clone https://github.com/pantsel/konga.git
cd konga
npm install konga


配置
# 示例配置位置
/config/local_example.js


# 拷贝一份
cd ./config/
cp local_example.js ./local.js


# 配置默认数据库
vi ./local.js
models: {
    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
  },
# 保存


# 创建数据库
#adduser konga
#psql
#postgres=#create user konga with password 'konga';
#postgres=# alter role konga login;
#postgres=# create database kong owner kong;
#postgres=# grant all privileges on database konga to konga;


# 启动
#konga根目录
cd ../
npm start
放入后台运行:
nohup npm start >>/tmp/konga.log &


> kongadmin@0.14.7 start /usr/local/konga/konga
> node --harmony app.js


No DB Adapter defined. Using localDB...
debug: Hook:api_health_checks:process() called
debug: Hook:health_checks:process() called
debug: Hook:start-scheduled-snapshots:process() called
debug: Hook:upstream_health_checks:process() called
debug: Hook:user_events_hook:process() called
debug: User had models, so no seed needed
debug: Kongnode had models, so no seed needed
debug: Emailtransport seeds updated
info:
info:                .-..-.
info:
info:    Sails              <|    .-..-.
info:    v0.12.14            |\
info:                       /|.\
info:                      / || \
info:                    ,'  |'  \
info:                 .-'.-==|/_--'
info:                 `--'-------'
info:    __---___--___---___--___---___--___
info:  ____---___--___---___--___---___--___-__
info:
info: Server lifted in `/usr/local/konga/konga`
info: To see your app, visit http://0.0.0.0:1338
info: To shut down Sails, press <CTRL> + C at any time.


debug: -------------------------------------------------------
debug: :: Wed Oct 23 2019 15:19:43 GMT+0800 (GMT+08:00)


debug: Environment : development
debug: Host        : 0.0.0.0
debug: Port        : 1338
debug: -------------------------------------------------------




浏览器输入 http://192.168.67.154:1338/,端口可以在local.js改
默认登录名admin,密码是三个admin
配置kong API地址要填写完整地址,后面不要带‘/’
http://localhost:8001


配置完成后界面:




 
分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS