安装NgRouter - API网关 Dockerfile docker API


https://github.com/gogo-easy/ngr/releases

NgRouter是基于OpenResty开发的API网关,继承了Nginx的高并发、低延迟的强大性能的同时,也提供诸如认证鉴权、限流、熔断、健康检查、动态上游发现等常用功能。通过集群化横向扩展多实例的部署方式,可作为企业级边缘网关承载百万级并发,也可根据环境的逻辑划分,每个逻辑单元部署一套,用于需要多环境管理的场景。


1.环境依赖安装

MySQL: >=5.6

Redis

NgRouter依赖的库为:perl >= 5.6.1、libpcre、libssl

yum -y install perl pcre-devel openssl-devel

centos编译,yum安装Openresty:  https://abc.htmltoo.com/thread-45866.htm

安装luafilesystem:  https://abc.htmltoo.com/thread-45867.htm


2.安装NgRouter

cd /opt

wget  https://github.com/gogo-easy/ngr/archive/v1.0.3.tar.gz

tar -zvxf v1.0.3.tar.gz


初始化ngr配置数据库

用任意的MySQL客户端执行数据库初始化脚本,

a. initialize-dbscript-v1.0.3-full.sql

b. 脚本路径install_db_script/initialize-dbscript-version.sql(其中version替换成对应版本即可)。


# 为了方便安装,我们也提供了一键安装脚本,脚本路径为install_utils/install_script,执行即可:

cd   ngr-1.0.3/install_utils/install_script/

sh   ngr_install.sh 

sh   ngrAdmin_install.sh

# 使用一键化安装脚本,可免去openresty和luafilesystem的安装步骤。


配置ngr

拷贝/usr/local/ngr/conf/ngr.json到/etc/ngr/ngr.json中,

找到store_mysql部分及cache_redis部分,并修改MySQL及Redis的正确配置信息。


执行启动命令

ngr start


============================

安装网关Ngr

make install

安装网关控制台服务端NgrAdmin

make install-admin


NgRouter Gateway的配置说明-缺省配置路径为/etc/ngr/ngr.json

