首页 » 网站推广 » tsfphp技巧_腾云忆想技能大年夜牛手把手教你基于TSF Mesh的前后端应用统一托管

tsfphp技巧_腾云忆想技能大年夜牛手把手教你基于TSF Mesh的前后端应用统一托管

访客 2024-11-18 0

扫一扫用手机浏览

文章目录 [+]

TSF Mesh 微做事平台(Tencent Service Mesh Framework,以下简称 TSF Mesh)是一个根本举动步伐层,用于处理做事间的通信。
TSF Mesh 是由一系列轻量级的网络代理(又称 Sidecar)组成,这些代理与运用程序支配在一起,通过挟制运用流量进行做事通信,而运用程序不感知 Sidecar 的存在。
TSF Mesh 可以支持不同框架、不同措辞的运用程序,包括前端运用以及后端运用,以统一的办法运行在腾讯微做事平台 TSF(Tencent Service Framework)中。

本文将通过一个 java 运用和一个基于 nginx 的静态运用,来先容如何通过 TSF Mesh 进行前后端运用的统一托管。

tsfphp技巧_腾云忆想技能大年夜牛手把手教你基于TSF Mesh的前后端应用统一托管

Demo下载地址:

tsfphp技巧_腾云忆想技能大年夜牛手把手教你基于TSF Mesh的前后端应用统一托管
(图片来自网络侵删)

(复制链接到浏览器查看详情)

https://cloud.tencent.com/document/product/649/30436

王维

多年开拓架构履历,熟习电商、支付业务。
熟习微做事架构的开拓与落地。
目前紧张聚焦于微做事、行列步队及周边中间件。

一、环境准备

首先,须要登录 TSF 掌握台,进行干系环境与资源的创建。

1.运用

单击【运用管理】>【新建运用】按钮。
填写运用信息,选择支配办法【容器支配】,选择运用类型【Mesh运用】,点击【提交】按钮,创建运用。

2.集群

单击【集群】>【新建集群】按钮。
填写集群信息,选择容器类型【容器集群】,点击【提交】按钮,创建容器集群,然后导入云主机。

3.支配组

单击【支配组】>【新建支配组】按钮。
填写支配组信息,并单击【保存&下一步】按钮,创建支配组。
详细操作步骤,请参考TSF官方操作指南中【环境与资源管理】及【运用支配】部分。

>>>复制链接到浏览器查看详情:

https://cloud.tencent.com/document/product/649/36499

二、构建 java 运用镜像

将运用程序打包,添加配置文件,编写 Dockerfile 文件,构建镜像,推送到指定镜像仓库。

1.运用打包

以 java 程序为例解释程序包: userService.tar.gz,包内文件构造如下:文件构造

文件解释

文件示例

userService/apis/user.yaml

openapi: 3.0.0info: version: "1.0.0" title: user servicepaths: /api/v6/user/create: get: responses: '200': description: OK '401': description: Unauthorized '402': description: Forbidden '403': description: Not Found /api/v6/user/account/query: get: responses: '200': description: OK '401': description: Unauthorized '402': description: Forbidden '403': description: Not Found /health: get: responses: '200': description: OK '401': description: Unauthorized '402': description: Forbidden '403': description: Not Found

spec.yaml

apiVersion: v1kind: Applicationspec: services: - name: user # 做事名 ports: - targetPort: 8089 # 做事监听端口 protocol: http # 目前支持 HTTP、HTTP2 和 gRPC healthCheck: path: /health # 康健检讨 URL

<旁边滑动查看更多>

⚠️ 把稳

healthCheck 是康健检讨的接口,请确认本地调用curl -i -H 'Host: local-service' {ip}:{Port}/health能返回200,否则,康健检讨失落败会导致此做事实例变为离线状态,其它做事将无法调用该做事实例;如果不供应此康健检讨接口,sidecar 会通过 TCP 的办法探测 targetPort 是否连通来判断此做事实例是否康健。

Host: local-service是代理加的 header,业务如果对 Host 有检讨(如 Nginx 配置的 server_name),则需将 local-service 加到白名单。

start.sh

#!/bin/bashmkdir -p /opt/tsf/app_config/apis cp /root/app/userService/spec.yaml /opt/tsf/app_config/cp -r /root/app/userService/apis /opt/tsf/app_config/cd /root/app/userService/java -jar tsf-user-demo-1.0-SNAPSHOT.jar

<旁边滑动查看更多>

文件打包

