1. 程式人生 > >使用docker搭建kong叢集

使用docker搭建kong叢集

docker容器下搭建kong的叢集很簡單,官網介紹的也很簡單,初學者也許往往不知道如何去處理,經過本人的嘔心瀝血的琢磨,終於搭建出來了。

主要思想:不同的kong連線同一個資料庫(就這麼一句話)

難點:如何在不同的主機上用kong連線同一資料庫

要求:

1、兩臺主機 172.16.100.101 172.16.100.102

步驟:

1、在101上安裝資料庫(這裡就用cassandra

docker run -d --name kong-database \
              -p 9042:9042 \
              cassandra:latest

2、遷移資料庫(可以理解初始化資料庫)

docker run  --rm \
    --link kong-database:kong-database \
    -e "KONG_DATABASE=cassandra" \
    -e "KONG_PG_HOST=kong-database" \
    -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
    kong:latest kong migrations up

3、安裝kong

docker run  -d  --name kong \
    --link kong-database:kong-database \
    -e "KONG_DATABASE=cassandra" \
    -e "KONG_PG_HOST=kong-database" \
    -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
    -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
    -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
    -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
    -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
    -p 8000:8000 \
    -p 8443:8443 \
    -p 8001:8001 \
    -p 8444:8444 \
    kong:latest

4、在102上安裝另一個kong,實現多節點kong叢集

docker run -d --name kong\
 -e "KONG_DATABASE=cassandra" \
 -e "KONG_PG_HOST=kong-database" \
 -e "KONG_CASSANDRA_CONTACT_POINTS=172.16.100.101" \
 -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
 -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
 -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
 -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
 -p 8000:8000 \
 -p 8443:8443 \
 -p 8001:8001 \
 -p 8444:8444 \
 kong:latest

5、這裡使用的是cassandra資料庫,所以需要修改一個配置 db_update_propagation 這個引數,預設是0,可以改成 5,進入容器

docker exec -it kong bash   //進入kong容器
cd etc/kong                 //進入該目錄下
cp kong.conf.default kong.conf   //複製kong.conf.default檔案為kong.conf檔案
vi kong.conf                     //修改db_update_propagation這個配置項

exit //退出空容器
docker restart kong //重新啟動kong
注:101和102上的kong都需要修改這個配置項,關於db_update_propagation配置項的介紹可以去官網看下

6、驗證kong叢集

可以在101上註冊一個api如下

curl -i -X POST \
  --url http://172.16.100.101:8001/apis/ \
  --data 'name=example-api' \
  --data 'hosts=example.com' \
  --data 'upstream_url=http://mockbin.org'

然後查詢這個api是否註冊成功:

curl -i http://172.16.100.101:8001/apis/example-api

返回如下:


你也可以通過102機器主機進行查詢:
curl -i http://172.16.100.102:8001/apis/example-api
如果也返回和上面一樣的結果說明可以訪問同一個api了,api資訊是儲存在資料庫中的,也是就說可以訪問同一個資料庫了,這樣你的kong叢集也就搭建成功了,希望對你有所幫助