上节,我们在华为云中创建了3个节点的GaussDB(for Redis)数据库集群,本节我们将探讨如何连接华为云中的GaussDB(for Redis)实例。

官方文档中给出了使用内网连接GaussDB(for Redis)实例可通过如下两种方式实现:
- 方式一:通过连接各节点的内网IP访问数据库实例。
- 方式二:为数据库实例配置一个内网域名,通过该域名访问数据库实例。
使用限制:
- GaussDB(for Redis)实例的默认端口为8635。(目前不支持修改端口)
- 目标实例必须与弹性云服务器在同一个虚拟私有云和子网内才能访问。
- 弹性云服务器必须处于目标实例所属安全组允许访问的范围内。
另外,如果需要连接GaussDB(for Redis),还需要安装redis客户端,这里我们直接使用yum安装:
[root@ecs-ae88 ~]# yum install redis
Last metadata expiration check: 0:00:28 ago on Mon 14 Dec 2020 03:46:07 PM CST.
Dependencies resolved.
===========================================================================================================================================================================
Package Architecture Version Repository Size
===========================================================================================================================================================================
Installing:
redis x86_64 5.0.3-2.module_el8.2.0+318+3d7e67ea AppStream 925 k
Transaction Summary
===========================================================================================================================================================================
Install 1 Package
Total download size: 925 k
Installed size: 3.2 M
Is this ok [y/N]: y
Downloading Packages:
redis-5.0.3-2.module_el8.2.0+318+3d7e67ea.x86_64.rpm 1.4 MB/s | 925 kB 00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 424 kB/s | 925 kB 00:02
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: redis-5.0.3-2.module_el8.2.0+318+3d7e67ea.x86_64 1/1
Installing : redis-5.0.3-2.module_el8.2.0+318+3d7e67ea.x86_64 1/1
Running scriptlet: redis-5.0.3-2.module_el8.2.0+318+3d7e67ea.x86_64 1/1
Verifying : redis-5.0.3-2.module_el8.2.0+318+3d7e67ea.x86_64 1/1
Installed:
redis-5.0.3-2.module_el8.2.0+318+3d7e67ea.x86_64
Complete!
[root@ecs-ae88 ~]# redis-cli -h
redis-cli 5.0.3
Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
-h <hostname> Server hostname (default: 127.0.0.1).
接下来我们分别通过两种方式来连接GaussDB(for Redis)实例。
方式一,通过节点IP连接
通过命令行客户端redis-cli连接,-h指定节点ip,-p端口,-a密码:
[root@ecs-ae88 ~]# redis-cli -h 192.168.0.201 -p 8635 -a 'Redis2020!'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.201:8635> info
# Proxy
Version:2.6.1
Name:gemini-proxy-conf
Bind:192.168.0.201:8635
RedisMode:proxy
SingleThread:false
WorkerThreads:8
Uptime:1607930669
UptimeSince:2020-12-14 07:24:29
# SystemResource
UsedMemory:948824
MaxMemory:0
MaxRSS:69521408
UsedCpuSys:0.875
UsedCpuUser:0.569
# Stats
Accept:894
ClientConnections:-891
TotalRequests:5436
TotalResponses:5437
TotalRecvClientBytes:59320
TotalSendServerBytes:86860
TotalRecvServerBytes:2972178
TotalSendClientBytes:206979
# Servers
Server:172.16.1.141:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
Server:172.16.34.102:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
Server:172.16.34.81:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
# LatencyMonitor
LatencyMonitorName:all
redis_all_avgsec:0
redis_all_usec:0
redis_all_count:1969
从上面我们可以看到有172.16.34.81:6378、172.16.34.102:6378、172.16.1.141:6378三个server,192.168.0.201:8635只是作为其中的一个Proxy。
连接另外两个节点:
[root@ecs-ae88 ~]# redis-cli -h 192.168.0.206 -p 8635 -a 'Redis2020!'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.206:8635> info
# Proxy
Version:2.6.1
Name:gemini-proxy-conf
Bind:192.168.0.206:8635
RedisMode:proxy
SingleThread:false
WorkerThreads:8
Uptime:1607930669
UptimeSince:2020-12-14 07:24:29
# SystemResource
UsedMemory:920672
MaxMemory:0
MaxRSS:69517312
UsedCpuSys:0.990
UsedCpuUser:0.693
# Stats
Accept:1062
ClientConnections:-1059
TotalRequests:6382
TotalResponses:6381
TotalRecvClientBytes:70405
TotalSendServerBytes:101260
TotalRecvServerBytes:3523322
TotalSendClientBytes:246078
# Servers
Server:172.16.1.141:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
Server:172.16.34.102:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
Server:172.16.34.81:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
# LatencyMonitor
LatencyMonitorName:all
redis_all_avgsec:0
redis_all_usec:0
redis_all_count:2337
192.168.0.206:8635>
[root@ecs-ae88 ~]# redis-cli -h 192.168.0.223 -p 8635 -a 'Redis2020!'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.223:8635> info
# Proxy
Version:2.6.1
Name:gemini-proxy-conf
Bind:192.168.0.223:8635
RedisMode:proxy
SingleThread:false
WorkerThreads:8
Uptime:1607930669
UptimeSince:2020-12-14 07:24:29
# SystemResource
UsedMemory:868400
MaxMemory:0
MaxRSS:71577600
UsedCpuSys:0.956
UsedCpuUser:0.723
# Stats
Accept:1082
ClientConnections:-1079
TotalRequests:6472
TotalResponses:6471
TotalRecvClientBytes:71787
TotalSendServerBytes:102298
TotalRecvServerBytes:3582255
TotalSendClientBytes:254786
# Servers
Server:172.16.1.141:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
Server:172.16.34.102:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
Server:172.16.34.81:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
# LatencyMonitor
LatencyMonitorName:all
redis_all_avgsec:0
redis_all_usec:0
redis_all_count:2385
192.168.0.223:8635>
我们通过内网的3个代理,连接到了3个后台的server,这三个server并不是一个Rediscluster,不是通过Replication同步数据,而是通过后台共享存储达到数据一致的效果。
暂时不支持keys *查询所有key:
192.168.0.223:8635> keys *
(error) ERR unknown command 'keys'
192.168.0.223:8635>
简单的set、get、del数据测试:
192.168.0.223:8635> set modb www.modb.pro
OK
192.168.0.223:8635> get modb
"www.modb.pro"
192.168.0.223:8635> exit
[root@ecs-ae88 ~]# redis-cli -h 192.168.0.206 -p 8635 -a 'Redis2020!'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.206:8635> get modb
"www.modb.pro"
192.168.0.206:8635> exit
[root@ecs-ae88 ~]# redis-cli -h 192.168.0.201 -p 8635 -a 'Redis2020!'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.201:8635> get modb
"www.modb.pro"
192.168.0.201:8635> del modb
(integer) 1
192.168.0.201:8635> get modb
(nil)
192.168.0.201:8635>
其他一些操作:
192.168.0.201:8635> ping
PONG
192.168.0.201:8635> DBSIZE
(error) ERR unknown command 'dbsize'
192.168.0.201:8635> dbsize
(error) ERR unknown command 'dbsize'
192.168.0.201:8635> set modb www.modb.pro
OK
192.168.0.201:8635> type modb
string
192.168.0.201:8635> ttl modb
(integer) -1
192.168.0.201:8635> expire modb 120
(integer) 1
192.168.0.201:8635> ttl modb
(integer) 117
192.168.0.201:8635> rename modb modb120
(error) ERR unknown or unsupported command 'rename'
192.168.0.201:8635> strlen modb
(integer) 12
192.168.0.201:8635> flushdb
(error) ERR unknown command 'flushdb'
192.168.0.201:8635> flushall
(error) ERR unknown command 'flushall'
方式二:通过内网域名
首先针对当前的VPC创建一个内网域名,modb.com

