使用docker搭建kong集群操作
docker容器下搭建kong的集群很簡(jiǎn)單,官網(wǎng)介紹的也很簡(jiǎn)單,初學(xué)者也許往往不知道如何去處理,經(jīng)過本人的嘔心瀝血的琢磨,終于搭建出來了。
主要思想:不同的kong連接同一個(gè)數(shù)據(jù)庫(kù)(就這么一句話)
難點(diǎn):如何在不同的主機(jī)上用kong連接同一數(shù)據(jù)庫(kù)
要求:
1、兩臺(tái)主機(jī) 172.16.100.101 172.16.100.102
步驟:
1、在101上安裝數(shù)據(jù)庫(kù)(這里就用cassandra)
docker run -d --name kong-database \ -p 9042:9042 \ cassandra:latest
2、遷移數(shù)據(jù)庫(kù)(可以理解初始化數(shù)據(jù)庫(kù))
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
注意:以上三部都是在101上完成的,且官網(wǎng)上都有https://getkong.org/install/docker/?_ga=2.68209937.1607475054.1519611673-2089953626.1519354770,接下來的第四步則是在另一主機(jī)102上完成,同一主機(jī)上可以用link,不同主機(jī)的容器關(guān)聯(lián)就不能使用link了,如下配置即可
4、在102上安裝另一個(gè)kong,實(shí)現(xiàn)多節(jié)點(diǎn)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數(shù)據(jù)庫(kù),所以需要修改一個(gè)配置 db_update_propagation 這個(gè)參數(shù),默認(rèn)是0,可以改成 5,進(jìn)入容器
docker exec -it kong bash //進(jìn)入kong容器 cd etc/kong //進(jìn)入該目錄下 cp kong.conf.default kong.conf //復(fù)制kong.conf.default文件為kong.conf文件 vi kong.conf //修改db_update_propagation這個(gè)配置項(xiàng)
exit //退出空容器
docker restart kong //重新啟動(dòng)kong
注:101和102上的kong都需要修改這個(gè)配置項(xiàng),關(guān)于db_update_propagation配置項(xiàng)的介紹可以去官網(wǎng)看下
6、驗(yàn)證kong集群
可以在101上注冊(cè)一個(gè)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'
然后查詢這個(gè)api是否注冊(cè)成功:
curl -i http://172.16.100.101:8001/apis/example-api
返回如下:
你也可以通過102機(jī)器主機(jī)進(jìn)行查詢:
curl -i http://172.16.100.102:8001/apis/example-api
如果也返回和上面一樣的結(jié)果說明可以訪問同一個(gè)api了,api信息是保存在數(shù)據(jù)庫(kù)中的,也是就說可以訪問同一個(gè)數(shù)據(jù)庫(kù)了,這樣你的kong集群也就搭建成功了,希望對(duì)你有所幫助。
補(bǔ)充知識(shí):使用docker-compose創(chuàng)建hadoop集群
下載docker鏡像
首先下載需要使用的五個(gè)docker鏡像
docker pull bde2020/hadoop-namenode:1.1.0-hadoop2.7.1-java8 docker pull bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8 docker pull bde2020/hadoop-resourcemanager:1.1.0-hadoop2.7.1-java8 docker pull bde2020/hadoop-historyserver:1.1.0-hadoop2.7.1-java8 docker pull bde2020/hadoop-nodemanager:1.1.0-hadoop2.7.1-java8
設(shè)置hadoop配置參數(shù)
創(chuàng)建 hadoop.env 文件,內(nèi)容如下:
CORE_CONF_fs_defaultFS=hdfs://namenode:8020 CORE_CONF_hadoop_http_staticuser_user=root CORE_CONF_hadoop_proxyuser_hue_hosts=* CORE_CONF_hadoop_proxyuser_hue_groups=* HDFS_CONF_dfs_webhdfs_enabled=true HDFS_CONF_dfs_permissions_enabled=false YARN_CONF_yarn_log___aggregation___enable=true YARN_CONF_yarn_resourcemanager_recovery_enabled=true YARN_CONF_yarn_resourcemanager_store_class=org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore YARN_CONF_yarn_resourcemanager_fs_state___store_uri=/rmstate YARN_CONF_yarn_nodemanager_remote___app___log___dir=/app-logs YARN_CONF_yarn_log_server_url=http://historyserver:8188/applicationhistory/logs/ YARN_CONF_yarn_timeline___service_enabled=true YARN_CONF_yarn_timeline___service_generic___application___history_enabled=true YARN_CONF_yarn_resourcemanager_system___metrics___publisher_enabled=true YARN_CONF_yarn_resourcemanager_hostname=resourcemanager YARN_CONF_yarn_timeline___service_hostname=historyserver YARN_CONF_yarn_resourcemanager_address=resourcemanager:8032 YARN_CONF_yarn_resourcemanager_scheduler_address=resourcemanager:8030 YARN_CONF_yarn_resourcemanager_resource___tracker_address=resourcemanager:8031
創(chuàng)建docker-compose文件
創(chuàng)建 docker-compose.yml 文件,內(nèi)如如下:
version: "2" services: namenode: image: bde2020/hadoop-namenode:1.1.0-hadoop2.7.1-java8 container_name: namenode volumes: - hadoop_namenode:/hadoop/dfs/name environment: - CLUSTER_NAME=test env_file: - ./hadoop.env resourcemanager: image: bde2020/hadoop-resourcemanager:1.1.0-hadoop2.7.1-java8 container_name: resourcemanager depends_on: - namenode - datanode1 - datanode2 - datanode3 env_file: - ./hadoop.env historyserver: image: bde2020/hadoop-historyserver:1.1.0-hadoop2.7.1-java8 container_name: historyserver depends_on: - namenode - datanode1 - datanode2 - datanode3 volumes: - hadoop_historyserver:/hadoop/yarn/timeline env_file: - ./hadoop.env nodemanager1: image: bde2020/hadoop-nodemanager:1.1.0-hadoop2.7.1-java8 container_name: nodemanager1 depends_on: - namenode - datanode1 - datanode2 - datanode3 env_file: - ./hadoop.env datanode1: image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8 container_name: datanode1 depends_on: - namenode volumes: - hadoop_datanode1:/hadoop/dfs/data env_file: - ./hadoop.env datanode2: image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8 container_name: datanode2 depends_on: - namenode volumes: - hadoop_datanode2:/hadoop/dfs/data env_file: - ./hadoop.env datanode3: image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8 container_name: datanode3 depends_on: - namenode volumes: - hadoop_datanode3:/hadoop/dfs/data env_file: - ./hadoop.env volumes: hadoop_namenode: hadoop_datanode1: hadoop_datanode2: hadoop_datanode3: hadoop_historyserver:
創(chuàng)建并啟動(dòng)hadoop集群
sudo docker-compose up
啟動(dòng)hadoop集群后,可以使用下面命令查看一下hadoop集群的容器信息
# 查看集群包含的容器,以及export的端口號(hào) sudo docker-compose ps Name Command State Ports ------------------------------------------------------------ datanode1 /entrypoint.sh /run.sh Up 50075/tcp datanode2 /entrypoint.sh /run.sh Up 50075/tcp datanode3 /entrypoint.sh /run.sh Up 50075/tcp historyserver /entrypoint.sh /run.sh Up 8188/tcp namenode /entrypoint.sh /run.sh Up 50070/tcp nodemanager1 /entrypoint.sh /run.sh Up 8042/tcp resourcemanager /entrypoint.sh /run.sh Up 8088/tc # 查看namenode的IP地址 sudo docker inspect namenode | grep IPAddress
也可以通過 http://:50070 查看集群狀態(tài)。
提交作業(yè)
要提交作業(yè),我們首先需要登錄到集群中的一個(gè)節(jié)點(diǎn),這里我們就登錄到namenode節(jié)點(diǎn)。
sudo docker exec -it namenode /bin/bash
準(zhǔn)備數(shù)據(jù)并提交作業(yè)
cd /opt/hadoop-2.7.1 # 創(chuàng)建用戶目錄 hdfs dfs -mkdir /user hdfs dfs -mkdir /user/root # 準(zhǔn)備數(shù)據(jù) hdfs dfs -mkdir input hdfs dfs -put etc/hadoop/*.xml input # 提交作業(yè) hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+' # 查看作業(yè)執(zhí)行結(jié)果 hdfs dfs -cat output/*
清空數(shù)據(jù)
hdfs dfs -rm input/* hdfs dfs -rmdir input/ hdfs dfs -rm output/* hdfs dfs -rmdir output/
停止集群
可以通過CTRL+C來終止集群,也可以通過 “sudo docker-compose stop”。
停止集群后,創(chuàng)建的容器并不會(huì)被刪除,此時(shí)可以使用 “sudo docker-compose rm” 來刪除已經(jīng)停止的容器。也可以使用 “sudo docker-compose down” 來停止并刪除容器。
刪除容器后,使用 “sudo docker volume ls” 可以看到上面集群使用的volume信息,我們可以使用 “sudo docker rm ” 來刪除。
以上這篇使用docker搭建kong集群操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持本站。
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。