亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kong 網關API安裝部署以及應用實例----------騰云駕霧

發布時間:2020-06-19 18:04:37 來源:網絡 閱讀:19957 作者:xinsir999 欄目:建站服務器

背景介紹

之前項目上api的接口用的是自己nginx搭建的反向代理接口,覺得功能性比較查差,故而另辟蹊徑找到了kong作為接口網關服務。

工作原理

Kong 網關API安裝部署以及應用實例----------騰云駕霧
kong會把所有的后端接口對應的數據放到cassandra數據庫中,對外只暴漏自己的接口,這樣對于前端的開發人員來說就透明了許多,也方便了許多,后端的運維人員管理起來也方便了許多。

系統環境介紹

系統版本:CentOS release 6.7 (Final)
kong版本:0.9.9
gcc版本:4.8.2 (GCC) 
npm版本:3.8.6
node版本:5.11.1
python版本:Python 2.7.8
cassandra版本:dsc22.noarch
jdk版本:>1.7.25

Kong部署

安裝

$ wget https://bintray.com/mashape/kong-rpm-el6-0.9.x/rpm -O bintray-mashape-kong-rpm-el6-0.9.x.repo
$ mv bintray-mashape-kong-rpm-el6-0.9.x.repo /etc/yum.repos.d/
$ yum install kong

啟動kong

$ kong start  -c <path_to_config>

檢查kong是不是正常啟動了,默認不修改配置文件的情況下會報連接不上PostgreSQL,這里先忽略,繼續裝cassandra

正常啟動的話會輸出:[OK] Started
kong的監聽端口:

8000: API請求的代理層。
8001: restful的配置管理API。
8443: 代理HTTPS
7946: 用于和其他Kong節點通訊,支持TCP/UDP流量
7373: 用于本地集群代理通訊

停止kong

$ kong stop

重新加載kong

$ kong reload

重啟kong

$ kong restart

cassandra部署

這里就不演示安裝了,yum也行,綠色版解壓也行。java1.7 或者1.8都可以,注意cassandra3.0必須要jdk1.8版本才行。這里我們由于kong的支持版本是2.x,這里介紹2.x的安裝。

yum源添加

 vim /etc/yum.repos.d/datastax.repo
[datastax]
name = DataStax Repo for Apache Cassandra
baseurl = http://rpm.datastax.com/community
enabled = 1
gpgcheck = 0

yum查找軟件包

 yum search dsc
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
========================================================= N/S Matched: dsc ==========================================================
dsc1.1.noarch : Meta RPM for installation of the DataStax DSC platform
dsc12.noarch : Meta RPM for installation of the DataStax DSC platform
dsc20.noarch : Meta RPM for installation of the DataStax DSC platform
dsc21.noarch : Meta RPM for installation of the DataStax DSC platform
dsc22.noarch : Meta RPM for installation of the DataStax DSC platform
dsc30.noarch : Meta RPM for installation of the DataStax DSC platform
雖然有3.0,但是目前kong只支持2.2.x ,這里我就安裝2.2版本

安裝

yum install dsc22

驗證cassadnra

估計會報這個錯誤

 cqlsh
Traceback (most recent call last):
  File "/usr/bin/cqlsh.py", line 160, in <module>
    from cqlshlib import cql3handling, cqlhandling, pylexotron, sslhandling
ImportError: No module named cqlshlib

python2.7部署

cqlsh是cassandra的客戶端查詢工具
cqlsh客戶的工具需要python2.7支持,centos6.x默認是python2.6版本,這里我新安裝下python2.7

首先安裝 python 工具需要的額外軟件包 SSL, bz2, zlib

yum install -y zlib-devel bzip2-devel openssl-devel xz-libs wget

下載python2.7源碼包并安裝

$ wget http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz
$ xz -d Python-2.7.8.tar.xz
$ tar -xvf Python-2.7.8.tar
$ cd Python-2.7.8
$ ./configure --prefix=/usr/local
$ make
$ make altinstall

