iptables的udp负载均衡记录

iptables的udp负载均衡记录, 最近才学习这些东西,尝试kcptun的随机端口测试用。

客户端client:

iptables -t nat -A OUTPUT -p udp –dport 4444 -m state –state NEW -m statistic –mode nth –every 4 –packet 0 -j DNAT –to-destination 127.0.0.1:1444

iptables -t nat -A OUTPUT -p udp –dport 4444 -m state –state NEW -m statistic –mode nth –every 4 –packet 1 -j DNAT –to-destination 127.0.0.1:1445

iptables -t nat -A OUTPUT -p udp –dport 4444 -m state –state NEW -m statistic –mode nth –every 4 –packet 2 -j DNAT –to-destination 127.0.0.1:1446

iptables -t nat -A OUTPUT -p udp –dport 4444 -m state –state NEW -m statistic –mode nth –every 4 –packet 3 -j DNAT –to-destination 127.0.0.1:1447

服务端server:

iptables -t nat -A OUTPUT -p udp –dport 1445:1447 -j DNAT –to-destination 127.0.0.1:5555

另外要kcptun客户端需要设置:

“conn”: 4,
“autoexpire”: 0,

kcptun要设置端口到4444去

kcptun server端要设置端口到5555去

发表在 技术生活 | 留下评论

记录下DOS批处理和Linux的bash的date函数格式

记录下DOS批处理和Linux的bash的date函数格式

DOS批处理时间函数格式 : %Date:~0,4%%Date:~5,2%%Date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%

echo %Date:~0,4%%Date:~5,2%%Date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%

以当前时间为例,输出: 20210611152010 , 既是2021-06-11 15:20:10

Linux下的bash就简单了: $(date ‘+%Y%m%d%H%M%S’)

echo $(date ‘+%Y%m%d%H%M%S’)

结果也是20210611152010

发表在 shell | 留下评论

kcptun用在局域网上

kcptun用在局域网上 , 一般这货是用在外网的,但面对公司内部找不出那个网络交换接点有延时问题,于是就用上了kcptun这暴力发包工具了。

公司内网很多交换机,很多光纤收发器,不过道闸系统到服务器哪里,ping值总会有丢包数据,但不严重,已经查过了很多网络线路,但始终找不出原因,于是尝试这个kcptun工具,把道闸服务器上的sql server的1433tcp端口映射到kcptun端口上,例如·6666,岗亭的监控端也装上kcptun客户端,连接本地1433端口,通过kcptun客户端连接到服务端的6666端口上,这样系统的稳定和速度上比原来的好很多,用了一段时间感觉非常稳定。

其实在使用kcptun用在内部局域网上时,我在去检修过内网的线路,但始终查不到原因,有可能连接的光纤老化吧,反正现在用着kcptun连接稳定,暂时不理着吧。

至于kcptun的参数设置,就是官网默认的那个,先记录到这里吧。

发表在 技术生活 | 留下评论

unigui 1534 linux

unigui 1534 linux, 终于用上这个来做测试,是真真正正的跑在linux的unigui程序,不用像之前的要用上wine才能在linux上(实现了delphi unigui跑在linux上), 之前测试用的demo,纯粹一个读sql server的表的程序,用unidac连接sql server数据库的,在windows跑中文显示是正常的,但在linux上跑,居然乱码,最终发现是sql server表varchar和nvarchar字段作怪,跟unigui linux无关吧.

另外值得注意的,还是unigui的两个文件路径,以下的ext-js和uni-js是我自定义的目录,里边的文件对应于[ C:\Program Files (x86)\FMSoft\Framework\uniGUI ]下的ext-x.x.x和uni-x.x等,如果linux就对应于FrameworkFilesRoot, 就是将那两个文件夹拷贝到FrameworkFilesRoot的自定义目录下.

procedure TUniServerModule.UniGUIServerModuleBeforeInit(Sender: TObject);
var
nStr:string;
begin
nStr := ExtractFilePath(ParamStr(0)) + ‘ext-js’;
Logger.AddLog(‘TUniServerModule’, nStr);

{$ifdef Linux64}
FrameworkFilesRoot := ‘/root/PAServer/scratch-dir/Administrator-248/temp2’;
{$endif}

{$ifdef MSWINDOWS}
if DirectoryExists(nStr) then
begin

ExtRoot := 'ext-js';
UniRoot := 'uni-js';

end;
{$endif}

end;

反正可以跑在linux下了,这样操作方便很多。但还是那句性能和稳定不知道怎样,但对于我自用来说,这个不用考虑

发表在 技术生活 | 留下评论

实现了delphi unigui跑在linux上

实现了delphi unigui跑在linux上, 其实网上说unigui 1534版本编译可以跑在linux上的,但我暂用的版本不是,所以只能想其它方法。

实验的思路是docker跑ubuntu跑wine上跑unigui ,经过三天的折腾,总算是实现了以前写的数据程序跑起来了。

但有几个坑,其中一个是数据程序的控件用delphi firedac, 而firedac需要用到odbc , 网上查资料,发现就是安装mdac28 , 但mdac28是需要在32位系统上的,网上也无法找到64位的安装odbc的win版本, 所以docker安装了32位的ubuntu18.04 , 32位的ubuntu20.04无法安装上。

最终算是顺利完成,dockerfile也改了N次,编译了N次,算是完满成功,实验完成的docker image的容量是943M, 目的是跑在linux上的vps .

至于性能,我也不考虑了,因为也不知道wine性能如何, 反正就算用也是实验性质,自己用应该是还可以的 , 还有就是在查资料的过程中发现,delphi下的unigui如果使用unidac的direct模式,可以不用理会odbc的,可以直接跑在64位置系统里,而且ubuntu20.04可以使用wine5( 实验的ubuntu 18.04使用是wine3) ,估计应该更加稳定。

自用的delphi旧程序要从firedac改成unidac还是比较大工程,反正以后写的程序还是改用unidac吧。

反正一句,用这wine的方法,delphi unigui终于支持linux了!!!

碎碎念完毕.

发表在 技术生活 | 一条评论

回看自己写的netcore程序居然一点不明白

碎碎念,昨晚回看自己写的netcore程序居然一点不明白, 因为平时也不用netcore编程玩,完全忘掉是怎样的,现在看我自己写的代码简直天书一样,正确来说就是netcore写代码的结构已经完全不明白了,这是今年看见了netcore可以跑在linux下才去学习的,完全是看视频教程写的,但现在已经什么都忘记了,但你现在叫我会看自己写的delphi、golang、asp、vue等程序还是可以看明白的,因为结构简单,时不时会用一下,所以难忘记,所以说编程还是需要岁月浸淫的

发表在 一般生活 | 留下评论