使用docker搭建kong叢集
阿新 • • 發佈:2019-02-11
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
返回如下:
curl -i http://172.16.100.102:8001/apis/example-api
如果也返回和上面一樣的結果說明可以訪問同一個api了,api資訊是儲存在資料庫中的,也是就說可以訪問同一個資料庫了,這樣你的kong叢集也就搭建成功了,希望對你有所幫助