檢查 Python 版本并修復yum

$ python2.7 -V
Python 2.7.8
$ mv /usr/bin/python /usr/bin/python2.6.6
$ ln -s /usr/local/bin/python2.7  /usr/bin/python

更改yum環境變量

因為yum使用python2.6 故而要改一下yum的環境,不然yum將沒法使用

$ which yum 
/usr/bin/yum
#修改 yum中的python 
將第一行  #!/usr/bin/python  改為 #!/usr/bin/python2.6

安裝pip

$ curl  https://bootstrap.pypa.io/get-pip.py | python2.7

解決cqlsh報錯問題,下面的步驟可能要耗費很長的時間,建議大家耐心等等

$pip install cqlshlib
$pip install cql
$pip install cassandra-driver
$pip install cqlsh

再次測試數據庫情況

 $cqlsh
 Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.2.8 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
cqlsh> create schema testschema
   ... with replication = {'class':'SimpleStrategy', 'replication_factor':1};
cqlsh> describe keyspaces;
system  testschema  system_traces
cqlsh> use testschema;
cqlsh:testschema> create table user (
              ... user_id varchar primary key,
              ... first varchar,
              ... last varchar,
              ... age int
              ... );
              ... user_id varchar primary key,
              ... first varchar,
              ... last varchar,
              ... age int
              ... );
cqlsh:testschema> 
cqlsh:testschema> insert into user (user_id, first, last, age) values ('rfroncois', 'ronn', 'francois', 20);
cqlsh:testschema> select * from user;
 user_id  | age | first | last
-----------+-----+-------+----------
 rfroncois |  20 |  ronn | francois

Kong 配置

小編發現kong的配置文件總計三處

/etc/kong/kong.conf.default
/usr/local/kong/kong.conf
/usr/local/share/lua/5.1/kong/templates/kong_defaults.lua

最開始的時候,小編裝好數據庫和kong,啟動kong的時候,修改了/etc/kong/kong.conf.default的配置連接數據庫的類型為cassandra,啟動的時候死活就是連不上啊,報的還是連不上PostgreSQL數據庫,而且每次重啟kong服務后,修改后的配置文件被重置了。真實奇葩,猜想必然這個配置文件不是主配置文件啊。
/usr/local/share/lua/5.1/kong/templates/kong_defaults.lua----->主配置文件,那咱就來看看這個文件的具體內容吧。

