云服务器内容精选

  • 亲和性概念阐述 在应用没有容器化之前,原先一个虚拟机上会装多个组件,进程间会有通信。 但在做容器化拆分的时候,通常直接按进程拆分容器。比如业务进程一个容器,监控日志处理或者本地数据放在另一个容器,并且有独立的生命周期。这时如果进程分布在网络中两个较远的点,请求经过多次转发,性能会很差。 亲和性可以实现就近部署,增强网络能力实现通信上的就近路由,减少网络的损耗。 反亲和性主要是出于高可靠性考虑,尽量分散实例,某个节点故障的时候,对应用的影响只是N分之一或者只是一个实例。 应用与可用区的亲和性 亲和:决定应用组件部署在特定的可用区中。 反亲和:决定应用组件不能部署在特定的可用区中。 应用与节点间的亲和性 亲和:决定应用组件部署在某些特定的主机中。 反亲和:决定应用组件不能部署在某些特定的主机中。 应用间的亲和性 决定应用组件部署在相同或不同节点中。 亲和:用户可根据业务需求进行应用组件的就近部署,应用组件间通信就近路由,减少网络消耗。如图1所示,APP1、APP2、APP3和APP4部署在相同节点上,为亲和性部署。 图1 应用间亲和 反亲和:同个应用组件的多个实例反亲和部署,减少宕机影响;互相干扰的应用反亲和部署,避免干扰。 如图2所示,APP1、APP2、APP3和APP4分别部署在不同节点上,这四个应用为反亲和性部署。 图2 应用间反亲和
  • 使用场景 表1 存储项使用场景说明 项目 场景 云硬盘存储 EVS目前支持普通I/O、高I/O、超高I/O三种规格。 普通I/O:后端存储由SATA存储介质提供,适用于大容量、读写速率要求不高、事务处理较少的场景,如:开发测试、企业办公应用。 高I/O:后端存储由SAS存储介质提供,适用于性能相对较高、读写速率要求高、有实时数据存储需求的场景,如:创建文件系统、分布式文件共享。 超高I/O:后端存储SSD存储介质提供,适用于高性能、高读写速率要求、数据密集型的场景,如:NoSQL、关系型数据库、 数据仓库 (如Oracle RAC、SAP HANA)。 文件存储 文件存储适用于 媒体处理 、内容管理、大数据和分析工作负载程序等场景。 对象存储 标准存储: 适用于有大量热点文件或小文件,且需要频繁访问(平均一个月多次)并快速获取数据的业务场景。例如云应用、数据分析、内容分析、热点对象等。 低频访问存储: 适用于不频繁访问(平均一年少于12次),但需要快速获取数据的业务场景。例如静态网站托管、备份/活跃归档、作为云服务的存储资源池或者备份存储等。 极速文件存储 极速文件存储具有按需申请,快速供给,弹性扩展,方便灵活等特点,适用于DevOps、容器微服务、企业办公等应用场景。 主机路径挂载 将应用组件所在宿主机的文件目录挂载到应用指定的挂载点中,如应用组件需要访问/etc/hosts则可以使用HostPath映射/etc/hosts等场景。 须知: 请不要挂载在系统目录下,如“/”、“/var/run”等,会导致应用组件实例异常。建议挂载在空目录下。若目录不为空,请确保目录下无影响应用组件实例启动的文件。否则文件会被替换,导致应用组件实例启动异常。 临时路径挂载 用于临时存储,生命周期与应用组件实例相同。应用实例消亡时,EmptyDir会被删除,数据会永久丢失。 配置项挂载 将配置项中的key映射到应用中,可以用于挂载配置文件到指定应用组件目录。 密钥挂载 将应用认证信息、应用密钥等敏感信息存储在密钥中,并将密钥挂载到应用组件的指定路径中。
  • 健康检查方式 HTTP请求检查 HTTP请求方式针对的是提供HTTP/HTTPS服务的应用组件,集群周期性地对该应用发起HTTP/HTTPS GET请求,如果HTTP/HTTPS response返回码属于200~399范围,则证明探测成功,否则探测失败。使用HTTP请求探测必须指定应用监听的端口和HTTP/HTTPS的请求路径。 例如:提供HTTP服务的应用组件,端口为80,HTTP检查路径为/health-check,主机地址为containerIP,那么集群会周期性地对应用发起如下请求: GET http://containerIP:80/health-check HTTP请求检查中的主机地址,如果不填写,默认为实例IP。 TCP端口检查 对于提供TCP通信服务的应用,集群周期性地对该应用建立TCP连接。如果连接成功,则证明探测成功,否则探测失败。选择TCP端口探测方式,必须指定应用监听的端口。比如有一个nginx应用组件,它的服务端口是80,对该应用组件配置了TCP端口探测,指定探测端口为80,那么集群会周期性地对该应用组件的80端口发起TCP连接,如果连接成功则证明检查成功,否则检查失败。 执行命令检查 命令检查方式要求用户指定一个应用组件内的可执行命令,集群会周期性地在应用组件内执行该命令,如果命令的返回结果是0则检查成功,否则检查失败。 对于上面提到的TCP端口检查和HTTP请求检查,都可以通过执行命令检查的方式来替代: 对于TCP端口探测,可以使用程序来对应用组件的端口进行connect,如果connect成功,脚本返回0,否则返回-1。 对于HTTP请求探测,可以使用脚本来对应用组件进行wget: wget http://127.0.0.1:80/health-check 并检查response的返回码,如果返回码在200~399的范围,脚本返回0,否则返回-1。 必须把要执行的程序放在应用组件的镜像里面,否则会因找不到程序而执行失败。 如果执行的命令是一个shell脚本,由于集群在执行应用组件里的程序时,不在终端环境下,因此不能直接指定脚本为执行命令,需要加上脚本解释器。比如脚本是/data/scripts/health_check.sh,那么使用执行命令检查时,指定的程序应该是sh /data/scripts/health_check.sh。究其原因是集群在执行应用组件里的程序时,不在终端环境下。