Greenplum数据库端口和协议

Greenplum数据库端口和协议

列出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的端口分配。例如:
[gpadmin@mdw ~]$ gpstate -p 
20190403:02:57:04:011030 gpstate:mdw:gpadmin-[INFO]:-Starting gpstate with args: -p
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 5.17.0 build commit:fc9a9d4cad8dd4037b9bc07bf837c0b958726103'
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 8.3.23 (Greenplum Database 5.17.0 build commit:fc9a9d4cad8dd4037b9bc07bf837c0b958726103) on x86_64-pc-linux-gnu, compiled by GCC gcc (GCC) 6.2.0, 64-bit compiled on Feb 13 2019 15:26:34'
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:--Master segment instance  /data/master/gpseg-1  port = 5432
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:--Segment instance port assignments
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-----------------------------------
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   Host   Datadir                Port
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw1   /data/primary/gpseg0   20000
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw2   /data/mirror/gpseg0    21000
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw1   /data/primary/gpseg1   20001
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw2   /data/mirror/gpseg1    21001
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw1   /data/primary/gpseg2   20002
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw2   /data/mirror/gpseg2    21002
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw2   /data/primary/gpseg3   20000
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw3   /data/mirror/gpseg3    21000
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw2   /data/primary/gpseg4   20001
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw3   /data/mirror/gpseg4    21001
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw2   /data/primary/gpseg5   20002
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw3   /data/mirror/gpseg5    21002
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw3   /data/primary/gpseg6   20000
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw1   /data/mirror/gpseg6    21000
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw3   /data/primary/gpseg7   20001
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw1   /data/mirror/gpseg7    21001
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw3   /data/primary/gpseg8   20002
20190403:02:57:05:011030 gpstate:mdw:gpadmin-[INFO]:-   sdw1   /data/mirror/gpseg8    21002

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

Note: 为避免在初始化Greenplum数据库时Greenplum数据库与其他应用程序之间的端口冲突,请不要在操作系统参数net.ipv4.ip_local_port_range指定的范围内指定Greenplum数据库端口。 例如,如果 net.ipv4.ip_local_port_range = 10000 65535, 用户可以将Greenplum数据库基本端口号设置为该值以外的        范围:
PORT_BASE = 6000
MIRROR_PORT_BASE = 7000
REPLICATION_PORT_BASE = 8000
MIRROR_REPLICATION_PORT_BASE = 9000

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

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

TCP 9000, HTTPS

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

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

Gpperfmon代理 TCP 8888 执行在每一台Greenplum主机上的gpperfmon代理(gpmmongpsmon)的连接端口。通过Master和Segment主机上postgresql.conf中的配置变量gpperfmon_port设置。
备份完成通知 TCP 25, TCP 587, SMTP gpbackup备份工具可以选择在备份完成时向一个email地址列表发送邮件。SMTP服务必须在Greenplum的Master主机上被启用。
Greenplum数据库的安全shell(SSH):gpssh、gpscp、gpssh-exkeys、gppkg、gpseginstall TCP 22, SSH 很多Greenplum的工具使用scp和ssh在主机之间传输文件并且管理集群中的Greenplum系统。
Greenplum平台扩展框架(PXF) TCP 5888 PXF Java服务运行在每个Greenplum数据库segment主机上的5888端口。
Pgbouncer连接池 TCP, libpq pgbouncer连接池运行在libpq客户端和Greenplum(或者PostgreSQL)数据库之间。它可以运行在Greenplum的Master主机上,但推荐将它运行在Greenplum集群之外的一台主机上。当它运行在一台单独的主机上时,pgbouncer可以当作Greenplum的Master主机的温备机制,切换到Greenplum后备主机不要求重新配置客户端。在pgbouncer.ini配置文件中设置客户端连接端口和Greenplum的Master主机地址。