return [[
--安裝路徑
prefix = /usr/local/kong/
--日志等級
log_level = notice
--默認插件
custom_plugins = NONE
--發送匿名使用數據,如錯誤堆棧跟蹤,以幫助提高kong。Default: on
anonymous_reports = on
--監聽地址,客戶端訪問地址。Default: 0.0.0.0:8000
proxy_listen = 0.0.0.0:8000
--如果啟用ssl,kong將接受https請求的地址和端口。Default: 0.0.0.0:8443
proxy_listen_ssl = 0.0.0.0:8443
--管理接口地址,有必要保密。Default:0.0.0.0:8001
admin_listen = 0.0.0.0:8001
--nginx進程數,如果不會設置,設置成自動,會自動檢測,默認auto等同于cpu核數.Default: auto
nginx_worker_processes = auto
nginx_optimizations = on
--確定nginx是作為守護進程還是作為前臺進程運行。Default: on
nginx_daemon = on
--數據庫實體的內存緩存大小。接受的單位是k和m,最小推薦值是幾個mbs。Default: 128m
mem_cache_size = 128m
--確定nginx是否應該監聽proxy_listen_ssl地址上的https流量。如果禁用,nginx將只在proxy_listen上綁定自己,所有ssl設置將被忽略.Default: on
ssl = off
如果啟用了ssl,proxy_listen_ssl地址的絕對路徑。如果沒有指定,并且ssl被啟用,kong將生成默認的證書和密鑰。Default: none
ssl_cert = NONE
--如果啟用了ssl,proxy_listen_ssl地址的ssl密鑰的絕對路徑。Default: none
ssl_cert_key = NONE
--確定該節點將使用哪個postgresql或cassandra作為其數據存儲區。接受的數據庫類型是postgres和cassandra。屬于同一個集群的所有kong節點必須連接到同一個數據庫。Default: postgres
database = cassandra
--postgres服務器的主機
pg_host = 127.0.0.1
--postgres服務器的端口
pg_port = 5432
--數據庫連接。必須存在
pg_database = kong
--postgres用戶
pg_user = kong
--postgres用戶的密碼
pg_password = NONE
--啟用S??SL連接到服務器
pg_ssl = off
--如果啟用pg_ssl,則切換服務器證書驗證
pg_ssl_verify = off
--用逗號分隔的聯系人列表指向您的cassandra集群。
cassandra_contact_points = 127.0.0.1
--您的節點正在偵聽的端口。
cassandra_port = 9042
--密鑰空間在您的群集中使用。如果不存在,將被創建。
cassandra_keyspace = kong
--如果是第一次創建密鑰空間,請指定一個復制策略。
cassandra_repl_strategy = SimpleStrategy
--指定簡單策略的復制因子。
cassandra_repl_factor = 1
--為網絡拓撲策略指定數據中心。
cassandra_data_centers = dc1:2,dc2:3
--讀取/寫入cassandra群集時使用的一致性設置。
cassandra_consistency = ONE
--讀/寫超時(以毫秒為單位)。
cassandra_timeout = 5000
--啟用ssl連接到節點。
cassandra_ssl = off
--如果啟用cassandra_ssl,則切換服務器證書驗證
cassandra_ssl_verify = off
--用戶名
cassandra_username = kong
--密碼
cassandra_password = NONE
cluster_listen = 0.0.0.0:7946
cluster_listen_rpc = 127.0.0.1:7373
cluster_advertise = NONE
cluster_encrypt_key = NONE
cluster_profile = wan
cluster_ttl_on_failure = 3600
dnsmasq = on
dnsmasq_port = 8053
dns_resolver = NONE
--當禁用時,每個請求將在一個單獨的lua虛擬機實例中運行:所有lua模塊將從頭開始加載。這對開發插件時采用編輯和刷新方法很有用。據官方說,關閉此指令對
--性能有嚴重影響,并且從0.11.0以后刪除此配置
lua_code_cache = on
--pem格式的lua cosockets的證書頒發機構文件的絕對路徑。當啟用pg_ssl_verify或cassandra_ssl_verify時,此證書將用于驗證kong的數據庫連接。
lua_ssl_trusted_certificate = NONE
--在由lua_ssl_trusted_certificate設置的lua cosockets使用的服務器證書鏈中設置驗證深度。
lua_ssl_verify_depth = 1
--設置lua模塊搜索路徑(lua_path)。在開發或使用未存儲在默認搜索路徑中的自定義插件時非常有用。
lua_package_path = ?/init.lua;./kong/?.lua
--設置lua c模塊搜索路徑(lua_cpath)。
lua_package_cpath = NONE
serf_path = serf
]]

再次啟動kong看它還報不報錯

[root@localhost templates]# kong start
Kong started

kong在命令行的操作演示

1).port:8000 客戶端調用api端口,網關對外開放端口。例如:新建一個api,訪問path= /test,則訪問 http://10.110.2.3:8000/test  
2).port:8001 kong admin api管理端口,可以通過該端口對api、consumer、plugin進行管理,例如:查看名字叫test 這個api配置信息,訪問 http://10.110.2.3:8001/apis/test,查看所有api信息,訪問 http://10.110.2.3:8001/apis 
3).KONG管理平臺,訪問 http://10.110.2.3:8888/#/  此端口開通必須安裝 kong dashboard。通過此端口,可使用圖形界面化管理api、consumer、plugin等。

