首页 > Nginx > Nginx在微服务中的应用
Nginx Kong(微服务网关)安装部署
Kong 可以灵活地部署在用户的局域网中,其同样支持多种部署方式,官方在 DockerHub 上提供了 Docker 镜像,方便用户快速实现 Kong 的 Docker 化部署。部署步骤如下。
Docker-compose 脚本内容如下:
Konga 通过数据存储操作用户及 Kong 管理相关的配置,此处与 Kong 共用 PostgreSQL 数据库,可通过如下命令创建并初始化数据库实例 konga:
声明:《Nginx系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
1、 初始化系统环境并安装 Docker 应用
配置样例如下:# 安装yum工具 yum install -y yum-utils # 安装Docker官方yum源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装Docker及docker-compose应用 yum install -y docker-ce docker-compose # 设置Docker服务开机自启动 systemctl enable docker # 启动Docker服务 systemctl start docker
2、Kong 应用部署
Kong 将 Nginx 的配置存储在外部数据库,可以通过自带的数据库初始化命令自动完成数据库表结构的创建和初始数据的添加,为方便一次性创建,该脚本会启动独立的容器 kong-migrations 来完成此项操作。此处脚本创建的 Kong 规划为主管理服务器,管理接口不提供外部访问,仅提供在同一虚拟网络内的 Web 工具的访问,因此设置为固定 IP。Docker-compose 脚本内容如下:
version: '2.1' # 创建名为kong-net的虚拟网络 networks: kong-net: ipam: config: - subnet: 172.19.0.0/24 gateway: 172.19.0.1 name: kong-net services: # 创建用于数据库初始化的独立容器 kong-migrations: hostname: kong-migrations container_name: kong-migrations image: kong:latest command: kong migrations bootstrap depends_on: db: condition: service_healthy env_file: - .env_kong links: - db:db networks: - kong-net restart: on-failure # 创建Kong容器 kong: hostname: kong-nginx container_name: kong-nginx image: kong:latest depends_on: db: condition: service_healthy env_file: - .env_kong networks: kong-net: ipv4_address: 172.19.0.201 ports: - "8000:8000/tcp" # 用于监听HTTP协议的消费接口,实现用户请求的接入 # - "8001:8001/tcp" # 用于监听HTTP协议的管理接口,此处关闭外部访问 - "8443:8443/tcp" # 用于监听HTTPS协议的消费接口,实现用户请求的接入 # - "8444:8444/tcp" # 用于监听HTTPS协议的管理接口,此处关闭外部访问 # network_mode: host # 在高并发应用场景下,可以将Docker容器以host模式运行, # 提高传输效率 healthcheck: test: ["CMD", "kong", "health"] interval: 10s timeout: 10s retries: 10 restart: on-failure # 创建Kong的postgreSQL数据库容器 db: hostname: kong-postgres container_name: kong-postgres image: postgres:9.5 env_file: - .env_postgress healthcheck: test: ["CMD", "pg_isready", "-U", "kong"] interval: 30s timeout: 30s retries: 3 restart: on-failure stdin_open: true tty: true networks: - kong-net ipv4_address: 172.19.0.202 volumes: - /opt/data/apps/kong/postgresql/data:/var/lib/postgresql/data环境变量文件内容如下:
cat>.env_kong<<EOF KONG_ADMIN_ACCESS_LOG=/dev/stdout KONG_ADMIN_ERROR_LOG=/dev/stderr KONG_ADMIN_LISTEN=0.0.0.0:8001 KONG_CASSANDRA_CONTACT_POINTS=db KONG_PROXY_ACCESS_LOG=/dev/stdout KONG_PROXY_ERROR_LOG=/dev/stderr KONG_DATABASE=postgres KONG_PG_DATABASE=kong-data KONG_PG_HOST=db KONG_PG_PASSWORD=kong KONG_PG_USER=kong EOF cat>.env_postgress<<EOF POSTGRES_DB=kong-data POSTGRES_PASSWORD=kong POSTGRES_USER=kong EOF
3、Kong 的 Web 管理工具 Konga
Konga 是基于 Node.js 开发的 Kong 开源管理工具,它不仅提供了 Kong 管理接口的全部操作对象的管理功能,同时还可以对多个 Kong 节点进行管理,包括 Kong 节点的备份、还原、健康监测等,还提供了多用户的功能,让 Kong 的日常管理操作可以更加方便灵活。Konga 通过数据存储操作用户及 Kong 管理相关的配置,此处与 Kong 共用 PostgreSQL 数据库,可通过如下命令创建并初始化数据库实例 konga:
docker run --network kong-net --rm pantsel/konga -c prepare -a postgres -u postgresql://kong:kong@172.19.0.202:5432/konga
编写 docker-compose 脚本,脚本内容如下:version: '2.1' services: # 创建konga容器 konga: hostname: konga container_name: konga image: pantsel/konga env_file: - .env_konga external_links: - kong-postgres:db ports: - "1337:1337/tcp" networks: - kong-net # 加入名为kong-net的虚拟网络 networks: kong-net: external: true name: kong-net环境变量文件内容如下:
cat>.env_konga<<EOF DB_ADAPTER=postgres DB_HOST=db DB_USER=kong DB_PASSWORD=kong DB_DATABASE=konga NODE_ENV=production EOFKong 集群只需在其他服务器部署 Kong 节点并连接到同一个 PostgreSQL 数据库即可,Kong 为避免频繁地进行数据库连接,会将数据库的内容缓存在本机内存中,管理接口修改数据库配置后,Kong 的配置会在同步周期下一次开始时生效,同步周期可以通过配置文件 kong.conf 中的配置参数 db_update_frequency 进行修改,默认时间为 5 秒。
声明:《Nginx系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。