本文主要介绍了利用docker构建kong集群的 *** 作,具有很好的参考价值。希望对大家有帮助。来和边肖一起看看吧。
在docker容器下构建kong集群很简单,和官网介绍的一样也很简单。新手可能经常不知道怎么处理。经过我的苦心思考,它终于建成了。
大意:不同的孔连接到同一个数据库(就一句话)
难点:如何将同一个数据库与不同主机上的孔连接起来?
要求:
1.两台主机172.16.100.101
步骤:
1.在101上安装数据库(这里使用的是cassandra)
dockerrun-d--namekong-database\ -p9042:9042\ cassandra:latest2.迁移数据库(初始化数据库是可以理解的)
dockerrun--rm\ --linkkong-database:kong-database\ -e"KONG_DATABASE=cassandra"\ -e"KONG_PG_HOST=kong-database"\ -e"KONG_CASSANDRA_CONTACT_POINTS=kong-database"\ kong:latestkongmigrationsup3.安装孔
dockerrun-d--namekong\ --linkkong-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"\ -p8000:8000\ -p8443:8443\ -p8001:8001\ -p8444:8444\ kong:latest注:以上三部分均在101上完成,https://getkong.org/install/docker/?在官网。_ga=2.68209937.1519611673-20895.54665656接下来的第四步将在另一个主机102上完成。可以在同一主机上使用link,但是link不能用于不同主机的容器关联。它可以配置如下。
4.在102上再安装一个kong,实现多节点kong集群。
dockerrun-d--namekong\ -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"\ -p8000:8000\ -p8443:8443\ -p8001:8001\ -p8444:8444\ kong:latest5.这里使用的是cassandra数据库,所以需要修改配置DB_UPDATE_PROGRATION的一个参数。默认值为0,可以更改为5来输入容器。
dockerexec-itkongbash//进入kong容器 cdetc/kong//进入该目录下 cpkong.conf.defaultkong.conf//复制kong.conf.default文件为kong.conf文件 vikong.conf//修改db_update_propagation这个配置项出口//出口空容器
呃重启孔//重启孔
注:101和102上的孔需要修改该配置项。DB_UPDATE_PROGRATION配置项的介绍可以去官网。
6.验证孔集群
您可以在101上注册一个api,如下所示
curl-i-XPOST\ --urlhttp://172.16.100.101:8001/apis/\ --data'name=example-api'\ --data'hosts=example.com'\ --data'upstream_url=http://mockbin.org'然后检查该api是否注册成功:
curl-Ihttp://172.16.100.101:8001/APIs/example-API
返回如下:
您也可以通过102机器主机进行查询:
curl-Ihttp://172.16.100.102:8001/APIs/example-API
如果你也返回和上面一样的结果,说明你可以访问相同的api,api信息保存在数据库中,也就是说你可以访问相同的数据库,那么你的kong集群就构建成功了。希望对你有帮助。
其他知识:使用docker-compose创建hadoop集群
下载docker图像
首先下载你需要使用的五个docker镜像。
dockerpullbde2020/hadoop-namenode:1.1.0-hadoop2.7.1-java8 dockerpullbde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8 dockerpullbde2020/hadoop-resourcemanager:1.1.0-hadoop2.7.1-java8 dockerpullbde2020/hadoop-historyserver:1.1.0-hadoop2.7.1-java8 dockerpullbde2020/hadoop-nodemanager:1.1.0-hadoop2.7.1-java8设置hadoop配置参数
使用以下内容创建hadoop.env文件:
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创建docker-compose文件
使用以下内容创建docker-compose.yml文件:
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:创建并启动hadoop集群
sudodocker-组合起来
启动hadoop集群后,可以使用以下命令查看hadoop集群的容器信息
#查看集群包含的容器,以及export的端口号 sudodocker-composeps NameCommandStatePorts ------------------------------------------------------------ datanode1/entrypoint.sh/run.shUp50075/tcp datanode2/entrypoint.sh/run.shUp50075/tcp datanode3/entrypoint.sh/run.shUp50075/tcp historyserver/entrypoint.sh/run.shUp8188/tcp namenode/entrypoint.sh/run.shUp50070/tcp nodemanager1/entrypoint.sh/run.shUp8042/tcp resourcemanager/entrypoint.sh/run.shUp8088/tc #查看namenode的IP地址 sudodockerinspectnamenode|grepIPAddress您还可以在http://:50070上检查集群状态。
提交作业
要提交作业,我们首先需要登录到集群中的一个节点,这里我们登录到namenode节点。
sudodockerexec-itNameNode/bin/bash
准备数据并提交作业。
cd/opt/hadoop-2.7.1 #创建用户目录 hdfsdfs-mkdir/user hdfsdfs-mkdir/user/root #准备数据 hdfsdfs-mkdirinput hdfsdfs-putetc/hadoop/*.xmlinput #提交作业 hadoopjarshare/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jargrepinputoutput'dfs[a-z.]+' #查看作业执行结果 hdfsdfs-catoutput/*清除空数据
hdfsdfs-rminput/* hdfsdfs-rmdirinput/ hdfsdfs-rmoutput/* hdfsdfs-rmdiroutput/停止集群
您可以通过CTRL+C或“sudodocker-composestop”来终止集群。
群集停止后,创建的容器不会被删除。此时,您可以使用“sudodocker-composerm”删除停止的容器。你也可以使用“sudodocker-composedown”来停止和删除容器。
删除容器后,使用“sudodockervolumels”可以看到上述集群使用的卷信息,我们也可以使用“sudodockerrm”删除。
以上用docker搭建kong集群的 *** 作,都是边肖分享的内容。希望给大家一个参考,多多支持我们。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)