人大金仓 金仓数据库支持自定义UDP端口

支持自定义UDP端口

关键字:

端口、UDP、TCP、stats collector、

1.特性说明

在主版本中,在数据库启动的时候会发送一条UDP协议的测试信息,成功后才会开启stat collector进程,进一步开启autovacuum进程。在这个过程中使用的UDP端口号是随机的。

在应用现场中,因网络安全需求,除指定端口外其他端口全部禁用。针对这种场景,stat collector进程随机选择的UDP端口号可能导致KES服务器无法正常启动。故需要有以上需求:新增GUC参数用于支持通过指定的UDP端口开启stat collector进程。

2.测试方案

按边界值指定最大、最小端口号,禁用部分端口号后启用随机值,验证数据库是否正常启动,检查日志信息是否正常,查看端口占用情况及stats collector进程的启动情况。

端口号范围 0 - 65535

0(默认):使用随机端口

1-65535:使用指定端口号。

3.特性测试示例

3.1 GUC参数配置

1、正常场景验证:

(1) 在kingbase.conf中配置GUC参数:stats_collector_port = 0

       ① 启动数据库        ② 查看日志(sys_log)        ③ 切换至root用户:su root        ④ 执行ps -ef | grep kingbase查看进程情况        ⑤ 执行lsof -ni |grep kingbase检查UDP占用情况

(2) 在kingbase.conf中配置GUC参数:stats_collector_port = 65535

       ① 启动数据库        ② 查看日志(sys_log)        ③ 切换至root用户:su root        ④ 执行ps -ef | grep kingbase查看进程情况        ⑤ 执行lsof -ni |grep kingbase检查UDP占用情况

(3) 在kingbase.conf中配置GUC参数:stats_collector_port = 32766

       ① 启动数据库        ② 查看日志(sys_log)        ③ 切换至root用户:su root        ④ 执行ps -ef | grep kingbase查看进程情况        ⑤ 执行lsof -ni |grep kingbase检查UDP占用情况

2、异常场景验证:

(1)在kingbase.conf中配置GUC参数:stats_collector_port = -1,并重启数据库服务

(2)在kingbase.conf中配置GUC参数:stats_collector_port = 65536,并重启数据库服务

(3)在kingbase.conf中配置GUC参数:stats_collector_port = ,并重启数据库服务

(4)在kingbase.conf中配置GUC参数:stats_collector_port = 'abc',并重启数据库服务

(5)在kingbase.conf中配置GUC参数:stats_collector_port = true,并重启数据库服务

3.2 会话中修改GUC参数

1、设置GUC参数,启动数据库

stats_collector_port = 65534
./bin/sys_ctl -D data start

2、检查UDP占用情况(root用户)

lsof -ni |grep kingbase

3、连接ksql,修改参数后重启

alter system set stats_collector_port = 65535
./bin/sys_ctl -D data restart    

4、检查UDP占用情况(root用户)

lsof -ni |grep kingbase

3.3 UDP端口已被占用

1、手动占用UDP端口

(1)手动占用UDP端口:nc -l -p 65535 -u &

(2)设置GUC参数,启动数据库

stats_collector_port = 65535
./bin/sys_ctl -D data start

(3)检查UDP占用情况(root用户):lsof -ni |grep kingbase

(4)检查进程情况:ps -ef |grep kingbase

2、手动占用TCP端口

(1)手动占用TCP端口:nc -l -p 65535 &

(2)设置GUC参数,启动数据库

stats_collector_port = 65535
./bin/sys_ctl -D data start

(3)检查UDP占用情况(root用户):lsof -ni |grep kingbase

(4)检查进程情况:ps -ef |grep kingbase

3.4 自动撤销端口占用

1、设置GUC参数,启动数据库

stats_collector_port = 65535
./bin/sys_ctl -D data start

2、检查UDP占用情况(root用户):lsof -ni |grep kingbase

3、关闭数据库后,检查UDP端口占用情况

./bin/sys_ctl -D data stop
lsof -i:65535

4、启动数据库,检查UDP端口占用情况

./bin/sys_ctl -D data start
lsof -ni |grep kingbase

5、杀掉数据库,检查UDP端口占用情况

kill -9 [数据库PID]
lsof -i:65535

4.测试注意事项

1、lsof 要在root用户下执行,普通用户只能查看当前用户下的占用情况,查看其他用户权限不够;

2、环境用自己的虚拟机,不要使用公用机器;

3、只杀死 stats collector 进程,不会释放UDP端口;

4、强制抢占端口的脚本如下:

file

5、TCP和UDP可以绑定相同的端口,当TCP和UDP在不同进程同时使用时,不会对本功能造成影响(建议手册里有对应说明);

6、有一些特殊的端口号,使用GUC参数配置,占用该端口时,执行“lsof -ni | grep kingbase”的结果,UDP端口位置显示的不是端口号的数字,而是其服务名称,例如:32768—filenet-tms(建议在手册中进行说明)。

file

file

7、端口号在1-1023范围内,需要root权限才能使用。 更多信息,参见https://help.kingbase.com.cn/v8/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值