harbor服务,cloudfoundry的dea和warden实现UDP的端口映射
来源:互联网 发布:ios抓取网页数据 编辑:程序博客网 时间:2024/06/05 08:29
背景
最近在研究stackato的harbor端口服务器,于是将其部署到cloudfoundry中进行研究。
目标
进过测试,harbor在CF中对tcp的支持正常,但是CF的dea和warden对udp不支持,所以需要改造dea和warden。
dea和warden的通讯流程
先说说dea和warden的通讯流程吧,下面借用论坛中另外一个博客的图片:
warden协议改造
这个好理解,dea收到harbor的消息后,必须知道需要映射tcp还是udp的端口。
所修改的协议为:Warden::Protocol::NetInRequest
dea端warden接口改造
dea与warden交互的接口在“dea_next\lib\container”目录下,所需要修改的主要是NetInRequest协议对应的接口。
具体可以看代码
warden内部net.sh脚本改造
其中要修改的脚步是:net.sh
主要是一下一个“in”和“out”内容:
"in")
if [ -z "${HOST_PORT:-}" ]; then
echo "Please specify HOST_PORT..." 1>&2
exit 1
fi
if [ -z "${CONTAINER_PORT:-}" ]; then
echo "Please specify CONTAINER_PORT..." 1>&2
exit 1
fi
iptables -t nat -A ${nat_instance_chain} \
--protocol tcp \
--destination "${external_ip}" \
--destination-port "${HOST_PORT}" \
--jump DNAT \
--to-destination "${network_container_ip}:${CONTAINER_PORT}"
;;
"out")
if [ -z "${NETWORK:-}" ] && [ -z "${PORT:-}" ]; then
echo "Please specify NETWORK and/or PORT..." 1>&2
exit 1
fi
opts=""
if [ -n "${NETWORK:-}" ]; then
opts="${opts} --destination ${NETWORK}"
fi
# Restrict protocol to tcp when port is specified
if [ -n "${PORT:-}" ]; then
opts="${opts} --protocol tcp"
opts="${opts} --destination-port ${PORT}"
fi
iptables -I ${filter_instance_chain} 1 ${opts} --jump RETURN
;;
其实内容可以不变,再将tcp改为udp,再加2个“udp_in” “udp_out”分支应该就可以了。
warden内部接口修改
当然,也要修改warden内部调用net.sh的接口,我初步看了看,应该是修改src\warden\warden\lib\warden\container\features目录下的net.rb文件。具体修改,可以看看代码。
harbor->dea>warden的udp测试
环境建立
当然,首先创建harbor服务实例,部署APP应用。
查看warden内部应用运行情况
看见udp端口已经建立。
查看warden的iptables列表
通过iptables命令,查看端口信息:
iptables -t nat -nL
会发现4000端口是tcp类型,图我就不显示了。
所以用iptables删除该条规则,重新建立udp规则映射,如下图
harbor后端连接的端口是10.10.23.64:37654。所以harbor就可以通过访问10.10.23.64:37654映射端口,就可以访问warden内部的10.254.2.14:4000应用端口。
- harbor服务,cloudfoundry的dea和warden实现UDP的端口映射
- CloudFoundry 学习之 warden 的安装
- Cloudfoundry之warden容器的资源限制
- cloudfoundry warden安装和配置
- 在Ubuntu12.04上部署CloudFoundry-ng (一) dea_ng和warden的部署
- Cloudfoundry之warden容器的核心进程wshd
- IronFoundry Warden/DEA 在win2012中 安装和配置
- CloudFoundry源码分析:DEA
- CloudFoundry dea实践经验
- 结合Cloudfoundry v2详解warden的源码分析与使用(一)
- CloudFoundry之warden安装
- CloudFoundry DEA运作源码分析
- CloudFoundry之DEA源码分析
- CloudFoundry DEA staging 源码流程
- cloudfoundry dea 之 app staging
- CloudFoundry warden 启动源码分析
- VMware Harbor:基于 Docker Distribution 的企业级 Registry 服务
- harbor的搭建
- update值与原值相同时,SQL Server会真的去update还是忽略呢?
- HDU 3367 Pseudoforest 最小生成树
- qtp运行时,缺少对象Wscript的解决方法
- LINK : fatal error LNK1104: 无法打开文件“C:\Qt\4.8.0\lib\QtGuid4.lib”
- Oracle WorkFlow 工作流 中篇
- harbor服务,cloudfoundry的dea和warden实现UDP的端口映射
- 黑马程序员_iOS开发C语言基础基本语法易错点
- 数据挖掘的十种分析方法
- ios7 ios8 Notification
- [ACM] poj 1236 Network of Schools (有向强连通分量)
- QEMU ARM异常处理流程
- 2014-09-25——jQuery EasyUI消息提示框
- boost::shared_ptr转化为普通对象
- C#中导出Excel表