kong 增加api調用
原有接口調用訪問路徑:
http://192.168.1.100:5105/notice/getNotice
添加調用規則語句:
#--url 指定本地的kong訪問連接
#--d name 指定添加的api的規則名稱
#-d upstream_rul 指定訪問原api的host以及端口
#-d request_path 指定請求路徑
curl -i -X POST --url http://localhost:8001/apis/ -d 'name=getAannouncementList' -d 'upstream_url=http://192.168.1.100:5105/' -d 'request_path=/notice/getNotice'
curl -i -X POST --url http://localhost:8001/apis/ -d 'name=testapi' -d 'upstream_url=http://192.168.1.100:5105/' -d 'request_path=/notice/getNotice'

添加api規則后訪問語句:
http://192.168.5.250:8000/notice/getNotice

對某個訪問規則進行用戶驗證設置
設置語句語法:
#--url 要對那個訪問規則進行設置,apis后面對應的是上面設置的api訪問規則中設置的name關鍵字,其余為固定格式
#--data 設置權限訪問關鍵字
curl -i -X POST --url http://192.168.5.250:8001/apis/getAannouncementList/plugins/ --data 'name=key-auth'
curl -i -X POST --url http://192.168.5.250:8001/apis/testapi/plugins/ --data 'name=key-auth'

增加一個用戶:
設置語句語法:
#--url 規定格式
#--data username 設置增加的用戶名稱
curl -i -X POST --url http://192.168.5.250:8001/consumers/ --data "username=inhomeApp"
curl -i -X POST --url http://192.168.5.250:8001/consumers/ --data "username=test"

為消費者添加證書:
設置語句語法:
#--url 倒數第二個請求路徑為要授予的用戶名稱
#--data key 設置的密碼
curl -i -X POST --url http://192.168.5.250:8001/consumers/inhomeApp/key-auth/ --data 'key=inhomeApp_randomNum123456'
curl -i -X POST --url http://192.168.5.250:8001/consumers/test/key-auth/ --data 'key=test_randomNum123456'

通過key訪問api請求--
curl -i -X GET --url http://192.168.5.250:8000/notice/getNotice --header "Host: 192.168.5.250:8000" --header "apikey: test_randomNum123456"
or
http://192.168.5.250:8000/notice/getNotice?apikey=test_randomNum123456

刪除api規則
curl -i -X DELETE --url http://192.168.5.250:8001/apis/getAannouncementList
查看kong的所有api規則信息
http://192.168.5.250:8001/apis

搭建kong UI Admin

配置node

下載node綠色版,版本5.11.1
https://nodejs.org/en/blog/release/v5.11.1/
解壓后,追加node中的bin目錄到PATH環境變量中即可。

升級GCC版本到4.8

下載4.8源碼包并解壓

wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2    
 tar -jxvf  gcc-4.8.2.tar.bz2

當然,http://ftp.gnu.org/gnu/gcc 里面有所有的gcc版本供下載,最新版本已經有4.9.2啦.

下載供編譯需求的依賴項

參考文獻[1]中說:這個神奇的腳本文件會幫我們下載、配置、安裝依賴庫,可以節約我們大量的時間和精力。

cd gcc-4.8.0       ./contrib/download_prerequisites 

建立一個目錄供編譯出的文件存放

mkdir gcc-build-4.8.2        
 cd gcc-build-4.8.2

生成Makefile文件

../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
編譯(注意:此步驟非常耗時)

make -j4

-j4選項是make對多核處理器的優化,如果不成功請使用 make

報錯

/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/32/libgcc’ 
make[4]: * [multi-do] 錯誤 1 make[4]: Leaving directory 
/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc’ 
make[3]: * [all-multi] 錯誤 2 make[3]: * 正在等待未完成的任務…. 
make[3]: Leaving directory 
/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc’ 
make[2]: * [all-stage1-target-libgcc] 錯誤 2 make[2]: Leaving 
directory/home/imdb/gcc-4.8.2/gcc-build-4.8.2’ make[1]: * 
[stage1-bubble] 錯誤 2 make[1]: Leaving directory 
/home/imdb/gcc-4.8.2/gcc-build-4.8.2’ make: * [all] 錯誤 2

