-
前提条件 绑定弹性公网IP并设置安全组规则。 对目标实例绑定弹性公网IP。 获取弹性云服务器的IP地址。 设置安全组规则。 将1.b中获取的IP地址及目标实例的端口加入安全组允许访问的范围中。 使用ping命令连通1.a中绑定的弹性公网IP,确保弹性云服务器可以访问该弹性公网IP。 使用客户端连接实例。 在Linux操作系统中,您需要在您的设备上安装MariaDB客户端。建议您下载的MariaDB客户端版本高于已创建的RDS实例中数据库版本。
-
连接TaurusDB标准版实例的方式 TaurusDB标准版提供使用数据管理服务 DAS、MySQL客户端、MySQL-Front工具、JDBC的连接方式。 表1 连接方式 连接方式 连接地址 使用场景 说明 通过DAS连接TaurusDB标准版实例 无需使用IP地址 数据管理服务(Data Admin Service,简称DAS)是一款专业的简化数据库管理工具,提供优质的可视化操作界面,大幅提高工作效率,让数据管理变得既安全又简单。您可以通过数据管理服务连接并管理TaurusDB标准版实例。 易用、安全、高级、智能。 推荐使用DAS连接。 通过MySQL客户端连接TaurusDB标准版实例 内网地址或公网地址 当应用部署在云主机弹性云服务器上,且该弹性云服务器与TaurusDB标准版实例处于同一区域,同一VPC时,建议使用内网IP连接弹性云服务器与TaurusDB标准版数据库实例。 不能通过内网IP地址访问TaurusDB标准版实例时,使用公网访问,建议单独绑定弹性公网IP连接弹性云服务器(或公网主机)与TaurusDB标准版数据库实例。 推荐使用内网连接。安全性高,可实现TaurusDB标准版的较好性能。 通过MySQL-Front连接TaurusDB标准版实例 内网地址或公网地址 在Windows操作系统中,您可以使用任何通用的数据库客户端工具连接到TaurusDB标准版实例。 推荐使用内网连接。安全性高,可实现TaurusDB标准版的较好性能。 通过JDBC连接TaurusDB标准版实例 内网地址或公网地址 JDBC访问实例。 推荐使用内网连接。安全性高,可实现TaurusDB标准版的较好性能。 父主题: 连接实例
-
维度 Key Value cloud_connect_id 云连接ID bwp_id 带宽包ID region_bandwidth_id 域间带宽ID 对于有多个测量维度的测量对象,使用接口查询监控指标时,所有测量维度均为必选。 查询单个监控指标时,多维度dim使用样例: dim.0=cloud_connect_id%2Ca92ab2f75d844dbebbc3fcc7871d1136&dim.1=bwp_id%2C625db750db7b1447d0c9d1a447c11903&dim.2=region_bandwidth_id%2Ce2cc9dc0b4954fbbaf1299f2727fe1ca。 批量查询监控指标时,多维度dim使用样例: "dimensions": [
{
"name": "cloud_connect_id",
"value": "a92ab2f75d844dbebbc3fcc7871d1136"
},
{
"name": "bwp_id",
"value": "625db750db7b1447d0c9d1a447c11903"
},
{
"name": "region_bandwidth_id",
"value": "e2cc9dc0b4954fbbaf1299f2727fe1ca"
}
],
-
监控指标 表1 云连接实例支持的监控指标 指标ID 指标名称 指标含义 取值范围 单位 进制 测量对象(维度) 监控周期 network_incoming_bits_rate 网络流入带宽 云连接实例域间入站数据的比特率。 ≥ 0 bits/s 1000(SI) 域间带宽 1分钟 network_outgoing_bits_rate 网络流出带宽 云连接实例域间出站数据的比特率。 ≥ 0 bits/s 1000(SI) 域间带宽 1分钟 network_incoming_bytes 网络流入流量 云连接实例域间入站数据的字节数。 ≥ 0 bytes 1024(IEC) 域间带宽 1分钟 network_outgoing_bytes 网络流出流量 云连接实例域间出站数据的字节数。 ≥ 0 bytes 1024(IEC) 域间带宽 1分钟 network_incoming_packets_rate 网络流入包速率 云连接实例域间入站数据包速率。 ≥ 0 packets/s 不涉及 域间带宽 1分钟 network_outgoing_packets_rate 网络流出包速率 云连接实例域间出站数据包速率。 ≥ 0 packets/s 不涉及 域间带宽 1分钟 network_incoming_packets 网络流入包量 云连接实例域间入站数据包数。 ≥ 0 packets 不涉及 域间带宽 1分钟 network_outgoing_packets 网络流出包量 云连接实例域间出站数据包数。 ≥ 0 packets 不涉及 域间带宽 1分钟 network_bandwidth_usage 网络带宽使用率 云连接实例域间带宽数据使用率。 0-100 % 不涉及 域间带宽 1分钟 network_bandwidth 网络带宽值 云连接域间带宽值。 ≥ 0 bits/s 1000(SI) 域间带宽 1分钟 部分区域的指标仍维持5分钟的监控周期,请以控制台实际显示为准。
-
前提条件 已创建RocketMQ实例,并记录实例详情中的“连接地址”(内网访问)/“公网连接地址”(公网访问)。内网访问的连接端口为8100,公网环境下访问的连接端口为8200。 客户端和RocketMQ实例之间网络已互通,具体网络要求参见连接RocketMQ网络要求页面。 已配置安全组。 已创建Topic。 客户端所在服务器已安装Java Development Kit 1.8.111或以上版本,并完成环境变量配置。 客户端所在服务器可以访问公网,用于下载示例软件包。
-
命令行模式连接实例 登录客户端所在服务器。 下载“rocketmq-tutorial”示例软件包。 wget https://dms-demos.obs.cn-north-1.myhuaweicloud.com/rocketmq-tutorial.zip 解压“rocketmq-tutorial”。 unzip rocketmq-tutorial.zip (可选)如果RocketMQ实例开启了ACL访问控制,执行mqadmin命令时,需要鉴权。 切换到解压后的软件包目录下,在“conf/tools.yml”文件中,增加如下内容。 accessKey:*******
secretKey:******* accessKey和secretKey表示在控制台“用户管理”页面,创建的用户名和密钥,具体可参见创建用户。 进入“rocketmq-tutorial/bin”目录。 cd rocketmq-tutorial/bin 运行生产普通消息示例。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq" 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“11.xxx.xxx.89:8200;11.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "11.xxx.xxx.89:8200;11.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq" 使用Ctrl+C命令退出。 运行消费普通消息示例。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称} 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“11.xxx.xxx.89:8200;11.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "11.xxx.xxx.89:8200;11.xxx.xxx.144:8200" -t topic-test 如需停止消费使用Ctrl+C命令退出。 运行生产带消息轨迹的消息示例。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq" -m true 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“11.xxx.xxx.89:8200;11.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "11.xxx.xxx.89:8200;11.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq" -m true 使用Ctrl+C命令退出。 运行消费消息示例,并发送消息轨迹。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称} -m true 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“11.xxx.xxx.89:8200;11.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "11.xxx.xxx.89:8200;11.xxx.xxx.144:8200" -t topic-test -m true 使用Ctrl+C命令退出。
-
前提条件 登录弹性云服务器。 创建并登录弹性云服务器,请参见《弹性云服务器快速入门》中“购买弹性云服务器”和“登录弹性云服务器”。 通过弹性云服务器连接云数据库 RDS for MariaDB实例,需要具备以下条件。 该弹性云服务器与目标实例必须处于同一VPC内。 该弹性云服务器必须处于目标实例所属安全组允许访问的范围内。 如果目标实例所属安全组为默认安全组, 则无需设置安全组规则。 如果目标实例所属安全组非默认安全组,请查看安全组规则是否允许该弹性云服务器访问。 如果安全组规则允许弹性云服务器访问,即可连接实例。 如果安全组规则不允许弹性云服务器访问,则需添加安全组规则。该弹性云服务器必须处于目标实例所属安全组允许访问的范围内。 使用客户端连接实例。 在Linux操作系统中,您需要在可访问云数据库 RDS for MariaDB的设备上安装MariaDB客户端。建议您下载的MariaDB客户端版本高于已创建的RDS实例中数据库版本。
-
实例连接方式介绍 云数据库RDS服务提供使用内网、公网和数据管理服务(Data Admin Service,简称DAS)的连接方式。 表1 RDS连接方式 连接方式 IP地址 使用场景 说明 DAS连接 无需使用IP地址 通过DAS这款可视化专业数据库管理工具,可获得执行SQL,高级数据库管理,智能化运维等功能,做到易用、安全、智能地管理数据库。云数据库RDS服务默认开通DAS连接权限。 易用、安全、高级、智能。 推荐使用DAS连接。 内网连接 内网IP地址 系统默认提供内网IP地址。 当应用部署在弹性云服务器上,且该弹性云服务器与云数据库RDS实例处于同一区域,同一VPC时,建议单独使用内网IP连接弹性云服务器与云数据库RDS实例。 安全性高,可实现RDS的较好性能。 推荐使用内网连接。 公网连接 弹性公网IP 不能通过内网IP地址访问RDS实例时,使用公网访问,建议单独绑定弹性公网IP连接弹性云服务器(或公网主机)与云数据库RDS实例。 安全性低。 为了获得更快的传输速率和更高的安全性,建议您将应用迁移到与您的RDS实例在同一VPC内,使用内网连接。 用户需要购买弹性公网IP,请参见弹性公网IP计费说明。 VPC:虚拟私有云(Virtual Private Cloud,简称VPC)。 E
CS :弹性云服务器(Elastic Cloud Server,简称ECS)。 若弹性云服务器和云数据库RDS实例处于同一个VPC内,则无需申请外网地址。 通过内网和公网的连接方式如图1所示。 图1 实例内网和公网连接 父主题: 步骤三:连接实例
-
示例代码(Java) 连接实例并生产消息示例代码: VHOST_NAME:消息要发送的Queue所在的Vhost名称。 QUEUE_NAME:消息要发送的Queue名称。 Hello World!:要发送的消息,根据实际需要修改。 ConnectionFactory factory = new ConnectionFactory();
factory.setHost(host);
factory.setPort(port);
factory.setVirtualHost("VHOST_NAME");
factory.setUsername(user);
factory.setPassword(password);
factory.useSslProtocol();
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello World!";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
System.out.println(" [x] Sent '" + message + "'");
channel.close();
connection.close(); 连接实例并消费消息示例代码: VHOST_NAME:要消费消息的Queue所在的Vhost名称。 QUEUE_NAME:要消费消息的Queue名称。 ConnectionFactory factory = new ConnectionFactory();
factory.setHost(host);
factory.setPort(port);
factory.setVirtualHost("VHOST_NAME");
factory.setUsername(user);
factory.setPassword(password);
factory.useSslProtocol();
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
Consumer consumer = new DefaultConsumer(channel)
{
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
byte[] body)
throws IOException
{
String message = new String(body, "UTF-8");
System.out.println(" [x] Received '" + message + "'");
}
};
channel.basicConsume(QUEUE_NAME, true, consumer);
-
前提条件 已购买RabbitMQ实例,并记录创建时输入的用户名和密码,实例开启SSL。 在实例详情中查看并记录“内网连接地址/公网连接地址”。 客户端所在服务器和RabbitMQ实例之间网络已互通,具体网络要求参见连接RabbitMQ网络要求。 客户端所在服务器已安装Java Development Kit 1.8.111或以上版本,并配置JAVA_HOME与PATH环境变量,环境变量配置方法如下: 使用执行用户在用户家目录下修改“.bash_profile”,添加如下行。其中“/opt/java/jdk1.8.0_151”为JDK的安装路径,请根据实际情况修改。 export JAVA_HOME=/opt/java/jdk1.8.0_151
export PATH=$JAVA_HOME/bin:$PATH 执行source .bash_profile命令使修改生效。 RabbitMQ实例中已创建Vhost、Exchange和Queue,且配置Exchange和Queue的绑定。
-
命令行模式连接实例 登录客户端所在服务器。 下载RabbitMQ-Tutorial-SSL.zip示例工程代码。 wget https://dms-demo.obs.cn-north-1.myhuaweicloud.com/RabbitMQ-Tutorial-SSL.zip 解压RabbitMQ-Tutorial-SSL.zip压缩包。 unzip RabbitMQ-Tutorial-SSL.zip 进入RabbitMQ-Tutorial-SSL目录,该目录下包含预编译好的jar文件。 cd RabbitMQ-Tutorial-SSL 运行生产消息示例。 java -cp .:rabbitmq-tutorial-sll.jar Send {host} {port} {user} {password} 参数说明如下: {host}:从前提条件中获取的连接地址。 {port}:RabbitMQ实例的连接端口,输入5671。 {user}:从前提条件中获取的用户名。 {password}:从前提条件中获取的密码。 图1 生产消息示例 运行消费消息示例。 java -cp .:rabbitmq-tutorial-sll.jar Recv {host} {port} {user} {password} 参数说明如下: {host}:从前提条件中获取的连接地址。 {port}:RabbitMQ实例的连接端口,输入5671。 {user}:从前提条件中获取的用户名。 {password}:从前提条件中获取的密码。 图2 消费消息示例 如需停止消费使用Ctrl+C命令退出。
-
避免ClientId相同 客户端的ClientId默认为进程号、本机IP、instanceName进行组合。如果同一个进程内,一个消费组下启动两个消费者,则会导致两者ClientId相同,从而出现有的队列重复消费、有的队列无法消费的情况。 配置建议 由于ClientId生成时会拼接消费者的clientIP属性,同一 IP下不同消费者的clientIP相同会导致ClientId相同,所以建议添加如下代码手动设置instanceName。 producer.setInstanceName(String.valueOf(System.nanoTime()))
-
约束与限制 由于安全问题,2021年3月20日前以及当天创建的实例,支持的加密套件为TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256和TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256。2021年3月20日后创建的实例,支持的加密套件为TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256。 2020年7月以及之后购买的实例,Kafka实例的每个代理允许客户端单IP连接的个数默认为1000个,在此之前购买的实例,Kafka实例的每个代理允许客户端单IP连接的个数默认为200个,如果超过了,会出现连接失败问题。您可以通过修改Kafka实例配置参数来修改单IP的连接数,即修改max.connections.per.ip参数值。
-
LVS的心跳超时时间 RabbitMQ集群实例使用LVS进行负载均衡,如图1所示,单节点实例不涉及LVS。 图1 集群实例的负载均衡 LVS对客户端连接设置了心跳超时时间,默认为90s。如果客户端在90s内没有向LVS发送心跳(AMQP心跳帧或消息收发),LVS会主动断开与客户端的连接,此时客户端需要重新连接。 如果存在消息收发时间间隔大于90s的场景,请在客户端开启心跳并设置小于90s的心跳超时时间。推荐设置心跳超时时间为10s。
-
什么是心跳 RabbitMQ实例提供了心跳功能,以确保应用程序层及时发现中断的连接和完全无响应的对端。心跳还可以防止某些网络设备在一段时间内由于没有活动而中断TCP连接。开启心跳的方法为在连接上指定心跳超时时间。 心跳超时时间定义了对等TCP连接在多长时间后被服务端和客户端视为关闭。服务端和客户端会对配置的心跳超时时间进行协商,客户端必须配置该值来发送心跳。RabbitMQ官方团队维护的3个客户端(Java、.NET、Erlang语言)的心跳超时时间协商逻辑如下: 服务端和客户端设置的心跳超时时间都不为0时,两者间较小的值生效。 服务端和客户端任意一端设置的心跳超时时间为0,另一端不为0时,非0的值生效。 服务端和客户端的心跳超时时间都设置为0时,表示禁用心跳。 配置心跳超时时间后,RabbitMQ服务端和客户端都会向对方发送AMQP心跳帧作为心跳,发送的时间间隔为心跳超时时间的一半。客户端在两次错过心跳后,会被认为是不可达的,TCP连接将被关闭。当客户端检测到服务端由于心跳而无法访问时,需要重新连接。更多关于心跳的说明,请参考Detecting Dead TCP Connections with Heartbeats and TCP Keepalives。 一些客户端(如C语言客户端)没有发送心跳的逻辑,即使配置了心跳超时时间,开启了心跳,仍然无法发送心跳。此时需要额外启动一个线程,编写发送心跳的逻辑。