华为云用户手册

  • 原因分析 Flume堆内存设置的值大于机器剩余内存,查看Flume启动日志: [CST 2019-02-26 13:31:43][INFO] [[checkMemoryValidity:124]] [GC_OPTS is invalid: Xmx(40960000MB) is bigger than the free memory(56118MB) in system.] [9928] Flume文件或文件夹权限异常,界面或后台会提示如下信息: [2019-02-26 13:38:02]RoleInstance prepare to start failure [{ScriptExecutionResult=ScriptExecutionResult [exitCode=126, output=, errMsg=sh: line 1: /opt/Bigdata/MRS_XXX/install/FusionInsight-Flume-1.9.0/flume/bin/flume-manage.sh: Permission denied JAVA_HOME配置错误,查看Flume agent启动日志: Info: Sourcing environment configuration script /opt/FlumeClient/fusioninsight-flume-1.9.0/conf/flume-env.sh + '[' -n '' ']' + exec /tmp/MRS-Client/MRS_Flume_ClientConfig/JDK/jdk-8u18/bin/java '-XX:OnOutOfMemoryError=bash /opt/FlumeClient/fusioninsight-flume-1.9.0/bin/out_memory_error.sh /opt/FlumeClient/fusioninsight-flume-1.9.0/conf %p' -Xms2G -Xmx4G -XX:CMSFullGCsBeforeCompaction=1 -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -Dkerberos.domain.name=hadoop.hadoop.com -verbose:gc -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/var/log/Bigdata//flume-client-1/flume/flume-root-20190226134231-%p-gc.log -Dproc_org.apache.flume.node.Application -Dproc_name=client -Dproc_conf_file=/opt/FlumeClient/fusioninsight-flume-1.9.0/conf/properties.properties -Djava.security.krb5.conf=/opt/FlumeClient/fusioninsight-flume-1.9.0/conf//krb5.conf -Djava.security.auth.login.config=/opt/FlumeClient/fusioninsight-flume-1.9.0/conf//jaas.conf -Dzookeeper.server.principal=zookeeper/hadoop.hadoop.com -Dzookeeper.request.timeout=120000 -Dflume.instance.id=884174180 -Dflume.agent.name=clientName1 -Dflume.role=client -Dlog4j.configuration.watch=true -Dlog4j.configuration=log4j.properties -Dflume_log_dir=/var/log/Bigdata//flume-client-1/flume/ -Dflume.service.id=flume-client-1 -Dbeetle.application.home.path=/opt/FlumeClient/fusioninsight-flume-1.9.0/conf/service -Dflume.called.from.service -Dflume.conf.dir=/opt/FlumeClient/fusioninsight-flume-1.9.0/conf -Dflume.metric.conf.dir=/opt/FlumeClient/fusioninsight-flume-1.9.0/conf -Dflume.script.home=/opt/FlumeClient/fusioninsight-flume-1.9.0/bin -cp '/opt/FlumeClient/fusioninsight-flume-1.9.0/conf:/opt/FlumeClient/fusioninsight-flume-1.9.0/lib/*:/opt/FlumeClient/fusioninsight-flume-1.9.0/conf/service/' -Djava.library.path=/opt/FlumeClient/fusioninsight-flume-1.9.0/plugins.d/native/native org.apache.flume.node.Application --conf-file /opt/FlumeClient/fusioninsight-flume-1.9.0/conf/properties.properties --name client /opt/FlumeClient/fusioninsight-flume-1.9.0/bin/flume-ng: line 233: /tmp/FusionInsight-Client/Flume/FusionInsight_Flume_ClientConfig/JDK/jdk-8u18/bin/java: No such file or directory
  • 解决办法 ZooKeeper连接失败导致。 Kafka客户端连接ZooKeeper服务超时。检查客户端到ZooKeeper的网络连通性。 网络连接失败,通过Manager界面查看Zookeeper服务信息。 图1 Zookeeper服务信息 配置错误,修改客户端命令中ZooKeeper地址。 Kafka服务端配置禁止删除。 通过Manager界面修改delete.topic.enable为true。保存配置并重启服务。 图2 修改delete.topic.enable 客户端查询命令,无Topic:test。 kafka-topics.sh --list --zookeeper 192.168.0.122:24002/kafka 进入RunningAsController节点日志目录,在controller.log发现Deletion of topic test successfully。 2016-03-10 10:39:40,665 | INFO | [delete-topics-thread-3] | [Partition state machine on Controller 3]: Invoking state change to OfflinePartition for partitions [test,2],[test,15],[test,6],[test,16],[test,12],[test,7],[test,10],[test,13],[test,9],[test,19],[test,3],[test,5],[test,1],[test,0],[test,17],[test,8],[test,4],[test,11],[test,14],[test,18] | kafka.controller.PartitionStateMachine (Logging.scala:68) 2016-03-10 10:39:40,668 | INFO | [delete-topics-thread-3] | [Partition state machine on Controller 3]: Invoking state change to NonExistentPartition for partitions [test,2],[test,15],[test,6],[test,16],[test,12],[test,7],[test,10],[test,13],[test,9],[test,19],[test,3],[test,5],[test,1],[test,0],[test,17],[test,8],[test,4],[test,11],[test,14],[test,18] | kafka.controller.PartitionStateMachine (Logging.scala:68) 2016-03-10 10:39:40,977 | INFO | [delete-topics-thread-3] | [delete-topics-thread-3], Deletion of topic test successfully completed | kafka.controller.TopicDeletionManager$DeleteTopicsThread (Logging.scala:68) Kafka部分节点处于停止或者故障状态。 启动停止的Broker实例。 客户端查询命令,无Topic:test。 kafka-topics.sh --list --zookeeper 192.168.0.122:24002/kafka 进入RunningAsController节点日志目录,在controller.log发现Deletion of topic test successfully。 2016-03-10 11:17:56,463 | INFO | [delete-topics-thread-3] | [Partition state machine on Controller 3]: Invoking state change to NonExistentPartition for partitions [test,4],[test,1],[test,8],[test,2],[test,5],[test,9],[test,7],[test,6],[test,0],[test,3] | kafka.controller.PartitionStateMachine (Logging.scala:68) 2016-03-10 11:17:56,726 | INFO | [delete-topics-thread-3] | [delete-topics-thread-3], Deletion of topic test successfully completed | kafka.controller.TopicDeletionManager$DeleteTopicsThread (Logging.scala:68) Kafka配置自动创建,且Producer未停止。 停止相关应用,通过Manager界面修改“auto.create.topics.enable”为“false”,保存配置并重启服务。 图3 修改auto.create.topics.enable 再次执行delete操作。
  • 原因分析 查看客户端或者NameNode运行日志“/var/log/Bigdata/hdfs/nn/hadoop-omm-namenode-XXX.log”存在异常提示The directory item limit of /tmp is exceeded:。该错误的含义为/tmp目录的文件数超过1048576的限制。 2018-03-14 11:18:21,625 | WARN | IPC Server handler 62 on 25000 | DIR* NameSystem.startFile: /tmp/test.txt The directory item limit of /tmp is exceeded: limit=1048576 items=1048577 | FSNamesystem.java:2334 该限制是dfs.namenode.fs-limits.max-directory-items参数,定义单个目录下不含递归的最大目录数或者文件数,默认值1048576,取值范围1~6400000。
  • Kafka API简单说明 新Producer API 指org.apache.kafka.clients.producer.KafkaProducer中定义的接口,在使用“kafka-console-producer.sh”时,默认使用此API。 旧Producer API 指kafka.producer.Producer中定义的接口,在使用“kafka-console-producer.sh”时,加“--old-producer”参数会调用此API。 新Consumer API 指org.apache.kafka.clients.consumer.KafkaConsumer中定义的接口,在使用“kafka-console-consumer.sh”时,加“--new-consumer”参数会调用此API。 旧Consumer API 指kafka.consumer.ConsumerConnector中定义的接口,在使用“kafka-console-consumer.sh”时,默认使用此API。 新Producer API和新Consumer API,在下文中统称为新API。
  • 针对不同的Topic访问场景 ,Kafka新旧API使用说明 场景一:访问设置了ACL的Topic 使用的API 用户属组 客户端参数 服务端参数 访问的端口 新API 用户需满足以下条件之一即可: 属于系统管理员组 属于kafkaadmin组 属于kafkasuperuser组 被授权的kafka组的用户 security.protocol=SASL_PLAINTEXT sasl.kerberos.service.name = kafka - sasl.port(默认21007) security.protocol=SASL_SSL sasl.kerberos.service.name = kafka ssl.mode.enable配置为true sasl-ssl.port(默认21009) 旧API 不涉及 不涉及 不涉及 不涉及 场景二:访问未设置ACL的Topic 使用的API 用户属组 客户端参数 服务端参数 访问的端口 新API 用户需满足以下条件之一: 属于系统管理员组 属于kafkaadmin组 属于kafkasuperuser组 security.protocol=SASL_PLAINTEXT sasl.kerberos.service.name = kafka - sasl.port(默认21007) 用户属于kafka组 allow.everyone.if.no.acl.found配置为true sasl.port(默认21007) 用户需满足以下条件之一: 属于系统管理员组 属于kafkaadmin组 kafkasuperuser组用户 security.protocol=SASL_SSLsasl.kerberos.service.name = kafka ssl-enable配置为“true” sasl-ssl.port(默认21009) 用户属于kafka组 allow.everyone.if.no.acl.found配置为“true” ssl-enable配置为“true” sasl-ssl.port(默认21009) - security.protocol=PLAINTEXT allow.everyone.if.no.acl.found配置为“true” port(默认21005) - security.protocol=SSL allow.everyone.if.no.acl.found配置为“true” ssl-enable配置为“true” ssl.port(默认21008) 旧Producer - - allow.everyone.if.no.acl.found配置为“true” port(默认21005) 旧Consumer - - allow.everyone.if.no.acl.found配置为“true” ZooKeeper服务端口:clientPort(默认24002)
  • Kafka访问协议说明 Kafka当前支持四种协议类型的访问:PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL。 Kafka服务启动时,默认会启动PLAINTEXT和SASL_PLAINTEXT两种协议类型的访问监测。可通过设置Kafka服务配置参数“ssl.mode.enable”为“true”,来启动SSL和SASL_SSL两种协议类型。 下表是四中协议类型的简单说明: 协议类型 说明 支持的API 默认端口 PLAINTEXT 支持无认证的明文访问 新API和旧API 9092 SASL_PLAINTEXT 支持Kerberos认证的明文访问 新API 21007 SSL 支持无认证的SSL加密访问 新API 9093 SASL_SSL 支持Kerberos认证的SSL加密访问 新API 21009
  • 问题背景与现象 给某目录设置quota后,往目录中写文件失败,出现如下问题“The DiskSpace quota of /tmp/tquota2 is exceeded”。 [omm@189-39-150-115 client]$ hdfs dfs -put switchuser.py /tmp/tquota2 put: The DiskSpace quota of /tmp/tquota2 is exceeded: quota = 157286400 B = 150 MB but diskspace consumed = 402653184 B = 384 MB
  • 原因分析 HDFS支持设置某目录的配额,即限制某目录下的文件最多占用空间大小,例如如下命令是设置“/tmp/tquota”目录最多写入150MB的文件(文件大小*副本数)。 hadoop dfsadmin -setSpaceQuota 150M /tmp/tquota2 使用如下命令可以查看目录设置的配额情况,SPACE_QUOTA是设置的空间配额,REM_SPACE_QUOTA是当前剩余的空间配额。 hdfs dfs -count -q -h -v /tmp/tquota2 图1 查看目录设置的配额 日志分析,如下日志说明写入文件需要消耗384M,但是当前的空间配额是150M,因此空间不足。写文件前,需要的剩余空间是:块大小*副本数,128M*3副本=384M。 [omm@189-39-150-115 client]$ [omm@189-39-150-115 client]$ hdfs dfs -put switchuser.py /tmp/tquota2 put: The DiskSpace quota of /tmp/tquota2 is exceeded: quota = 157286400 B = 150 MB but diskspace consumed = 402653184 B = 384 MB
  • 问题背景与现象 在使用Kafka客户端命令创建Topic时,发现Topic无法被创建。 kafka-topics.sh --create --replication-factor 2 --partitions 2 --topic test --zookeeper 192.168.234.231:2181 提示错误replication factor larger than available brokers。 具体如下: Error while executing topic command : replication factor: 2 larger than available brokers: 0 [2017-09-17 16:44:12,396] ERROR kafka.admin.AdminOperationException: replication factor: 2 larger than available brokers: 0 at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:117) at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:403) at kafka.admin.TopicCommand$.createTopic(TopicCommand.scala:110) at kafka.admin.TopicCommand$.main(TopicCommand.scala:61) at kafka.admin.TopicCommand.main(TopicCommand.scala) (kafka.admin.TopicCommand$)
  • 原因分析 使用客户端命令,打印replication factor larger than available brokers异常。 Error while executing topic command : replication factor: 2 larger than available brokers: 0 [2017-09-17 16:44:12,396] ERROR kafka.admin.AdminOperationException: replication factor: 2 larger than available brokers: 0 at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:117) at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:403) at kafka.admin.TopicCommand$.createTopic(TopicCommand.scala:110) at kafka.admin.TopicCommand$.main(TopicCommand.scala:61) at kafka.admin.TopicCommand.main(TopicCommand.scala) (kafka.admin.TopicCommand$) 通过Manager参看Kafka服务是否处于正常状态,当前可用Broker是否小于设置的replication-factor。 检查客户端命令中ZooKeeper地址是否正确,访问ZooKeeper上所存放的Kafka信息,其路径(Znode)应该加上/kafka,发现配置中缺少/kafka。 [root@10-10-144-2 client]# kafka-topics.sh --create --replication-factor 2 --partitions 2 --topic test --zookeeper 192.168.234.231:2181
  • 解决办法 保证Kafka服务处于正常状态,且可用Broker不小于设置的replication-factor。 创建命令中ZooKeeper地址信息需要添加/kafka。 [root@10-10-144-2 client]# kafka-topics.sh --create --replication-factor 1 --partitions 2 --topic test --zookeeper 192.168.234.231:2181/kafka
  • 处理步骤 登录报错的RegionServer节点,执行以下命令查看节点剩余内存: free -g 执行top命令查看节点内存使用情况。 根据top提示结束内存占用多的进程(内存占用多并且非MRS自身组件的进程),并重新启动HBase服务。 集群的Core节点除了MRS组件运行占用外,Yarn上的作业还会被分配到节点运行,占用节点内存。若是由于Yarn作业占用内存多导致组件无法正常启动时,建议扩容Core节点。
  • 原因分析 RegionServer启动时节点剩余内存不足,导致无法启动实例。排查步骤如下: 登录Master节点,到“/var/log/Bigdata”查找HBase相关日志,HMaster的日志中报错“connect regionserver timeout ”。 登录到1中HMaster连接不上的RegionServer节点,到“/var/log/Bigdata”查找HBase相关日志,RegionServer报错“error=’Cannot allocate memory’(errno=12)”。 根据2报错判断由于RegionServer内存不足导致RegionServer启动失败。
  • 问题背景与现象 当数据量较大时会频繁的发生rebalance导致出现重复消费的情况,关键日志如下: 2018-05-12 10:58:42,561 | INFO | [kafka-request-handler-3] | [GroupCoordinator 2]: Preparing to restabilize group DemoConsumer with old generation 118 | kafka.coordinator.GroupCoordinator (Logging.scala:68) 2018-05-12 10:58:43,245 | INFO | [kafka-request-handler-5] | [GroupCoordinator 2]: Stabilized group DemoConsumer generation 119 | kafka.coordinator.GroupCoordinator (Logging.scala:68) 2018-05-12 10:58:43,560 | INFO | [kafka-request-handler-7] | [GroupCoordinator 2]: Assignment received from leader for group DemoConsumer for generation 119 | kafka.coordinator.GroupCoordinator (Logging.scala:68) 2018-05-12 10:59:13,562 | INFO | [executor-Heartbeat] | [GroupCoordinator 2]: Preparing to restabilize group DemoConsumer with old generation 119 | kafka.coordinator.GroupCoordinator (Logging.scala:68) 2018-05-12 10:59:13,790 | INFO | [kafka-request-handler-3] | [GroupCoordinator 2]: Stabilized group DemoConsumer generation 120 | kafka.coordinator.GroupCoordinator (Logging.scala:68) 2018-05-12 10:59:13,791 | INFO | [kafka-request-handler-0] | [GroupCoordinator 2]: Assignment received from leader for group DemoConsumer for generation 120 | kafka.coordinator.GroupCoordinator (Logging.scala:68) 2018-05-12 10:59:43,802 | INFO | [kafka-request-handler-2] | Rolled new log segment for '__consumer_offsets-17' in 2 ms. | kafka.log.Log (Logging.scala:68) 2018-05-12 10:59:52,456 | INFO | [group-metadata-manager-0] | [Group Metadata Manager on Broker 2]: Removed 0 expired offsets in 0 milliseconds. | kafka.coordinator.GroupMetadataManager (Logging.scala:68) 2018-05-12 11:00:49,772 | INFO | [kafka-scheduler-6] | Deleting segment 0 from log __consumer_offsets-17. | kafka.log.Log (Logging.scala:68) 2018-05-12 11:00:49,773 | INFO | [kafka-scheduler-6] | Deleting index /srv/BigData/kafka/data4/kafka-logs/__consumer_offsets-17/00000000000000000000.index.deleted | kafka.log.OffsetIndex (Logging.scala:68) 2018-05-12 11:00:49,773 | INFO | [kafka-scheduler-2] | Deleting segment 2147948547 from log __consumer_offsets-17. | kafka.log.Log (Logging.scala:68) 2018-05-12 11:00:49,773 | INFO | [kafka-scheduler-4] | Deleting segment 4282404355 from log __consumer_offsets-17. | kafka.log.Log (Logging.scala:68) 2018-05-12 11:00:49,775 | INFO | [kafka-scheduler-2] | Deleting index /srv/BigData/kafka/data4/kafka-logs/__consumer_offsets-17/00000000002147948547.index.deleted | kafka.log.OffsetIndex (Logging.scala:68) 2018-05-12 11:00:49,775 | INFO | [kafka-scheduler-4] | Deleting index /srv/BigData/kafka/data4/kafka-logs/__consumer_offsets-17/00000000004282404355.index.deleted | kafka.log.OffsetIndex (Logging.scala:68) 2018-05-12 11:00:50,533 | INFO | [kafka-scheduler-6] | Deleting segment 4283544095 from log __consumer_offsets-17. | kafka.log.Log (Logging.scala:68) 2018-05-12 11:00:50,569 | INFO | [kafka-scheduler-6] | Deleting index /srv/BigData/kafka/data4/kafka-logs/__consumer_offsets-17/00000000004283544095.index.deleted | kafka.log.OffsetIndex (Logging.scala:68) 2018-05-12 11:02:21,178 | INFO | [kafka-request-handler-2] | [GroupCoordinator 2]: Preparing to restabilize group DemoConsumer with old generation 120 | kafka.coordinator.GroupCoordinator (Logging.scala:68) 2018-05-12 11:02:22,839 | INFO | [kafka-request-handler-4] | [GroupCoordinator 2]: Stabilized group DemoConsumer generation 121 | kafka.coordinator.GroupCoordinator (Logging.scala:68) 2018-05-12 11:02:23,169 | INFO | [kafka-request-handler-1] | [GroupCoordinator 2]: Assignment received from leader for group DemoConsumer for generation 121 | kafka.coordinator.GroupCoordinator (Logging.scala:68) 2018-05-12 11:02:49,913 | INFO | [kafka-request-handler-6] | Rolled new log segment for '__consumer_offsets-17' in 2 ms. | kafka.log.Log (Logging.scala:68) 其中Preparing to restabilize group DemoConsumer with old generation表示正在发生rebalance。
  • 原因分析 原因:由于参数设置不当,数据量大时数据处理时间过长,导致频繁发生balance,此时offset无法正常提交,导致重复消费数据。 原理:每次poll的数据处理完后才提交offset,如果poll数据后的处理时长超出了session.timeout.ms的设置时长,此时发生rebalance导致本次消费失败,已经消费数据的offset无法正常提交,所以下次重新消费时还是在旧的offset消费数据,从而导致消费数据重复。
  • 解决办法 建议用户在Manager页面调整以下服务参数: request.timeout.ms=100000 session.timeout.ms=90000 max.poll.records=50 heartbeat.interval.ms=3000 其中: request.timeout.ms要比session.timeout.ms大10s。 session.timeout.ms的大小设置要在服务端参数group.min.session.timeout.ms和group.max.session.timeout.ms之间。 以上参数可以根据实际情况进行适当的调整,特别是max.poll.records,这个参数是为了控制每次poll数据的records量,保证每次的处理时长尽量保持稳定。目的是为了保证poll数据以后的处理时间不要超过session.timeout.ms的时间。
  • 问题现象 在Hive客户端中使用Spark创建UDF函数时,报出"ERROR 10011","invalid function"的异常,如下: Error: Error while compiling statement: FAILED: SemanticException [Error 10011]: Line 1:7 Invalid function 'test_udf' (state=42000,code=10011) 在多个HiveServer之间使用UDF也存在上述问题。例如,在HiveServer1中使用HiverServer2创建的UDF,如果不及时同步元数据信息,连接HiveServer1的客户端也会提示上述错误信息。
  • 原因分析 HDFS的客户端和服务端数据传输走的rpc协议,该协议有多种加密方式,由hadoop.rpc.protection参数控制。 如果客户端和服务端的hadoop.rpc.protection参数的配置值不一样,即会报No common protection layer between client and server错误。 hadoop.rpc.protection参数表示数据可通过以下任一方式在节点间进行传输。 privacy:指数据在鉴权及加密后再传输。这种方式会降低性能。 authentication:指数据在鉴权后直接传输,不加密。这种方式能保证性能但存在安全风险。 integrity:指数据直接传输,即不加密也不鉴权。 为保证数据安全,请谨慎使用这种方式。
  • 问题背景与现象 shell客户端或者其他客户端操作HDFS失败,报“No common protection layer between client and server”。 在集群外的机器,执行任意hadoop命令,如hadoop fs -ls /均失败,最底层的报错为"No common protection layer between client and server"。 2017-05-13 19:14:19,060 | ERROR | [pool-1-thread-1] | Server startup failure | org.apache.sqoop.core.SqoopServer.initializeServer(SqoopServer.java:69) org.apache.sqoop.common.SqoopException: MAPRED_EXEC_0028:Failed to operate HDFS - Failed to get the file /user/loader/etl_dirty_data_dir status at org.apache.sqoop.job.mr.HDFSClient.fileExist(HDFSClient.java:85) ... at java.lang.Thread.run(Thread.java:745) Caused by: java.io.IOException: Failed on local exception: java.io.IOException: Couldn't setup connection for loader/hadoop@HADOOP.COM to loader37/10.162.0.37:25000; Host Details : local host is: "loader37/10.162.0.37"; destination host is: "loader37":25000; at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:776) ... ... 10 more Caused by: java.io.IOException: Couldn't setup connection for loader/hadoop@HADOOP.COM to loader37/10.162.0.37:25000 at org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:674 ... 28 more Caused by: javax.security.sasl.SaslException: No common protection layer between client and server at com.sun.security.sasl.gsskerb.GssKrb5Client.doFinalHandshake(GssKrb5Client.java:251) ... at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:720)
  • 流量镜像使用流程 使用流量镜像功能,您需要创建镜像会话,通过在镜像会话中关联筛选条件、镜像源和镜像目的,实现指定流量的镜像,使用流程如图5所示。 图5 流量镜像使用流程 表7 流量镜像使用流程说明 步骤 说明 操作指导 设置镜像会话基本信息 设置镜像会话的名称,优先级等参数,开始创建镜像会话。 创建镜像会话 关联筛选条件 选择网络流量的筛选条件,关联至镜像会话。 一个镜像会话可以关联一个筛选条件,如果没有合适的筛选条件,您可以创建筛选条件,具体请参见创建筛选条件。 关联镜像源 选择弹性网卡作为镜像源,关联至镜像会话。 一个镜像会话可关联多个镜像源。 当前流量镜像仅支持c7t规格云服务器的弹性网卡作为镜像源。 关联镜像目的 选择云服务器网卡或者弹性负载均衡ELB实例作为镜像目的,关联至镜像会话。 创建完成 镜像会话创建完成并开启后,对于镜像源符合筛选条件的网络流量,将被镜像到镜像目的实例。 如果您在创建镜像会话期间关闭了镜像会话,则无法监控镜像源的网络流量,开启镜像会话,具体请参见开启/关闭镜像会话。
  • 流量镜像应用场景 网络流量检查: 当您需要进行网络入侵检测时,通过流量镜像功能可以镜像您所需的网络流量。获取到流量后,您可以使用安全软件对流量进行全面分析检查,快速查找安全漏洞,确保网络安全。 网络流量审计: 通过流量镜像功能,您可以将流量镜像到指定的平台进行审计分析,适用于金融等对安全合规性要求比较高的业务场景。 网络问题定位: 通过流量镜像功能,运维工程师直接查看镜像的流量来排查问题,而不用通过业务服务器抓取报文,避免了运维期间可能对业务造成的影响。
  • 流量镜像约束与限制 如图4所示,流量镜像的报文采用标准的VXLAN报文格式封装,更多有关VXLAN协议的信息,请参见RFC 7348。当被镜像的报文长度加上VXLAN报文长度大于镜像源实例的MTU值时,系统会对报文进行截断。为了防止报文被截断,建议您在IPv4场景下,设置弹性网卡的MTU值比链路支持的MTU值至少小64字节。 图4 流量镜像报文格式 当前流量镜像仅支持c7t规格云服务器的弹性网卡作为镜像源。 如果一个弹性网卡已被用作镜像源,则镜像目的不能使用该弹性网卡。 流量镜像会占用弹性网卡绑定实例的带宽,并且不做独立限速。 当一个镜像目的实例需要接收来自多个镜像源的流量镜像时,为了确保正常使用,请您根据业务实际需要合理规划云服务器的规格。 根据流量镜像的匹配规则,同一个镜像源的同一个报文同时符合多个筛选条件规则,也仅会被匹配一次,并且根据采集策略决定是否镜像到目的实例。 对于镜像源弹性网卡已被安全组或者网络ACL拦截丢弃的报文,流量镜像不会镜像该部分报文。 当镜像源的报文符合筛选条件被镜像时,该报文不受镜像源安全组或者网络ACL出方向规则约束,即您无需在镜像源的安全组或者网络ACL做额外配置。但是如果需要将报文镜像到镜像目的实例时,则需要为镜像目的实例所在的安全组和网络ACL配置以下规则: 安全组规则:入方向允许来自镜像源弹性网卡的IP访问4789端口的UDP协议报文。假如镜像源弹性网卡的IP地址为192.168.0.27,则安全组规则配置示例如表5所示,具体方法请参见添加安全组规则。 表5 安全组规则配置示例 规则类别 策略 类型 协议端口 源地址 入方向规则 允许 IPv4 自定义UDP: 4789 IP地址:192.168.0.27/32 此处仅为示例,请根据实际情况配置。 网络ACL规则:入方向允许来自镜像源弹性网卡的IP访问所有端口的UDP协议报文。假如镜像源弹性网卡的IP地址为192.168.0.27,则网络ACL规则配置示例如表6所示,具体方法请参见添加网络ACL规则。 表6 网络ACL规则配置示例 规则类别 类型 策略 协议 源地址 源端口范围 目的地址 目的端口范围 入方向规则 IPv4 允许 UDP IP地址:192.168.0.27/32 此处仅为示例,请根据实际情况配置。 此处为空,表示全部端口。 IP地址:10.10.0.0/24 此处仅为示例,请根据实际情况配置。 4789 必须放通4789端口,其他端口请根据实际情况配置。 不同的虚拟私有云VPC之间网络不通,如果镜像源和镜像目的实例不在同一个VPC内,则您需要使用VPC对等连接或者企业路由器连通VPC之间的网络。 VPC对等连接的使用方法,请参见对等连接简介。 企业路由器的使用方法,请参见通过企业路由器实现同区域VPC互通。
  • 流量镜像配额说明 流量镜像功能的各项配额说明如表4所示,部分默认配额可以提升,您可以根据提示申请扩大配额。 表4 流量镜像的配额说明 配额项目 默认配额 申请扩大配额 单个镜像会话可关联的镜像源数量 10个 申请更多配额,请参见申请扩大配额 单个镜像源可被关联的镜像会话数量 3个 不支持修改 单个镜像会话可关联的镜像目的数量 1个 不支持修改 单个镜像目的可被关联的镜像会话数量 镜像目的为云服务器网卡时:10个 镜像目的为弹性负载均衡时:200个 不支持修改 单个镜像会话可关联的筛选条件数量 1个 不支持修改 单个筛选条件可被关联的镜像会话数量 1000个 不支持修改 单个筛选条件可添加的规则数量 入方向规则:10个 出方向规则:10个 不支持修改 一个用户在单个区域可创建的镜像会话数量 20000个 不支持修改
  • 流量镜像匹配规则 根据流量镜像的匹配规则,当同一个镜像源的同一个报文同时符合多个筛选条件规则时,该报文也仅会被匹配一次,匹配原则详细说明如下: 表3 流量镜像匹配规则 匹配原则 说明 顺序匹配 根据优先级从高到低按顺序进行匹配。优先级的数字越小,优先级越高,比如1的优先级高于2。 镜像会话优先级:同一个镜像源可同时被关联至多个镜像会话,此时根据镜像会话的优先级,按照从高到低的顺序匹配。 镜像会话的匹配规则请参见镜像会话的匹配规则。 筛选条件规则优先级:一个镜像会话只可以关联一个筛选条件,一个筛选条件中可以包含多个规则,此时根据规则的优先级,按照从高到低的顺序匹配。 筛选条件规则分为入方向规则和出方向规则,包含优先级、流量采集策略以及匹配条件。 筛选条件的匹配规则请参见筛选条件的匹配规则。 唯一匹配 报文只要与一个筛选条件规则匹配,就不会再去尝试匹配其他规则。 镜像会话的匹配规则如图2所示。当一个镜像源同时被多个镜像会话关联时,以入方向的报文为例,报文根据镜像会话的优先级,按照从高到低的顺序匹配。 当报文匹配上某个镜像会话中的筛选条件入方向规则,则执行以下操作: 如果该规则的策略是采集,则镜像该报文。 如果该规则的策略是不采集,则不会镜像该报文。 当遍历了所有镜像会话中的筛选条件入方向规则,报文均没有匹配上,则不会镜像该报文,结束。 示例:某个镜像源同时被镜像会话A和镜像会话B关联,镜像会话A的优先级是1,镜像会话B的优先级是2。当镜像源入方向的某个报文同时符合镜像会话A和镜像会话B里的筛选条件规则,此时根据镜像会话优先级,该报文优先匹配镜像会话A中的筛选条件规则,并执行该规则的采集策略,结束后,该报文不会继续匹配镜像会话B。 图2 镜像会话匹配规则 筛选条件的匹配规则如图3所示。当一个镜像源只被一个镜像会话关联时,以入方向的报文为例,报文根据入方向规则的优先级,按照从高到低的顺序匹配: 当报文匹配上筛选条件的某个入方向规则,则执行以下操作: 如果该规则的策略是采集,则镜像该报文。 如果该规则的策略是不采集,则不会镜像该报文。 当遍历了筛选条件中的所有入方向规则,报文均没有匹配上,则不会镜像该报文,结束。 示例:当某个镜像源被镜像会话A关联,在镜像会话A的筛选条件中,入方向规则A和规则B的流量匹配条件相同,但优先级和流量采集策略不同。规则A的优先级为1,策略为不采集。规则B的优先级为2,策略为采集。当镜像源入方向的某个报文同时符合规则A和规则B的流量匹配条件时,此时根据规则优先级,该报文优先匹规则A,并执行不采集策略,即不镜像该报文,结束后,该报文不会继续匹配规则B。 图3 筛选条件匹配规则
  • 流量镜像概念 首先,为您介绍流量镜像功能中的基础概念: 筛选条件:筛选条件包含入方向规则和出方向规则,规则由优先级、流量采集策略以及匹配条件组成。 入方向规则:用来匹配镜像源接收到的流量。 出方向规则:用来匹配镜像源发送出去的流量。 镜像源:镜像源为弹性网卡,表示需要镜像该弹性网卡的流量。 镜像目的:镜像目的为云服务器网卡或者弹性负载均衡实例,用来接受镜像的流量。 镜像会话:使用流量镜像功能,您需要创建镜像会话,通过在镜像会话中关联筛选条件、镜像源和镜像目的,将镜像源符合筛选条件的流量镜像到镜像目的实例。
  • 流量镜像工作原理 以下为您介绍流量镜像的工作原理,以图1为例,在镜像会话中,关联了两个镜像源,一个筛选条件以及一个镜像目的,详细介绍如下: 镜像源01是弹性网卡-B,弹性网卡-B属于ECS-B。本示例中,ECS-B访问ECS-A,需要镜像弹性网卡-B的出方向和入方向流量。 镜像源02是弹性网卡-C,弹性网卡-C属于ECS-C。本示例中,公网客户端访问ECS-C,需要镜像弹性网卡-C的入方向和出方向流量。 筛选条件包含流量的入方向规则和出方向规则。 镜像目的使用弹性负载均衡ELB实例,用来接受镜像的流量。 在表1中,以镜像源弹性网卡-B和弹性网卡-C为例,为您介绍网络流量的镜像原理。 图1 流量镜像架构图 表1 网络流量的镜像路径说明 镜像源 访问路径 报文 方向 说明 弹性网卡-B ECS-B访问ECS-A 请求报文:报文01 出方向 从ECS-B发出的请求报文01,对弹性网卡-B来说,属于出方向。当报文01匹配上筛选条件的出方向规则时,则将报文01镜像到ELB实例。 响应报文:报文02 入方向 从ECS-A返回的响应报文02,对弹性网卡-B来说,属于入方向。当该报文匹配上筛选条件的入方向规则时,则将报文02镜像到ELB实例。 弹性网卡-C 公网访问ECS-C 请求报文:报文03 入方向 从公网发出的请求报文03,对弹性网卡-C来说,属于入方向。当报文03匹配上筛选条件的入方向规则时,则将报文03镜像到ELB实例。 响应报文:报文04 出方向 从ECS-C返回的响应报文04,对弹性网卡-C来说,属于出方向。当报文04匹配上筛选条件的出方向规则时,则将报文04镜像到ELB实例。 筛选条件配置示例如表2所示,结合配置示例,为您介绍镜像会话是如何筛选网络流量的。 表2 流量筛选说明 方向 优先级 协议类型 策略 类型 源地址 源端口范围 目的地址 目的端口范围 筛选示例说明 入方向 1 TCP 采集 IPv4 172.16.0.0/24 10000-10001 10.0.0.3/32 80-80 当网络流量进入镜像源的弹性网卡时,镜像会话将会镜像符合以下条件的报文: 使用TCP (IPv4)协议,源地址网段为172.16.0.0/24、源端口为10000或者10001,目的地址为10.0.0.3/32、目的端口为80。 出方向 1 全部 不采集 IPv4 192.168.0.0/24 全部 10.2.0.0/24 全部 当网络流量从镜像源的弹性网卡出去时,镜像会话将不会镜像符合以下条件的报文: 使用全部 (IPv4)协议,源地址网段为192.168.0.0/24、源端口为全部,目的地址网段为10.2.0.0/24、目的端口为全部。
  • 操作指导 进入创建IP地址组页面。 根据界面提示设置IP地址组参数。 参数详细说明请参见表1。 表1 IP地址组参数说明 参数 参数说明 取值样例 区域 必选参数。 不同区域的云服务产品之间内网互不相通,请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。 IP地址组只能关联至同区域的资源。 区域A 名称 必选参数。 此处填写IP地址组的名称。 长度范围为1~64位。 名称由中文、英文字母、数字、下划线(_)、中划线(-)、点(.)组成。 您可以自定义IP地址组名称,IP地址组的唯一性由系统分配的ID号保证。 ipGroup-A 最大条目数 必选参数。 此处设置IP地址组内支持添加的IP地址条目数量,系统默认显示当前支持的最大条目数,您可以自行减少最大条目数。 如果需要提升IP地址组的最大条目数,您需要提交工单进行申请。 20 IP类型 必选参数。 此处设置IP地址组内支持的IP类型,具体如下: IPv4 IPv6 IPv4 IP地址条目 可选参数。 您可以在IP地址组内添加多个不同格式的IP地址,每个IP地址输入完成后,按回车键换行。 支持的IP格式如下: IPv4网段:IP地址/掩码,例如192.168.0.0/16 单个IPv4地址:IP地址/掩码,例如192.168.10.10/32 IPv6网段:IP地址/掩码,例如2001:db8:a583:6e::/64 单个IPv6地址:IP地址/掩码,例如2001:db8:a583:6e::5c/128 192.168.0.0/16 192.168.10.10/32 企业项目 必选参数。 创建IP地址组时,可以将IP地址组加入已启用的企业项目。 企业项目管理提供了一种按企业项目管理云资源的方式,帮助您实现以企业项目为基本单元的资源及人员的统一管理,默认项目为default。 关于创建和管理企业项目的详情,请参见《企业管理用户指南》。 default 描述 可选参数。 您可以根据需要在文本框中输入IP地址组的描述信息。 - 基本信息设置完成后,单击“立即创建”。 返回IP地址组列表,创建成功的IP地址组状态为“正常”。 IP地址组无法独立使用,需要将IP地址组关联至对应的资源,具体请参见将IP地址组关联至资源。
  • 操作场景 当您购买弹性公网IP时,无论是哪种计费模式,只要没有加入共享带宽,那么您的弹性公网IP使用的是独享带宽。独享带宽支持对单个弹性公网IP进行限速。 本章节指导用户修改独享带宽大小,您可以增加或者降低带宽大小,修改带宽大小不会更换EIP的地址。 当您修改带宽大小时,不同计费方式的带宽收费和生效时间不同,请您参考表1了解详情,适用于独享带宽和共享带宽两种情况。 降低带宽大小,可能会影响业务流量造成丢包,请确认对业务产生的影响,谨慎操作。 表1 修改带宽大小的费用情况 计费模式 计费方式 变更操作 对费用的影响 包年/包月 按带宽计费 增加带宽大小(补差价升配) 升配后,新带宽大小将在原来已有的时间周期内立即生效。 您需要按照与原带宽的价格差,结合使用周期内的剩余时间,补齐差价。 例如:(以下价格仅作示例,实际价格以控制台显示为准) 客户于2018/11/1 购买了1Mbit/s的带宽,购买时长为1个月,此时价格为18.4元/月,客户使用余额支付18.4元,实付金额为18.4元。 客户在2018/11/24 将带宽升级为5Mbit/s,价格为92元/月。 这时,剩余天数为 30 - 24 = 6天,升配费用=92 / 30 * 6 - 18.4 / 30 * 6 = 14.72元。 了解更多变更资源计费信息,请参见变更资源费用说明。 按带宽计费 降低带宽大小(续费降配) 降配后,新带宽大小不会立即生效。 您需要选择续费时长并根据新的带宽大小进行续费,续费成功后,新带宽大小在新的计费周期内生效。 续费降配订单在资源未生效前支持退订。 续费降配后,当前计费周期的剩余时间内不能再对带宽进行任何修改,请谨慎操作。 按带宽计费 临时增加带宽大小(使用带宽加油包临时升配) 带宽加油包单独计费,您可以在带宽的使用周期内选择任意时间段使用带宽加油包临时增加带宽,带宽加油包到期后带宽自动回落。 按需计费 按带宽计费 增加/降低带宽大小 增加/降低带宽大小后,新的带宽大小和计费方式将立即生效。 按流量计费 增加/降低带宽大小 增加/降低带宽大小后,新的带宽大小将立即生效。 按流量计费的EIP,带宽仅做限速使用,带宽大小不影响实际费用。
  • 使用限制 在实际应用时,有以下几个方面的使用限制: 仅支持“帐号和密码”做为登录认证方式时使用。 仅支持能部署在Windows Server 2016和Windows Server 2019操作系统上的应用。 对于远程桌面方式(RDP)登录APS服务器,目前仅支持管理员帐户。 RD Licensing服务器的Windows Server版本必须等于或高于RDS CAL版本,RDS CAL版本必须等于或高于APS服务器的Windows Server版本。 远程应用不支持锁屏操作。 软件兼容性 部署应用软件要求: 软件必须支持多实例运行,能同时打开多个程序实例。 不支持需要以管理员权限才能够运行的软件。 不支持安装到个人用户目录的软件。 Profile和个人用户数据存储 若用户需保存个人数据,必须配置Profile和个人用户数据存储。在没有配置Profile和个人用户数据存储的场景下,建议不要在APS服务器中保存个人数据,避免个人信息被其他用户访问,导致信息泄露。 远程应用的用户Profile数据存储使用Windows的“漫游用户配置”和“文件夹重定向”两个功能来提供,存储在由第三方提供的共享的文件服务器上,该方案依赖于微软的实现,只支持用户的应用配置接入到一台服务器:用户通过打开多个应用同时接入多个应用服务器时,将同时存在多份漫游用户配置拷贝,此时如果分别修改过用户配置,将出现配置冲突、修改的配置无法正常保存到漫游用户配置中。 用户个人数据使用共享的存储系统,存储系统由第三方提供(如NAS)。 云应用基于Windows Server的RDS服务来发布应用,用户之间通过会话隔离,相互的基本操作互不影响。但操作系统及应用程序提供给所有用户共享使用,一旦操作系统或应用程序本身出现故障或出现安全问题,会影响所有用户。云应用不适用于对安全及用户隔离有较高需求的用户。 父主题: 简介
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 获取Token,请参考《统一身份认证服务API参考》的“获取用户Token”章节。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。 最大长度:16384 X-Enterprise-Project-ID 否 String 企业项目ID。 创建环境时,环境会绑定企业项目ID。 最大长度36字节,带“-”连字符的UUID格式,或者是字符串“0”。 该字段不传(或传为字符串“0”)时,则查询默认企业项目下的资源。 说明: 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户指南》。 X-Environment-ID 是 String 环境ID。 获取环境ID,通过《云应用引擎API参考》的“获取环境列表”章节获取环境信息。 请求响应成功后在响应体的items数组中的一个元素即为一个环境的信息,其中id字段即是环境ID。
共100000条