解決辦法:sudo yum -y install glibc-devel.i686 glibc-devel

安裝

sudo make install

安裝Kong Dashboard

官方文檔 https://github.com/PGBI/kong-dashboard
這里面有一個放長重要的東西,非常重要,小編這個坑足足邁了3次才邁過去。
Compatibility matrix

Kong-Dashboard versions Kong versions Node versions
1.x.x 0.6.x, 0.7.x, 0.8.x, 0.9.x
2.x.x 0.10.x
3.x.x 0.9.x, 0.10.x, 0.11.x >= 6.0.0

命令行安裝

  • Install Kong Dashboard
    npm install -g kong-dashboard@v1
  • Start Kong Dashboard
    kong-dashboard start
  • To start Kong Dashboard on a custom port
    kong-dashboard start -p [port]
  • To start Kong Dashboard with basic auth
    kong-dashboard start -a user=password
    這樣啟動會在后臺運行,斷掉終端進程還在
    nohup kong-dashboard start -p 8080 -a xin=sir >kong-dashboard.log &

    源碼安裝

    下載代碼
    git clone https://github.com/PGBI/kong-dashboard.git
    cd kong-dashboard
    git checkout 1.0
    構建
    npm install
    npm run build
    啟動
    npm start
    啟動在某個端口或設置權限
    npm start -- [-p port] [-a user=password]

    配置kong UI admin

    訪UI Admin

    http://192.168.5.250:8080/#/

    配置UI Admin

    Kong 網關API安裝部署以及應用實例----------騰云駕霧
    如果kong有用戶名和密碼那么選擇Basic auth,配置注意地址(kong的管理地址,默認為http://kong server機器或綁定的域名:8001)后面不要多加"/"如下圖 否則點擊API會出現not found api之類的提示,當然也要確保kong server正常運行中

    創建API

    Kong 網關API安裝部署以及應用實例----------騰云駕霧
    新增API與使用新增的API時,需要注意如果需要使用地址方式指向api即 需要勾選strip-request path 如果使用head中帶請求地址的方式,需要在head中帶 X-Host-Override post.demo (即request host)
    Kong 網關API安裝部署以及應用實例----------騰云駕霧
    訪問kong:8000/version/getVersion 就能看到你想看的畫面啦。

    為某個api設置權限認證

    Kong 網關API安裝部署以及應用實例----------騰云駕霧
    Kong 網關API安裝部署以及應用實例----------騰云駕霧

    創建用戶

    Kong 網關API安裝部署以及應用實例----------騰云駕霧
    Kong 網關API安裝部署以及應用實例----------騰云駕霧
    Kong 網關API安裝部署以及應用實例----------騰云駕霧
    Kong 網關API安裝部署以及應用實例----------騰云駕霧
    Kong 網關API安裝部署以及應用實例----------騰云駕霧
    Kong 網關API安裝部署以及應用實例----------騰云駕霧

    通過key訪問url

    http://192.168.5.250:8000/notice/getNotice?testname=keyauth 不出意外能看到你想看到的畫面

    黑白名單設置

    Kong 網關API安裝部署以及應用實例----------騰云駕霧

    設置限流策略

    Kong 網關API安裝部署以及應用實例----------騰云駕霧
    可配置項:
    year:年
    month: 月
    day: 天
    minute:分鐘,這里我們配置3,表示每分鐘不能超過3次調用。
    Second: 秒
    計算頻率的維度:月/天/分鐘/秒, 假如同時配置多個維度,會同時生效。
    驗證:連續一分鐘內請求,第四次,報錯
    {
    "message": "API rate limit exceeded"
    }
    根據年、月、日、時、分、秒設置限流規則,多個限制同時生效。
    比如:每天不能超過10次調用,每分不能超過3次。
    當一分鐘內,訪問超過3次,第四次就會報錯。
    當一天內,訪問次數超過10次,第十一次就會報錯。

為kong-dashboard設置訪問權限

啟動方式:

[root@Kong ~]# kong-dashboard start -a xinsir=521

Kong 網關API安裝部署以及應用實例----------騰云駕霧

故障申報

問題一:
可能會出現的問題,當使用源碼安裝的時候,啟動后訪問8080端口如果出現Not Found,這個多半是因為沒有構建npm造成的。
問題二:
cassandra數據庫啟動后自動down掉,日志報錯報錯說jdk需要大于1.7_25這個升級jdk就可以了。

kong服務監控

/status
{
    "server":  有關nginx http/s服務器的度量。
        {
            "connections_handled":2588, 處理的連接總數。一般來說,除非達到一定的資源限制,否則參數值與接受的值相同。
            "connections_reading":0, kong讀取請求頭的當前連接數。
            "connections_active":4, 當前活動客戶端連接的數量,包括等待連接。
            "total_requests":2585,  客戶端請求的總數。
            "connections_accepted":2588, 接受的客戶端連接總數。
            "connections_writing":1, nginx將響應寫回客戶端的當前連接數。
            "connections_waiting":3 當前正在等待請求的空閑客戶端連接數。
        },
    "database": 有關數據庫集合的度量。
        {
            "oauth3_credentials":0,
            "jwt_secrets":0,
            "response_ratelimiting_metrics":0,
            "keyauth_credentials":0,
            "oauth3_authorization_codes":0,
            "acls":0,
            "apis":1,
            "basicauth_credentials":0,
            "consumers":0,
            "ratelimiting_metrics":0,
            "oauth3_tokens":0,
            "nodes":1,
            "hmacauth_credentials":0,
            "plugins":0
        }
}
/cluster  檢索群集狀態,返回群集中每個節點的信息。
{
    "data":[
            {
                "address":"192.168.1.205:7946",  節點地址
                "name":"Kong_0.0.0.0:7946_a102f6e6cede4540b1cc6a7a46276986", 節點名稱
                "status":"alive"    節點狀態
            }
           ],
            "total":1  節點數
}

使用zabbix獲取參數 進行頁面監控就可以了

使用https方式安全調用api接口

先去阿里云上購買免費的SSL證書
在產品中找到安全(云盾),選擇SSL證書
Kong 網關API安裝部署以及應用實例----------騰云駕霧
選擇購買證書
Kong 網關API安裝部署以及應用實例----------騰云駕霧
選擇Symantec的免費SSL證書,有效期為1年
Kong 網關API安裝部署以及應用實例----------騰云駕霧
購買后得到一個pem證書和key文件
在kong目錄下的ssl中,里面有默認的自簽名證書和key,這是不安全的,把他備份后,將阿里云上下載的pem和key放到ssl中,pem后綴改為crt,將文件名改為默認kong-default

修改nginx-kong.conf文件
Kong 網關API安裝部署以及應用實例----------騰云駕霧

重啟kong和nginx

之前調api路徑為
http://192.168.5.250:8000/notice/getNotice
配置完https后為(綁定了域名)
https://api.example.com:8443/notice/getNotice
Kong 網關API安裝部署以及應用實例----------騰云駕霧

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青州市| 成都市| 宁河县| 涪陵区| 富顺县| 霍州市| 兴和县| 常山县| 扎赉特旗| 陈巴尔虎旗| 顺义区| 贵定县| 茂名市| 沛县| 永胜县| 安义县| 叙永县| 婺源县| 定结县| 德州市| 榕江县| 济南市| 盘锦市| 普定县| 扎兰屯市| 四平市| 吉水县| 永川市| 鲁山县| 德江县| 南雄市| 衡阳市| 靖西县| 建始县| 丹东市| 马公市| 奉节县| 天长市| 玛纳斯县| 仁怀市| 铜山县|