用友t3 hosts(用友t3 横打 a4)
日期:2023年06月20日 23:45 浏览量:3
戳蓝字“CSDN云计算”关注我们哦!
2015年,谷歌成立了原生云计算基金会,标志着CloudNative时代的来临。它以容器化封装、自动化管理、面向微服务等特点,向人们展示了应用云化开发的新模式。在业界,DevOps全栈开发运维模式正在继续向前推进,以解决传统单体架构的应用开发、测试、运维无法一体化而导致的上线周期长,开发资源利用率低,无法满足应用快速上线和迭代要求等问题。
2018年,用友云开发者中心作为CloudNative模式的引领者,作为DevOps模式的践行者,在一次又一次的迭代研发中经历了层层的蜕变:在4.19迭代中,上线了应用流水线功能,大大简化了应用CI、CD时的配置及操作,提升了构建效率;在8.19迭代中,以提升平台稳定性为重心,调整优化了平台底层架构,使平台稳定性得到了大幅度提升;在12.19迭代中,创新性的研发了产品流水线功能,打通了产品下各模块之间,各环境之间的应用部署,再一次提升了产品的部署效率。
当前,随着开发者中心稳定性及易用性的提升,越来越多的产品和服务正在向开发者中心迁移,需要运维的应用规模成指数级增长。本文立足于当下环境,以一名DevOps(yunwei)工程师的角度,向大家介绍一些在践行DevOps中遇到的常见的、共性的问题,并给出这些问题的排查思路及解决办法,助力应用部署过程保证顺利上云。
1.通过编写Dockerfile方式,灵活构建应用
在开发者中心应用流水线中,已经提供了不同类型应用的标准构建模式。同时为提供更加灵活的应用构建方式,开发者中心提供了手动编写Dockerfile的模式来构建应用。通过手动编写Dockerfile,用户拥有极大的自由度来构建镜像,并可解决构建时遇到的一些问题。
流水线支持Dockerfile的方式构建应用
例如,针对原有的Node.js应用构建模式,可能遇到以下问题:
容器启动之后才执行编译代码操作,导致应用启动过程时间变长
默认构建镜像的过程中无法选择npm源,从而导致镜像构建失败
现在,用户可以通过编写Dockerfile的方式,在构建镜像的过程中指定npm源,并在构建镜像的过程中即对应用进行编译。这样不仅解决了应用编译和构建的问题,而且也加速了应用容器在部署时的启动速度。
本文给出一个具体的Dockerfile示例,以供参考:
FROM dockerhub.yonyou.com:5000/node:9
MAINTAINER 用户名 “user-email@yonyou.com”
WORKDIR /design/workdir
ADD ./ /design/workdir
RUN cnpm install \
&& npm run build:dll \
&& npm run build
VOLUME /design/workdir/log
EXPOSE 8080
CMD [“npm run start”]
2.快速查看应用运行日志和异常日志
在应用上云过程中,经常会遇到需要查看应用日志以排查问题的场景。开发者中心提供了快速便捷的查看应用日志和异常日志的方法,具体如下。
首先通过开发者中心,进入应用管理界面,在“实例”页签中可以看到(容器日志)和(容器控制台)。通过点击容器日志图标,可以在弹出窗口中查看应用输出到控制台的日志;通过点击容器控制台图标,可以在弹出窗口中登录至容器内操作系统中,进而执行Linux Shell命令,以进行查看应用日志文件等操作。
通过开发者中心的应用管理查看日志
具有管理员权限的用户,还可以直接访问应用所在主机,在后台主机中查看应用日志。
查看普通资源池,即Mesos架构平台下应用日志,可以在浏览器中访问主控机:5050端口,来访问Mesos-Master管控页面;同时也可以访问主控机:8080端口,打开Marathon管理页面。两者均可以搜索到应用的容器,进而查看应用运行日志。
3.排查应用无法正常启动的几种方法
在部署应用后,可能会遇到应用无法正常启动,无法通过健康检查的情形,此时可以通过以下几种方法,排查并解决问题。
1) 确认配置了正确的健康检查配置项
导致应用无法正常启动并运行的原因有很多。对于Java Web等类型的应用,开发者中心配置了默认的健康检查页面。当应用无法通过健康检查时,可以先在应用管理菜单,应用详情的属性页签下,查看健康检查项。健康检查提供了HTTP、UDP、COMMAND等三种方式,只有配置了正确的健康检查,才能通过健康检查验证。
健康检查配置项
2) 确认配置了正确的应用服务端口
应用在启动会向系统申请服务端口,这个端口会实际会在应用所在的容器中占用。在相应的配置项中,必须指定了对应的服务端口,才能保证应用的正常访问。
应用实际申请的服务端口,可以通过进入容器内部查看。此时需确认应用的服务端口,是否和应用详情的属性页签中,容器端口项相一致。若不一致,则将配置修改为相同的容器端口号,点击保存并重启按钮使配置生效。
容器端口相一致
3)确认为应用分配了足够的系统资源
应用在启动和运行时需要向系统申请内存等资源。如果应用出现无法正常启动,或不断重启的现象,可能是由于分配的资源不足导致。
在开发者中心普通资源池部署的应用,建议内存分配为1024MB~2048MB,CPU可设置为0.2~0.5.在VIP资源池部署的应用,内存最大值建议设置为1024MB~4096MB,CPU最大值建议设置为1~2.
4)从应用日志入手,分析具体原因
在确认以上配置正确后,若应用仍无法正常启动,可以通过查看应用日志的方式,寻找导致应用无法启动的原因。限于篇幅原因,此处不再赘述。
4.应用通过健康检查但无法正常访问的排查方法
应用通过健康检查后,可能会遇到点击应用的域名,但却不能正常访问应用的情形。此时需从应用访问链路角度入手,排查问题。
应用健康示意图
对于普通资源池部署的应用,本文提供一种排查问题的思路如下:
普通资源池应用无法正常访问排查问题思路
1)进入应用容器中,执行命令如curl -Lv localhost:8080/api,查看应用是否正常启动。若应用未正常启动,可参考第3节内容排查问题;
2)若应用正常启动,则需排查Marathon-LB负责均衡是否出现问题。通过浏览器或者Postman等工具,请求192.168.0.3:38228/api.其中192.168.0.3为Marathon-LB所在服务器IP地址;38228为应用随机映射端口号,可在应用详情,属性页签下的环境变量中查看。如不能正常返回结果,则说明Marathon-lb负载均衡环节出现问题;
查看应用的随机映射端口号
3)若Marathon-LB负责均衡无异常,可在Redis中查询Ceryx为应用绑定的ip和端口是否存在问题。
5.应用部署时,手动调试启动问题的方法
如果应用启动过程中遇到问题,用户可以手动调试自己的应用,具体的方法为:
1)修改启动命令,以保证应用容器正常启动:touch test && tail -f test
修改启动命令
2)修改健康检项为1s,以使容器绝对通过健康检查:
修改健康检查
3)点击保存并重启按钮,随后即可进入容器,输入应用的启动命令启动应用,或输入其他命令,排查问题。
进入容器,执行命令
6.巧用环境变量,灵活调整应用运行态
当Java应用启动遇到了PermGen等类似问题时,可以在应用管理菜单,属性页签下,在环境变量里面设置相应的环境变量,来增加应用的性能参数,如图所示。
设置环境变量
7.k8s启用host模式,实现共享宿主机网络
开发者中心目前已经支持在VIP资源池以HOST模式部署的应用,这可保证一些特殊类型的应用正常运行,如Dubbo框架应用。在HOST模式下部署的Dubbo框架应用,可以保证混布的Consumer也能够消费到部署到Kubernetes集群中的Provider.
具体的使用方法如图所示,用户需要在应用详情-属性页签下的命令项中,修改启动命令,将容器默认的8080端口替换为系统分配的PORT0变量。
应用以HOST模式部署
应用修改为host之后的启动命令为:
sed 's/8080/'$PORT0'/g' -i conf/server.xml && /usr/local/tomcat/bin/catalina.sh run
8.URL中特殊字符的解决办法
开发者中心使用的基础镜像版本均为各对应类型应用环境的标准最新版,因此一些老版本的应用特性可能与之不兼容,如在Tomcat 7的低版本7.0.69中支持URL里包含“{”、“}”等特殊字符,但是Tomcat 7的高版本不支持此类字符。解决办法是在应用详情,属性页签下的命令项中,增加如下命令:
echo ' tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}' >> conf/catalina.properties && /usr/local/tomcat/bin/catalina.sh run
小结
本文主要介绍了用户在使用开发者中心部署应用的过程中,可能遇到的常见的、共性的问题,并给出解决办法和问题排查思路。
当前,用友云开发者中心仍然背负者CloudNative模式引领者的使命,继续践行DevOps理念,向用户提供更加完备的功能,以协助企业优化产品架构,提供弹性、灵活、高可用的运行环境,协助用户应用顺利上云。
若您在使用开发者中心过程中遇到任何问题,欢迎随时与我们的技术人员反馈,如将问题反馈至我们设立的用户暖心群等,您提出的问题将会得到专业人员的迅速解决!
添加小编微信:color_ld,备注“进群+姓名+公司职位”即可,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!
2.征稿:
投稿邮箱:liudan@csdn.net;微信号:color_ld。请备注投稿+姓名+公司职位。
推荐阅读
-
铜陵平安保险公司电话,铜陵平安保险电话号码
2023-06-20
5.应用部署时,手动调试启动问题的方法如果应用启动过程中遇到问题,用户可以手动调试自己的应用,具体的方法为:1)修改启动...
-
武宣新华保险公司电话(武宣新华保险公司电话号码)
2023-06-20
5.应用部署时,手动调试启动问题的方法如果应用启动过程中遇到问题,用户可以手动调试自己的应用,具体的方法为:1)修改启动...
-
新华保险公司理念图(新华保险公司文化理念)
2023-06-20
5.应用部署时,手动调试启动问题的方法如果应用启动过程中遇到问题,用户可以手动调试自己的应用,具体的方法为:1)修改启动...
-
投资全牌照的保险公司,投资全牌照的保险公司有哪些
2023-06-20
5.应用部署时,手动调试启动问题的方法如果应用启动过程中遇到问题,用户可以手动调试自己的应用,具体的方法为:1)修改启动...
-
吸烟肺癌保险公司是否?吸烟肺癌保险公司是否报销
2023-06-20
5.应用部署时,手动调试启动问题的方法如果应用启动过程中遇到问题,用户可以手动调试自己的应用,具体的方法为:1)修改启动...
-
无责任 保险公司 无责任保险公司赔吗
2023-06-20
5.应用部署时,手动调试启动问题的方法如果应用启动过程中遇到问题,用户可以手动调试自己的应用,具体的方法为:1)修改启动...