云服务器内容精选

  • Hikari CP连接池配置 下载JDBC驱动包,请参见下载JDBC或ODBC驱动。 下载HikariCP驱动包,下载地址:https://mvnrepository.com/artifact/com.zaxxer/HikariCP/4.0.3。 下载slf4j驱动包,下载地址:https://www.slf4j.org/download.html。 将JDBC驱动包和HikariCP、slf4j驱动包添加到工程中,配置数据库连接池相关参数。 表2 Hikari CP连接池参数配置 参数名 默认值 说明 driverClassName 填写org.postgresql.Driver 数据库驱动名称。 jdbcUrl - 连接数据库的URL。 username - 用户名。 password - 密码。 autoCommit true 连接返回连接池时,是否自动提交事务。 connectionTimeout 30000 从连接池获取连接的最大超时时间。 idleTimeout 60000 空闲连接存活的最大时间。只有当minimumIdle小于maximumPoolSize时,该设置才生效。 空闲连接数大于minimumIdle且连接的空闲状态时间大于idleTimeout值时,将把该连接从连接池中删除。 0表示永不超时。 keepaliveTime 0 保持空闲连接可用的检测频率,单位:ms。0表示不检测。 maxLifetime 1800000 连接存活的最大时间,单位:ms。0表示没有限制。 connectionTestQuery - 连接检测的查询语句。 minimumIdle 10 最小空闲连接数。为了提高性能,建议不要设置此参数,使连接池为固定大小。 maximumPoolSize 10 最大连接数。 metricRegistry - 该参数仅通过编程配置或IoC容器可用。 该参数用于指定池使用的“Codahale/Dropwizard MetricRegistry”实例来记录各种指标。 healthCheckRegistry - 该参数仅通过编程配置或IoC容器可用。 该参数用于指定池使用的“Codahale/Dropwizard HealthCheckRegistry”实例来记录健康信息。 poolName - 连接池名称。 initializationFailTimeout 1 启动连接池时不能成功初始化连接,是否快速失败。 大于0时,会尝试获取连接。如果获取时间超过指定时长(connectionTimeout + initializationFailTimeout),不会开启连接池,并抛出异常。 等于0时,会尝试获取并验证连接。如果获取成功但验证失败则不开启池,但是如果获取失败还是会开启池。 小于0时,直接启动连接池,不进行初始化连接尝试。 isolateInternalQueries false 是否在事务中隔离HikariCP自己的查询。“autoCommit”为“false”时,该设置生效。 allowPoolSuspension false 是否允许通过JMX挂起和恢复连接池。挂起时获取连接不会超时,直到连接池恢复。 readOnly false 连接是否只读。 registerMbeans false 是否开启JMX。 catalog - 默认的数据库catalog。 connectionInitSql - 连接池初始化后执行的SQL。 transactionIsolation - 默认的事务隔离级别。 validationTimeout 5000 连接检测的超时时间。必须大于connectionTimeout,最小允许的值为250。 leakDetectionThreshold 0 连接可以被借出多久。 超过该时间将打印连接可能泄露的日志,最小允许的值为2000,单位:ms。 schema - 默认的数据库schema。 threadFactory - 指定连接池用于创建线程的 java.util.concurrent.ThreadFactory实例。此参数仅通过编程配置或IoC容器可用。 scheduledExecutor - 指定连接池用于执行定时任务的java.util.concurrent.ScheduledExecutorService实例。此参数仅通过编程配置或IoC容器可用。
  • 使用CloudShell连接集群 CloudShell是一款用于管理与运维云资源的网页版Shell工具,CCE支持使用CloudShell连接集群,如图1所示,单击“命令行工具”即可在CloudShell中使用kubectl访问集群。 CloudShell中kubectl证书有效期为1天,从云容器引擎重新跳转可以重置有效期。 集群必须安装CoreDNS才能使用CloudShell。 CloudShell暂不支持委托账号和子项目。 图1 CloudShell 图2 在CloudShell中使用kubectl
  • 前提条件 连接数据库的弹性云服务器必须和DDS实例之间网络互通,可以使用curl命令连接DDS实例服务端的IP和端口号,测试网络连通性。 curl ip:port 返回“It looks like you are trying to access MongoDB over HTTP on the native driver port.”,说明网络互通。 在弹性云服务器上安装Python以及第三方安装包pymongo。推荐使用pymongo2.8版本。 如果开启SSL,需要在界面上下载根证书,并上传到弹性云服务器。
  • 连接代码 SSL开启 import ssl from pymongo import MongoClient conn_urls="mongodb://rwuser:rwuserpassword@ip:port/{mydb}?authSource=admin" connection = MongoClient(conn_urls,connectTimeoutMS=5000,ssl=True, ssl_cert_reqs=ssl.CERT_REQUIRED,ssl_match_hostname=False,ssl_ca_certs=${path to certificate authority file}) dbs = connection.database_names() print "connect database success! database names is %s" % dbs SSL关闭 import ssl from pymongo import MongoClient conn_urls="mongodb://rwuser:rwuserpassword@ip:port/{mydb}?authSource=admin" connection = MongoClient(conn_urls,connectTimeoutMS=5000) dbs = connection.database_names() print "connect database success! database names is %s" % dbs
  • SSL方式 使用SSL方式连接,请务必开启SSL连接,否则会报错。关于如何开启SSL连接,请参见开启和关闭SSL连接。 打开Robo 3T工具,在连接信息页面,单击“Create”。 图2 连接信息 在弹出的“Connection Settings”窗口,设置新建连接的参数。 在“Connection”页签,“Name”填写自定义的新建连接的名称,“Address”填写集群实例绑定的弹性IP和实例的数据库端口。 图3 Connection 在“Authentication”页签,“Database”填写admin,“User Name”填写rwuser,“Password”填写您创建集群实例时设置的管理员密码。 图4 Authentication 在“TLS”页签,勾选“Use TLS protocol”,“Authentication Method”选择“Self-signed Certificate”。 图5 SSL 设置完成后,单击“Save”。 在连接信息页面,单击“Connect”,开始连接集群实例。 图6 集群连接信息 成功连接集群实例,工具界面显示如图7所示。 图7 集群连接成功
  • 非SSL方式 使用非SSL方式连接,请务必关闭SSL连接,否则会出现报错。如何关闭,请参见开启和关闭SSL连接。 打开Robo 3T工具,在连接信息页面,单击“Create”。 图8 连接信息 在弹出的“Connection Settings”窗口,设置新建连接的参数。 在“Connection”页签,“Name”填写自定义的新建连接的名称,“Address”填写集群实例绑定的弹性IP和实例的数据库端口。 图9 Connection 在“Authentication”页签,“Database”填写admin,“User Name”填写rwuser,“Password”填写您创建集群实例时设置的管理员密码。 图10 Authentication 设置完成后,单击“Save”。 在连接信息页面,单击“Connect”,开始连接集群实例。 图11 集群连接信息 成功连接集群实例,工具界面显示如图12所示。 图12 集群连接成功
  • 相关常见问题 如果使用DAS登录DDS实例时,出现如下报错信息,请参考DAS连接DDS常见问题进行处理。 Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server xxx.xxx.xx.xx:xxxx. The full response is { 'ok' : 0.0, 'errmsg' : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" } 图1 登录失败
  • 实例连接方式介绍 文档数据库服务提供使用内网和公网的连接方式。 表1 连接方式 连接方式 IP地址 使用场景 说明 DAS连接 无需使用IP地址 通过数据管理服务管理数据,具备友好的图形化界面,直接在控制台上进行可视化操作。可获得执行SQL、高级数据库管理、智能化运维等功能,做到易用、安全、智能地管理数据库。 文档数据库服务默认开通了DAS连接权限。 易用、安全、高级、智能。 推荐使用DAS连接。 内网连接 内网IP地址 系统默认提供内网IP地址。 当应用部署在弹性云服务器上,且该弹性云服务器与文档数据库实例处于同一区域,同一VPC时,建议使用内网IP地址连接文档数据库实例。 安全性高,可实现DDS的较好性能。 为了获得更快的传输速率和更高的安全性,建议您将应用迁移到与您的DDS实例在同一虚拟私有云子网内,使用内网连接。 公网连接 弹性公网IP 当应用部署在弹性云服务器上,且该弹性云服务器与文档数据库实例处于不同区域时,建议使用弹性公网IP连接文档数据库实例。 如果您使用华为云以外的设备(例如本地设备、其他云厂商服务器等)连接文档数据库实例,您可以使用弹性公网IP连接文档数据库实例。 降低安全性。 公网连接需要购买弹性公网IP,请参见弹性公网IP计费说明。 父主题: 连接集群实例
  • 配置JDBC连接使用 IAM 认证方式连接集群 配置JDBC连接参数 表1 数据库连接参数 参数 描述 url gsjdbc4.jar/gsjdbc200.jar数据库连接描述符。JDBC接口不提供重试连接的能力,您需要在业务代码中实现重试连接的处理。url示例如下: jdbc:dws:iam://dws-IAM-demo:cn-north-4/gaussdb?AccessKeyID=XXXXXXXXXXXXXXXXXXXX&SecretAccessKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&DbUser=user_test&AutoCreate=true JDBC URL参数说明: jdbc:dws:iam是URL格式的前缀。 dws-IAM-demo为数据库集群名称。 cn-north-4是集群所在的区域。JDBC会根据所填写区域,访问对应DWS服务,向所在集群下发IAM证书,用于IAM用户认证。DWS服务地址已内置在JDBC配置文件中。 有关 GaussDB (DWS)的区域信息,请参考地区和终端节点。 gaussdb是要连接的数据库名。 AccessKeyID/SecretAccessKey为参数DbUser指定的IAM用户所对应的访问密钥ID和秘密访问密钥。 DbUser请设置为IAM用户名,注意,当前版本暂不支持IAM用户名中含有中划线的情况。 如果数据库中已存在DbUser指定的用户,则临时用户凭证具有与现有用户相同的权限。 如果数据库中不存在DbUser指定的用户,且AutoCreate参数值为true,则自动创建一个以DbUser参数值作为用户名的新用户,默认创建的用户为数据库普通用户。 AutoCreate可以不设置,默认为false。该参数表示是否在数据库中自动创建一个以DbUser参数值作为用户名的数据库用户。 true表示自动创建。如果用户已存在则不会再创建。 false表示不会自动创建。如果数据库中不存在DbUser指定的用户名将返回失败。 info 数据库连接属性。常用的属性如下: ssl:Boolean类型。表示是否使用SSL连接。 loglevel:Integer类型。为LogStream或LogWriter设置记录进DriverManager当前值的日志信息量。 目前支持org.postgresql.Driver.DEBUG和org.postgresql.Driver.INFO。值为1时,表示只打印org.postgresql.Driver.INFO,将记录非常少的信息。值大于等于2时,表示打印org.postgresql.Driver.DEBUG和org.postgresql.Driver.INFO,将产生详细的日志信息。默认值为0,表示不打印日志。 charSet:String类型。表示在向数据库发送数据或从数据库接收数据时使用到的字符集。 prepareThreshold:Integer类型。用于确定在转换为服务器端的预备语句之前,要求执行方法PreparedStatement的次数。缺省值是5。 示例 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 //以下用例以gsjdbc4.jar为例。 //以下代码将获取数据库连接操作封装为一个接口,可通过给定集群所在的区域、集群名称、AccessKeyID、SecretAccessKey及对应的IAM用户名来连接数据库。 public static Connection GetConnection(String clustername, String regionname, String AK, String SK, String username) { //驱动类。 String driver = "org.postgresql.Driver"; //数据库连接描述符。 String sourceURL = "jdbc:dws:iam://" + clustername + ":" + regionname + "/postgresgaussdb?" + "AccessKeyID=" + AK + "&SecretAccessKey=" + SK + "&DbUser=" + username + "&autoCreate=true"; Connection conn = null; try { //加载驱动。 Class.forName(driver); } catch (ClassNotFoundException e) { return null; } try { //创建连接。 conn = DriverManager.getConnection(sourceURL); System.out.println("Connection succeed!"); } catch (SQLException e) { return null; } return conn; }
  • 在“连接客户端”页面获取集群连接地址 登录GaussDB(DWS)管理控制台。 在左侧导航栏中,单击“连接客户端”。 在“ 数据仓库 连接信息”区域,选择一个可用的集群名称。 只能选择状态为“可用”的集群。 图1 数据仓库连接信息 查看并获取集群的连接信息。 “内网IP” “公网IP” “弹性负载均衡地址” “JDBC连接字符串(内网)” “JDBC连接字符串(公网)” “ODBC连接字符串” 如果创建集群时没有自动绑定弹性IP,“公网IP”显示为空。如果您想使用公网访问地址(由弹性IP和数据库端口组成)从互联网访问集群,可以单击“绑定弹性IP”为集群绑定弹性IP。 如果创建集群时绑定了弹性IP,如果您不想使用公网访问地址访问集群,可以单击“解绑弹性IP”为集群解绑弹性IP。弹性IP解绑后,“公网IP”显示为空。 如果创建集群时没有绑定弹性负载均衡,“弹性负载均衡地址”显示为空,可以单击“绑定弹性负载均衡”进行绑定,解决CN单点故障。 如果集群绑定了弹性负载均衡,为保证集群高可用,请优先使用弹性负载均衡地址连接集群。 如果集群开启了IPv6双栈网络功能,则内网IP既有IPv4,也有IPv6,您可根据需要选择IPv4或IPv6进行DWS集群的连接。
  • 常见问题 Error from server Forbidden 使用kubectl在创建或查询Kubernetes资源时,显示如下内容: # kubectl get deploy Error from server (Forbidden): deployments.apps is forbidden: User "0c97ac3cb280f4d91fa7c0096739e1f8" cannot list resource "deployments" in API group "apps" in the namespace "default" 原因是用户没有操作该Kubernetes资源的权限,请参见命名空间权限(Kubernetes RBAC授权)为用户授权。 The connection to the server localhost:8080 was refused 使用kubectl在创建或查询Kubernetes资源时,显示如下内容: The connection to the server localhost:8080 was refused - did you specify the right host or port? 原因是由于该kubectl客户端未配置集群认证,请参见4进行配置。
  • 使用kubectl连接集群 若您需要从客户端计算机连接到Kubernetes集群,可使用Kubernetes命令行客户端kubectl,您可登录CCE控制台,单击待连接集群名称,在集群“总览”页面查看访问地址以及kubectl的连接步骤。 图1 集群连接信息 您需要先下载kubectl以及配置文件,复制到您的客户端机器,完成配置后,即可以访问Kubernetes集群。使用kubectl连接集群的步骤如下: 准备环境 您需要准备一台与集群同VPC的虚拟机,并绑定弹性公网IP用于下载kubectl。 下载kubectl 如果已经安装kubectl,则跳过此步骤,您可执行kubectl version命令判断是否已安装kubectl。 本文以Linux环境为例安装和配置kubectl,详情请参考安装kubectl。 登录到您的客户端机器,下载kubectl。 cd /home curl -LO https://dl.k8s.io/release/{v1.25.0}/bin/linux/amd64/kubectl 其中{v1.25.0}为指定的版本号,请根据集群版本进行替换。 安装kubectl。 chmod +x kubectl mv -f kubectl /usr/local/bin 获取kubectl配置文件 在集群概览页中的“连接信息”版块,单击kubectl后的“配置”按钮,查看kubectl的连接信息,并在弹出页面中下载配置文件。 图2 下载配置文件 kubectl配置文件(kubeconfig.json)用于对接认证集群,请您妥善保存该认证凭据,防止文件泄露后,集群有被攻击的风险。 IAM用户下载的配置文件所拥有的Kubernetes权限与CCE控制台上IAM用户所拥有的权限一致。 如果Linux系统里面配置了KUBECONFIG环境变量,kubectl会优先加载KUBECONFIG环境变量,而不是$home/.kube/config,使用时请注意。 配置kubectl 以Linux环境为例配置kubectl。 登录到您的客户端机器,复制3中下载的配置文件(kubeconfig.json)到您客户端机器的/home目录下。 配置kubectl认证文件。 cd /home mkdir -p $HOME/.kube mv -f kubeconfig.json $HOME/.kube/config 切换kubectl的访问模式。 kubectl config use-context internal
  • 权限说明 kubectl访问CCE集群是通过集群上生成的配置文件(kubeconfig.json)进行认证,kubeconfig.json文件内包含用户信息,CCE根据用户信息的权限判断kubectl有权限访问哪些Kubernetes资源。即哪个用户获取的kubeconfig.json文件,kubeconfig.json就拥有哪个用户的信息,这样使用kubectl访问时就拥有这个用户的权限。 用户拥有的权限请参见集群权限(IAM授权)与命名空间权限(Kubernetes RBAC授权)的关系。
  • 为API Server绑定EIP 登录CCE控制台,单击集群名称进入集群。 查看集群概览页,在右边“连接信息”下公网地址一栏,单击“绑定”。 选择一个已有的弹性公网IP。如果无可用IP,可单击“创建弹性IP”前往EIP控制台进行创建。 通过绑定EIP实现公网访问,集群存在风险,建议绑定的EIP配置 DDoS高防服务 或配置API Server访问策略。 绑定EIP将会短暂重启集群API Server并更新kubeconfig证书,请避免在此期间操作集群。 单击“确定”。
  • 客户端和服务器端SSL连接参数组合情况 客户端最终是否使用SSL加密连接方式、是否验证服务器证书,取决于客户端参数sslmode与服务器端(即GaussDB(DWS) 集群侧)参数ssl、require_ssl。参数说明如下: ssl(服务器) ssl参数表示是否开启SSL功能。on表示开启,off表示关闭。 对于集群版本高于1.3.1(包括1.3.1)的集群,默认为on,不支持在GaussDB(DWS) 管理控制台上设置。 对于集群版本低于1.3.1的集群,默认为on。ssl参数可通过GaussDB(DWS) 管理控制台上集群的“安全设置”页面中的“SSL连接”进行设置。 require_ssl(服务器) require_ssl参数是设置服务器端是否强制要求SSL连接,该参数只有当ssl为on时才有效。on表示服务器端强制要求SSL连接。off表示服务器端对是否通过SSL连接不作强制要求。 对于集群版本高于1.3.1(包括1.3.1)的集群,默认为off。require_ssl参数可通过GaussDB(DWS) 管理控制台上集群的“安全设置”页面中的“服务器端是否强制使用SSL连接”进行设置。 对于集群版本低于1.3.1的集群,默认为off,不支持在GaussDB(DWS) 管理控制台上设置。 sslmode(客户端) 可在SQL客户端工具中进行设置。 在gsql命令行客户端中,为“PGSSLMODE”参数。 在Data Studio客户端中,为“SSL模式”参数。 客户端参数sslmode与服务器端参数ssl、require_ssl配置组合结果如下: 表3 客户端与服务器端SSL参数组合结果 ssl(服务器) sslmode(客户端) require_ssl(服务器) 结果 on disable on 由于服务器端要求使用 SSL,但客户端针对该连接禁用了 SSL,因此无法建立连接。 disable off 连接未加密。 allow on 连接经过加密。 allow off 连接未加密。 prefer on 连接经过加密。 prefer off 连接经过加密。 require on 连接经过加密。 require off 连接经过加密。 verify-ca on 连接经过加密,且验证了服务器证书。 verify-ca off 连接经过加密,且验证了服务器证书。 off disable on 连接未加密。 disable off 连接未加密。 allow on 连接未加密。 allow off 连接未加密。 prefer on 连接未加密。 prefer off 连接未加密。 require on 由于客户端要求使用 SSL,但服务器端禁用了 SSL,因此无法建立连接。 require off 由于客户端要求使用 SSL,但服务器端禁用了 SSL,因此无法建立连接。 verify-ca on 由于客户端要求使用 SSL,但服务器端禁用了 SSL,因此无法建立连接。 verify-ca off 由于客户端要求使用 SSL,但服务器端禁用了 SSL,因此无法建立连接。