华为云用户手册

  • PG_RESOURCE_POOL PG_RESOURCE_POOL系统表提供了数据库资源池的信息。 表1 PG_RESOURCE_POOL字段 名称 类型 描述 respool_name name 资源池名称。 mem_percent integer 内存配置的百分比,0代表资源池内存不管控。 cpu_affinity bigint 保留字段,无实际意义。 control_group name 资源池所在的control group名字。 active_statements integer 资源池上最大的并发数。 max_dop integer 资源池允许的简单作业最大并发数。-1和0代表不限制。 memory_limit name 单个查询估算内存上限。 parentid oid 父资源池OID。 io_limits integer 保留字段,无实际意义。 io_priority text 保留字段,无实际意义。 nodegroup name 资源池关联的逻辑集群名称,非逻辑集群下为“installation”。 is_foreign boolean 表示资源池是否用于逻辑集群之外的用户。如果为true,表示资源池用来控制不属于当前资源池的普通用户的资源。 short_acc boolean 资源池是否开启短查询加速,默认开启。 短查询加速开启,简单查询在快车道管控。 短查询加速关闭,简单查询在慢车道管控。 except_rule text 资源池关联的异常规则,支持关联多个异常规则,异常规则间用逗号分隔。 weight integer 资源调度权重,目前仅用于网络调度。 父主题: 系统表
  • PGXC_TOTAL_MEMORY_DETAIL PGXC_TOTAL_MEMORY_DETAIL视图显示集群内存使用情况。需要有系统管理员权限或预置角色gs_role_read_all_stats权限才可以访问此视图。 表1 PGXC_TOTAL_MEMORY_DETAIL字段 名称 类型 描述 nodename text 节点名称。 memorytype text 内存使用的名称。 max_process_memory: GaussDB (DWS)集群实例所占用的内存大小。 process_used_memory:GaussDB(DWS)进程所使用的内存大小。 max_dynamic_memory:最大动态内存。 dynamic_used_memory:已使用的动态内存。 dynamic_peak_memory:内存的动态峰值。 dynamic_used_shrctx:最大动态共享内存上下文。 dynamic_peak_shrctx:共享内存上下文的动态峰值。 max_shared_memory:最大共享内存。 shared_used_memory:已使用的共享内存。 max_cstore_memory:列存所允许使用的最大内存。 cstore_used_memory:列存已使用的内存大小。 max_sctpcomm_memory:通信库所允许使用的最大内存。 sctpcomm_used_memory:通信库已使用的内存大小。 sctpcomm_peak_memory:通信库的内存峰值。 other_used_memory:其他已使用的内存大小。 gpu_max_dynamic_memory:GPU内存最大值。 gpu_dynamic_used_memory:当前GPU可用内存和当前临时GPU内存之和。 gpu_dynamic_peak_memory:GPU内存使用的最大内存。 pooler_conn_memory:pooler连接占用内存大小。 pooler_freeconn_memory:pooler空闲连接占用的内存大小。 storage_compress_memory:列存压缩和解压缩使用的内存大小。 udf_reserved_memory:为UDF Worker进程预留的内存大小。 mmap_used_memory:mmap使用的内存大小。 memorymbytes integer 内存使用的大小,单位为MB。 父主题: 系统视图
  • 应用示例 查询指定函数的OID。例如,获取函数justify_days的OID为1295。 1 2 3 4 5 SELECT oid FROM pg_proc where proname ='justify_days'; oid ------ 1295 (1 row) 查询指定函数是否为聚集函数。例如,查询justify_days函数为非聚集函数。 1 2 3 4 5 SELECT proisagg FROM pg_proc where proname ='justify_days'; proisagg ---------- f (1 row)
  • 三权分立 默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。在实际业务管理中,为了避免系统管理员拥有过度集中的权利带来高风险,可以设置三权分立,将系统管理员的权限分立给安全管理员和审计管理员。 三权分立后,系统管理员将不再具有CREATEROLE属性(安全管理员)和AUDITADMIN属性(审计管理员)能力。即不再拥有创建角色和用户的权限,并不再拥有查看和维护数据库审计日志的权限。关于CREATEROLE属性和AUDITADMIN属性的更多信息请参考CREATE ROLE。 三权分立后,系统管理员只会对自己作为所有者的对象有权限。 三权分立的设置办法请参考设置三权分立章节。 三权分立前的权限详情及三权分立后的权限变化,请分别参见表1和表2。 表1 默认的用户权限 对象名称 系统管理员 安全管理员 审计管理员 普通用户 表空间 对表空间有创建、修改、删除、访问、分配操作的权限。 不具有对表空间进行创建、修改、删除、分配的权限,访问需要被赋权。 表 对所有表有所有的权限。 仅对自己的表有所有的权限,对其他用户的表无权限。 索引 可以在所有的表上建立索引。 仅可以在自己的表上建立索引。 模式 对所有模式有所有的权限。 仅对自己的模式有所有的权限,对其他用户的模式无权限。 函数 对所有的函数有所有的权限。 仅对自己的函数有所有的权限,对其他用户放在public这个公共模式下的函数有调用的权限,对其他用户放在其他模式下的函数无权限。 自定义视图 对所有的视图有所有的权限。 仅对自己的视图有所有的权限,对其他用户的视图无权限。 系统表和系统视图 可以查看所有系统表和视图。 只可以查看部分系统表和视图。详细请参见系统表和系统视图。 表2 三权分立较非三权分立权限变化说明 对象名称 系统管理员 安全管理员 审计管理员 普通用户 表空间 无变化 无变化。 表 权限缩小。 只对自己的表有所有权限,对其他用户放在属于各自模式下的表无权限。 无变化。 索引 权限缩小。 只可以在自己的表上建立索引。 无变化。 模式 权限缩小。 只对自己的模式有所有的权限,对其他用户的模式无权限。 无变化。 函数 权限缩小。 只对自己的函数有所有的权限,对其他用户放在属于各自模式下的函数无权限。 无变化。 自定义视图 权限缩小。 只对自己的视图及其他用户放在public模式下的视图有所有的权限,对其他用户放在属于各自模式下的视图无权限。 无变化。 系统表和系统视图 无变化。 无变化。 无变化。 无权查看任何系统表和视图。 父主题: 管理用户及权限
  • 示例:通过本地文件导入导出数据 在使用JAVA语言基于GaussDB(DWS)进行二次开发时,可以使用CopyManager接口,通过流方式,将数据库中的数据导出到本地文件或者将本地文件导入数据库中,文件格式支持 CS V、TEXT等格式。 样例程序如下,执行时需要加载GaussDB(DWS) jdbc驱动。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 //以下用例以gsjdbc4.jar为例,如果要使用gsjdbc200.jar,请替换驱动类名(将代码中的“org.postgresql”替换成“com.huawei.gauss200.jdbc”)与连接URL串前缀(将“jdbc:postgresql”替换为“jdbc:gaussdb”)。 import java.sql.Connection; import java.sql.DriverManager; import java.io.IOException; import java.io.FileInputStream; import java.io.FileOutputStream; import java.sql.SQLException; import org.postgresql.copy.CopyManager; import org.postgresql.core.BaseConnection; public class Copy{ public static void main(String[] args) { String urls = new String("jdbc:postgresql://10.180.155.74:8000/gaussdb"); //数据库URL String username = new String("jack"); //用户名 String password = new String("********"); //密码 String tablename = new String("migration_table"); //定义表信息 String tablename1 = new String("migration_table_1"); //定义表信息 String driver = "org.postgresql.Driver"; Connection conn = null; try { Class.forName(driver); conn = DriverManager.getConnection(urls, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(System.out); } catch (SQLException e) { e.printStackTrace(System.out); } // 将migration_table查询结果导出到本地文件d:/data.txt try { copyToFile(conn, "d:/data.txt", "(SELECT * FROM migration_table)"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //将d:/data.txt中的数据导入到migration_table_1中。 try { copyFromFile(conn, "d:/data.txt", migration_table_1); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 将migration_table_1中的数据导出到本地文件d:/data1.txt try { copyToFile(conn, "d:/data1.txt", migration_table_1); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void copyFromFile(Connection connection, String filePath, String tableName) throws SQLException, IOException { FileInputStream fileInputStream = null; try { CopyManager copyManager = new CopyManager((BaseConnection)connection); fileInputStream = new FileInputStream(filePath); copyManager.copyIn("COPY " + tableName + " FROM STDIN", fileInputStream); } finally { if (fileInputStream != null) { try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static void copyToFile(Connection connection, String filePath, String tableOrQuery) throws SQLException, IOException { FileOutputStream fileOutputStream = null; try { CopyManager copyManager = new CopyManager((BaseConnection)connection); fileOutputStream = new FileOutputStream(filePath); copyManager.copyOut("COPY " + tableOrQuery + " TO STDOUT", fileOutputStream); } finally { if (fileOutputStream != null) { try { fileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } } 父主题: 基于JDBC开发
  • EXECUTE IMMEDIATE 语法图请参见图1。 图1 EXECUTE IMMEDIATE dynamic_select_clause::= using_clause子句的语法图参见图2。 图2 using_clause-1 对以上语法格式的解释如下: define_variable,用于指定存放单行查询结果的变量。 USING IN bind_argument,用于指定存放传递给动态SQL值的变量,即在dynamic_select_string中存在占位符时使用。 USING OUT bind_argument,用于指定存放动态SQL返回值的变量。 查询语句中,into和out不能同时存在; 占位符命名以“:”开始,后面可跟数字、字符或字符串,与USING子句的bind_argument一一对应; bind_argument只能是值、变量或表达式,不能是表名、列名、数据类型等数据库对象,即不支持使用bind_argument为动态SQL语句传递模式对象。如果存储过程需要通过声明参数传递数据库对象来构造动态SQL语句(常见于执行DDL语句时),建议采用连接运算符“||”拼接dynamic_select_clause; 动态PL/SQL块允许出现重复的占位符,即相同占位符只能与USING子句的一个bind_argument按位置对应。 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 --从动态语句检索值(INTO 子句): DECLARE staff_count VARCHAR2(20); BEGIN EXECUTE IMMEDIATE 'select count(*) from staffs' INTO staff_count; dbms_output.put_line(staff_count); END; / --传递并检索值(INTO子句用在USING子句前): CREATE OR REPLACE PROCEDURE dynamic_proc AS staff_id NUMBER(6) := 200; first_name VARCHAR2(20); salary NUMBER(8,2); BEGIN EXECUTE IMMEDIATE 'select first_name, salary from staffs where staff_id = :1' INTO first_name, salary USING IN staff_id; dbms_output.put_line(first_name || ' ' || salary); END; / --调用存储过程 CALL dynamic_proc(); --删除存储过程 DROP PROCEDURE dynamic_proc;
  • OPEN FOR 动态查询语句还可以使用OPEN FOR打开动态游标来执行。 语法参见图3。 图3 open_for::= 参数说明: cursor_name:要打开的游标名。 dynamic_string:动态查询语句。 USING value:在dynamic_string中存在占位符时使用。 游标的使用请参考游标。 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 DECLARE name VARCHAR2(20); phone_number VARCHAR2(20); salary NUMBER(8,2); sqlstr VARCHAR2(1024); TYPE app_ref_cur_type IS REF CURSOR; --定义游标类型 my_cur app_ref_cur_type; --定义游标变量 BEGIN sqlstr := 'select first_name,phone_number,salary from staffs where section_id = :1'; OPEN my_cur FOR sqlstr USING '30'; --打开游标, using是可选的 FETCH my_cur INTO name, phone_number, salary; --获取数据 WHILE my_cur%FOUND LOOP dbms_output.put_line(name||'#'||phone_number||'#'||salary); FETCH my_cur INTO name, phone_number, salary; END LOOP; CLOSE my_cur; --关闭游标 END; /
  • GLOBAL_WORKLOAD_TRANSACTION GLOBAL_WORKLOAD_TRANSACTION视图提供集群所有CN上WORKLOAD控制组相关的事务信息的总和。需要有系统管理员权限才可以访问。该视图仅在资源实时监控功能开启,即enable_resource_track为on时有效。 表1 GLOBAL_WORKLOAD_TRANSACTION字段 名称 类型 描述 workload name WORKLOAD控制组名称。 commit_counter bigint 各CN上提交次数总和。 rollback_counter bigint 各CN上回滚次数总和。 resp_min bigint 集群总体最小响应时间。 resp_max bigint 集群总体最大响应时间。 resp_avg bigint 各CN上平均响应时间。 resp_total bigint 各CN上响应时间总和。 父主题: 系统视图
  • javax.sql.DataSource javax.sql.DataSource是数据源接口。 表1 对javax.sql.DataSource接口的支持情况 方法名 返回值类型 支持JDBC 4 getConneciton() Connection Yes getConnection(String username,String password) Connection Yes getLoginTimeout() int Yes getLogWriter() PrintWriter Yes setLoginTimeout(int seconds) void Yes setLogWriter(PrintWriter out) void Yes 父主题: JDBC接口参考
  • Hudi外表信息查询与自动同步任务 GaussDB(DWS)提供一系列系统函数来实现Hudi外表信息获取、创建Hudi自动同步任务等功能。其中Hudi自动同步任务实现了从Hudi外表周期性同步数据到GaussDB(DWS)内表功能。 表2 Hudi系统函数 序号 名称 类型 功能 1 pg_show_custom_settings() 内置函数 查询HUDI外表参数设置详情。 2 hudi_get_options(regclass) 内置函数 查询HUDI外表的属性信息(hoodie.properties)。 3 hudi_get_max_commit(regclass) 内置函数 获取当前HUDI外表最新commit的时间戳。 4 hudi_sync_task_submit(regclass, regclass) 内置函数 提交HUDI自动同步任务。 hudi_sync_task_submit(regclass, regclass, text, text) 5 hudi_show_sync_state() 内置函数 获取HUDI自动同步任务的同步状态。 6 hudi_sync(regclass, regclass) 存储过程 HUDI自动同步任务调用入口。 7 hudi_sync_custom(regclass, regclass, text) 存储过程 HUDI自动同步任务调用入口,支持用户自定义目标表和数据源表的字段同步对应关系。 8 hudi_set_sync_commit(regclass, regclass, text) 内置函数 设置HUDI自动同步任务首次同步的起点时间戳,避免在已经同步了部分数据的情况下,重新同步已有数据。 hudi_set_sync_commit(text, text) 设置HUDI自动同步任务下一次同步的起点时间戳,可以用于重复同步历史数据或者跳过某些数据。
  • 实时视图与增量视图查询 GaussDB(DWS)提供了类似spark-sql风格的表级参数,用于支持实时视图和增量视图。 具体参数说明如下,其中SCHEMA.FOREIGN_TABLE需要替换为实际的schema和外表名。 表1 实时视图与增量视图查询的参数 参数 取值 说明 hoodie.SCHEMA.FOREIGN_TABLE.consume.mode SNAPSHOT 查询实时视图。 INCREMENTAL 查询增量视图。 hoodie.SCHEMA.FOREIGN_TABLE.consume. start.timestamp hudi时间戳 指定增量同步的起始commit。 hoodie.SCHEMA.FOREIGN_TABLE.consume. ending.timestamp hudi时间戳 指定增量同步的结束commit,不指定则采用最新commit。 以上参数支持使用set命令设置,并且仅在当前SESSION中有效;使用reset命令恢复缺省值。 可以通过系统函数pg_catalog.pg_show_custom_settings()来查询相关参数的设置详情。 查询MOR表的增量视图时,需要使用where条件过滤_hoodie_commit_time字段,避免读取到未合并的不符合条件的log文件数据;COW表无需该操作。
  • PG_FOREIGN_DATA_WRAPPER PG_FOREIGN_DATA_WRAPPER系统表存储外部数据封装器定义。一个外部数据封装器是在外部服务器上驻留外部数据的机制,是可以访问的。 表1 PG_FOREIGN_DATA_WRAPPER字段 名字 类型 引用 描述 oid oid - 行标识符(隐藏属性,必须明确选择才会显示)。 fdwname name - 外部数据封装器名。 fdwowner oid PG_AUTHID.oid 外部数据封装器的所有者。 fdwhandler oid PG_PROC.oid 引用一个负责为外部数据封装器提供扩展例程的处理函数。如果没有提供处理函数则为0。 fdwvalidator oid PG_PROC.oid 引用一个验证器函数,这个验证器函数负责验证给予外部数据封装器的选项、外部服务器选项和使用外部数据封装器的用户映射的有效性。如果没有提供验证器函数则为0。 fdwacl aclitem[] - 访问权限。 fdwoptions text[] - 外部数据封装器指定选项,使用“keyword=value”格式的字符串。 父主题: 系统表
  • (可选)GPU加速型弹性云服务器结果验证 对于GPU加速型弹性云服务器,在安装完图形化界面后,可通过如下操作验证驱动是否正常工作。 登录管理控制台。 为弹性 云服务器配置 安全组。 单击弹性云服务器名称,查看弹性云服务器详情,在弹性云服务器详情页面,选择“安全组”。 在“安全组”界面,单击“更改安全组规则”,进入安全组详情界面。 在安全组详情界面,单击“添加规则”,弹出添加规则窗口。 根据界面提示配置安全组规则。 允许TCP 5902端口的入方向访问,该端口号根据步骤9.c中的“rfbport”参数决定。 通过VN客户端访登录弹性云服务器。 本文以TightVNC为例进行介绍。 图4 TightVNC客户端 页面空白处右键单击,在菜单中选择“Open in Terminal”。 在终端执行以下命令,若如所示正常识别显卡信息,表示驱动工作正常。 nvidia-settings 图5 显卡信息 如果GPU加速型弹性云服务器安装的是GRID驱动,则需要配置License才能正常使用GPU渲染能力,详细操作,请参考GPU加速型实例安装GRID驱动。
  • 操作场景 为了提供纯净的弹性云服务器系统给客户,Ubuntu系列弹性云服务器默认未安装图形化界面,如果您需要使用图形化界面,请参见本节内容进行安装。 对于GPU加速型弹性云服务器,在安装图形化界面后,还需要配置X Server、x11vnc和lightdm,配置后可以实现: 系统启动后,自动启动图形系统和VNC server。 通过VNC远程登录云服务器后,应用程序能够正常调用GPU。 您可以参考如下流程进行Ubuntu系列弹性云服务器图形化界面的安装: 安装图形化界面 (可选)配置X Server、x11vnc和lightdm:仅GPU加速型弹性云服务器涉及该操作。 (可选)GPU加速型弹性云服务器结果验证:仅GPU加速型弹性云服务器涉及该操作。
  • 约束与限制 本文档适用于Ubuntu 16.04、18.04以及20.04操作系统的云服务器。 弹性云服务器需绑定弹性公网IP或者配置内网镜像源。 弹性云服务器安装图形化界面前,请确保云服务器内存不小于2GB,否则可能出现图像化界面安装失败,或安装后无法启动的问题。 鲲鹏架构的弹性云服务器请先参考如何使用自动化工具配置华为云镜像源(x86_64和ARM)?使用华为云提供的镜像源进行更新。 GPU加速型弹性云服务器需要安装正确的GPU驱动,详细内容,请参考GPU驱动概述。
  • 安装图形化界面 登录弹性云服务器,运行如下命令安装图形化界面。 执行如下命令,更新软件库。 apt-get update 执行如下命令,安装Ubuntu图形化桌面。 对于Ubuntu16.04版本,请执行以下命令: apt-get install -y scite xorg xubuntu-desktop 对于Ubuntu18.04和20.04版本,请执行以下命令: apt-get install -y ubuntu-desktop 执行以下命令,编辑/root/.profile文件。 vim /root/.profile 单击“i”,进入编辑模式,修改末尾行“mesg n || true”为“tty -s && mesg n || true”,修改后该文件内容如下: # ~/.profile: executed by Bourne-compatible login shells. if [ "$BASH" ]; then if [ -f ~/.bashrc ]; then . ~/.bashrc fi fi tty -s && mesg n || true 单击“Esc”退出编辑模式。 执行以下命令,保存并退出文件。 :wq (Ubuntu 20.04操作系统必选)添加子账号。 安装图形化桌面后,Ubuntu 20.04操作系统禁止root登录,因此需要在安装完成后添加子账号用于登录图像化桌面。 以添加user01用户为例,执行以下命令。 adduser user01 根据提示设置新用户的密码 Adding user `user01' ... Adding new group `user01' (1001) ... Adding new user `user01' (1001) with group `user01' ... Creating home directory `/home/user01' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully 设置user01的其他信息,该信息均为可选,如果不设置可以 按回车键跳过,最后系统将提示您确认输入的信息是否正确无误。 正确输入"Y"。 Changing the user information for user01 Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y 执行reboot命令,重启服务器。 通过控制台提供的VNC登录方式连接服务器,使用root账号或5中添加的子账号登录图形化界面。 Ubuntu 20.04操作系统需使用添加的子账号登录图像化桌面。 对于GPU加速型弹性云服务器弹性云服务器,还需要继续配置X Server、x11vnc和lightdm。
  • (可选)配置X Server、x11vnc和lightdm 对于GPU加速型弹性云服务器,在安装图形化界面时,需要配置X Server、x11vnc和lightdm。 远程登录弹性云服务器。 执行以下命令,查询GPU的BusID。 lspci | grep -i nvidia 图1 GPU的BusID 执行以下命令,生成X Server配置。 nvidia-xconfig --enable-all-gpus --separate-x-screens 在生成的“/etc/X11/xorg.conf”文件的“Section "Device"”中配置GPU的BusID。 执行以下命令,编辑“/etc/X11/xorg.conf”文件。 vi /etc/X11/xorg.conf 单击“i”,进入编辑模式。 在“Section "Device"”中增加GPU的BusID。 图2 增加GPU的BusID 步骤2中查询的BusID为十六进制,需要转换为十进制后增加到“/etc/X11/xorg.conf”文件的“Section "Device"”中。 例如,“00.0d.0”是十六进制,需转换后填入配置中的值为“PCI:00:13:0。” 单击“Esc”退出编辑模式。 执行以下命令,保存并退出文件。 :wq 执行以下命令,安装x11vnc。 apt-get -y install x11vnc 执行以下命令,安装ligthdm。 apt-get -y install lightdm 在弹出的界面,设置默认显示管理器为“lightdm”。 图3 设置默认显示管理器 执行以下命令,设置系统默认启动图形化界面。 systemctl set-default graphical.target (可选)配置x11vnc开机自启动。 执行以下命令,添加文件“/lib/systemd/system/myservice.service”。 vi /lib/systemd/system/myservice.service 单击“i”,进入编辑模式。 增加如下内容。 [Unit] Description=My Service After=network.target lightdm.service [Service] Type=oneshot ExecStart=/usr/bin/x11vnc -forever -loop -noxdamage -repeat -rfbport 5902 -shared -bg -auth guess -o /var/log/vnc.log [Install] WantedBy=multi-user.target Alias=myservice.service 单击“Esc”退出编辑模式。 执行以下命令,保存并退出文件。 :wq 执行以下命令,加载配置文件。 systemctl daemon-reload systemctl enable myservice.service 执行reboot命令,重启服务器。
  • 不同账号下弹性云服务器内网是否可以互通? 不同账号下的弹性云服务器内网是不通的。 您可以通过以下服务或功能实现不同账号下的云服务器内网互通。 适用场景 费用 实现方法 同区域 免费 通过“VPC对等连接”实现内网互通。 对等连接简介 创建不同账户下的对等连接 跨区域 计费 通过“云连接”实现内网互通。 什么是云连接 跨区域跨账号VPC互通 同区域 计费 通过“ VPC终端节点 ”实现内网互通。 什么是VPC终端节点? 配置不同账号下VPC间通信的VPC终端节点 VPC终端节点和对等连接有什么区别? 跨区域 计费 通过“ 虚拟专用网络 ”实现内网互通。 什么是虚拟专用网络 VPN支持将两个VPC互连吗? 父主题: 其他
  • 检查域名解析(域名Ping不通场景) 如果弹性公网IP可以Ping通,域名无法Ping通,可能是域名没有备案或者域名解析的问题导致。 检查域名备案。 备案是中国大陆的一项法规,网站的域名和服务器IP需要进行备案,备案成功后您的域名才可以指向服务器开通访问。 如果您使用中国大陆节点服务器提供互联网信息服务,需要先在服务器提供商处提交备案申请,备案成功后域名才可以指向服务器开通访问。如何备案? 如果您使用的是中国大陆地区以外的服务器(包括中国港澳台及其他国家、地区)提供互联网信息服务,无需备案。 检查域名解析。 如果域名已备案,但未正确配置域名解析也可能会导致域名无法Ping通。 您可以在DNS服务控制台查看域名解析详情。 检查DNS服务器配置。 如果ping域名显示找不到主机可能是DNS服务器速度慢,导致的访问卡顿,建议您参考案例:弹性云服务器访问中国大陆外网站时加载缓慢怎么办?进行优化。
  • 检查网络ACL规则 VPC默认没有网络ACL,如果关联了网络ACL,请检查“网络ACL”规则。 查看云服务器对应的子网是否关联了网络ACL。 如显示具体的网络ACL名称说明已关联网络ACL。 图7 网络ACL 单击网络ACL名称查看网络ACL的状态。 图8 网络ACL开启状态 若“网络ACL”为“开启”状态,需要添加ICMP放通规则进行流量放通。 图9 ACL添加ICMP规则 需要注意“网络ACL”的默认规则是丢弃所有出入方向的包,若关闭“网络ACL”后,其默认规则仍然生效。
  • 排查思路 排查EIP问题 查看EIP是否被封堵,EIP封堵及解封的详细内容请参见EIP出现封堵后,如何处理? 查看EIP是否被冻结,EIP冻结及解除被冻结的详细内容请参见EIP资源在什么情况下会被冻结,如何解除被冻结的EIP资源? 排查EIP连接问题 以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。 如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。 图1 弹性公网IP Ping不通排查思路 表1 弹性公网IP Ping不通排查思路 可能原因 处理措施 安全组未添加ICMP规则 安全组添加ICMP规则,详细操作请参考检查安全组规则。 防火墙设置了禁Ping 检查防火墙对ICMP规则的启用状态,详细操作请参考检查防火墙设置。 云服务器设置了禁Ping 检查云服务器对ICMP规则的启用状态,详细操作请参考检查云服务器是否设置了禁Ping。 关联了网络ACL 如果VPC关联了网络ACL,请检查“网络ACL”规则,详细操作请参考检查网络ACL规则。 网络异常 检查本地网络,使用相同区域主机进行Ping测试,详细操作请参考检查网络是否正常。 多网卡场景,路由信息配置不正确 扩展网卡导致网络不通现象通常是路由配置问题,详细操作请参考检查云服务器路由配置(多网卡场景)。 域名没有备案或者域名无法解析 域名无法Ping通,可能是域名没有备案或者域名无法解析,详细操作请参考检查域名解析(域名Ping不通场景)。
  • 检查云服务器路由配置(多网卡场景) 一般操作系统的默认路由优先使用主网卡,如果出现使用扩展网卡导致网络不通现象通常是路由配置问题。 如果云服务器配置了多网卡,请确认云服务器内默认路由是否存在。 登录云服务器,执行如下命令,查看是否存在默认路由。 ip route 图10 查看默认路由 若没有该路由,执行如下命令,添加默认路由。 ip route add default via XXXX dev eth0 XXXX表示网关IP。
  • 检查云服务器负载是否过高 云服务器的带宽和CPU利用率过高可能会导致服务器无法登录。 如果您已经通过 云监控服务 创建过告警任务,当CPU或带宽利用率高时,系统会自动发送告警给您。 Windows弹性云服务器带宽流量过高或CPU利用率高,请参考Windows云服务器卡顿怎么办?进行排查。 如果是CPU占用过高导致的无法登录请参考以下操作降低CPU使用率: 可以通过把一些暂时不使用的进程关掉后再尝试。 检查后台没有运行Windows Update操作。 或者可以尝试重启云服务器。 如果重装系统,请先备份重要数据。 如果服务器有重要数据不能重装,可以通过挂载磁盘方式拷贝数据,需要先备份,再卸载磁盘,然后挂载盘拷贝数据。 CPU利用率过高您可以通过变更规格升级vCPU、内存。 如果是带宽超限导致的无法登录请参考以下操作修改带宽: 在控制台排查带宽超限的方法请参考如何排查带宽超过限制? 扩大带宽的操作请参考修改弹性公网IP的带宽。 如果频繁出现网络时延抖动或丢包,可能是在跨境访问场景下,采用了“全动态BGP”线路类型的弹性公网IP引起的,建议选择“优选BGP”类型的弹性公网IP。 详细内容,请参见无法登录到Windows云服务器怎么办?。 完成上述操作后,再次重试远程连接云服务器。
  • 检查SSH登录IP白名单(已启用 企业主机安全 ) 开启企业主机安全防护后,您可以根据需要配置SSH登录IP白名单。SSH登录IP白名单功能是防护账户爆破的一个重要方式,主要是限制需要通过SSH登录的服务器。 配置了白名单的服务器,只允许白名单内的IP通过SSH登录到服务器,拒绝白名单以外的IP。 在主机安全服务“事件管理”页面,检查本地主机IP是否因为账户暴力破解,导致本地主机IP被拦截。 检查是否已开启SSH登录白名单,如果已开启,请确保本地主机IP已添加到IP白名单。 启用“SSH登录白名单”功能时请确保将所有需要发起SSH登录的主机IP地址都加入白名单中,否则您将无法SSH远程登录您的云服务器。 本地IP加入白名单后,账户破解防护功能将不再对来自白名单中的IP登录行为进行拦截,该IP对您加入白名单的服务器登录访问将不受任何限制,请谨慎操作。 单击安全配置了解“SSH登录白名单”。
  • 排查思路 VNC方式登录云服务器正常,但无法通过远程桌面连接方式登录云服务器时,推荐您按照以下思路排查问题。 以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。 如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。 图3 无法连接Windows实例排查思路 表1 无法连接Windows实例排查思路 可能原因 处理措施 资源状态异常:资源冻结;未开机。 只有状态为“运行中”的云服务器才允许用户登录,详细操作请参考检查资源状态是否正常。 登录使用的用户名称或密码错误。 Windows实例用户名:Administrator,密码错误通过“重置密码”重新设置登录密码。详细操作请参考检查登录凭证。 弹性云服务器负载过高。 带宽和CPU利用率过高可能会导致服务器无法登录,详细操作请参考检查云服务器负载是否过高。 未绑定弹性公网IP 使用RDP文件、远程桌面连接方式(MSTSC方式)登录要求弹性云服务器已绑定弹性公网IP。详细操作请参考检查云服务器是否绑定弹性公网IP。 互联网运营商的劫持或者封堵。 更换手机热点或其他网络测试是否可以正常访问,详细操作请参考检查网络是否正常。 防火墙拦截。 测试防火墙关闭后是否可以正常连接,详细操作请参考检查防火墙配置是否正常。 安全组和云服务器的登录端口配置不正确。 检查安全组和云服务器是否放通远程登录端口。详细操作请参考检查端口配置是否正常。 配置了SSH登录IP白名单。 检查开启企业主机安全后是否配置了SSH登录IP白名单。检查SSH登录IP白名单(已启用企业主机安全) 检查云服务器的远程桌面协议。 确保云服务器已开启远程桌面协议(仅RDP文件、MSTSC方式要求)。详细操作请参考检查云服务器的远程桌面协议。 第三方杀毒软件的阻拦。 禁用或者卸载第三方杀毒软件后重试,详细操作请参考检查是否为杀毒软件拦截。 连接实例有详细的报错信息提示。 远程连接有报错信息提示时,请根据详细报错信息查看操作指导。详细操作请参考检查远程登录是否有报错信息。
  • 是否已经通过远程登录诊断工具进行问题定位 弹性云服务器提供一键诊断功能。当弹性云服务器无法远程登录时,可使用一键诊断工具检测当前弹性云服务器的主机、安全组、内存、磁盘等状态,帮您进一步进行问题排查及定位。 远程登录诊断工具的操作,请参见如何进行弹性云服务器的一键诊断?。 如果远程登录诊断工具无法帮助您准确定位问题,请记录诊断报告中的异常项,然后单击管理控制台右上方的“工单”,填写工单信息,获取技术支持。
  • 检查SSH登录IP白名单(已启用企业主机安全) 开启企业主机安全防护后,您可以根据需要配置SSH登录IP白名单。SSH登录IP白名单功能是防护账户爆破的一个重要方式,主要是限制需要通过SSH登录的服务器。 配置了白名单的服务器,只允许白名单内的IP通过SSH登录到服务器,拒绝白名单以外的IP。 在主机安全服务“事件管理”页面,检查本地主机IP是否因为账户暴力破解,导致本地主机IP被拦截。 检查是否已开启SSH登录白名单,如果已开启,请确保本地主机IP已添加到IP白名单。 启用“SSH登录白名单”功能时请确保将所有需要发起SSH登录的主机IP地址都加入白名单中,否则您将无法SSH远程登录您的云服务器。 本地IP加入白名单后,账户破解防护功能将不再对来自白名单中的IP登录行为进行拦截,该IP对您加入白名单的服务器登录访问将不受任何限制,请谨慎操作。 单击安全配置了解“SSH登录白名单”。
  • 远程访问端口配置异常 检查弹性云服务器内部设置。 检查弹性云服务器sshd进程是否已运行。 检查弹性云服务器是否将本地PC限制了。 登录弹性云服务器,执行以下命令。 vi /etc/hosts.deny 如果文件中存在本地PC的IP,说明此IP被限制了,请将此IP在文件中删除。 进入本地PC中路径为“/etc/ssh/ssh_config”下的文件中,查看默认登录端口,同时查看弹性云服务器路径为“/etc/ssh/sshd_config”下的文件中的port字段,检查ssh服务开启端口是否被修改,默认端口为22。 完成上述操作后,再次重试远程连接云服务器。
  • 检查登录凭证 请检查您在创建ECS时设置的登录凭证。 图4 登录凭证 密码:请确认使用的登录密码是否准确,如果忘记密码可以通过重置密码功能重新设置云服务器登录密码。重置密码后请确保已重启云服务器使新密码生效。 密钥对: 首次登录时,请使用“SSH密钥方式”,详情请参见SSH密钥方式登录。 非首次登录时,如需使用控制台提供的“远程登录”功能(VNC方式),需先使用“SSH密钥方式”登录,并设置密码,然后才能使用VNC方式登录。 创建后设置:如果创建时未设置登录凭证,云服务器创建成功后请单击“操作”列下的“重置密码”,根据界面提示,为弹性云服务器设置密码,请确保已重启云服务器使新密码生效。
  • 检查云服务器负载是否过高 云服务器的带宽和CPU利用率过高可能会导致服务器无法登录。 如果您已经通过 云监控 服务创建过告警任务,当CPU或带宽利用率高时,系统会自动发送告警给您。 Linux弹性云服务器带宽流量过高或CPU利用率高,请参考Linux云服务器卡顿怎么办?进行排查。 如果是CPU占用过高导致的无法登录请参考以下操作降低CPU使用率: 可以通过把一些暂时不使用的进程关掉后再尝试。 或者可以尝试重启云服务器。 如果重装系统,请先备份重要数据。 如果服务器有重要数据不能重装,可以通过挂载磁盘方式拷贝数据,需要先备份,再卸载磁盘,然后挂载盘拷贝数据。 CPU利用率过高您可以通过变更规格升级vCPU、内存。 如果是带宽超限导致的无法登录请参考以下操修改带宽: 在控制台排查带宽超限的方法请参考如何排查带宽超过限制? 扩大带宽的操作请参考修改弹性公网IP的带宽。 如果频繁出现网络时延抖动或丢包,可能是在跨境访问场景下,采用了“全动态BGP”线路类型的弹性公网IP引起的,建议选择“优选BGP”类型的弹性公网IP。 详细内容,请参见无法登录到Windows云服务器怎么办?。 完成上述操作后,再次重试远程连接云服务器。
共100000条