将以上文件放入到文件夹(如:userService),通过以下命令,将上述文件打包成tar.gz(如:userService.tar.gz)。

tar -zcvf userService.tar.gz userService/

如果是在 mac 操作系统上则需加 COPYFILE_DISABLE=1 参数去除掉特有的隐蔽文件。

COPYFILE_DISABLE=1 tar -zcvf userService.tar.gz userService/

<旁边滑动查看更多>

1.Dockerfile

在运用程序包同级目录中新建 Dockerfile 文件,如下:

Dockerfile 文件内容示例:

FROM centos:7RUN yum update -y && yum install -y java-1.8.0-openjdk# 设置时区。
这对付日志、调用链等功能能否在 TSF 掌握台被检索到非常主要。
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeRUN echo "Asia/Shanghai" > /etc/timezoneRUN mkdir /root/app/# 个中 userService.tar.gz 是 Mesh 运用压缩包ADD userService.tar.gz /root/app/# 指定到jar确当前目录实行WORKDIR /root/app/userServiceENTRYPOINT ["bash", "start.sh"

<旁边滑动查看更多>

⚠️ 把稳

根本镜像,请根据详细情形进行更换

3.构建镜像

打开命令行工具,进入程序包所在文件夹。
实行如下命令构建镜像:

docker build . -t ccr.ccs.tencentyun.com/{tsf_uid}/{app_name}:{tag

<旁边滑动查看更多>

4.推送镜像

登录镜像仓库

docker login --username={user_name} ccr.ccs.tencentyun.com

<旁边滑动查看更多>

推送镜像

docker push ccr.ccs.tencentyun.com/{tsf_uid}/{app_name}:{tag}

<旁边滑动查看更多>

⚠️ 把稳

ccr.ccs.tencentyun.com/

{tsf_uid}/{app_name}到掌握台镜像仓库对应的运用记录中复制即可。

{tsf_uid}为tsf登录账号对应的uid,{app_name}为运用名称,与TSF掌握台运用名称保持同等,{tag}为镜像的版本,自行指定即可(如:v1)。

三、构建 nginx 静态运用镜像

1.运用打包

以 tsf_demo_nginx_mesh 程序为例解释,文件构造如下。
文件构造

文件解释

文件示例

apis/ngnix-service.yaml

openapi: 3.0.0info: version: "1.0.0" title: ngnix-servicepaths: /webs/hello.html: get: responses: '200': description: OK '401': description: Unauthorized '402': description: Forbidden '403': description: Not Found /webs/health.html: get: responses: '200': description: OK '401': description: Unauthorized '402': description: Forbidden '403': description: Not Found

spec.yaml

apiVersion: v1kind: Applicationspec: services: - name: ngnix-service # 做事名 ports: - targetPort: 80 # 做事监听端口 protocol: http # 目前支持 HTTP、HTTP2 和 gRPC healthCheck: path: /webs/health.html # 康健检讨 URL

<旁边滑动查看更多>

start.sh

#!/bin/bash# 拷贝配置文件mkdir -p /opt/tsf/app_config/apis cp /usr/share/nginx/html/spec.yaml /opt/tsf/app_config/cp -r /usr/share/nginx/html/apis /opt/tsf/app_config/# 启动 nginxnginx -g "daemon off;"

<旁边滑动查看更多>

2.Dockerfile

在运用程序文件夹同级目录中新建 Dockerfile 文件,如下:

Dockerfile 文件内容示例:

# 根本镜像FROM nginx#将本地文件拷贝到镜像中,tsf_demo_nginx_mesh 文件夹名称可自行定义COPY ./tsf_demo_nginx_mesh /usr/share/nginx/html/WORKDIR /usr/share/nginx/html/RUN chmod +x start.shENTRYPOINT ["bash","./start.sh"]

<旁边滑动查看更多>

3.构建镜像

打开命令行工具,进入程序包所在文件夹。
实行如下命令构建镜像:

docker build . -t ccr.ccs.tencentyun.com/{tsf_uid}/{app_name}:{tag}

<旁边滑动查看更多>

4.推送镜像

登录镜像仓库

docker login --username={user_name} ccr.ccs.tencentyun.com

<旁边滑动查看更多>

推送镜像

docker push ccr.ccs.tencentyun.com/{tsf_uid}/{app_name}:{tag}

<旁边滑动查看更多>

5.nginx 配置解释

以上为nginx默认配置利用办法,如须要变动默认配置(如:端口号、重定向等),请自行修正对应的 nginx.conf 文件,并一起打包到镜像中。
nginx.conf 文件示例:

user nginx;worker_processes 1;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;events { worker_connections 1024;}http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main 'remote_addr:$remote_addr - remote_user:$remote_user [$time_local] "$request" ' 'status:$status request_time:$request_time body_bytes_sent:$body_bytes_sent http_referer:"$http_referer" ' 'http_user_agent:"$http_user_agent" http_x_forwarded_for:"$http_x_forwarded_for" ' 'upstream_status:$upstream_status upstream_addr:$upstream_addr upstream_response_time:$upstream_response_time'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; client_max_body_size 20m; server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } location /baidu { proxy_pass http://www.baidu.com/; } # 通过做事名访问后端做事 user location /user { proxy_pass http://user/api/v6/user/account/query; proxy_http_version 1.1; } # 通过做事名访问后端做事 user location /health { proxy_pass http://user/health; proxy_http_version 1.1; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }}

<旁边滑动查看更多>

⚠️ 把稳

如有须要,可以通过tsf中的做事名称进行对后端做事的访问,如上述 location /user 配置。

在 Dockerfile 中将上述 nignx.conf 拷贝到指定目录

FROM nginxCOPY ./tsf_demo_nginx_mesh /usr/share/nginx/html/ADD nginx.conf /etc/nginx/nginx.confWORKDIR /usr/share/nginx/html/RUN chmod +x start.shENTRYPOINT ["bash","./start.sh"]

<旁边滑动查看更多>

如果须要在nginx访问后端做事,则须要确保 istio_proxy 先于 nginx 启动,这样才能实现通过做事名称对后端做事进行访问。
start.sh 文件示例:

#!/bin/bash# 拷贝配置文件mkdir -p /opt/tsf/app_config/apis cp /usr/share/nginx/html/spec.yaml /opt/tsf/app_config/cp -r /usr/share/nginx/html/apis /opt/tsf/app_config/# 检测 isito-proxy 状态是否就绪while [ true ]do already_run=`curl 127.0.0.1:15021/status` echo $already_run if [ "$already_run" == "CONFIG_READY" ]; then echo "ready go" break fi sleep 10done# 启动 nginxnginx -g "daemon off;"

<旁边滑动查看更多>

四、支配运用

选择支配组列表中对应条款中【支配运用】按钮,支配运用。

选择对应版本镜像,指定端口号,点击【完成】按钮进行支配。
支配成功后,在【做事管理】页面,可以展示出做事实例信息。
进入相应微做事,在【接口列表】页签,可以看到对应的API列表。
详细操作步骤,请参考TSF官方操作指南中【运用支配】及【做事管理】部分。

>>>复制链接到浏览器查看详情:

https://cloud.tencent.com/document/product/649/36499

五、验证

经由上述操作,运用支配成功后,可进行如下验证。
通过浏览器访问 java 做事中的 API。

通过浏览器访问 nginx 做事的首页。

通过浏览器访问 nginx 做事中的静态页面。

通过浏览器访问 nginx 做事,并重定向到后端 java 做事。

小结

上文通过大略的示例,展示了 java 运用与 nginx 静态运用通过 TSF Mesh 以统一的形式托管并运行于 TSF 之上。
同样,TSF Mesh 也支持其他措辞开拓的运用程序(如:PHP,Python,Go等)。
正是由于 TSF Mesh 具备这种跨多措辞、多框架的能力,以是,TSF Mesh 非常适用于具有不同技能栈的团队,以及新老运用并存的场景。
从而,可以为企业在微做事架构转型的过程中带来更多的助力。

- End -

标签:

相关文章

Python编程从入门到精通,探索编程之美

编程已经成为现代社会的一项基本技能。Python作为一种简单易学、功能强大的编程语言,在我国教育领域备受关注。本文将从Python...

网站推广 2025-03-02 阅读1 评论0

Scum07代码编程之美与适用方法

编程已成为当今社会不可或缺的技能之一。Scum07代码作为一款经典的编程语言,在我国众多程序员中备受推崇。本文将深入解析Scum0...

网站推广 2025-03-02 阅读1 评论0

Linux环境下的前端代码运行优化与步骤

前端技术逐渐成为软件开发的核心。Linux操作系统因其稳定性、安全性、开放性等特点,成为众多开发者和企业青睐的运行环境。本文将从L...

网站推广 2025-03-02 阅读1 评论0