爆款云主机低至25.83元/年
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 云聚517 · 好价翼起拼 NEW 爆款云主机低至25.83元/年,参与拼团享更多优惠,拼成得额外优惠券
  • 安全隔离版OpenClaw NEW OpenClaw云服务器专属“龙虾“套餐低至1.5折起
  • 聚力AI赋能 天翼云大模型专项 大模型特惠专区·Token Plan 轻享包低至9.9元起
  • 青云志云端助力计划 NEW 一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云
  • 企业出海解决方案 NEW 助力您的业务扬帆出海,通达全球!
  • 天翼云信创专区 NEW “一云多芯、一云多态”,国产化软件全面适配,国产操作系统及硬件芯片支持丰富
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 云上钜惠 爆款云主机全场特惠,2核4G只要1.8折起!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
公共算力服务
  • 裸金属
  • 定制裸金属
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
Token服务
  • 模型广场
  • 体验中心
  • 服务接入
应用托管
  • 应用实例
科研助手
  • 科研智能体
  • 科研服务
  • 开发机
  • 并行计算
大模型
  • DeepSeek-V4-Flash
  • GLM-5.1
  • Qwen3.5-122B-A10B
  • DeepSeek-V3.2(旗舰版)
  • GLM-5(正式版)
智算一体机
  • 智算一体机
智能体引擎
  • 智能体引擎
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场进入AI Store创新解决方案公有云生态专区智云上海应用生态专区
建站工具
  • 新域名服务
  • SSL证书
  • 翼建站
企业办公
  • 安全邮箱
  • WPS 365 天翼云版
  • 天翼企业云盘(标准服务版)
灾备迁移
  • 云管家2.0
  • 翼备份(SaaS版)

定价

协助您快速了解云产品计费模式、价格详情,轻松预估上云成本
价格计算器
  • 动态测算产品价格
定价策略
  • 快速了解计费模式

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼信创云专区
  • 信创云专区
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
培训与认证
  • 天翼云学堂
  • 天翼云认证
开源社区
  • 魔乐社区
  • OpenTeleDB

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 服务保障
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家
我要反馈
  • 建议与反馈
  • 用户体验官
