CentOS 系统安装 Kong API 网关实战指南
在微服务架构和 API 经济蓬勃发展的今天,一个强大、可靠的 API 网关已成为技术栈中的关键枢纽,Kong 作为基于 Nginx 和 OpenResty 构建的开源云原生 API 网关,以其高性能、可扩展插件生态和易于管理的特性,赢得了众多开发运维团队的青睐,若您的服务器环境是 CentOS,这份详细安装教程将助您高效部署 Kong 网关。

环境准备:扎实的基础是关键

- 操作系统确认: 登录您的 CentOS 服务器,执行
cat /etc/redhat-release确认系统版本,Kong 支持 CentOS 7 及更高版本(CentOS 8 同样适用),本文以 CentOS 7.6 为例。 - 更新系统: 安装前务必更新系统软件包,确保环境稳定安全:
sudo yum update -y
- 安装基础依赖: Kong 运行依赖一些基础库:
sudo yum install -y epel-release # 启用 EPEL 仓库 sudo yum install -y wget openssl-devel
核心依赖安装:数据库与 OpenResty
Kong 需要存储配置、路由、消费者等数据,支持 PostgreSQL(推荐生产使用)或 Cassandra。
安装 PostgreSQL (推荐):
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum install -y postgresql12-server postgresql12-contrib sudo /usr/pgsql-12/bin/postgresql-12-setup initdb sudo systemctl enable --now postgresql-12
配置 PostgreSQL:
- 创建 Kong 专用数据库和用户:
sudo -u postgres psql
在 PostgreSQL 命令行中执行:
CREATE USER kong WITH PASSWORD '您的强密码'; -- 替换为实际强密码 CREATE DATABASE kong OWNER kong; \q
- 修改认证方式(可选但推荐):编辑
/var/lib/pgsql/12/data/pg_hba.conf,找到local all all peer或类似行,将其改为:local all all trust host all all 127.0.0.1/32 md5 host all all ::1/128 md5保存后重启服务:
sudo systemctl restart postgresql-12
- 创建 Kong 专用数据库和用户:
安装 OpenResty: Kong 运行于 OpenResty 之上。
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo sudo yum install -y openresty
安装 Kong 网关
下载 Kong 安装包: 访问 Kong 官方下载页面 获取适合 CentOS 的最新 RPM 包链接,例如安装 3.4.x 版本:
wget https://download.konghq.com/gateway-3.x-centos-7/Packages/k/kong-3.4.1.el7.amd64.rpm
安装 RPM 包:
sudo yum install ./kong-3.4.1.el7.amd64.rpm
配置与启动 Kong
生成初始配置: Kong 提供了默认配置文件模板:
cp /etc/kong/kong.conf.default /etc/kong/kong.conf
编辑配置文件: 使用
vi或nano编辑/etc/kong/kong.conf,主要修改数据库连接部分:# 使用 PostgreSQL database = postgres pg_host = 127.0.0.1 # 数据库地址 pg_port = 5432 # 数据库端口 pg_user = kong # 数据库用户 pg_password = 您的强密码 # 数据库密码 pg_database = kong # 数据库名 # 监听地址 (按需调整) proxy_listen = 0.0.0.0:8000, 0.0.0.0:8443 ssl admin_listen = 127.0.0.1:8001, 127.0.0.1:8444 sslproxy_listen: 客户端(API 消费者)访问 Kong 的入口地址和端口。admin_listen: Kong 管理 API 的监听地址(通常建议仅限本地或内网访问)。
初始化数据库: 执行迁移命令,创建 Kong 所需的数据库表结构:
kong migrations bootstrap -c /etc/kong/kong.conf
重要提示: 此操作会清空现有 Kong 数据库,生产环境升级时务必仔细阅读官方迁移文档。
启动 Kong 服务:
kong start -c /etc/kong/kong.conf
验证运行状态:
curl -i http://127.0.0.1:8001/ # 访问 Admin API
看到返回
HTTP/1.1 200 OK及包含 Kong 版本信息的 JSON,表明服务已成功启动。
防火墙配置(如有启用)
若服务器启用了 firewalld,需开放 Kong 的代理端口(如 8000, 8443)和管理端口(如 8001,仅限内部访问):
sudo firewall-cmd --permanent --add-port=8000/tcp sudo firewall-cmd --permanent --add-port=8443/tcp # 谨慎开放管理端口到公网,强烈建议仅限内网或VPN访问 # sudo firewall-cmd --permanent --add-port=8001/tcp sudo firewall-cmd --reload
初步体验 Kong
访问管理 API: 使用
curl或httpie工具(或浏览器访问本地):curl http://127.0.0.1:8001
将返回 Kong 的节点信息。
添加测试路由: 假设您有一个在
http://localhost:8080运行的后端服务(如一个简单的 HTTP 服务):curl -X POST http://127.0.0.1:8001/services \ --data name=example-service \ --data url='http://localhost:8080' curl -X POST http://127.0.0.1:8001/services/example-service/routes \ --data paths[]='/example'
访问
http://<服务器IP>:8000/example,Kong 会将请求代理到http://localhost:8080。
安全与后续建议
- 保护 Admin API:
admin_listen端口 (8001,8444) 切勿直接暴露在公网,结合防火墙规则、VPN 或 Kong 自身的认证插件(如 RBAC)进行保护。 - 启用 HTTPS: 生产环境务必在
proxy_listen中配置 SSL 证书,并考虑使用 Kong 的 SSL 插件或前置负载均衡器(如 Nginx)终止 SSL。 - 探索插件: Kong 的核心价值在于其丰富的插件生态(认证、限流、日志、监控等),通过 Admin API 或 Kong Manager UI 轻松启用和配置插件。
- 监控与日志: 配置日志插件(如 File Log, Syslog, HTTP Log)发送日志到集中平台,并利用 Prometheus 插件进行指标监控。
- 高可用部署: 生产环境应部署多个 Kong 节点,并搭配 PostgreSQL 集群或 Cassandra 集群实现数据库高可用。
实际部署经验谈
从实际部署经验看,Kong 在 CentOS 上的安装过程清晰直接,关键在于数据库的正确配置和权限管理,初期务必花时间理解配置文件各参数含义,尤其是涉及网络监听和安全的部分,Kong 管理 API 的强大功能是其亮点,但也构成潜在风险点,必须严格管控访问权限,随着业务增长,插件机制能灵活应对各类 API 治理需求,避免后期架构大调整的麻烦,稳定的数据库后端(特别是 PostgreSQL)对保障 Kong 长期平稳运行至关重要。
故障排查提示:
- 启动失败: 检查
/etc/kong/kong.conf配置(特别是数据库连接信息)、数据库服务状态、日志/usr/local/kong/logs/error.log。 - 数据库连接问题: 确认 PostgreSQL 监听地址、端口、用户权限、密码是否正确,检查
pg_hba.conf认证规则。 - 端口冲突: 使用
netstat -tulnp | grep <端口号>检查 8000, 8001, 8443, 8444 等端口是否被其他进程占用。 ⚠️
Kong 在 CentOS 上的成功部署,为您构建现代化、可管理、高安全的 API 基础设施奠定了坚实基础,结合其强大的插件体系,能有效管理微服务通信、保障 API 安全、提升系统可观测性。
