• [互动交流] Claude 4.8 迁移实战手册:灰度策略、回滚机制与故障演练全流程
     模型版本迁移是一项高风险的系统工程。表面上看,迁移只是修改API调用中的一个model参数,但实际上,新模型在推理行为、响应风格和资源消耗模式上的微小变化,都可能在生产环境中引发连锁反应。没有灰度策略、没有回滚机制、没有经过演练的故障预案,一次看似平滑的升级就可能演变为一次生产事故。本文面向架构师和运维团队,系统阐述Claude 4.8迁移过程中灰度发布、快速回滚与故障演练的工程化方案。在启动迁移工作之前,建议先在离线环境中通过KULAAI(dl.877ai.cn)等专业多模型对比测试平台,对待迁移的场景进行一轮系统性压测,对比Claude 4.5与4.8在不同负载下的延迟分布、错误率及Token消耗差异。这一步可以为后续的容量规划和灰度策略设计提供必要的基线数据。一、灰度策略:从单维度到多维度分级灰度发布的核心目标是将新模型引入的风险控制在最小的影响面内。传统的单维度灰度策略——例如仅按流量百分比逐步放量——在模型迁移场景中存在明显不足。模型行为的变化并非在所有场景中均匀分布,10%的流量可能覆盖了大部分的简单场景,却完全错过了高风险场景中的异常表现。建议采用多维度分级灰度策略,从三个维度同步推进。第一个维度:场景维度。 将业务场景按风险等级分为三个梯队。低风险场景(内部工具、草稿生成、非关键流程)作为第一梯队,灰度初期即可切换。中风险场景(对外知识库、内部审核)作为第二梯队,在第一梯队稳定运行48小时后再切入。高风险场景(Agent工具调用、资金相关交易、面向C端用户的核心链路)作为第三梯队,需在前两个梯队累积足够观察数据后方可灰度放量。每一梯队的观察窗口建议不少于24小时,且需覆盖至少一个完整的业务周期。第二个维度:用户维度。 在高风险场景中,不建议直接按百分比随机抽样,而应优先选择内部用户、测试账号或已签署灰度协议的友好客户作为首批体验者。这既能在真实环境中验证模型行为,又能将潜在问题的影响限制在可控范围内。第三个维度:流量维度。 在前两个维度验证通过后,再按流量百分比逐步放量。建议梯度为1%→5%→20%→50%→100%,每个梯度观察30分钟。设置自动化的流量调节开关,当错误率或P99延迟突破预设阈值时,自动将新模型流量比例回退至上一梯度。三个维度的灰度并非串行推进,而是交叉并行。例如,第一梯队低风险场景可以先按流量维度快速放量至100%,而第三梯队高风险场景即使进入流量维度灰度阶段,也应从1%起步缓慢推进。灰度策略的节奏应匹配场景的风险等级,而非追求统一的时间表。二、回滚机制:快、准、稳的三层保障回滚能力是灰度发布的底气。没有可靠的回滚机制,灰度策略本质上是在生产环境中进行赌博。针对Claude 4.8的迁移,建议建立三层回滚保障。第一层:代码层快速回滚。 在模型调用层封装统一的Model Router,通过配置中心动态控制各场景使用的模型版本。回滚操作的本质是将配置项从claude-4.8改为claude-4.5,发布周期控制在分钟级。避免将模型版本硬编码在业务逻辑中,这是回滚能力的第一道防线。第二层:数据层兼容保障。 新旧模型在输出格式上可能存在微小差异。如果下游链路对输出格式有严格校验,回滚后可能导致旧模型无法处理新模型已写入的数据。在迁移前需完成输出格式的兼容性验证,确保新旧模型的输出能够被同一套下游解析逻辑正确处理。如果存在不兼容字段,需在适配层进行统一转换后再写入业务系统。第三层:业务层兜底方案。 当代码层回滚和数据层兼容同时失效时,需要业务层的人工兜底作为最后保障。每个迁移场景都应预留人工处理通道,在极端情况下可以绕过AI链路直接由人工接管。这不是技术问题,而是组织和流程问题——业务方需要在迁移窗口期内保持待命状态,确保在故障发生时能够快速响应。回滚的决策标准同样需要提前明确。建议设置以下自动触发条件:新模型错误率超过旧模型基线3倍、P99延迟超过SLA阈值1.5倍、连续5分钟出现5xx错误、业务方主动请求回滚。前三条是技术指标,第四条是组织授权——业务方在任何时候都有权要求暂停灰度并启动回滚,无需经过技术团队审批。三、故障演练:在爆炸半径内验证韧性灰度策略和回滚机制的有效性,不能等到真实故障发生时再去验证。在正式迁移启动前,需要设计一套针对性的故障演练方案,在受控环境中验证系统的韧性。演练场景设计。 针对Claude 4.8迁移可能遇到的典型故障模式,设计四类演练场景:第一类是延迟劣化演练。通过人为注入延迟或将部分请求路由至响应更慢的备用模型,模拟新模型在特定场景下出现P99延迟恶化的情况,验证超时配置是否合理、重试逻辑是否会放大延迟、上游服务是否具备足够的缓冲能力。第二类是格式异常演练。向系统注入少量格式不符合预期的模型输出,验证下游解析逻辑的鲁棒性和错误处理机制是否会因此触发级联故障。第三类是过载演练。将新模型的并发请求量瞬间提升至峰值的1.5倍,观察限流策略是否生效、熔断器是否及时触发、降级逻辑是否按预期执行、系统在多长时间内恢复至稳定状态。第四类是极端回滚演练。在迁移过程中突然触发回滚,观察从决定回滚到流量完全切回旧模型的全链路耗时,验证新旧模型并行期间是否存在数据不一致或状态丢失的问题。演练执行原则。 故障演练必须在隔离的演练环境或生产环境的低峰时段进行,确保爆炸半径可控。每次演练前需明确演练目标、预期行为、观测指标及回退方案。演练过程中全程监控系统状态,一旦影响范围超出预期立即终止。演练结束后需产出复盘报告,将演练中发现的问题纳入迁移方案优化。关键指标验证。 故障演练不仅要验证“系统能承受故障”,更要量化“系统从故障中恢复的速度”。需重点验证的指标包括:故障注入到告警触发的延迟(目标 < 2分钟)、告警触发到值班人员响应的延迟(目标 < 5分钟)、回滚决策到流量切换完成的延迟(目标 < 3分钟)、系统恢复到正常服务水平所需的时间(目标 < 10分钟)。这些指标直接决定了真实故障发生后业务受影响的时间和程度。四、迁移流程标准化将灰度、回滚、演练三项能力整合为标准的迁移流程,形成可复用的操作规程,是避免每次迁移都从零开始的关键。迁移前的准备阶段,需要完成离线评测与基线建立、故障演练方案设计与执行、回滚预案确认与演练、监控告警阈值校准以及业务方协同机制确认。迁移中的执行阶段,按照低风险场景第一梯队、中风险场景第二梯队、高风险场景第三梯队的顺序依次推进,每个梯队内严格遵循1%→5%→20%→50%→100%的流量梯度。每个梯度和每个流量阶段均需在观察窗口内确认监控指标无异常后方可继续推进。任何阶段触发自动回滚条件时,立即执行回滚并暂停后续灰度。迁移后的收尾阶段,在新模型全量运行72小时且无回滚事件后,进入观察期。观察期内保留旧模型的调用通道作为应急回退选项,监控系统持续追踪P99延迟、错误率和Token消耗三项核心指标的稳定性。观察期结束后,产出完整的迁移总结报告,将旧模型通道下线,整个迁移流程正式关闭。五、组织保障灰度策略再完善,回滚机制再迅速,如果团队的协同流程没有对齐,迁移故障仍会从组织层面爆发。在迁移启动前,需要明确各角色的职责边界。技术团队负责灰度策略的执行、监控指标的追踪及回滚操作的技术实施。业务团队负责灰度期间业务指标的监控、异常场景的人工兜底及回滚请求的发起。值班运维负责告警响应及故障分级处理。三方在迁移窗口期内保持实时通讯畅通,建议建立专属的应急响应群组,确保信息传递不经过冗余的层级中转。回滚的决策权不应完全集中在技术团队手中。业务方在任何时候都有权提出回滚请求,技术团队负责执行。这不是对技术团队专业能力的不信任,而是对业务连续性的兜底保障——技术指标正常不代表业务体验正常。有些问题在监控面板上可能只表现为微小的指标波动,但在业务侧已经造成了客户投诉。让业务方拥有回滚的主动发起权,是在技术监控盲区之上增加的一道组织层面的安全网。六、结语灰度、回滚、故障演练,这三件事合在一起构成了模型迁移的安全底线。每一项单独拿出来都不复杂,但把它们串成一套完整的流程并在每一次迁移中严格执行,需要的是工程纪律而非技术能力。Claude 4.8在稳定性上的提升是真实的,但任何模型迁移都不可避免地引入不确定性。架构师的职责不是消除所有不确定性,而是在不确定性之上建立一套可控的应对机制。灰度的节奏可以慢一点,回滚的条件可以设得保守一点,演练的次数可以多做一次——这些看似冗余的谨慎,在真正的生产故障面前,会转化为团队应对危机时的底气和从容。
  • [互动交流] 计费说明(公网NAT网关)_NAT网关 NAT_产品介绍_华为云
    可否说明一下nat网关出口流量是否需要收费 页面链接:https://support.huaweicloud.com/productdesc-natgateway/nat_price_0001.html
  • [技术干货] k8s install Bookinfo
    3. K8S 集群安装 istio下载安装包,配置环境变量[root@master ~]#wget http://49.232.8.65/istio/istio-1.14.1-linux-amd64.tar.gz ...... [root@master ~]#mkdir /application [root@master ~]#tar zxvf istio-1.14.1-linux-amd64.tar.gz -C /application/ ...... [root@master ~]#ll /application/istio-1.14.1/ 总用量 28 drwxr-x--- 2 root root 22 6月 8 10:10 bin -rw-r--r-- 1 root root 11348 6月 8 10:10 LICENSE drwxr-xr-x 5 root root 52 6月 8 10:10 manifests -rw-r----- 1 root root 796 6月 8 10:10 manifest.yaml -rw-r--r-- 1 root root 6016 6月 8 10:10 README.md drwxr-xr-x 23 root root 4096 6月 8 10:10 samples drwxr-xr-x 3 root root 57 6月 8 10:10 tools [root@master ~]#ll /application/istio-1.14.1/bin/ 总用量 83676 -rwxr-xr-x 1 root root 85684224 6月 8 10:10 istioctl [root@master ~]#echo "export PATH=$PATH:/application/istio-1.14.1/bin" >> /etc/profile [root@master ~]#tail -n 1 /etc/profile export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/application/istio-1.14.1/bin [root@master ~]#source /etc/profile 安装 istio# 使用 demo 配置文件安装,它具有一组良好的测试默认值,但还有其他配置文件用于生产或性能测试 # 集群内存要足够 [root@master ~]# istioctl install --set profile=demo -y ✔ Istio core installed ✔ Istiod installed ✔ Ingress gateways installed ✔ Egress gateways installed ✔ Installation complete Making this installation the default for injection and validation. Thank you for installing Istio 1.14. Please take a few minutes to tell us about your install/upgrade experience! https://forms.gle/yEtCbt45FZ3VoDT5A [root@master ~]# kubectl get pods -n istio-system -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES istio-egressgateway-575d8bd99b-sqdm9 1/1 Running 0 9m22s 10.244.140.70 node02 <none> <none> istio-ingressgateway-6668f9548d-dh656 1/1 Running 0 9m22s 10.244.140.69 node02 <none> <none> istiod-8495d444bb-zxfls 1/1 Running 0 10m 10.244.140.68 node02 <none> <none> # 添加名称空间的标签,当部署应用后,告诉 istio 去自动的注入 Envoy sidecar 代理,这里是 default # istio-injection=disabled 的命名空间是不会流入 sidecar 的 [root@master ~]# kubectl get ns NAME STATUS AGE default Active 159m istio-system Active 3m31s kube-node-lease Active 159m kube-public Active 159m kube-system Active 159m [root@master ~]# kubectl label namespace default istio-injection=enabled namespace/default labeled # 如何取消注入 [root@master ~]# kubectl label namespaces default istio-injection- namespace/default labeled [root@master ~]# kubectl describe ns default Name: default Labels: istio-injection=enabled kubernetes.io/metadata.name=default Annotations: <none> Status: Active No resource quota. No LimitRange resource. 卸载 istiohttps://istio.io/latest/docs/setup/install/istioctl/#uninstall-istio4. 部署示例应用程序部署 Bookinfo 示例应用程序[root@master /application/istio-1.14.1]# ls bin LICENSE manifests manifest.yaml README.md samples tools [root@master /application/istio-1.14.1]# kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml service/details created serviceaccount/bookinfo-details created deployment.apps/details-v1 created service/ratings created serviceaccount/bookinfo-ratings created deployment.apps/ratings-v1 created service/reviews created serviceaccount/bookinfo-reviews created deployment.apps/reviews-v1 created deployment.apps/reviews-v2 created deployment.apps/reviews-v3 created service/productpage created serviceaccount/bookinfo-productpage created deployment.apps/productpage-v1 created 查看# 应用程序将启动。随着每个 pod 准备就绪,Istio sidecar 将随之部署 # 我的 pod 启动时间非常长,等到所有 pod 都报告 READY2/2 和 STATUSRunning 后再进行下一步,耐心等待 [root@master /application/istio-1.14.1]# kubectl get pods NAME READY STATUS RESTARTS AGE details-v1-7d88846999-hrcgp 2/2 Running 0 16m productpage-v1-7795568889-92mdm 2/2 Running 0 16m ratings-v1-754f9c4975-ckf5z 2/2 Running 0 16m reviews-v1-55b668fc65-lsfjs 2/2 Running 0 16m reviews-v2-858f99c99-7nw82 2/2 Running 0 16m reviews-v3-7886dd86b9-cnjdh 2/2 Running 0 16m [root@master /application/istio-1.14.1]# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE details ClusterIP 10.100.172.185 <none> 9080/TCP 16m kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h7m productpage ClusterIP 10.97.47.169 <none> 9080/TCP 16m ratings ClusterIP 10.102.140.67 <none> 9080/TCP 16m reviews ClusterIP 10.108.151.245 <none> 9080/TCP 16m 验证到目前为止一切正常。运行以下命令,通过检查响应中的页面标题来查看应用程序是否在集群内运行并提供 HTML 页面:[root@master ~]# kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath="{.items[0].metadata.name}")" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>" <title>Simple Bookstore App</title> 5. 向外部流量打开应用程序Bookinfo 应用程序已部署,但无法从外部访问。为了使其可访问,您需要创建一个 Istio Ingress Gateway,它将路径映射到网格边缘的路由。将此应用程序与 Istio 网关关联[root@master ~]# kubectl apply -f /application/istio-1.14.1/samples/bookinfo/networking/bookinfo-gateway.yaml gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created 确保配置没有问题[root@master ~]# istioctl analyze ✔ No validation issues found when analyzing namespace: default. 5.1 确定入口 IP 和端口设置访问网关的 INGRESS_HOST 和 INGRESS_PORT 变量执行以下命令来确定您的 Kubernetes 集群是否在支持外部负载均衡器的环境中运行:[root@master ~]# kubectl get svc istio-ingressgateway -n istio-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.98.234.126 <pending> 15021:30921/TCP,80:32314/TCP,443:31968/TCP,31400:32530/TCP,15443:31268/TCP 3h6m 如果 EXTERNAL-IP 设置了 IP,则您的环境具有可用于入口网关的外部负载均衡器。如果 EXTERNAL-IP 值为 <none>(或永久 <pending>),则您的环境不为入口网关提供外部负载均衡器。在这种情况下,您可以使用服务的节点端口 访问网关。没有 EIP 解决:链接1. 安装 metallb 2. 安装 ingress-controller 3. 再次查看 istio-ingressgateway # 已经获取 EIP [root@master ~]# kubectl get svc istio-ingressgateway -n istio-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.98.234.126 192.168.10.170 15021:30921/TCP,80:32314/TCP,443:31968/TCP,31400:32530/TCP,15443:31268/TCP 3h19m 如果您确定您的环境具有外部负载平衡器,进行下面的操作。设置入口 IP 和端口:# 可将环境变量写进 /etc/profile 中 [root@master ~]# export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath="{.status.loadBalancer.ingress[0].ip}") [root@master ~]# export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath="{.spec.ports[?(@.name=="http2")].port}") [root@master ~]# export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath="{.spec.ports[?(@.name=="https")].port}") 在某些环境中,负载均衡器可能会使用主机名而不是 IP 地址。在这种情况下,入口网关的 EXTERNAL-IP 值将不是 IP 地址,而是主机名,上述命令将无法设置 INGRESS_HOST 环境变量。使用以下命令更正该 INGRESS_HOST 值:export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath="{.status.loadBalancer.ingress[0].hostname}") 确保 IP 地址和端口已成功分配给每个环境变量[root@master ~]# echo "$INGRESS_HOST" 192.168.10.170 [root@master ~]# echo "$INGRESS_PORT" 80 [root@master ~]# echo "$SECURE_INGRESS_PORT" 443 设置 GATEWAY_URL# 可将环境变量写进 /etc/profile 中 [root@master ~]# export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT [root@master ~]# echo "$GATEWAY_URL" 192.168.10.170:80 5.2 验证外部访问通过使用浏览器查看 Bookinfo 产品页面,确认可以从外部访问 Bookinfo 应用程序。运行以下命令以检索 Bookinfo 应用程序的外部地址[root@master ~]# echo "http://$GATEWAY_URL/productpage" http://192.168.10.170:80/productpage 将上一个命令的输出粘贴到您的 Web 浏览器中,并确认显示 Bookinfo 产品页面。6. 安装仪表盘Istio 集成了几个不同的监控应用程序。这些可以帮助您了解服务网格的结构、显示网格的拓扑并分析网格的健康状况。使用以下说明部署 Kiali 仪表板以及 Prometheus、Grafana 和 Jaeger。安装 kali 和其他插件[root@master ~]# kubectl apply -f /application/istio-1.14.1/samples/addons serviceaccount/grafana created configmap/grafana created service/grafana created deployment.apps/grafana created configmap/istio-grafana-dashboards created configmap/istio-services-grafana-dashboards created deployment.apps/jaeger created service/tracing created service/zipkin created service/jaeger-collector created serviceaccount/kiali created configmap/kiali created clusterrole.rbac.authorization.k8s.io/kiali-viewer created clusterrole.rbac.authorization.k8s.io/kiali created clusterrolebinding.rbac.authorization.k8s.io/kiali created role.rbac.authorization.k8s.io/kiali-controlplane created rolebinding.rbac.authorization.k8s.io/kiali-controlplane created service/kiali created deployment.apps/kiali created serviceaccount/prometheus created configmap/prometheus created clusterrole.rbac.authorization.k8s.io/prometheus created clusterrolebinding.rbac.authorization.k8s.io/prometheus created service/prometheus created deployment.apps/prometheus created # 下面命令失败重复运行 [root@master ~]# kubectl rollout status deployment/kiali -n istio-system Waiting for deployment "kiali" rollout to finish: 0 of 1 updated replicas are available... deployment "kiali" successfully rolled out [root@master ~]# kubectl get pods,svc -n istio-system NAME READY STATUS RESTARTS AGE pod/grafana-6c5dc6df7c-zzb5q 1/1 Running 0 44s pod/istio-egressgateway-575d8bd99b-sqdm9 1/1 Running 0 8h pod/istio-ingressgateway-6668f9548d-dh656 1/1 Running 0 8h pod/istiod-8495d444bb-zxfls 1/1 Running 0 8h pod/jaeger-9dd685668-mwmqm 1/1 Running 0 44s pod/kiali-5db6985fb5-chctb 1/1 Running 0 43s pod/prometheus-699b7cc575-4lxbs 2/2 Running 0 43s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/grafana ClusterIP 10.101.225.230 <none> 3000/TCP 44s service/istio-egressgateway ClusterIP 10.107.140.240 <none> 80/TCP,443/TCP 8h service/istio-ingressgateway LoadBalancer 10.98.234.126 192.168.10.170 15021:30921/TCP,80:32314/TCP,443:31968/TCP,31400:32530/TCP,15443:31268/TCP 8h service/istiod ClusterIP 10.97.201.157 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 8h service/jaeger-collector ClusterIP 10.101.114.182 <none> 14268/TCP,14250/TCP,9411/TCP 44s service/kiali ClusterIP 10.107.178.217 <none> 20001/TCP,9090/TCP 43s service/prometheus ClusterIP 10.105.102.86 <none> 9090/TCP 43s service/tracing ClusterIP 10.98.109.173 <none> 80/TCP,16685/TCP 44s service/zipkin ClusterIP 10.111.133.26 <none> 9411/TCP 44s 修改 kiali 的服务,将类型改为 LoadBalancer[root@master ~]# kubectl edit svc kiali -n istio-system ...... 46 type: ClusterIP ...... # 修改此处为 type: LoadBalancer # 在没有安装 metallb 产品的情况下,可以将该服务类型改为 NodePort [root@master ~]# kubectl edit svc kiali -n istio-system service/kiali edited 访问 Kiali 仪表板配置 Service 为 LoadBalancer 类型检查一下 kiali service 的类型是不是 LoadBalancer 类型,有没有获取 EIP[root@master ~]# istioctl dashboard kiali http://localhost:20001/kiali [root@master ~]# kubectl get pods,svc -n istio-system NAME READY STATUS RESTARTS AGE pod/grafana-6c5dc6df7c-wt9wq 1/1 Running 0 4m7s pod/istio-egressgateway-575d8bd99b-wq5fv 1/1 Running 0 20m pod/istio-ingressgateway-6668f9548d-2nt77 1/1 Running 0 20m pod/istiod-8495d444bb-xm6lw 1/1 Running 0 21m pod/jaeger-9dd685668-9hp2t 1/1 Running 0 4m7s pod/kiali-5db6985fb5-pnkvw 1/1 Running 0 4m7s pod/prometheus-699b7cc575-nc86z 2/2 Running 0 4m7s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/grafana ClusterIP 10.99.147.179 <none> 3000/TCP 4m7s service/istio-egressgateway ClusterIP 10.101.226.2 <none> 80/TCP,443/TCP 20m service/istio-ingressgateway LoadBalancer 10.106.154.219 192.168.10.170 15021:30361/TCP,80:30766/TCP,443:32089/TCP,31400:32656/TCP,15443:31882/TCP 20m service/istiod ClusterIP 10.108.100.170 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 21m service/jaeger-collector ClusterIP 10.100.230.173 <none> 14268/TCP,14250/TCP,9411/TCP 4m7s service/kiali LoadBalancer 10.99.87.90 192.168.10.171 20001:31148/TCP,9090:32497/TCP 4m7s service/prometheus ClusterIP 10.106.49.15 <none> 9090/TCP 4m7s service/tracing ClusterIP 10.101.14.242 <none> 80/TCP,16685/TCP 4m7s service/zipkin ClusterIP 10.108.155.153 <none> 9411/TCP 4m7s 访问:http://192.168.10.171:20001/kiali
  • [技术干货] K8s安装istio
    3. K8S 集群安装 istio下载安装包,配置环境变量[root@master ~]#wget http://49.232.8.65/istio/istio-1.14.1-linux-amd64.tar.gz ...... [root@master ~]#mkdir /application [root@master ~]#tar zxvf istio-1.14.1-linux-amd64.tar.gz -C /application/ ...... [root@master ~]#ll /application/istio-1.14.1/ 总用量 28 drwxr-x--- 2 root root 22 6月 8 10:10 bin -rw-r--r-- 1 root root 11348 6月 8 10:10 LICENSE drwxr-xr-x 5 root root 52 6月 8 10:10 manifests -rw-r----- 1 root root 796 6月 8 10:10 manifest.yaml -rw-r--r-- 1 root root 6016 6月 8 10:10 README.md drwxr-xr-x 23 root root 4096 6月 8 10:10 samples drwxr-xr-x 3 root root 57 6月 8 10:10 tools [root@master ~]#ll /application/istio-1.14.1/bin/ 总用量 83676 -rwxr-xr-x 1 root root 85684224 6月 8 10:10 istioctl [root@master ~]#echo "export PATH=$PATH:/application/istio-1.14.1/bin" >> /etc/profile [root@master ~]#tail -n 1 /etc/profile export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/application/istio-1.14.1/bin [root@master ~]#source /etc/profile 安装 istio# 使用 demo 配置文件安装,它具有一组良好的测试默认值,但还有其他配置文件用于生产或性能测试 # 集群内存要足够 [root@master ~]# istioctl install --set profile=demo -y ✔ Istio core installed ✔ Istiod installed ✔ Ingress gateways installed ✔ Egress gateways installed ✔ Installation complete Making this installation the default for injection and validation. Thank you for installing Istio 1.14. Please take a few minutes to tell us about your install/upgrade experience! https://forms.gle/yEtCbt45FZ3VoDT5A [root@master ~]# kubectl get pods -n istio-system -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES istio-egressgateway-575d8bd99b-sqdm9 1/1 Running 0 9m22s 10.244.140.70 node02 <none> <none> istio-ingressgateway-6668f9548d-dh656 1/1 Running 0 9m22s 10.244.140.69 node02 <none> <none> istiod-8495d444bb-zxfls 1/1 Running 0 10m 10.244.140.68 node02 <none> <none> # 添加名称空间的标签,当部署应用后,告诉 istio 去自动的注入 Envoy sidecar 代理,这里是 default # istio-injection=disabled 的命名空间是不会流入 sidecar 的 [root@master ~]# kubectl get ns NAME STATUS AGE default Active 159m istio-system Active 3m31s kube-node-lease Active 159m kube-public Active 159m kube-system Active 159m [root@master ~]# kubectl label namespace default istio-injection=enabled namespace/default labeled # 如何取消注入 [root@master ~]# kubectl label namespaces default istio-injection- namespace/default labeled [root@master ~]# kubectl describe ns default Name: default Labels: istio-injection=enabled kubernetes.io/metadata.name=default Annotations: <none> Status: Active No resource quota. No LimitRange resource.卸载 istiohttps://istio.io/latest/docs/setup/install/istioctl/#uninstall-istio4. 部署示例应用程序部署 Bookinfo 示例应用程序[root@master /application/istio-1.14.1]# ls bin LICENSE manifests manifest.yaml README.md samples tools [root@master /application/istio-1.14.1]# kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml service/details created serviceaccount/bookinfo-details created deployment.apps/details-v1 created service/ratings created serviceaccount/bookinfo-ratings created deployment.apps/ratings-v1 created service/reviews created serviceaccount/bookinfo-reviews created deployment.apps/reviews-v1 created deployment.apps/reviews-v2 created deployment.apps/reviews-v3 created service/productpage created serviceaccount/bookinfo-productpage created deployment.apps/productpage-v1 created查看# 应用程序将启动。随着每个 pod 准备就绪,Istio sidecar 将随之部署 # 我的 pod 启动时间非常长,等到所有 pod 都报告 READY2/2 和 STATUSRunning 后再进行下一步,耐心等待 [root@master /application/istio-1.14.1]# kubectl get pods NAME READY STATUS RESTARTS AGE details-v1-7d88846999-hrcgp 2/2 Running 0 16m productpage-v1-7795568889-92mdm 2/2 Running 0 16m ratings-v1-754f9c4975-ckf5z 2/2 Running 0 16m reviews-v1-55b668fc65-lsfjs 2/2 Running 0 16m reviews-v2-858f99c99-7nw82 2/2 Running 0 16m reviews-v3-7886dd86b9-cnjdh 2/2 Running 0 16m [root@master /application/istio-1.14.1]# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE details ClusterIP 10.100.172.185 <none> 9080/TCP 16m kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h7m productpage ClusterIP 10.97.47.169 <none> 9080/TCP 16m ratings ClusterIP 10.102.140.67 <none> 9080/TCP 16m reviews ClusterIP 10.108.151.245 <none> 9080/TCP 16m验证到目前为止一切正常。运行以下命令,通过检查响应中的页面标题来查看应用程序是否在集群内运行并提供 HTML 页面:[root@master ~]# kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>" <title>Simple Bookstore App</title>5. 向外部流量打开应用程序Bookinfo 应用程序已部署,但无法从外部访问。为了使其可访问,您需要创建一个 Istio Ingress Gateway,它将路径映射到网格边缘的路由。将此应用程序与 Istio 网关关联[root@master ~]# kubectl apply -f /application/istio-1.14.1/samples/bookinfo/networking/bookinfo-gateway.yaml gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created确保配置没有问题[root@master ~]# istioctl analyze ✔ No validation issues found when analyzing namespace: default.5.1 确定入口 IP 和端口设置访问网关的 INGRESS_HOST 和 INGRESS_PORT 变量执行以下命令来确定您的 Kubernetes 集群是否在支持外部负载均衡器的环境中运行:[root@master ~]# kubectl get svc istio-ingressgateway -n istio-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.98.234.126 <pending> 15021:30921/TCP,80:32314/TCP,443:31968/TCP,31400:32530/TCP,15443:31268/TCP 3h6m如果 EXTERNAL-IP 设置了 IP,则您的环境具有可用于入口网关的外部负载均衡器。如果 EXTERNAL-IP 值为 <none>(或永久 <pending>),则您的环境不为入口网关提供外部负载均衡器。在这种情况下,您可以使用服务的节点端口 访问网关。没有 EIP 解决:链接1. 安装 metallb 2. 安装 ingress-controller 3. 再次查看 istio-ingressgateway # 已经获取 EIP [root@master ~]# kubectl get svc istio-ingressgateway -n istio-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.98.234.126 192.168.10.170 15021:30921/TCP,80:32314/TCP,443:31968/TCP,31400:32530/TCP,15443:31268/TCP 3h19m如果您确定您的环境具有外部负载平衡器,进行下面的操作。设置入口 IP 和端口:# 可将环境变量写进 /etc/profile 中 [root@master ~]# export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}') [root@master ~]# export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}') [root@master ~]# export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}') 在某些环境中,负载均衡器可能会使用主机名而不是 IP 地址。在这种情况下,入口网关的 EXTERNAL-IP 值将不是 IP 地址,而是主机名,上述命令将无法设置 INGRESS_HOST 环境变量。使用以下命令更正该 INGRESS_HOST 值:export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')确保 IP 地址和端口已成功分配给每个环境变量[root@master ~]# echo "$INGRESS_HOST" 192.168.10.170 [root@master ~]# echo "$INGRESS_PORT" 80 [root@master ~]# echo "$SECURE_INGRESS_PORT" 443设置 GATEWAY_URL# 可将环境变量写进 /etc/profile 中 [root@master ~]# export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT [root@master ~]# echo "$GATEWAY_URL" 192.168.10.170:805.2 验证外部访问通过使用浏览器查看 Bookinfo 产品页面,确认可以从外部访问 Bookinfo 应用程序。运行以下命令以检索 Bookinfo 应用程序的外部地址[root@master ~]# echo "http://$GATEWAY_URL/productpage" http://192.168.10.170:80/productpage将上一个命令的输出粘贴到您的 Web 浏览器中,并确认显示 Bookinfo 产品页面。6. 安装仪表盘Istio 集成了几个不同的监控应用程序。这些可以帮助您了解服务网格的结构、显示网格的拓扑并分析网格的健康状况。使用以下说明部署 Kiali 仪表板以及 Prometheus、Grafana 和 Jaeger。安装 kali 和其他插件[root@master ~]# kubectl apply -f /application/istio-1.14.1/samples/addons serviceaccount/grafana created configmap/grafana created service/grafana created deployment.apps/grafana created configmap/istio-grafana-dashboards created configmap/istio-services-grafana-dashboards created deployment.apps/jaeger created service/tracing created service/zipkin created service/jaeger-collector created serviceaccount/kiali created configmap/kiali created clusterrole.rbac.authorization.k8s.io/kiali-viewer created clusterrole.rbac.authorization.k8s.io/kiali created clusterrolebinding.rbac.authorization.k8s.io/kiali created role.rbac.authorization.k8s.io/kiali-controlplane created rolebinding.rbac.authorization.k8s.io/kiali-controlplane created service/kiali created deployment.apps/kiali created serviceaccount/prometheus created configmap/prometheus created clusterrole.rbac.authorization.k8s.io/prometheus created clusterrolebinding.rbac.authorization.k8s.io/prometheus created service/prometheus created deployment.apps/prometheus created # 下面命令失败重复运行 [root@master ~]# kubectl rollout status deployment/kiali -n istio-system Waiting for deployment "kiali" rollout to finish: 0 of 1 updated replicas are available... deployment "kiali" successfully rolled out [root@master ~]# kubectl get pods,svc -n istio-system NAME READY STATUS RESTARTS AGE pod/grafana-6c5dc6df7c-zzb5q 1/1 Running 0 44s pod/istio-egressgateway-575d8bd99b-sqdm9 1/1 Running 0 8h pod/istio-ingressgateway-6668f9548d-dh656 1/1 Running 0 8h pod/istiod-8495d444bb-zxfls 1/1 Running 0 8h pod/jaeger-9dd685668-mwmqm 1/1 Running 0 44s pod/kiali-5db6985fb5-chctb 1/1 Running 0 43s pod/prometheus-699b7cc575-4lxbs 2/2 Running 0 43s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/grafana ClusterIP 10.101.225.230 <none> 3000/TCP 44s service/istio-egressgateway ClusterIP 10.107.140.240 <none> 80/TCP,443/TCP 8h service/istio-ingressgateway LoadBalancer 10.98.234.126 192.168.10.170 15021:30921/TCP,80:32314/TCP,443:31968/TCP,31400:32530/TCP,15443:31268/TCP 8h service/istiod ClusterIP 10.97.201.157 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 8h service/jaeger-collector ClusterIP 10.101.114.182 <none> 14268/TCP,14250/TCP,9411/TCP 44s service/kiali ClusterIP 10.107.178.217 <none> 20001/TCP,9090/TCP 43s service/prometheus ClusterIP 10.105.102.86 <none> 9090/TCP 43s service/tracing ClusterIP 10.98.109.173 <none> 80/TCP,16685/TCP 44s service/zipkin ClusterIP 10.111.133.26 <none> 9411/TCP 44s修改 kiali 的服务,将类型改为 LoadBalancer[root@master ~]# kubectl edit svc kiali -n istio-system ...... 46 type: ClusterIP ...... # 修改此处为 type: LoadBalancer # 在没有安装 metallb 产品的情况下,可以将该服务类型改为 NodePort [root@master ~]# kubectl edit svc kiali -n istio-system service/kiali edited访问 Kiali 仪表板配置 Service 为 LoadBalancer 类型检查一下 kiali service 的类型是不是 LoadBalancer 类型,有没有获取 EIP[root@master ~]# istioctl dashboard kiali http://localhost:20001/kiali [root@master ~]# kubectl get pods,svc -n istio-system NAME READY STATUS RESTARTS AGE pod/grafana-6c5dc6df7c-wt9wq 1/1 Running 0 4m7s pod/istio-egressgateway-575d8bd99b-wq5fv 1/1 Running 0 20m pod/istio-ingressgateway-6668f9548d-2nt77 1/1 Running 0 20m pod/istiod-8495d444bb-xm6lw 1/1 Running 0 21m pod/jaeger-9dd685668-9hp2t 1/1 Running 0 4m7s pod/kiali-5db6985fb5-pnkvw 1/1 Running 0 4m7s pod/prometheus-699b7cc575-nc86z 2/2 Running 0 4m7s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/grafana ClusterIP 10.99.147.179 <none> 3000/TCP 4m7s service/istio-egressgateway ClusterIP 10.101.226.2 <none> 80/TCP,443/TCP 20m service/istio-ingressgateway LoadBalancer 10.106.154.219 192.168.10.170 15021:30361/TCP,80:30766/TCP,443:32089/TCP,31400:32656/TCP,15443:31882/TCP 20m service/istiod ClusterIP 10.108.100.170 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 21m service/jaeger-collector ClusterIP 10.100.230.173 <none> 14268/TCP,14250/TCP,9411/TCP 4m7s service/kiali LoadBalancer 10.99.87.90 192.168.10.171 20001:31148/TCP,9090:32497/TCP 4m7s service/prometheus ClusterIP 10.106.49.15 <none> 9090/TCP 4m7s service/tracing ClusterIP 10.101.14.242 <none> 80/TCP,16685/TCP 4m7s service/zipkin ClusterIP 10.108.155.153 <none> 9411/TCP 4m7s访问:http://192.168.10.171:20001/kiali
  • [问题求助] 【华为智慧园区开发工程师认证进阶课】【统一事件集成第三方系统】新增设备事件触发roma网关无日志
    【功能模块】接https://bbs.huaweicloud.com/forum/thread-196457-1-1.html 帖子华为智慧园区开发工程师认证进阶课 实战课(https://qa6-dev.besclouds.com/) 统一事件集成第三方系统 新增设备后可以正常触发定义事件转发请求roma中定义的网关接口,但是在roma中却无法查询到请求的日志。无法完成进阶课程日志截图【操作步骤&问题现象】1、IOC新增设备触发定义的转发事件,事件请求roma定义的api接口2、roma的api网关中无法查询到api分析日志 【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 【上海体育馆产品】【路由功能】怎么返回上一个路由
    【功能模块】【操作步骤&问题现象】1、点击按钮返回上一个页面2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] 智慧园区统一接入之通过IoT网关接入基线已集成设备(下)
    连接实验室认证扩展IO这部分设备IO扩展包随基线版本发布,但默认不安装,项目可根据需要选装。表2 连接实验室认证扩展IO条数分类设备IO“统一设备服务”端对应的设备规格1电气火灾监测系统设备故障电弧探测器设备ArcFaultDetectionDevice2电气火灾检测系统探测器设备ElectrFireMonitorSysDetector3消防电源监控系统设备FirePowerMonitorSys4照明系统路灯设备StreetLight5室外景观照明设备OutdoorLandscapeLighting6室内多回路照明控制器设备IndoorMultLoopLightingController7环境空间监测系统震动传感器设备Vibrating8GPS定位器设备GPSLocator9智能手环设备SmartBand10垃圾桶设备Trashcans11擦手纸余量检测设备TissuePaper12厕纸余量检测设备ToiletPaper13客流统计设备PassengerFlow14多媒体点评器设备Evaluator15洗手液余量检测设备SoapDispenser16井盖检测器设备ManholeCoverDetector17路灯显示屏设备StreetLightDisplayScreen18激光探测器设备LaserDetector19应急指示灯设备EmergencyLamp20水文监测系统水位水质监测设备WaterQualityMonitoring21水文监测设备HydrologicalTelemetery22能耗管理系统能耗管理系统设备EnergyConsumption23智能水表设备SmartWaterMeter24热量表设备HeatMeter25冷量表设备CoolCapacityMeter26火灾自动报警系统报警主机设备AlarmHost27入侵报警系统电子围栏设备ElectronicFence28门磁探测器设备ElecLockDetector29报警主机防区设备AlarmHostDefenceArea30环境空间告警系统管线甲烷气体探测器设备PipelineCH4Detector31管线硫化氢气体探测器设备PipelineH2SDetector32管线温湿度探测器设备PipelineTempAndHumidityDetector33管线压力探测器设备PipelinePressureDetector34管线氧气气体探测器设备PipelineO2Detector35紧急按钮设备EmergencyButton36温湿度监测设备TemperatureHumidity37管道流量监测设备PipelineTrafficMonitoring38液压检测设备HydraulicPressureDetector39水浸检测设备WaterImmersion40液位检测设备LiquidLevelDetector41CH探测器设备CH4Detector42红外探测器设备InfraredDetector43一氧化碳探测器设备CODetector44氨气探测器设备AmmoniaDetector45空气质量探测器设备AirAualityDetector46地埋侧循环泵设备BuriedSideCirculatingPump47定压水泵设备ConstantPressurePump48水处理仪设备WaterTreatmentInstrument49地源热泵机组设备GroundSourceHeatPumpUnit50锅炉补水箱设备BoilerSupplyTank51二次水循环泵设备SecondaryCirculationPump52消防监测系统消防栓监测设备HydrantDetector53消防管道监测设备FireControlPipeDetector54BA400V进线设备InLine400V5510kV进线设备InLine10kV56400V出线设备OutLine400V57电力变压器温控器设备TransformerTempController58交流电通断检测器设备ACDetector59空气断路器设备AirCircuitBreaker60电箱温度传感器设备TempDetector61母联设备BusTieSwitch62电容器设备Capacitance6335kV出线设备Capacitance64主变压器设备MainTransformer6510kV出线设备OutLine10kV66站变设备StationTransformer67110kV分段设备Subsection110kV68直流屏设备DirectCurrentPanel69110kV进线间隔设备IncomingLineInterval110kV70双电源转换开关DualPowerSwitch71TV监控设备TVMonitoringDevice72母线保护设备BusbarProtection73光伏发电设备PhotovoltaicGenerator74柴油发电设备DieselGenerator75电动天窗电动天窗设备PowerSunroof76电梯及扶梯扶梯设备Escalator
  • [技术干货] 智慧园区统一接入之通过IoT网关接入基线已集成设备(上)
    园区基线预集成的设备IO包含:基线设备IO、连接实验室认证扩展IO。当对应设备接入园区时无需开发任何代码,可直接接入使用。基线设备IO:随基线版本一起安装,订购园区基线后默认安装好,如表1所示。连接实验室认证扩展IO:IO扩展包随基线版本发布,但默认不安装,项目可根据需要选装,如表2所示。扩展IO详情见连接实验室认证扩展IO。基线设备IO这部分设备IO随基线版本一起安装,订购园区基线后默认安装好。表1 基线设备IO条数分类设备IO“统一设备服务”端对应的设备规格1保安系统设备门禁设备IOAccessControl2泄露电缆设备IOLeakyCable3人行闸机设备IOTurnstile4消防系统设备消防烟感设备IOSmokeDetector5消防温感设备IOTemperatureSensor6消防手报设备IOManualFireAlarmActivation7声光报警设备IOAcoustoOpticAlarm8消防栓按钮设备IOFireHydrantButton9可燃气体探测器设备IOCombustibleGasDetector10能耗系统设备水表设备IOWaterMeter11电表设备IOElectricMeter12燃气表设备IOGasMeter13资产管理设备新基点IoT射频识别标签设备IORFID14新基点IoT射频识别读卡器设备IORFIDReader15环境监测设备户外环境监测设备IOOutdoorEnvSensor16室内环境监测设备IOIndoorEnvSensor17建筑BA设备空调机组设备IOAirHandleUnit18新风机组设备IOPreCoolingAirHandlingUnit19送风机设备IOSupplyAirFan20排风机设备IOExhaustAirFan21冷机设备IOChiller22冷冻水泵设备IOChillerWaterPump23冷却水泵设备IOCoolDownWaterPump24冷却塔设备IOCoolingTower25冷源补水箱设备IOColdSourceSupplyTank26冷源补水泵设备IOColdSourceSupplyPump27冷冻水总管设备IOChilledWaterMainPipe28冷却水总管设备IOCoolDownWaterMainPipe29管道设备IOMainPipe30膨胀水箱设备IOExpansionTank31蓄冷罐设备IOColdStorageTank32电热锅炉设备IOElectricBoiler33锅炉热水泵设备IOBoilerHotWaterPump34供热水泵设备IOHeatingWaterPump35排水泵设备IODrainagePump36生活水泵设备IODomesticWaterPump37集水井设备IOSumpPit38生活水箱设备IODomesticWaterTank39减压阀设备IOPressureReliefValve40室内照明控制器设备室内照明控制器设备IOIndoorLightingController41厕位检测设备厕位检测设备IOToiletPositionDetector42工位检测设备工位检测设备IOWorkStationDetector43升降电梯设备升降电梯设备IOElevator44电梯群控器设备电梯群控器设备IOElevatorClusterController
  • [技术干货] 智慧园区统一接入之通过IoT网关接入集成架构
    设备通过IoT网关和平台接入园区时,集成架构如图1所示。图1 设备通过IoT接入南向设备接入的整个业务流程可以分为2部分:数据上报和指令下发,各模块的处理流程如下。数据上报IoT平台能力:南向设备通过IoT网关和IoT平台,将原始数据上报到ROMA MQS的原始topic中。基线预置能力:IoT Adapter IO依据消息类型将消息拆分,并根据设备类型和消息类型转发给对应设备IO的中间层topic。例如人行闸机上报的消息,会转发给“人行闸机设备IO”;门禁上报的消息会转发给“门禁设备IO”。设备IO能力:设备IO将消息转换成标准格式,并发送到“设备标准消息MQS Topic”。基线预置能力:统一设备服务消费标准topic中的消息,转换成事件供业务应用做逻辑判断。指令下发基线预置能力:统一设备服务提供标准化的设备模型和控制命令,无论是对哪种设备下发指令,业务应用都只需调用标准化的指令接口即可。基线预置能力:统一设备服务根据业务侧下发的指令,在设备的标准模型中查询到该设备的指令服务后回调ROMA侧的“设备标准IoT接口”。基线预置能力:ROMA侧的“设备标准IoT接口”依据指令中的“channel”和“deviceType”参数,将指令路由到设备IO。“channel”参数用于多IoT平台的场景,确定指令要下发给哪个IoT平台,例如新基点IoT平台的channel值为“basepoint.connectionmax.iot”。“deviceType”参数确定指令路由到哪个设备IO,deviceType的值来自统一设备服务中定义的标准模型。例如人行闸机的指令会路由到“人行闸机设备IO”,门禁的指令会路由到“门禁设备IO”。设备IO能力:设备IO将业务侧下发的指令转换为实际物理设备可以执行的指令,并回调南向IoT平台的指令下发接口。IoT平台能力:南向IoT平台向实际物理设备下发指令,控制设备的运行。在整个业务流程中,每种类型的设备,都需要有一个对应的设备IO,用于标准化实际设备上报的消息,以及转换业务下发给设备的指令,消息上报和指令下发通过IoT平台来实现。针对园区常见的一部分设备,基线已经预集成了对应的设备IO,无需开发任何代码,可直接接入使用,详细清单参见基线已集成设备。对于不在基线预置内的设备,只需开发对应的设备IO即可,其它部分不需要开发,整个上行/下行流程和业务侧都无需变动,开发流程详见基线未集成设备接入指导。
  • [技术干货] 关于SSL VPN和IPSec VPN之间的联系和区别
    https://support.huaweicloud.com/vpn_faq/zh-cn_topic_0187565709.html使用场景IPsec VPN:连通的是两个局域网,如分支机构与总部(或华为云VPC)之间、本地IDC与云端VPC的子网;即IPsec VPN是网对网的连接。SSL VPN:连通的是一个客户端到一个局域网络,如出差员工的便携机访问公司内网。连接方式IPsec VPN:要求两端有固定的网关设备,如防火墙或路由器; 管理员需要分别配置两端网关完成IPsec VPN协商。SSL VPN:需要在主机上安装指定的Client软件,通过用户名/密码拨号连接至SSL设备。
  • [资料专区] V200R020SPH003补丁下载和安装
    由于设备osswitch切换到工业网关模式执行失败,需要安装补丁。而https://support.huawei.com/enterprise/zh/data-communication/ar500-pid-21247181/software/255709887 链接里面没有补丁包,在哪里可以下载?并且补丁安装指导书里面说的是在工业网关模式下操作的,现在无法切换到工业网关模式【osswitch切换失败】。。如何安装补丁。
  • [技术干货] WebDav的几种应用方法[转载]
    windows系统将阿里云盘挂载成本地磁盘使用1、获取阿里云盘的登录token。2、使用脚本程序运行起来webdav-aliyundriver的jar包。3、使用RaiDrive软件将阿里云盘挂载成本地磁盘。4、需要注意的是:token的有效期是不固定的,可能会失效,需要在失效的时候更换token。主要参考这个教程:https://blog.csdn.net/weixin_42795002/article/details/121864236,教程中的附件已经下载备份到百度网盘当中。将阿里云盘挂载到openwrt路由器上,实现全设备访问阿里云盘资源1、在openwrt上安装aliyundrive-webdav插件。2、填写token、用户名、密码,设置一个服务监听端口号,然后启动插件服务。3、所有终端设备,下载支持WebDav协议的软件即可,例如:ios端、电视盒子、安卓等,下载nplayer,添加webdav服务器,填写路由器的ip地址和设置的端口号、用户名密码,就可以直接访问到阿里云盘资源;4、需要注意的是:以上操作实现的是将阿里云盘挂载到路由器上,只有连接到路由器的本地局域网设备,才能访问阿里云盘。如果不在家,或者没有连接到路由器的网络,则无法访问,如果想在任意互联网环境下也能通过WebDav访问到阿里云盘资源,需要在路由器上做DDNS,相应的端口也要做转发,但这样做的弊端在于,所有的流量都是从阿里云盘流向家里的路由器,再通过路由器转发到你所在的互联网环境。5、需要注意的是:token的有效期是不固定的,可能会失效,需要在失效的时候更换token。windows系统将OneDrive、GoogleDrive挂载成为本地磁盘使用1、使用RaiDrive按照提示直接登录OneDrive、GoogleDrive即可完成挂载。开启OneDrive、GoogleDrive网盘的WebDav服务,实现任意公网环境全设备访问OneDrive、GoogleDrive网盘资源:1、由于OneDrive、GoogleDrive并未公布WebDav连接网盘的方法,但实际是可以通过变通的方法支持的。这里,我们通过使用第三方的"Koofr"平台。(https://APP.koofr.net/signup) ,其本身也是一家网盘服务商家。不同之处在于,Koofr 可以通过挂载其他网盘直接扩容, 因此,通过 Koofr,我们也可以间接配置 OneDrive 、GoogleDrive的 WebDav 服务。2、登录Koofr平台,我使用的是google账号登录,需要注意的是,Koofr平台部分用户可能需要魔法才能打开,我实测可以直接打开,然后点击左侧栏 「Connect」选中 OneDrive 进行挂载,同理,GoogleDrive也是一样的方式挂载。3、挂载完毕后,点击右上角头像,选择 Places,然后可以看到 Koofr 的网盘和自己刚刚挂载的网盘。在这里我们可以对网盘进行重命名删除等操作。点击右上角 Preference,再点击左栏 Password 选项。滑到下端 「APP passwords」部分,随便输入一个名字后(名字无所谓,后续用不到),点击 Generate,弹出的窗口中,即包含我们需要的密码,这个密码要保存好,只显示一次,一定要复制出来备份好,否则关了后就要重新建。4、至此,我们就通过Koofr平台实现了对OneDrive开启WebDav协议的支持,实际上,我们开启的是koofr 的 WebDav 服务,服务的地址是:https://app.koofr.net/dav/name,其中name就要换成你挂载到Koofr之后的网盘名字,例如https://app.koofr.net/dav/OneDrive或https://app.koofr.net/dav/GoogleDrive。或者,也可以直接使用(https://APP.koofr.net/dav),这将会直接把所有网盘一同使用。WebDav 账号为 koofr 的注册邮箱,密码即为最后步骤生成的密码。————————————————版权声明:本文为CSDN博主「大奖状」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/u010857736/article/details/124000900
  • [课程学习] usg6000学习笔记2
    双机热备包括双机热备、主备备份、负载分担、VRRP、vgmp、hrp、心跳线、抢占等1、双机热备    为了避免网关单点故障的风险,可以在网络的节点处同时部署两台设备,形成双机热备网。    当其中一台设备故障时可以平滑地切换到备用设备上。2、主备备份    在正常情况下仅用主用设备处理业务,备份设备空闲;当朱永设备接口、链路或整机故障时,备份设备切换为主用设备。    这种方式可以有效的防止设备单点故障导致的为了中断。通常用于重点业务的入口或接入点上。3、负载分担    所谓的负载分担也可以称为互为主备。两台设备同时处理业务。当一台设备发送故障的时候另一台设备会继承处理的业务。    两台设备共同处理业务链路,提高网络的转发效率降低主备发生的故障几率。3、VGMP    VGMP的基本观念如下    (1)接口集中监控        将系统中的所有VRRP主备组都加入到VGMP管理组中,由VGMP管理组统一监控组内所有的VRRP组的状态。        将系统的业务接口加入到VGMP管理组中,由VGMP管理组统一接组内所有接口状态(HRP track)    (2)设备状态统一管理        USG是提高VGMP管理组来进行设备状态管理的。VGMP管理组的主备状态决定了双机热备组网中设备的主备状态,决定了VGMP管理组内的成员接口和VRRP备份组的状态。        当一台设备的VFMP管理组状态为master时,组内所有成员的接口状态统一为master,该设备变成组设备。另一台设备的VGMP状态为slave。则该设备为备用设备。        每台设备的VGMP管理组的初始状态由用户决定(master或slave),master优先级为65001。slave的优先级为65000。当VGMP管理组通过VRRP组或者直接监视到接口down时,会重新技术VGMP管理组优先级,计算公式如下:VGMP优先级=VGMP初始设定-N*2(N为即可数量)。4、VRRP    在双机热备中VRRP的主要在于是检测三层接口故障并通知VGMP管理组,触发VGMP优先级变化。5、HRP     USG是状态防火墙,对于每一个动态生成的回话连接,都有一个会话表项对应。主用设备主力业务的过程创建了很多会话表项;而备用设备没有流量经过,因此没有创建会话表项。    如果发生主备切换则要重新建立会话,正在进行的会话会因为没有表项导致会话中断。    为了实现主要设备出现故障能平滑的切换到备用设备,需要在主备之间备份关系配置命令和会话表的状态信息。    启动HRP备份功能后,关键配置命令和会话表状态信息会实时同步到备份设备上。6、心跳线    心跳线是指主设备和备用设备之间的直连网线,主备设备通过心跳线小虎报文了解对方的状态,以及实现配置命令和状态信息的备份。心跳线两端的接口为心跳接口。7、抢占    当主用设备恢复正常后,重新切换成主用设备处理业务的过程。    如果取消了抢占功能的配置,则原主用设备恢复后,仍是备用设备处理业务。双机热备使用限制    硬件限制        只支持两台设备进行热备。        型号和版本相同。        接口卡位置、类型和数量相同。        如果使用二层接口作为心跳线,需要将二层接口加入到vlan,创建vlanif并配置IP地址。然后将vlanif接口作为心跳接口,配置remote参数来指定对端心跳接口的IP地址。    软件限制        软件版本相同。        bootrom版本相同。        运行模式相同,级都是防火墙模式或UTM模式。        禁用主备设备的配置文件均为初始文件。否则,可能由于两台设备的配置冲突导致设备切换后出现问题。        主备设备的虚拟防火墙的名称,数量和配置顺序必须一致        主备设备的对应接口必须加入到相同的安全区域。比如主设备的G0/0/1加入了trust区域,备份设备的G0/0/1也要加入trust区域        心跳接口配置必须一致        主备设备业务即可IP地址固定,因此双机热备特性不能于pppoe拨号、dhcp Client、3g或xdsl等自动获得IP地址的特性结合使用。    与NAT结合使用的限制        双机热备与NAT结合时,主备设备的上下行业务接口必须为三层接口        配置vrrp组时,需要将NAT地址池或者NAT server与vrrp组绑定。    与IPSec结合使用限制        主备备份场景主从与IPSec结合使用,负载分担场景不支持        双机热备与IPSec结合时,主备设备的上下行业务接口必须为三层接口        双机热备和IPSec的配置与单独使用时没有区别        只需要在主用设备上配置IPSec策略,在备用设备上不需要配置IPSec策略。主用设备的IPSec策略会备份到备用设备上,因此只需要子啊备用设备的出接口上应用备份过来的IPSec策略。        作为IPSec隧道的发起方,则必须要指向命令local-address [ip-address],设置本段发起协商的地址为VRRP组的虚拟地址。    配置流程1、完成业务接口的基本配置2、配置VGMP管理组(三选一)    (1)三层业务接口连接交换机        通过vrrp备份组检测三层业务接口    (2)三层业务接口来连接路由器        通过HRP track检测三层业务接口    (3)二层业务接口        通过HTP Track检测vlan3、配置心跳口4、启动HRP备份4、(可选项)配置HRP备份方式5、配置主备防火墙的配置一致性6、验证配置结果6、(可选项)关键组网需求配置其他业务7、ENDEVRRP配置命令FW1:interface gigabitethernet 0/0/1ip address 10.0.0.1 24vrrp vrid 1 virtual-ip 10.0.0.254 24 activeFW2:interface gigabitethernet 0/0/1ip address 10.0.0.2 24vrrp vrid 1 virtual-ip 10.0.0.254 24 active !在配置vrrp的时候发现,当接口shutdown后,vrrp组进入初始化状态,USG6000的抢占延迟为60s。master在同一个设备上时是可以进行通讯,如果master在不同设备上时测试通讯失败。vrrp可能是VGMP没有进行统一管理。在USG5000型号上配置vrrp时需要使用命令vrrp virtual-mac enable,不然会不能ping通虚拟地址的情况。!配置HRP trackinterface gigabitethernet 0/0/0hrp track {master|slave}    #配置状态为master或slave的VGMP管理监测口状态    #主备场景下,主用设备的上下行接口上配置master,备用设备配置slave。    #负载分担场景下,主备设备的上下行接口都配置master和slave。hrp ospf-cost adjust-enable [slave-cost]    #区域HRP状态调整ospf相关cost值system-viewhrp preempt delay [ interval ]  #配置VGMP管理组的抢占延迟hrp enable                      #启动HRP hrp configuration check [hrp|acl]   #检测hrp两端配置一致性hrp interface [interface-type] [interface-number] remote [ip-address]   #配置心跳线(加入接口需要完成基本配置,例如IP地址防火墙区域)hrp switch active               #设置设备为主用设备hrp auto-sync [config|connection-status]    #启动命令与状态自动备份hrp auto-sync                               #启动命令与状态自动备份   hrp sync [config|connection-status]         #区域命令与状态手动批量备份bhrp mirror session enable                   #启用快速会话备份试验NAT+VRRP+HRP(基于USG 6000):hrp enablehrp interface gigabitethernet 1/0/1 remote 10.0.0.1hrp mirror session enable #hrp nat resource primary-gourp|secondary-group  在负载均衡情况下使用nat是需要在主备设备配置该命令interface gigabitethernet 1/0/2ip address 200.0.0.1 24vrrp vrid 2 virtual-address 200.0.0.3 activenat address-group 'all' 1 section 200.0.0.5 200.0.0.254 quitsecurity-policy  rule name nat  source-zone trust  destination-zone untrust action permit  quitnat-policy rule name nat  source-zone trust destination-zone untrust action source-nat quit
  • [问题求助] 高级页面问题
    【功能模块】我在这个项目中创建了页面  但是在路由这个组件中选择tab的路由时没有我创建的page【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [认证交流] K8s和vpc组网关系
    Kubernetes本身并不负责网络通信,Kubernetes提供了容器网络接口CNI,具体的网络通信交给CNI插件来负责,开源的CNI插件非常多,像Flannel、Calico等,华为云CCE也专门为Kubernetes定制了CNI插件,使得Kubernetes可以使用华为云VPC网络。通过ELB中转一次连K8s-MasterElb不能直接连master节点,而elb连Service又必须得带selector。那就只能额外部署一个proxy容器,使用selector先到这个proxy容器,再转到Master