Greenplum数据库端口和协议

Greenplum数据库客户端用TCP在客户端连接端口(默认为5432)上连接到Greenplum的Master实例。这个监听端口可以在postgresql.conf配置文件中重新配置。客户端连接使用PostgreSQL的libpq API。psql命令行接口、一些Greenplum工具以及特定语言的编程API也将直接使用libpq库或者在内部实现libpq协议。

每一个Segment实例也有一个客户端连接端口,它被Master实例单独用来与Segment协调数据库操作。在Greenplum的Master上执行的gpstate -p命令,会列出Greenplum的Master以及主Segment和镜像Segment的端口分配。例如:

  1. [gpadmin@mdw ~]$ gpstate -p
  2. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:-Starting gpstate with args: -p
  3. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 4.3.6.0 build 62994'
  4. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 8.2.15 (Greenplum数据库4.3.6.0 build 62994) on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.4.2 compiled on Jul 24 2015 11:35:08'
  5. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...
  6. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:--Master segment instance /data/master/gpseg-1 port = 5432
  7. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:--Segment instance port assignments
  8. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:-----------------------------------
  9. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:- Host Datadir Port
  10. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:- sdw1 /data/primary/gpseg0 40000
  11. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:- sdw2 /data/mirror/gpseg0 50000
  12. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:- sdw2 /data/primary/gpseg1 40000
  13. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:- sdw1 /data/mirror/gpseg1 50001
  14. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:- sdw3 /data/primary/gpseg2 40000
  15. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:- sdw4 /data/mirror/gpseg2 50000
  16. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:- sdw4 /data/primary/gpseg3 40000
  17. 20160126:15:40:22:028389 gpstate:mdw:gpadmin-[INFO]:- sdw3 /data/mirror/gpseg3 50001

诸如后备复制、Segment镜像、统计信息收集以及Segment之间的数据交换等特性也会创建额外的Greenplum数据库网络连接。数据库启动时会创建一些持久连接而在查询执行之类的操作期间会创建临时连接。用于查询执行处理、数据移动以及统计信息收集的临时连接使用TCP和UDP协议在1025到65535范围内的可用端口。

用于Greenplum数据库的某些附加产品和服务有额外的网络需求。下面的表格列出了在Greenplum集群内使用的端口和协议,并且包括与Greenplum数据库集成的服务和应用。

表 1. Greenplum数据库端口和协议
服务协议/端口描述
Master的SQL客户端连接TCP 5432,libpqGreenplum的Master主机上的SQL客户端连接端口。使用PostgreSQL的libpq API支持客户端。可配置。
Segment的SQL客户端连接可变,libpqSegment实例的SQL客户端连接端口。主机上的每一个主Segment和镜像Segment都必须有唯一的端口。端口在Greenplum系统初始化或者扩展时分配。gp_segment_configuration系统目录在port列中为每个Segment记录端口号。运行gpstate -p可以查看使用中的端口。
Segment镜像端口可变,libpqSegment从其主Segment接收镜像块的端口。该端口在镜像被设置时分配。端口号存储在gp_segment_configuration系统目录的mirror_port列中。
Greenplum数据库的InterconnectUDP 1025-65535,动态分配在查询执行期间,Interconnect在Greenplum的Segment之间传输数据库元组。
后备Master的客户端监听器TCP 5432,libpq后备Master主机上的SQL客户端连接端口。通常和Master的客户端连接端口相同。可以用gpinitstandby工具的-P选项配置。
后备Master复制器TCP 1025-65535,gpsyncmasterMaster主机上的gpsyncmaster进程会建立一个到第二Master主机的连接来把Master的日志复制到后备Master上。
Greenplum数据库文件装载和传输工具:gpfdist、gpload、gptransferTCP 8080,HTTP

TCP 9000,HTTPS

gpfdist文件服务工具能够在Greenplum主机或者外部主机上运行。在启动该服务器时用-p选项指定连接端口。

gpload和gptransfer工具会用一个配置文件中指定的端口或者端口范围运行一个或者更多gpfdist。

GPCC代理TCP 8888执行在每一台Greenplum主机上的GPCC代理的连接端口。通过Master和Segment主机上postgresql.conf中的配置变量gpperfmon_port设置。
备份完成通知TCP 25,TCP 587,SMTPgpcrondump备份工具可以选择在备份完成时向一个email地址列表发送邮件。SMTP服务必须在Greenplum的Master主机上被启用。
Greenplum数据库的安全shell(SSH):gpssh、gpscp、gpssh-exkeys、gppkg、gpseginstallTCP 22,SSH很多Greenplum的工具使用scp和ssh在主机之间传输文件并且管理集群中的Greenplum系统。
gphdfsTCP 8020gphdfs协议允许通过Greenplum的外部表访问Hadoop文件系统中的数据。CREATE EXTERNAL TABLE命令的LOCATION子句中的URL指定Hadoop名字节点服务的主机地址和端口号。
Symantec NetBackupTCP/UDB 1556, veritas-pbxSymantec NetBackup的客户端网络端口。
TCP 13724, vnetdSymantec NetBackup vnetd的通信端口。
Pgbouncer连接池TCP,libpqpgbouncer连接池运行在libpq客户端和Greenplum(或者PostgreSQL)数据库之间。它可以运行在Greenplum的Master主机上,但推荐将它运行在Greenplum集群之外的一台主机上。当它运行在一台单独的主机上时,pgbouncer可以当作Greenplum的Master主机的温备机制,切换到Greenplum后备主机不要求重新配置客户端。在pgbouncer.ini配置文件中设置客户端连接端口和Greenplum的Master主机地址。
stunnel SSL代理TCP,ssh,libpqstunnel SSL代理可以被用来为通过pgbouncer连接池访问数据库的数据库客户端增加SSL支持。通过在客户端和pgbouncer主机上设置stunnel可以建立安全隧道。支持加密libpq连接的较新版本stunnel只要求pgbouncer主机上的stunnel。stunnel代理的连接端口以及pgbouncer主机和端口在stunnel.conf配置文件中指定。

上级主题: 安全性配置指南