{
  "profile": "local", //ENV Profile:local dev test fat uat prod 
  "service_name":"GatewayService", // 网关集群名称
  "load_conf_delay" : 0, //网关配置加载延迟时间(以秒为单位)
  "load_conf_interval" : 3, //网关配置加载周期(以秒为单位)
  "load_ext_conf_interval" : 60, //网关外围配置加载周期(以秒为单位)
  // 启用的插件
  "plugins": [
    "global_rate_limit",
    "api_router",
    "group_rate_limit",
    "property_rate_limit",
    "stat_dashboard",
    "waf",
    "anti_sql_injection",
    "statsd_metrics",
    "global_access_control"
  ],
  // 网关配置储存数据库连接地址
  "store_type": "mysql",
  "store_mysql": {
    "connect_config": {
      "host": "127.0.0.1",
      "port": 3306,
      "database": "ngr",
      "user": "ngr_local",
      "password": "123456",
      "max_packet_size": 1048576
    },
    "pool_config": {
      "max_idle_timeout": 10000,
      "pool_size": 3
    },
    "timeout": 5000,
    "desc": "mysql configuration"
  },
  //cache连接信息
  "cache_type":"redis",
  "cache_redis":{
    "mode":"standalone",
    "connect_timeout":500,
    "read_timeout": 2000,
    "database":0,
    "max_idle_time":1000,
    "pool_size":20,
    "host":"127.0.0.1",
    "port":"6379"
  },
  //statsd 连接信息
  "metrics_conf" : {
    "host" : "127.0.0.1",
    "port" : 8125,
    "prefix" : "ngr"
  },
 // http client 基础配置
  "http_client":{
    "timeout":2000,
    "max_idle_timeout":6000,
    "pool_size":200
  },
  "application_conf":{
    "service_type":"gateway_service",
    "hosts":["gateway.local","127.0.0.1","localhost"],
    "log_level": "error",
    "access_log": "/var/log/ngr/gateway.local.access.log",
    "error_log":"/var/log/ngr/gateway.local.error.log",
    "worker_processes_count":"2",
    "event_mode": "kqueue",
    "worker_rlimit":"65535",
    "worker_connections":"65535",
    "dns_resolver":["10.0.146.215"],
    "dns_resolver_valid":"300s",
    "resolver_timeout":"3s",
    "lua_code_cache":"on",
    "lua_socket_pool_size":"20",
    "rate_limit_counter_cache_data_size":"20m",
    "global_config_cache_data_size":"100m",
    "stat_dashboard_data_size":"2m",
    "shared_dict_lock_data_size":"10m",
    "worker_events_data_size":"20m",
    "healthchecks_data_size":"20m",
    "lua_max_pending_timers":"16384",
    "lua_max_running_timers":"4096",
    "real_ip_header":"X-Forwarded-For",
    "real_ip_recursive":"on",
    "trusted_ips":["112.124.159.0/24","116.211.163.0/24","116.211.164.0/24"],
    "hosts_conf": [
      {
        "host": "gateway.local",
        "log_level":"error",
        "access_log":"/var/log/ngr/gateway.local.access.log",
        "error_log":"/var/log/ngr/gateway.local.error.log",
        "non_body":"true",
        "listen_port":80,
        "error_page_switch":"off",
        "open_ssl":"off",
        "ssl_certificate":"",
        "ssl_certificate_key":"",
        "add_headers":[],
        "proxy_intercept_errors":"off",
        "error_page_code":"400 404 408 411 412 413 414 417 500 502 503 504",
        "proxy_next_upstream":"error timeout invalid_header http_503 http_404 http_502 http_504 non_idempotent",
        "non_idempotent_retry_switch":"off"
      },
      {
        "host": "127.0.0.1",
        "log_level":"error",
        "access_log":"/var/log/ngr/127.0.0.1.access.log",
        "error_log":"/var/log/ngr/127.0.0.1.error.log",
        "non_body":"true",
        "listen_port":80,
        "error_page_switch":"off",
        "open_ssl":"off",
        "ssl_certificate":"",
        "ssl_certificate_key":"",
        "add_headers":[],
        "proxy_intercept_errors":"off",
        "error_page_code":"400 404 408 411 412 413 414 417 500 502 503 504",
        "proxy_next_upstream":"error timeout invalid_header http_503 http_404 http_502 http_504 non_idempotent",
        "non_idempotent_retry_switch":"off"
      },
      {
        "host": "localhost",
        "log_level":"error",
        "access_log":"/var/log/ngr/localhost.access.log",
        "error_log":"/var/log/ngr/localhost.error.log",
        "non_body":"true",
        "listen_port":80,
        "error_page_switch":"off",
        "open_ssl":"off",
        "ssl_certificate":"",
        "ssl_certificate_key":"",
        "add_headers":[],
        "proxy_intercept_errors":"off",
        "error_page_code":"400 404 408 411 412 413 414 417 500 502 503 504",
        "proxy_next_upstream":"error timeout invalid_header http_503 http_404 http_502 http_504 non_idempotent",
        "non_idempotent_retry_switch":"off"
      }
    ]
  }
}


NgRouterAdmin-缺省配置路径为/etc/ngrAdmin/ngr.json

{
  "profile": "local",
  "plugins": [
    "global_rate_limit",
    "api_router",
    "group_rate_limit",
    "property_rate_limit",
    "stat_dashboard",
    "waf",
    "anti_sql_injection",
    "statsd_metrics",
    "global_access_control"
  ],
  "store_type": "mysql",
  "store_mysql": {
    "connect_config": {
      "host": "127.0.0.1",
      "port": 3306,
      "database": "ngr",
      "user": "ngr_local",
      "password": "123456",
      "max_packet_size": 1048576
    },
    "pool_config": {
      "max_idle_timeout": 10000,
      "pool_size": 3
    },
    "timeout": 5000
  },
  "cache_type":"redis",
  "cache_redis":{
    "mode":"standalone",
    "connect_timeout":500,
    "read_timeout": 2000,
    "database":0,
    "max_idle_time":1000,
    "pool_size":20,
    "host":"127.0.0.1",
    "port":"6379"
  },
  "application_conf":{
    "service_type":"config_service",
    "worker_processes_count":"auto",
    "event_mode": "kqueue",
    "worker_rlimit":"65535",
    "worker_connections":"65535",
    "lua_code_cache":"on",
    "lua_socket_pool_size":"20",
    "lua_max_pending_timers":"16384",
    "lua_max_running_timers":"4096"
  }
}

配置说明

profile: 当前环境标志

plugins:插件管理列表

store_type,store_mysql:配置数据源连接信息

cache_type,cache_redis:缓存连接信息

service_type:服务类型,填写config_service

event_mode:事件处理模型,centos为epoll,macox为kqueue


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回