添加记录集,然后将3个节点的IP映射到gaussdb-redis.modb.com子域名中:

使用redis-cli通过域名连接数据库:
[root@ecs-ae88 ~]# redis-cli -h gaussdb-redis.modb.com -p 8635 -a 'Redis2020!'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
gaussdb-redis.modb.com:8635> info
# Proxy
Version:2.6.1
Name:gemini-proxy-conf
Bind:192.168.0.201:8635
RedisMode:proxy
SingleThread:false
WorkerThreads:8
Uptime:1607930669
UptimeSince:2020-12-14 07:24:29
# SystemResource
UsedMemory:998808
MaxMemory:0
MaxRSS:69521408
UsedCpuSys:1.539
UsedCpuUser:1.045
# Stats
Accept:1628
ClientConnections:-1625
TotalRequests:9650
TotalResponses:9658
TotalRecvClientBytes:108467
TotalSendServerBytes:151700
TotalRecvServerBytes:5405697
TotalSendClientBytes:401181
# Servers
Server:172.16.1.141:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
Server:172.16.34.102:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:10
Connect:10
Requests:32
Responses:32
SendBytes:840
RecvBytes:239
Server:172.16.34.81:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
# LatencyMonitor
LatencyMonitorName:all
redis_all_avgsec:0
redis_all_usec:0
redis_all_count:3610
LatencyMonitorName:get
redis_get_avgsec:0
redis_get_usec:0
redis_get_count:2
LatencyMonitorName:set
redis_set_avgsec:0
redis_set_usec:0
redis_set_count:1
gaussdb-redis.modb.com:8635> exit
[root@ecs-ae88 ~]# redis-cli -h gaussdb-redis.modb.com -p 8635 -a 'Redis2020!'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
gaussdb-redis.modb.com:8635> info
# Proxy
Version:2.6.1
Name:gemini-proxy-conf
Bind:192.168.0.206:8635
RedisMode:proxy
SingleThread:false
WorkerThreads:8
Uptime:1607930669
UptimeSince:2020-12-14 07:24:29
# SystemResource
UsedMemory:944016
MaxMemory:0
MaxRSS:69517312
UsedCpuSys:1.483
UsedCpuUser:1.093
# Stats
Accept:1642
ClientConnections:-1639
TotalRequests:9675
TotalResponses:9674
TotalRecvClientBytes:108907
TotalSendServerBytes:151584
TotalRecvServerBytes:5433858
TotalSendClientBytes:394778
# Servers
Server:172.16.1.141:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
Server:172.16.34.102:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:1
Connect:1
Requests:3
Responses:3
SendBytes:74
RecvBytes:31
Server:172.16.34.81:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
# LatencyMonitor
LatencyMonitorName:all
redis_all_avgsec:0
redis_all_usec:0
redis_all_count:3618
LatencyMonitorName:get
redis_get_avgsec:0
redis_get_usec:0
redis_get_count:1
gaussdb-redis.modb.com:8635> exit
[root@ecs-ae88 ~]# redis-cli -h gaussdb-redis.modb.com -p 8635 -a 'Redis2020!'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
gaussdb-redis.modb.com:8635> info
# Proxy
Version:2.6.1
Name:gemini-proxy-conf
Bind:192.168.0.223:8635
RedisMode:proxy
SingleThread:false
WorkerThreads:8
Uptime:1607930669
UptimeSince:2020-12-14 07:24:29
# SystemResource
UsedMemory:982808
MaxMemory:0
MaxRSS:71577600
UsedCpuSys:1.454
UsedCpuUser:1.083
# Stats
Accept:1648
ClientConnections:-1645
TotalRequests:9737
TotalResponses:9739
TotalRecvClientBytes:109638
TotalSendServerBytes:152756
TotalRecvServerBytes:5453170
TotalSendClientBytes:412821
# Servers
Server:172.16.1.141:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
Server:172.16.34.102:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:8
Connect:8
Requests:24
Responses:24
SendBytes:646
RecvBytes:187
Server:172.16.34.81:6378
Role:unknown
Group:
DC:
CurrentIsFail:0
Connections:0
Connect:0
Requests:0
Responses:0
SendBytes:0
RecvBytes:0
# LatencyMonitor
LatencyMonitorName:all
redis_all_avgsec:0
redis_all_usec:0
redis_all_count:3645
LatencyMonitorName:get
redis_get_avgsec:0
redis_get_usec:0
redis_get_count:4
LatencyMonitorName:set
redis_set_avgsec:0
redis_set_usec:0
redis_set_count:3
gaussdb-redis.modb.com:8635>
从上面可以看出,通过内网域名可以随机连接到不同的节点,相当于在proxy外再加了一层DNS解析。
总结:
1、GaussDB(for Redis)通过内网的3个代理,连接到了3个后台的server,这三个server并不是一个Rediscluster,不是通过Replication同步数据,而是通过后台共享存储达到数据一致的效果。
2、目前仅支持数据相关的操作,针对redis数据库很多命令不支持,比如keys *、dbsize、flushdb等命令
3、通过内网域名可以随机连接到不同的节点,相当于在proxy外再加了一层DNS解析。




