简介

容器内的端口通常对应一个宿主机端口。不同容器映射的宿主机端口可能产生冲突,所以EWS(TAE3.0)统一管理容器映射的宿主机端口,以避免端口冲突。例如,网络模式为HOST模式下,使用同一个Tomcat镜像在一台宿主机上启动了两个容器A和B,EWS(TAE3.0)为容器A的Tomcat分配了HTTP端口5000,则容器B启动的时候,系统会感知到5000端口已被分配,并为容器B分配HTTP端口5001。端口分配是从5000开始向上递增的。

网络模式影响宿主机与容器端口的分配策略。在HOST模式下,宿主机端口和容器端口是相同的端口,在NAT模式下,宿主机端口和容器端口是不同的端口。所有使用EWS(TAE3.0)创建的容器,都可以保证端口不会冲突。

官方镜像和自定义镜像的端口分配策略也有不同,官方镜像所需的端口都是已知的,所以完全由EWS(TAE3.0)负责分配,用户无需感知端口;自定义镜像由于系统无法感知镜像所需端口类型(接入层端口,镜像内部使用端口),EWS(TAE3.0)会将端口名以及系统分配的端口号以KV的形式存放在容器的系统变量文件env.properties(/acs/conf/env.properties)中,需要用户从env.properties中获取对应端口名的端口。

通用端口列表

通用端口适用于所有的镜像

端口名 端口解释
port.webssh webssh 功能所需端口
port.sshd sshd 所需端口

官方镜像所需端口列表

镜像

端口名

端口解释

Tomcat7

port.mainport

Http监听端口,接入层端口

port.redirect

Tomcat的redirect端口

port.shutdown

Tomcat的shutdown端口

port.ajp

Tomcat的ajp端口

PHP

port.NGINX_PORT

NGINX监听的HTTP端口

Jetty

port.mainport

Http监听端口,接入层端口

port.monitorport

Jetty的monitorport

Python

port.NGINX_PORT

NGINX监听的HTTP端口

Nginx

port.mainport

NGINX监听的HTTP端口

自定义镜像端口获取方法

这里的自定义镜像端口指的是容器启动时所需的端口。例如,自定义镜像tomcat启动时需要指定一个http监听端口,则TAE(EWS)会为该http监听端口分配一个不冲突的端口号,用户需要在容器启动时使用该端口号替换Tomcat的http监听端口。
自定义镜像端口分为两种类型:接入层端口和容器预留端口。
接入层端口在创建服务时就已经确定,主要用作负载均衡映射。如下图所示


使用HOST混合模式的自定义镜像,使用同一接入层就需要一个接入层端口,环境变量名为port.slbhttp0,则服务启动之后,TAE会将系统指定的port.slbhttp0作为负载均衡后端端口绑定至接入层,需要用户使用port.slbhttp0环境变量对应的端口替换镜像的http监听端口,例如Tomcat的HTTP监听端口。这里的环境变量指的是容器启动后的env.properties文件,位于/acs/conf/目录下。一个标准的env.properties文件内容如下图所示

容器预留端口是系统为容器预留的10个连续的不会产生冲突的端口,同样在env.properties文件中可以读取。端口起点为port.reservedstart,端口的终点为port.reservedend。在改端口范围内自由选择端口。

容器端口与宿主机的端口获取方法

容器端口获取方法

容器启动所需的端口都存储在环境变量配置文件env.properties中,位于容器内/acs/conf/目录下。

宿主机端口获取方法

从容器的视角上来看,该容器占用了宿主机的哪些端口,可以通过TAE的控制台,容器管理查看各容器占用的宿主机端口。如下图



从宿主机的角度上来看该宿主机有哪些端口被占用,需要用户登录到ECS上面,通过natstat命令自行查询
 

FAQ

关于此文档暂时还没有FAQ
返回
顶部