信息公告
  • 客户公告

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2026智能云生态大会
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      对等连接_相关内容
      • IPsec VPN
        本节介绍翼甲控制台的IPsec VPN操作。 IPsec VPN 是采用IPSec协议来实现远程接入的一种VPN技术,IPSec全称为Internet Protocol Security,是由Internet Engineering Task Force (IETF) 定义的安全标准框架,在公网上为两个私有网络提供安全通信通道,通过加密通道保证连接的安全——在两个公共网关间提供私密数据封包服务。 IPsec协议为IP层上的网络数据安全提供了一整套安全体系结构,包括安全协议AH(Authentication Header,认证头)和ESP(Encapsulating Security Payload,封装安全载荷)、IKE(Internet Key Exchange,互联网密钥交换)以及用于网络认证及加密的一些算法等。其中,AH协议和ESP协议用于提供安全服务, IKE协议用于密钥交换。 IPsec VPN隧道 (1)添加IPsec VPN隧道:点击“添加”可添加IPsec VPN隧道。 启用:配置完成,保存翼甲云防火墙配置后立即生效 描述:输入IPsec连接的描述。 连接类型:可选隧道模式和传输模式。 IKE版本:可选IKEv1和IKEv2。 接口:单带宽时选择外网口会自动补全外部IP,也可选择自定义外部IP。 外部IP:翼甲云防火墙外网口IP。 远程主机:对端公网IP。 本地网络:输入翼甲云防火墙侧VPC所属网段。 远程网络:输入本地网关设备侧的网段。 共享密钥:输入共享密钥,该值必须与本地网关设备的预共享密钥一致。 阶段1 IKE/ISAKMP手动配置:手动配置阶段1参数,该值必须与本地网关设备的参数一致。 阶段2 ESP手动配置:手动配置第2阶段参数,该值必须与本地网关设备的参数一致。 在创建IPsec连接页面,根据页面信息配置IPsec参数,然后点击完成。 至此翼甲云防火墙侧的IPSec vpn配置完毕。 步骤2:配置安全组 确保vpc的桌面安全组规则允许本地网络网段访问。 步骤3:配置本地网关设备侧IPSec vpn (2)刷新:点击“刷新”可刷新并查看当前IPsec VPN隧道激活情况。 (3)导出:点击“导出”,可将IPsec VPN隧道以JSON文件的形式进行导出。 (4)导入:将IPsec VPN隧道以JSON文件的格式编辑后,点击“批量删除”,可批量导入静态DNS条目。 (5)删除:点选IPsec VPN隧道并点击“批量删除”,可对所选条目进行批量删除;在单条IPsec VPN条目最右侧操作列点击“删除”可删除当前条目。 (6)编辑:在已创建隧道的最右侧操作列,点击“编辑”,可对单条内容配置进行编辑。 (7)复制:在已创建隧道最右侧操作列,点击“复制”,将会弹出复制确认框,用户可基于当前条目的字段进行二次编辑,点击确认后可创建条目。
        来自:
        帮助文档
        天翼云电脑(政企版)
        扩展功能
        翼甲卫士
        翼甲控制台
        IPsec VPN
      • 时序图
        参数 说明 连接方式 选择时序图的连线方式 线宽 设置线的宽度 是否显示点 设置显示点 边距 设置上下左右的边距大小
        来自:
        帮助文档
        云日志服务
        用户指南
        日志可视化
        统计图表
        时序图
      • 创建告警规则
        本文介绍如何根据需求自定义设置告警规则。 操作场景 您可以在云监控产品控制台为VPN连接产品设置告警规则,当资源的监控指标达到告警条件,云监控将向您发送告警消息,报告异常监控数据,帮助您及时掌握异常状态并处理,保障业务顺畅运行。 前提条件 您在该区域下有正常状态的VPN资源;如果资源状态异常,可能会没有监控数据,无法触发告警。 操作步骤 1. 登录控制中心。 2. 选择“管理与部署”下的“云监控”产品。 3. 选择“告警服务 ”下的“告警规则”,进入告警规则页面。 4. 在告警规则页面,单击右上角的“创建告警规则”按钮,进入创建告警规则页面。 5. 在“选择监控对象”部分,规则类型选择“指标监控”,云服务选择“VPN”,维度可选“VPN网关、IPsec连接、SSL客户端、SSL网关”,监控对象类型选择“具体实例”,监控对象可以从弹出对话框列表中按需选择。如果您是通过点击具体监控指标操作列中的“创建告警规则”按钮跳转到创建告警规则页面的,则此部分内容会自动填充为关联监控对象,无法调整。 6. 在“选择监控指标”部分,选择类型为“自定义创建”,针对于不同的监控指标,可以配置不同的监控策略,如监控入方向流量速率的最大值、监控出方向数据包速率的最小值、监控SSL客户端连接数的原始值等,配置策略、聚合周期和出现次数之后,即可产生告警,在“告警服务”下的“告警记录”中可以查看告警记录。如果开启发送通知还需要配置告警联系组等选项,用于将告警以邮件或短信方式通知告警联系人。 7. 在“规则信息”部分,需要填入告警规则名称,选择企业项目,可选填写描述信息。 8. 最后,点击“确定”完成告警规则的创建。
        来自:
        帮助文档
        VPN连接
        用户指南
        监控告警
        创建告警规则
      • 入门概述
        本节内容为您介绍快捷开通并使用天翼云电脑(公众版)的流程,以便您快速上手。 本节内容为您提供在移动客户端快捷开通并使用天翼云电脑(公众版)的流程。 准备工作: 使用云电脑前,请确保您已经开通了天翼云电脑账号并完成实名认证。相关操作参考如下: 注册天翼云账号 使用流程: 下载客户端 用户通过终端类型,自行选择下载版本。 实名认证 用户在使用天翼云电脑移动客户端时,需要通过实名认证后才允许订购云电脑。 订购云电脑 根据需求选择云电脑配置,并把云电脑分配到个人用户,支付成功则完成云电脑的快速订购。 登录连接云电脑 下载并安装客户端后,您可以使用云电脑账号登录客户端,然后连接使用云电脑。
        来自:
        帮助文档
        天翼云电脑(公众版)
        快速入门
        入门概述
      • 功能类问题
        数据库审计的Agent支持部署在哪些操作系统上? 操作系统 操作系统位数 支持版本 Ubuntu X64 14.04、16.04、18.04 Debian X64 7.6、8.7、9.5、10.11、11.2 CentOS X64 5.11、6.0、7.4、7.6、8 RedHat X64 6.5、7.0、7.5 SUSE X64 11SP4、12SP4 Solaris X86 X86 5.10、5.11 Solaris Sparc X64 5.10 AIX 5.3、6.1、7.1 Windows X64 Windows7、Windows10 Windows X86 Windows7 Windows Server X64 2003、2008、2012、2016、2022 EulerOS(欧拉) x64 EulerOS 2.0 SP9 银河麒麟 aarch64 v10服务器版 兆芯cpu+银河麒麟系统 x64 v10服务器版 兆芯cpu+中标麒麟系统 x64 7 兆芯cpu+统信UOS x86 v20 海光cpu+统信UOS x64 v20 鲲鹏cpu+统信UOS aarch64 v20 数据库审计支持双向审计吗? 数据库审计支持双向审计。双向审计是对数据库的请求和响应都进行审计。 数据库审计默认使用双向审计。 数据库审计支持TLS连接的应用吗? 不支持。TLS(Transport Layer Security)连接的应用是加密的,无法使用数据库安全审计功能。
        来自:
        帮助文档
        数据库审计
        常见问题
        功能类问题
      • 连接报错:连接失败或服务不可达
        本页介绍了 connect failed 连接报错的处理方法。 问题描述 使用客户端连接文档数据库服务实例时报错 "Authentication failed", 使用的连接命令如下: mongo "mongodb://root: @ , /admin?authSourceadmin&replicaSet " 报错信息如下: 20230719T12:42:13.281+0800 W NETWORK [js] Unable to reach primary for set DDS 20230719T12:42:13.281+0800 I NETWORK [js] Cannot reach any nodes for set DDS. Please check network connectivity and the status of the set. This has happened for 2 checks in a row. 20230719T12:42:13.284+0800 E QUERY [js] Error: connect failed to replica set DDS/ : , : : connect@src/mongo/shell/mongo.js:257:13 @(connect):1:6 exception: connect failed 原因分析 从报错信息来看,是客户端到文档数据库服务之间的网络访问不通导致的。 可能的原因有: 文档数据库服务实例的端口错误,不可用。 文档数据库服务实例与客户端云主机不在同一个区域或子网。 服务端开启了 SSL 模式,但是客户端没有使用 SSL 模式访问。 处理方法 1. 检查文档数据库服务实例与ECS是否在同一个区域、同一个安全组和子网内。 首先登录文档数据库服务控制台,单击实例名称,在基本信息页面查看文档数据库服务实例所在的区域、VPC、安全组和子网信息。然后弹性云服务器控制台,单击云服务器名称,在基本信息页面,查看当前云主机所在的区域、VPC、安全组和子网信息。确保 2 者的配置信息相同。 2. 检查实例的端口是否正确,并通过 curl/telnet 命令检查端口是否可用。 登录到文档数据库服务控制台,单机实例名称,在基本信息页面查看实例的 IP 和端口信息,然后使用 curl 或者 telnet 命令测试端口的连通性。 示例如下: curl 检查 $ curl : It looks like you are trying to access MongoDB over HTTP on the native driver port. telnet 检查 $ telnet Trying ... Connected to . Escape character is '^]'. ^] telnet> 3. 检查实例是否开启了 SSL 模式。 登录到文档数据库服务控制台,单机实例名称,在基本信息页面上查看是否开启了 SSL 模式。如果开启了 SSL 模式,则下载证书后使用 SSL 模式访问,命令示例如下: ./mongo "mongodb://root: @ , /admin?authSourceadmin&replicaSet " ssl sslCAFile sslAllowInvalidHostnames
        来自:
        帮助文档
        文档数据库服务
        故障排除
        连接报错:连接失败或服务不可达
      • 公共接入点接入
        本节介绍如何使用的公共接入点接入Kafka的方法,文档以Java代码为例。 前提条件 已配置正确的安全组。 已获取连接Kafka实例的地址。 如果Kafka实例未开启自动创建Topic功能,在连接实例前,请先创建Topic。 已创建弹性云服务器,如果使用内网同一个VPC访问实例,请设置弹性云服务器的VPC、子网、安全组与Kafka实例的VPC、子网、安全组一致。 使用内网同一个VPC访问,实例端口为8090,实例连接地址从控制台实例详情菜单处获取,如下图所示。 Maven中引入Kafka客户端 java Kafka实例基于社区版本2.8.2/3.6.2,推荐客户端保持一致。 org.apache.kafka kafkaclients 2.8.2/3.6.2 客户端关键参数 java Properties props new Properties(); props.put(ProducerConfig.BOOTSTRAPSERVERSCONFIG, BROKERADDR); props.put(ProducerConfig.VALUESERIALIZERCLASSCONFIG, StringSerializer.class.getName()); props.put(ProducerConfig.KEYSERIALIZERCLASSCONFIG, StringSerializer.class.getName()); 生产者代码示例 java package com.justin.kafka.service.gw.plain; import org.apache.kafka.clients.producer.Callback; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerConfig; import org.apache.kafka.clients.producer.ProducerRecord; import org.apache.kafka.clients.producer.RecordMetadata; import org.apache.kafka.common.serialization.StringSerializer; import java.util.Properties; public class Producer { private final KafkaProducer producer; public final static String TOPIC "testtopic"; public final static String BROKERADDR "192.168.0.11:8090,192.168.0.9:8090,192.168.0.10:8090"; public Producer() { Properties props new Properties(); props.put(ProducerConfig.BOOTSTRAPSERVERSCONFIG, BROKERADDR); props.put(ProducerConfig.VALUESERIALIZERCLASSCONFIG, StringSerializer.class.getName()); props.put(ProducerConfig.KEYSERIALIZERCLASSCONFIG, StringSerializer.class.getName()); props.put(ProducerConfig.ACKSCONFIG, "all"); props.put("retries",3); producer new KafkaProducer<>(props); } public void produce() { try { for (int i 0; i (TOPIC, data), new Callback() { public void onCompletion(RecordMetadata metadata, Exception exception) { if (exception ! null) { // TODO: 异常处理 exception.printStackTrace(); return; } System.out.println("produce msg completed, partition id " + metadata.partition()); } }); } } catch (Exception e) { // TODO: 异常处理 e.printStackTrace(); } producer.flush(); producer.close(); } public static void main(String[] args) { Producer producer new Producer(); producer.produce(); } }
        来自:
        帮助文档
        分布式消息服务Kafka
        用户指南
        连接Kafka
        公共接入点接入
      • 步骤三:绑定弹性公网IP
        本章节介绍如何对数据库实例绑定公网IP。 操作场景 关系型数据库实例创建成功后,默认未开启公网访问功能(即未绑定弹性公网IP)。关系型数据库服务支持用户绑定弹性公网IP,在公共网络来访问数据库实例,绑定后也可根据需要解绑。 注意事项 您需要设置安全组,开通需访问数据库的IP地址和端口,才可以访问数据库实例。在访问数据库前,您需要将访问数据库的IP地址,或者IP段加安全组入方向的访问规则。 公网访问会降低实例的安全性,请谨慎选择。为了获得更快的传输速率和更高的安全级别,建议您将应用迁移到与您的关系型数据库在同一区域的弹性云服务器上。 绑定弹性公网IP 步骤 1 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“基本信息”页面。 步骤 2 在左侧导航栏,单击“连接管理”,单击“绑定弹性公网IP”。 步骤 3 在弹出框的弹性公网IP地址列表中,选择目标弹性公网IP,单击“确定”,提交绑定任务。 如果没有可用的弹性公网IP,您可单击“查看弹性公网IP”,获取弹性公网IP。 步骤 4 在“连接管理”页面,查看绑定成功的弹性公网IP。 您也可以在“任务中心”页面,查看“实例绑定弹性公网IP”任务的执行进度及结果。
        来自:
        帮助文档
        关系数据库SQL Server版
        快速入门
        通过公网连接Microsoft SQL Server实例
        步骤三:绑定弹性公网IP
      • 首页
        本章节为您介绍堡垒机首页相关内容 管理角色首页 使用管理角色登录云堡垒机时可查看目前堡垒机下纳管的用户数、主机数及待审批的工单数量。 审计角色首页 使用审计角色登录云堡垒机时可查看目前堡垒机下纳管的用户数、主机数以及历史会话数。 会话统计:图表显示目前堡垒机正在连接的会话数。 剩余会话:目前堡垒机剩余可连接的会话总数。 活跃人数:目前登录堡垒机的总用户数。 活动主机:目前正在连接的主机总数。
        来自:
        帮助文档
        云堡垒机(原生版)
        用户指南
        管理员手册
        首页
      • 设置http2的初始流量窗口大小插件
        在网格数据面中initialstreamwindowsize 和 initialconnectionwindowsize 是与HTTP/2流量控制(Flow Control)相关的参数,它们用于控制 HTTP/2连接和流的初始窗口大小,从而影响数据传输的效率和性能。在内存比较紧张的场景下可以考虑设置较小的值,在业务对于网络延迟敏感、带宽充足且内存资源较充足的场景下可以考虑设置更大的值。 配置说明 字段 类型 是否必填 默认值 说明 patchContext Enum 否 ANY 补丁生效的上下文,支持以下选项 ANY: 在Sidecar和网关中同时生效 SIDECARINBOUND:仅在Sidecar入站方向生效 SIDECAROUTBOUND: 仅在Sidecar出站方向生效 GATEWAY: 仅在网关中生效 portNumber string 是 网关生效场景下对应网关监听的端口 Sidecar生效场景下对应业务端口 initialConnectionWindowSize string 是 "25165824" 初始连接级别窗口大小,建议设置为"65536" initialStreamWindowSize string 是 "16777216" 初始流级别窗口大小,建议设置为"65536"
        来自:
        帮助文档
        应用服务网格
        用户指南
        扩展中心
        内置插件说明
        设置http2的初始流量窗口大小插件
      • 配置DLI目的端参数
        本章节主要介绍配置DLI目的端参数。 作业中目的连接为配置DLI连接,即将数据导入到数据湖探索服务(DLI)时,目的端作业参数如下表所示。 说明 使用CDM服务迁移数据到DLI时,当前用户需要先开通OBS读取权限。 表 DLI作为目的端时的作业参数 参数名 说明 取值样例 资源队列 选择目的表所属的资源队列。 DLI的default队列无法在迁移作业中使用,您需要在DLI中新建SQL队列。 cdm 数据库名称 写入数据的数据库名称。 dli 表名 写入数据的表名。 cardetail 导入前清空数据 选择导入前是否清空目的表的数据。 如果设置为是,任务启动前会清除目标表中数据。 否 清空数据方式 导入前清空数据,如果设置为true时,呈现此参数。 TRUNCATE:删除标准数据。 INSERTOVERWRITE:新增数据插入,同主键数据覆盖。 TRUNCATE 分区 “导入前清空数据”设置为“是”时,呈现此参数。 填写分区信息后,表示清空该分区的数据。 year2020,locationsun
        来自:
        帮助文档
        数据治理中心 DataArts Studio
        用户指南
        数据集成
        管理作业
        配置作业目的端参数
        配置DLI目的端参数
      • 首页
        本章节为您介绍堡垒机首页相关内容 管理角色首页 使用管理角色登录云堡垒机时可查看目前堡垒机下纳管的用户数、主机数、应用数及待审批的工单数量。 审计角色首页 使用审计角色登录云堡垒机时可查看目前堡垒机下纳管的用户数、主机数以及历史会话数。 会话统计:图表显示目前堡垒机正在连接的会话数。 剩余会话:目前堡垒机剩余可连接的会话总数。 活跃人数:目前登录堡垒机的总用户数。 活动主机:目前正在连接的主机总数。
        来自:
        帮助文档
        云堡垒机(原生版)
        用户指南
        管理员手册
        首页
      • Java调用示例
        1. com.ffcs.ebp.ebpsdk.common.Response plaintext package com.ffcs.ebp.ebpsdk.common; import java.util.Map; public class Response { private int statusCode; private String body; private Map headers; public int getStatusCode() { return statusCode; } public void setStatusCode(int statusCode) { this.statusCode statusCode; } public String getBody() { return body; } public void setBody(String body) { this.body body; } public Map getHeaders() { return headers; } public void setHeaders(Map headers) { this.headers headers; } } 2. com.ffcs.ebp.ebpsdk.YunSign plaintext package com.ffcs.ebp.ebpsdk; import com.ffcs.ebp.ebpsdk.common.Response; import org.apache.commons.lang.StringUtils; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.client.config.AuthSchemes; import org.apache.http.client.config.CookieSpecs; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.; import org.apache.http.config.Registry; import org.apache.http.config.RegistryBuilder; import org.apache.http.conn.socket.ConnectionSocketFactory; import org.apache.http.conn.socket.PlainConnectionSocketFactory; import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.util.EntityUtils; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.io.; import java.net.URLEncoder; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.KeyManagementException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; import java.text.SimpleDateFormat; import java.util.; public class YunSign { private String url; private String body; private String ak; private String sk; private String uuId; private int temp; private String contentType; private String queryStr; private Map headerMap; private String afterQuery; public YunSign(String url, String ak, String sk, String uuId, String body, int temp, String contentType, String queryStr, Map headerMap) { this.url url; if(body.equals("{}")){ body ""; } this.body body; this.ak ak; this.sk sk; this.uuId uuId; this.temp temp; this.contentType contentType; this.queryStr queryStr; this.headerMap headerMap; } public Response toDo(String method, int connectTimeout, int connectionRequestTimeout, int socketTimeout) { Response response null; method method.toUpperCase(); switch (method) { case "POST": response doPost(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "GET": if (StringUtils.isNotEmpty(this.body)) { response sendJsonByGetReq(connectTimeout, connectionRequestTimeout, socketTimeout); } else { response doGet(connectTimeout, connectionRequestTimeout, socketTimeout); } break; case "DELETE": if (StringUtils.isNotEmpty(this.body)) { response sendJsonByDeleteReq(connectTimeout, connectionRequestTimeout, socketTimeout); } else { response doDelete(connectTimeout, connectionRequestTimeout, socketTimeout); } break; case "PUT": response doPut(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "PATCH": response doPatch(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "HEAD": response doHead(connectTimeout, connectionRequestTimeout, socketTimeout); break; } return response; } private String getSign(Date eopDate) { String calculateContentHash getSHA256(body); //报文原封不动进行sha256摘要 // System.out.println("calculateContentHash:" + calculateContentHash); SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); SimpleDateFormat DATEFORMATTER new SimpleDateFormat("yyyyMMdd"); String singerDate TIMEFORMATTER.format(eopDate); String singerDd DATEFORMATTER.format(eopDate); //header的key按照26字母进行排序, 以&作为连接符连起来 try { String CampmocalHeader String.format("ctyuneoprequestid:%sneopdate:%sn", this.uuId, singerDate); String sigture CampmocalHeader + "n" + this.afterQuery + "n" + calculateContentHash; // System.out.println("sigture:" + sigture); byte[] ktime HmacSHA256(singerDate.getBytes(), sk.getBytes()); // System.out.println("ktime:" + HexUtils.bytes2Hex(ktime)); byte[] kAk HmacSHA256(ak.getBytes(), ktime); // System.out.println("kAk:" + HexUtils.bytes2Hex(kAk)); byte[] kdate HmacSHA256(singerDd.getBytes(), kAk); // System.out.println("kdate:" + HexUtils.bytes2Hex(kdate)); String Signature Base64.getEncoder().encodeToString(HmacSHA256(sigture.getBytes("UTF8"), kdate)); // System.out.println("Signature:" + Signature); String signHeader String.format("%s Headersctyuneoprequestid;eopdate Signature%s", ak, Signature); // System.out.println("signHeader:" + signHeader); return signHeader; } catch (Exception e) { e.printStackTrace(); } return null; } / 在调用SSL之前需要重写验证方法,取消检测SSL 创建ConnectionManager,添加Connection配置信息 @return HttpClient 支持https / private static CloseableHttpClient sslClient() { try { // 在调用SSL之前需要重写验证方法,取消检测SSL X509TrustManager trustManager new X509TrustManager() { @Override public X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted(X509Certificate[] xcs, String str) { } @Override public void checkServerTrusted(X509Certificate[] xcs, String str) { } }; SSLContext ctx SSLContext.getInstance(SSLConnectionSocketFactory.TLS); ctx.init(null, new TrustManager[]{trustManager}, null); SSLConnectionSocketFactory socketFactory new SSLConnectionSocketFactory(ctx, NoopHostnameVerifier.INSTANCE); // 创建Registry RequestConfig requestConfig RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARDSTRICT) .setExpectContinueEnabled(Boolean.TRUE).setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST)) .setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC)).build(); Registry socketFactoryRegistry RegistryBuilder. create() .register("http", PlainConnectionSocketFactory.INSTANCE) .register("https", socketFactory).build(); // 创建ConnectionManager,添加Connection配置信息 PoolingHttpClientConnectionManager connectionManager new PoolingHttpClientConnectionManager(socketFactoryRegistry); CloseableHttpClient closeableHttpClient HttpClients.custom().setConnectionManager(connectionManager) .setDefaultRequestConfig(requestConfig).build(); return closeableHttpClient; } catch (KeyManagementException ex) { throw new RuntimeException(ex); } catch (NoSuchAlgorithmException ex) { throw new RuntimeException(ex); } } public Response doGet(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); //创建HttpGet远程连接实例 HttpGet httpGet; if (StringUtils.isNotEmpty(this.afterQuery)) { httpGet new HttpGet(this.url + "?" + this.afterQuery); } else { httpGet new HttpGet(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpGet.setHeader("ContentType", this.contentType); httpGet.setHeader("ctyuneoprequestid", this.uuId); httpGet.setHeader("EopAuthorization", getSign(eopDate)); httpGet.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpGet.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpGet.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 httpGet.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(httpGet); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response sendJsonByGetReq(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { Response result new Response(); CloseableHttpClient client null; CloseableHttpResponse response null; try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL client sslClient(); } else { client HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpGetWithEntity远程连接实例 HttpGetWithEntity httpGetWithEntity; if (StringUtils.isNotEmpty(this.afterQuery)) { httpGetWithEntity new HttpGetWithEntity(this.url + "?" + this.afterQuery); } else { httpGetWithEntity new HttpGetWithEntity(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为HttpGetWithEntity实例设置配置 httpGetWithEntity.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpGetWithEntity.setHeader("ContentType", this.contentType); httpGetWithEntity.setHeader("ctyuneoprequestid", this.uuId); httpGetWithEntity.setHeader("EopAuthorization", getSign(eopDate)); httpGetWithEntity.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpGetWithEntity.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpGetWithEntity.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); HttpEntity httpEntity new StringEntity(body, Charset.forName("UTF8")); httpGetWithEntity.setEntity(httpEntity); //执行请求操作,并拿到结果(同步阻塞) response client.execute(httpGetWithEntity); //获取结果实体 HttpEntity entity response.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! client) { try { client.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPost(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpPost远程连接实例 HttpPost httpPost; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPost new HttpPost(this.url + "?" + this.afterQuery); } else { httpPost new HttpPost(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPost.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpPost.setHeader("ContentType", this.contentType); httpPost.setHeader("ctyuneoprequestid", this.uuId); httpPost.setHeader("EopAuthorization", getSign(eopDate)); httpPost.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPost.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPost.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPost.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPost); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPut(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpPut远程连接实例 HttpPut httpPut; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPut new HttpPut(this.url + "?" + this.afterQuery); } else { httpPut new HttpPut(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPut.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(20321900,01,05); httpPut.setHeader("ContentType", this.contentType); httpPut.setHeader("ctyuneoprequestid", this.uuId); httpPut.setHeader("EopAuthorization", getSign(eopDate)); httpPut.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPut.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPut.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPut.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPut); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPatch(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpPatch远程连接实例 HttpPatch httpPatch; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPatch new HttpPatch(this.url + "?" + this.afterQuery); } else { httpPatch new HttpPatch(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPatch.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpPatch.setHeader("ContentType", this.contentType); httpPatch.setHeader("ctyuneoprequestid", this.uuId); httpPatch.setHeader("EopAuthorization", getSign(eopDate)); httpPatch.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPatch.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPatch.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPatch.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPatch); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doDelete(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpGet远程连接实例 HttpDelete httpDelete; if (StringUtils.isNotEmpty(this.afterQuery)) { httpDelete new HttpDelete(this.url + "?" + this.afterQuery); } else { httpDelete new HttpDelete(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpDelete.setHeader("ContentType", this.contentType); httpDelete.setHeader("ctyuneoprequestid", this.uuId); httpDelete.setHeader("EopAuthorization", getSign(eopDate)); httpDelete.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpDelete.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpDelete.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 httpDelete.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(httpDelete); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response sendJsonByDeleteReq(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpGet远程连接实例 HttpDeleteWithBody delete; if (StringUtils.isNotEmpty(this.afterQuery)) { delete new HttpDeleteWithBody(this.url + "?" + this.afterQuery); } else { delete new HttpDeleteWithBody(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); delete.setHeader("ContentType", this.contentType); delete.setHeader("ctyuneoprequestid", this.uuId); delete.setHeader("EopAuthorization", getSign(eopDate)); delete.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { delete.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : delete.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); HttpEntity httpEntity new StringEntity(body, Charset.forName("UTF8")); delete.setEntity(httpEntity); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 delete.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(delete); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doHead(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpHead远程连接实例 HttpHead httpHead; if (StringUtils.isNotEmpty(this.afterQuery)) { httpHead new HttpHead(this.url + "?" + this.afterQuery); } else { httpHead new HttpHead(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpHead.setHeader("ContentType", this.contentType); httpHead.setHeader("ctyuneoprequestid", this.uuId); httpHead.setHeader("EopAuthorization", getSign(eopDate)); httpHead.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpHead.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpHead.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpHead实例设置配置 httpHead.setConfig(requestConfig); // 执行head请求得到返回对象 response httpClient.execute(httpHead); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } private String toHex(byte[] data) { StringBuilder sb new StringBuilder(data.length 2); byte[] var2 data; int var3 data.length; for (int var4 0; var4 2) { String encodeStr null; encodeStr URLEncoder.encode(s[1], "UTF8"); str s[0] + "" + encodeStr; afterQuery afterQuery + str; } else { String encodeStr ""; str s[0] + "" + encodeStr; afterQuery afterQuery + str; } } else { String[] s str.split(""); if (s.length > 2) { String encodeStr URLEncoder.encode(s[1], "UTF8"); str s[0] + "" + encodeStr; afterQuery afterQuery + "&" + str; } else { String encodeStr ""; str s[0] + "" + encodeStr; afterQuery afterQuery + "&" + str; } } } } } catch (Exception e) { e.printStackTrace(); } return afterQuery; } } 3. HexUtils.java plaintext package com.ffcs.ebp.ebpsdk; public class HexUtils { private static final char[] HEXES { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; / byte数组 转换成 16进制小写字符串 / public static String bytes2Hex(byte[] bytes) { if (bytes null bytes.length 0) { return null; } StringBuilder hex new StringBuilder(); for (byte b : bytes) { hex.append(HEXES[(b >> 4) & 0x0F]); hex.append(HEXES[b & 0x0F]); } return hex.toString(); } / 16进制字符串 转换为对应的 byte数组 / public static byte[] hex2Bytes(String hex) { if (hex null hex.length() 0) { return null; } char[] hexChars hex.toCharArray(); byte[] bytes new byte[hexChars.length / 2]; // 如果 hex 中的字符不是偶数个, 则忽略最后一个 for (int i 0; i headerMap new HashMap<>(); // headerMap.put("queryMetricDataInfo", "{"regionId":"cnsz1","dim":"instanceid,98cdcc8a8e544788ab9cc94ccee429c7","filter":"average","from":"1658473040","to":"1658473040","metricName":"netbitRecv","namespace":"AGT.ECS","period":"1"},"platform":"3"}"); // headerMap.put("platform", "3"); // headerMap.put("consoleUrl", " // headerMap.put("UserAgent", "3333433"); // headerMap.put("XForwardedFor", "1231313"); // headerMap.put("regionId", "100054c0416811e9a6690242ac110002"); // headerMap.put("prodInstId","9dcaf0157c604100af79bdb8271527bc"); //请求地址 String url " //query参数(?后面拼接的参数。没有就不填) aaaa&bbbb String queryStr "regionID41f64827xxxxxxxxxffa3a5deb5d15d"; //body参数(没有就不填) String body ""; //APPID String ak "9f82cacd3f8235c66edfs5e899f098e6"; //appkey String sk "MlgzESz430hJgTzA4lkjuJvDMMLTqwBQRicVqV62VM"; String uuId UUID.randomUUID().toString(); //连接超时 int connectTimeout 35000; //连接请求超时 int connectionRequestTimeout 35000; //socket超时 int socketTimeout 60000; YunSign yunSign new YunSign(url, ak, sk, uuId, body, temp, contentType, queryStr, headerMap); Response response yunSign.toDo(method, connectTimeout, connectionRequestTimeout, socketTimeout); System.out.println("应答头部 "); for (Map.Entry entry : response.getHeaders().entrySet()) { System.out.println(entry.getKey().toString() + ":" + entry.getValue().toString()); } System.out.println(); System.out.println("请求结果 "); System.out.println(response.getBody()); } }
        来自:
        帮助文档
        对象存储 ZOS
        API参考
        API(OpenAPI)
        如何调用API
        Java调用示例
      • 使用LocalPV静态存储卷
        1、创建持久卷(PV) 使用kubectl连接集群,创建示例yaml文件pvexample.yaml: plaintext apiVersion: "v1" kind: "PersistentVolume" metadata: name: "localpvk8s" spec: accessModes: "ReadWriteOnce" capacity: storage: "1Gi" local: path: "/zy1" nodeAffinity: required: nodeSelectorTerms: matchExpressions: key: "kubernetes.io/hostname" operator: "In" values: "ccseagent29999e7689" persistentVolumeReclaimPolicy: "Retain" volumeMode: "Filesystem" 执行以下命令,创建PV plaintext kubectl apply f pvexample.yaml 查看创建的PV: 登录“云容器引擎”管理控制台; 在集群列表页点击进入指定集群; 进入主菜单“存储”——“持久卷”,在持久卷列表查看。 2、创建持久卷声明(PVC) 使用kubectl连接集群,创建示例yaml文件pvcexample.yaml: plaintext apiVersion: "v1" kind: "PersistentVolumeClaim" metadata: name: "localpvck8s" namespace: "default" spec: accessModes: "ReadWriteOnce" resources: requests: storage: "1Gi" volumeMode: "Filesystem" volumeName: "localpvk8s" 执行以下命令,创建PVC plaintext kubectl apply f pvcexample.yaml 查看创建的PVC: 登录“云容器引擎”管理控制台; 在集群列表页点击进入指定集群; 进入主菜单“存储”——“持久卷声明”,在持久卷列表查看。 3、创建工作负载 使用kubectl连接集群,创建示例yaml文件stsexample.yaml: plaintext apiVersion: "apps/v1" kind: "StatefulSet" metadata: name: "localpvsts" namespace: "default" spec: podManagementPolicy: "OrderedReady" replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: name: "localpvsts" serviceName: "" template: metadata: labels: app: "" ccseappname: "" kubernetes.io/qos: "None" name: "localpvsts" source: "CCSE" spec: containers: image: "nginx:1.23.2alpine" imagePullPolicy: "IfNotPresent" name: "container1" resources: limits: cpu: "100m" memory: "128Mi" requests: cpu: "100m" memory: "128Mi" terminationMessagePath: "/dev/terminationlog" terminationMessagePolicy: "File" volumeMounts: mountPath: "/tmp" name: "volume1" dnsPolicy: "ClusterFirst" restartPolicy: "Always" schedulerName: "defaultscheduler" securityContext: {} terminationGracePeriodSeconds: 30 volumes: name: "volume1" persistentVolumeClaim: claimName: "localpvck8s" updateStrategy: rollingUpdate: partition: 0 type: "RollingUpdate" 执行以下命令,创建StatefulSet plaintext kubectl apply f stsexample.yaml 查看创建的有状态负载: 登录“云容器引擎”管理控制台; 在集群列表页点击进入指定集群; 进入主菜单“工作负载”——“有状态”,在列表查看。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        存储
        本地存储
        使用LocalPV静态存储卷
      • Python
        环境安装 1. 安装Python。(Python版本为2.7或3.X。) 2. 安装依赖库。(使用公网连接需要安装confluentkafka 1.9.2及以下版本的依赖库) pip install confluentkafka1.9.2 3. 下载Demo包kafkaconfluentpythondemo.zip。 配置修改 1. 如果是ssl连接,需要在控制台下载证书。并且解压压缩包得到ssl.client.truststore.jks,执行以下命令生成caRoot.pem文件。 keytool importkeystore srckeystore ssl.client.truststore.jks destkeystore caRoot.p12 deststoretype pkcs12 openssl pkcs12 in caRoot.p12 out caRoot.pem 2. 修改setting.py文件。(calocation仅在ssl连接时需要配置) kafkasetting { 'bootstrapservers': 'XXX', 'topicname': 'XXX', 'groupname': 'XXX' } 生产消息 发送以下命令发送消息。 python kafkaproducer.py 生产消息示例代码如下: from confluentkafka import Producer import setting conf setting.kafkasetting """初始化一个 Producer 对象""" p Producer({'bootstrap.servers': conf['bootstrapservers']}) def deliveryreport(err, msg): """ Called once for each message produced to indicate delivery result. Triggered by poll() or flush(). """ if err is not None: print('Message delivery failed: {}'.format(err)) else: print('Message delivered to {} [{}]'.format(msg.topic(), msg.partition())) """异步发送消息""" p.produce(conf['topicname'], "Hello".encode('utf8'), callbackdeliveryreport) p.poll(0) """在程序结束时,调用flush""" p.flush() 消费消息 发送以下命令消费消息。 python kafkaconsumer.py 消费消息示例代码如下: from confluentkafka import Consumer, KafkaError import setting conf setting.kafkasetting c Consumer({ 'bootstrap.servers': conf['bootstrapservers'], 'group.id': conf['groupname'], 'auto.offset.reset': 'latest' }) c.subscribe([conf['topicname']]) while True: msg c.poll(1.0) if msg is None: continue if msg.error(): if msg.error().code() KafkaError.PARTITIONEOF: continue else: print("Consumer error: {}".format(msg.error())) continue print('Received message: {}'.format(msg.value().decode('utf8'))) c.close()
        来自:
        帮助文档
        分布式消息服务Kafka
        开发指南
        Python
      • 通过专线实现本地数据中心访问云上文件系统
        section49de3f35f305aaab)”。 用户已经实施开通了用户本地IDC机房到天翼云资源池的物理电路,并联系电信客户经理申请云端口资源。 用户已经创建了虚拟私有云VPC。 注意 文件存储的服务端口为:111、139、2049、20048、445、11002、11003、10141,设置安全组时不要禁止,以防无法访问文件服务。 操作步骤 步骤一:准备专线 1. 开通物理专线。 物理专线一端连接本地数据中心的本地网关设备,一端连接云专线的专线网关,将客户本地数据中心的内部局域网连接到天翼云的接入点,对接天翼云上的虚拟专有网络VPC。参见创建物理专线云专线快速入门。 2. 创建专线网关。 专线网关是客户站点和天翼云VPC之间的虚拟路由转发设备,是数据从客户站点到云上VPC之间的传输桥梁。参见创建和管理专线网关云专线用户指南专线网关。 3. 添加静态路由。 本地IDC通过静态路由实现与专线网关之间的内网互联,建立快捷和灵活的入云组网方式。参见创建和管理静态路由云专线用户指南专线网关。 4. 添加VPC。 通过添加专线网关到VPC的路由条目,以便实现专线网关和VPC的互通。参见添加VPC云专线用户指南VPC配置。
        来自:
        帮助文档
        海量文件服务 OceanFS
        用户指南
        挂载访问
        通过专线实现本地数据中心访问云上文件系统
      • 工作负载类
        排查项六:镜像过大导致失败 Pod事件列表中有“实例拉取镜像失败”事件,报错原因如下。这可能是镜像较大导致的情况。 Failed to pull image "XXX": rpc error: code Unknown desc context canceled 登录节点使用docker pull命令手动下拉镜像,镜像下拉成功。 问题根因: kubernetes默认的imagepullprogressdeadline是1分钟, 如果1分钟内镜像下载没有任何进度更新, 下载动作就会取消。在节点性能较差或镜像较大时,可能出现镜像无法成功下载,负载启动失败的现象。 解决方案: (推荐)方法一:登录节点使用docker pull命令手动下拉镜像,确认负载的镜像拉取策略imagePullPolicy为IfNotPresent(默认策略配置)。此时创建负载会使用已拉取到本地的镜像。 方法二:修改kubelet配置参数。 1.15及以上集群使用如下命令: vi /opt/cloud/cce/kubernetes/kubelet/kubelet 1.15以下集群使用如下命令: vi /var/paas/kubernetes/kubelet/kubelet 在DAEMONARGS参数末尾追加配置 imagepullprogressdeadline30m ,30m为30分钟,可根据需求修改为合适时间。追加配置和前项配置之间由空格分开。 重启kubelet: systemctl restart kubelet 等待片刻,确定kubelet状态为running systemctl status kubelet 负载正常启动,镜像下拉成功。 排查项七:无法连接镜像仓库 问题现象 创建工作负载时报如下错误。 Failed to pull image "docker.io/bitnami/nginx:1.22.0debian11r3": rpc error: code Unknown desc Error response from daemon: Get net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 问题原因 无法连接镜像仓库,网络不通。SWR仅支持直接拉Docker官方的镜像,其他仓库的镜像需要连接。 解决方案: 给需要下载镜像的节点绑定公网IP。 先将镜像上传到SWR,然后从SWR拉取镜像。
        来自:
      • 运维指导
        判断当前作业运行慢是否是数据倾斜导致 1.登录DLI控制台,单击“作业管理 > SQL作业”。 2.在SQL作业页面,在对应作业所在行,单击按钮,查看作业详情信息,获取作业ID。 3.在对应作业的“操作”列,单击“Spark UI”,进入到Spark UI页面。 4.在“Spark UI”页面,在上方菜单栏选择“Jobs”。参考下图,根据作业ID,单击链接。 5.根据Active Stage可以看到当前正在运行的Stage运行情况,单击Description中的超链接。 6.在Stage中,可以看到每一个Task开始运行时间“Launch Time”,以及Task运行耗时时间“Duration”。 7.单击“Duration”,可以根据耗时进行排序,排查是否存在单个Task耗时过长导致整体作业时间变长问题。 参考下图可以看到数据倾斜时,单个任务的shuffle数据远大于其他Task的数据,导致该任务耗时时间变长。 数据倾斜示例图 数据倾斜原因和解决 Shuffle的数据倾斜基本是由于join中的key值数量不均衡导致。 1.对join连接条件进行group by 和count,统计每个连接条件的key值的数量。示例如下: lefttbl表和righttbl表进行join关联,其中lefttbl表的num为连接条件的key值。则可以对lefttbl.num进行group by和count统计。 SELECT FROM lefttbl a LEFT join righttbl b on a.num b.int2; SELECT count(1) as count,num from lefttbl group by lefttbl.num ORDER BY count desc; 2.考虑在对应key值上添加concat(cast(round(rand() 999999999)as string)随机数进行打散。 3.如果确实因为单个key值倾斜严重且不可对key值拼接随机值打散,则参考上方"配置AE参数解决数据倾斜"处理。 查看DLI SQL日志
        来自:
        帮助文档
        数据湖探索
        常见问题
        操作类
        SQL作业相关问题
        运维指导
      • 通用问题
        用户和角色是什么关系? 用户和角色在整个集群范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都只能访问连接请求里声明的那个数据库。 角色(ROLE)本质上是一组权限的集合,通常情况下使用ROLE来组织权限,使用用户进行权限的管理和业务操作。 角色之间的权限可以继承,用户组的所有用户可自动继承对应角色的权限。 数据库中USER与ROLE的关系为:USER的权限来自于ROLE。 用户组包含了具有相同权限的用户集合。 用户可以看作是具有登录权限的角色。 角色可以看作是没有登录权限的用户。 DWS提供的权限包括“管控面”各组件的操作维护权限,在实际应用时需根据业务场景为各用户分别配置不同权限。为了提升权限管理的易用性,“管控面”引入角色的功能,通过选取指定的权限并统一授予角色,以权限集合的形式实现了权限集中查看和管理。 集中权限管理中权限、角色和用户的关系如下图所示。 DWS提供多种权限,根据业务场景实际需要选择指定的权限授予不同角色,可能是一个或者多个权限对应一个角色。 通过GRANT把角色授予用户后,用户即具有了角色的所有权限。推荐使用角色进行高效权限分配。只对自己的表有所有权限,对其他用户放在属于各自模式下的表无权限。 角色A:授予操作权限A和B,用户A和用户B通过分配角色A取得对应的权限。 角色B:授予操作权限C,用户C通过分配角色B取得对应的权限。 角色C:授予操作权限D和E,用户C通过分配角色C取得对应的权限。
        来自:
        帮助文档
        数据仓库服务
        常见问题
        操作类
        通用问题
      • 远程连接Linux云主机报错:Module is unknown
        本文主要介绍远程连接Linux云主机报错:Module is unknown如何处理。 问题描述 远程连接Linux云主机报错:Module is unknown 图 Module is unknown 说明 修改此问题需要重启进入救援模式,请评估风险后进行操作。 本节操作涉及云主机重启操作,可能会导致业务中断,请谨慎操作。 根因分析 由于错误修改/etc/pam.d/目录下的文件导致。 处理方法 1.进入云主机的单用户模式。 以CentOS 7操作系统为例: a.重启云主机,单击“远程登录”。 b.按上方向键,阻止系统自动继续,在出现内核选项时按字母键e进入内核编辑模式。 图 进入内核编辑模式 说明 Euler镜像默认对grub文件进行了加密,进入编辑内核模式时会提示:Enter username,需要输入用户和密码,请联系客服获取。 c.找到linux16行末尾,删除不需要加载的参数到ro参数。 d.修改ro为rw,以读写方式挂载根分区。 e.并添加rd.break,然后执行Ctrl+X。 图 修改前 图 修改后 f.执行以下命令切换至/sysroot目录。
        来自:
        帮助文档
        弹性云主机 ECS
        常见问题
        登录与连接
        Linux远程登录报错类
        远程连接Linux云主机报错:Module is unknown
      • 监控分析
        本章节介绍如何进行监控分析 进入监控分析页面,可以看到监控指标统计,主要包括出入流量、请求成功率、4xx&5xx比例、分位耗时等,如下图所示: 出入流量、网关配置中心连接状态,请求成功率: 4xx、5xx比例,请求失败率,平均耗时 分位耗时和网关连接数统计
        来自:
      • 创建插件
        本页为您介绍创建插件的操作步骤。 1. 通过telesql连接到CN节点。 2. 执行sql “create extension pgdirtyread;” 3. 执行telesql命令dx,查看插件pgdirtyread是否存在。
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品
        开发手册
        闪回查询
        创建插件
      • Open WebUI 快速入门
        模型配置 单机版 Deepseek GPU 云主机在完成部署后,会自动匹配云主机本地模型,刷新进入首页,可以看到,模型下拉列表中,可以选择我们部署的deepseekr1 模型。 您可以主动设置您的模型连接,以体验任意第三方连接。以ollama和vllm提供的服务为例,进入“管理员面板” > “设置” > “外部链接”,如果使用的 vllm 则填入您的vllm地址和 apikey,如果使用ollama 则填入您的ollama地址,点击保存后即可使用模型。 设置模型可见性。 多用户模式下,建议把模型设置为public,如此才能让模型被所有用户看到。进入“管理员面板” > “设置” > “模型”,并点击编辑。 将模型可见性设置为 public 并点击保存。 最后,我们尝试下问一个问题,模型可以正常回答问题。
        来自:
        帮助文档
        弹性云主机 ECS
        最佳实践
        AIGC实践
        Open WebUI 快速入门
      • MQTT触发器
        配置项 操作 示例 触发器类型 选择 MQTT触发器。 MQTT触发器 名称 填写自定义的触发器名称。 mqtttrigger 版本或别名 默认值为 LATEST ,支持选择任意函数版本或函数别名。 LATEST MQTT实例 选择已创建的MQTT实例。 Topic 填写订阅的消息Topic,请确保topic的命名符合以下"^[azAZ09/+]+$"正则表达式 mytopic 调用方法 选择函数调用方式。 同步调用 :指触发器消费消息后投递到函数是同步调用,会等待函数响应后继续下一个消息投递。 异步调用 :指触发器消费消息后投递到函数是异步调用,不会等待函数响应,可以快速消费事件。 用户ID 终端设备连接MQTT队列需要先创建用户密码,详情请查看 密钥 终端设备连接MQTT队列需要先创建用户密码,详情请查看 触发器启用状态 创建触发器后是否立即启用。默认选择开启,即创建触发器后立即启用触发器。 启用
        来自:
        帮助文档
        函数计算
        用户指南
        事件触发
        MQTT触发器
      • 如何排查404/502/504错误?
        原因二 原因:安全组未将WAF回源IP设置为白名单或未放开端口。 解决办法: 将WAF的回源IP在网站所在的ECS的安全组里设置为白名单。 原因三 原因:源站有防火墙设备,且该防火墙设备拦截了WAF的回源IP。 解决办法: 将WAF的回源IP在网站所在的ECS的安全组里设置为白名单或者卸载除WAF以外其他防火墙软件。 原因四 原因:连接超时、read超时。 解决办法: 数据库查询时间过长: 调整优化业务,尽量缩短查询时长,优化用户体验。 修改请求的交互方式,让这种长连接在 60s 内能有一些数据交互(如,ack报文、心跳包、keepalive等任何可以维持会话的报文)。 大文件上传时间过长: 调整优化业务,尽量缩短文件上传时间。 建议使用FTP方式上传文件。 直接通过IP上传,或者使用没有被WAF防护的域名上传。 使用WAF的独享模式,独享WAF回源超时默认为180s。 源站故障类:检查源站业务是否正常。 原因五 原因:源站超带宽。 解决办法:扩展源站服务器带宽。
        来自:
        帮助文档
        Web应用防火墙(独享版)
        常见问题
        业务中断排查
        如何排查404/502/504错误?
      • 准备工作
        。 3. 初始化系统参数 plaintext su teledb cd /etc/security 在/etc/security/limits.conf文件中最后一部分,添加如下内容。 plaintext teledb soft nofile 131072 teledb hard memlock 128849018880 teledb soft memlock 128849018880 teledb soft core 1024000 teledb hard core 1024000 teledb hard nproc unlimited teledb soft nproc unlimited teledb hard nofile 131072 teledb hard stack unlimited teledb soft stack unlimited 4. 执行如下命令 plaintext echo vm.swappiness10 >> /etc/sysctl.conf sysctl w vm.swappiness10 echo vm.minfreekbytes102400 >> /etc/sysctl.conf sysctl w vm.minfreekbytes102400 5. 进入/etc/sudoers文件,添加权限 在rootALL(ALL)ALL一行下面添加如下内容。 plaintext teledb ALL(ALL) NOPASSWD:ALL 6. 修改挂载目录权限 执行如下命令,修改成可读写运行权限 plaintext sudo chmod 777 /app 执行如下命令,修改/app目录下文件所属用户。 plaintext sudo chown R teledb:teledb /app 3. (可选)创建软连接 执行如下命令创建软连接 plaintext cd /usr/local/bin ln s /usr/sbin/ip ip ln s /usr/sbin/sysctl sysctl ln s /usr/sbin/userdel userdel ln s /usr/sbin/useradd useradd
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V5.0.0版本产品文档
        安装部署手册
        安装前准备
        准备工作
      • 遗传查询优化相关参数
        geqopoolsize (integer) 控制GEQO 使用的池尺寸,它就是遗传种群中的个体数目。它必须至少为 2,且有用的值通常在 100 到 1000 之间。如果它被设置为零(默认设置)则会基于geqoeffort和查询中表的数量选择一个合适的值。 geqogenerations (integer) 控制GEQO 使用的代数,也是算法的迭代次数。它必须至少为 1,并且有用值的范围和池尺寸相同。如果它被设置为零(默认设置)则会基于geqopoolsize选择一个合适的值。 geqoselectionbias (floating point) 控制GEQO 使用的选择偏好。选择偏好是种群中的选择压力。值可以是 1.5 到 2.0 之间,后者是默认值。 geqoseed (floating point) 控制GEQO 使用的随机数生成器的初始值,随机数生成器用于在连接顺序搜索空间中选择随机路径。该值可以从 0 (默认值)到 1。变化该值会改变被探索的连接路径集合,并且可能导致找到一个更好或更差的路径。
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品
        参数指南
        查询规划相关参数
        遗传查询优化相关参数
      • 操作流程
        本章主要介绍操作流程。 1. 创建VPC 创建两个VPC,VPC1为API网关所在VPC,VPC2为后端应用所在VPC。 2. 购买API网关专享版实例 在VPC1上购买API专享版实例。 3. 购买ELB 在VPC2上购买弹性负载均衡。 4. 创建对等连接 创建VPC Peering对等连接,打通VPC1和VPC2。 5. 配置路由 在API专享版实例上配置路由,配置IP为已购买ELB所在VPC2网段。 6. 创建API 创建API,后端服务地址配置ELB的IP。 7. 购买ECS 购买ECS(应用服务器),启动后端服务,并将ECS挂载到已购买的ELB上。 8. 调试API 验证对接内网ELB是否成功。
        来自:
        帮助文档
        API网关
        最佳实践
        API网关跨VPC开放后端服务
        操作流程
      • 将Oracle同步到Kafka
        参数 描述 IP地址或域名 源数据库的IP地址或域名。 说明 对于RAC集群,建议使用scanip接入,提高访问性能。 端口 源数据库服务端口,可输入范围为1~65535间的整数。 数据库服务名 数据库服务名(Service Name/SID),客户端可以通过其连接到Oracle,具体查询方法请参照界面提示。 PDB名称 PDB同步仅在Oracle12c及以后的版本支持,该功能为选填项,当需要迁移PDB中的表时开启。 PDB功能开启后,只能迁移该PDB中的表,并且需要提供CDB的service name/sid及用户名和密码,不需要PDB的用户名和密码。 数据库用户名 源数据库的用户名。 数据库密码 源数据库的用户名所对应的密码。 SSL安全连接 通过该功能,用户可以选择是否开启对迁移链路的加密。如果开启该功能,需要用户上传SSL CA根证书。 说明 最大支持上传500KB的证书文件。 如果不使用SSL证书,请自行承担数据安全风险。
        来自:
        帮助文档
        数据库复制
        用户指南
        实时同步
        自建到自建
        将Oracle同步到Kafka
      • 修改服务自定义配置参数
        任务示例(配置Hive自定义参数) Hive依赖于HDFS,默认情况下Hive访问HDFS使用的是HDFS的客户端,生效的配置参数统一由HDFS控制。例如HDFS参数“ipc.client.rpc.timeout”影响所有客户端连接HDFS服务端的RPC超时时间,如果管理员需要单独修改Hive连接HDFS的超时时间,可以使用自定义配置项功能进行设置。在Hive的“coresite.xml”文件增加此参数可被Hive服务识别并代替HDFS的设置。 1. 在FusionInsight Manager界面,选择“集群 > 待操作集群的名称 > 服务”。 2. 选择“Hive > 配置 > 全部配置”。 3. 在左侧导航栏选择Hive服务级别“自定义”,Manager将显示Hive支持的服务级别自定义参数。 4. 在“coresite.xml”对应参数“core.site.customized.configs”的“名称”输入“ipc.client.rpc.timeout”,“值”输入新的参数值,例如“150000”。单位为毫秒。 5. 单击“保存”,在弹出的“保存配置”窗口中确认修改参数并单击“确定”。界面提示“操作成功。”,单击“完成”,配置保存成功。 保存完成后请重新启动配置过期的服务或实例以使配置生效。
        来自:
        帮助文档
        翼MapReduce
        用户指南
        FusionInsight Manager操作指导(适用于3.x)
        集群管理
        管理服务
        服务配置
        修改服务自定义配置参数
      • 管理SNAT规则
        参数 参数说明 源网段类型 选择VPC内子网:选择现有子网,使子网内云主机通过SNAT方式访问公网。手动输入自定义网段:自定义一个网段,使网段内服务器或云主机通过SNAT方式访问公网。 子网/源网段 子网为需要关联的VPC中的子网,只能在未设置SNAT规则的子网下创建SNAT规则。源网段为自定义网段或某个主机地址,支持配置0.0.0.0/0的地址段,为所有经过NAT的报文进行源地址转换。 弹性IP 用来提供互联网访问的弹性IP。只能使用未绑定的弹性IP或者被绑定在当前公网NAT网关中SNAT或DNAT规则上的弹性IP。若无符合条件的弹性IP,您可前往创建弹性IP后,刷新即可 选择多个弹性IP时,业务连接会通过轮询方式分配到多个弹性IP,由于每个连接的流量不同,可能会出现多弹性IP业务流量不均匀的情况,建议您将每个弹性IP加入到同一个共享带宽中以避免单弹性IP带宽达到上限导致业务受;并且同一个内网IP访问单一目的IP,可能使用不同的EIP。访问单一目标的并发连接数过多时,会造成端口分配失败,需持续监控 描述 SNAT规则信息描述。
        来自:
        帮助文档
        NAT网关
        操作指南
        公网NAT网关
        管理SNAT规则
      • WAF监控指标说明
        指标ID 指标名称 指标含义 取值范围 测量对象 监控周期(原始指标) cpuutil CPU使用率 该指标用于统计测量对象的CPU利用率。 单位:百分比 采集方式:100%减去空闲CPU占比 0~100 % 值类型:Float 独享引擎实例 1分钟 memutil 内存使用率 该指标用于统计测量对象的内存利用率。 单位:百分比 采集方式:100%减去空闲内存占比 0~100 % 值类型:Float 独享引擎实例 1分钟 diskutil 磁盘使用率 该指标用于统计测量对象的磁盘利用率。 单位:百分比 采集方式:100%减去空闲磁盘占比 0~100 % 值类型:Float 独享引擎实例 1分钟 diskavailsize 磁盘可用空间 该指标用于统计测量对象的磁盘可用空间。 单位:byte、KB、MB、GB、TB、PB 采集方式:空闲磁盘空间大小 ≥0 byte 值类型:Float 独享引擎实例 1分钟 diskreadbytesrate 磁盘读速率 该指标用于统计测量对象每秒从磁盘读取的字节数。 单位:byte/s、KB/s、MB/s、GB/s 采集方式:每秒从磁盘读取的字节数 ≥0 byte/s 值类型:Float 独享引擎实例 1分钟 diskwritebytesrate 磁盘写速率 该指标用于统计测量对象每秒写入磁盘的字节数。 单位:byte/s、KB/s、MB/s、GB/s 采集方式:每秒写入磁盘的字节数 ≥0 byte/s 值类型:Float 独享引擎实例 1分钟 diskreadrequestsrate 磁盘读操作速率 该指标用于统计测量对象每秒从磁盘读取的请求数。 单位:请求/秒 采集方式:每秒磁盘处理的读取请求数 ≥0 request/s 值类型:Float 独享引擎实例 1分钟 diskwriterequestsrate 磁盘写操作速率 该指标用于统计测量对象每秒写入数据到磁盘的请求次数。 单位:请求/秒 采集方式:每秒磁盘处理的写入请求数 ≥0 request/s 值类型:Float 独享引擎实例 1分钟 networkincomingbytesrate 网络流入速率 该指标用于统计测量对象每秒流入测量对象的网络流量。 单位:byte/s、KB/s、MB/s、GB/s 采集方式:每秒从网络适配器输入的流量 ≥0 byte/s 值类型:Float 独享引擎实例 1分钟 networkoutgoingbytesrate 网络流出速率 该指标用于统计测量对象每秒流出测量对象的网络流量。 单位:byte/s、KB/s、MB/s、GB/s 采集方式:每秒从网络适配器输出的流量 ≥0 byte/s 值类型:Float 独享引擎实例 1分钟 networkincomingpacketsrate 网络流入包速率 该指标用于统计测量对象每秒流入测量对象的数据包数量。 单位:packet/s 采集方式:每秒从网络适配器流入的数据包数 ≥0 packet/s 值类型:Int 独享引擎实例 1分钟 networkoutgoingpacketsrate 网络流出包速率 该指标用于统计测量对象每秒流出测量对象的数据包数量。 单位:packet/s 采集方式:每秒从网络适配器流出的数据包数 ≥0 packet/s 值类型:Int 独享引擎实例 1分钟 concurrentconnections 并发连接数 该指标用于统计测量对象当前处理的并发连接数量。 单位:count 采集方式:系统当前的并发连接数量 ≥0 count 值类型:Int 独享引擎实例 1分钟 activeconnections 活跃连接数 该指标用于统计测量对象当前打开的连接数量。 单位:count 采集方式:系统当前的活跃连接数量 ≥0 count 值类型:Int 独享引擎实例 1分钟 latestpolicysynctime 最近一次策略同步的耗时 该指标用于统计测量对象最近一次同步WAF策略的耗时。 单位:ms 采集方式:最近一次同步WAF策略的耗时 ≥0 ms 值类型:Int 独享引擎实例 1分钟
        来自:
        帮助文档
        Web应用防火墙(独享版)
        监控与审计
        监控
        WAF监控指标说明
      • 1
      • ...
      • 57
      • 58
      • 59
      • 60
      • 61
      • ...
      • 149
      跳转至
      推荐热词
      天翼云运维管理审计系统天翼云云服务平台云服务备份云日志服务应用运维管理云手机云电脑天翼云云hbase数据库电信云大数据saas服务电信云大数据paas服务轻量型云主机天翼云客户服务电话应用编排服务天翼云云安全解决方案云服务总线CSB天翼云服务器配置天翼云联邦学习产品天翼云云安全天翼云企业上云解决方案天翼云产品天翼云视频云存储

      天翼云最新活动

      云聚517 · 好价翼起拼

      爆款云主机低至25.83元/年,参与拼团享更多优惠,拼成得额外优惠券

      安全隔离版OpenClaw

      OpenClaw云服务器专属“龙虾“套餐低至1.5折起

      聚力AI赋能 天翼云大模型专项

      大模型特惠专区·Token Plan 轻享包低至9.9元起

      青云志云端助力计划

      一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云

      企业出海解决方案

      助力您的业务扬帆出海,通达全球!

      天翼云信创专区

      “一云多芯、一云多态”,国产化软件全面适配,国产操作系统及硬件芯片支持丰富

      中小企业服务商合作专区

      国家云助力中小企业腾飞,高额上云补贴重磅上线

      云上钜惠

      爆款云主机全场特惠,2核4G只要1.8折起!

      产品推荐

      GPU云主机

      轻量型云主机

      弹性高性能计算 E-HPC

      天翼云CTyunOS系统

      训推服务

      公共算力服务

      人脸检测

      人脸活体检测

      动作活体识别

      推荐文档

      续订

      恢复备份

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 息壤智算平台
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 天翼云国际站
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2026 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号