Flink CDC里 cdc端应该如何加参数可以忽略这个错误?
其他的回答都试过,没什么用。根本的原因是taskmanager和sqlserver在进行ssl连接时,两边的协议版本不一致导致,两个地方需要检查,第一是客户端使用的tls算法,第二是客户端使用的驱动版本(如果sqlserver版本低、驱动版本过高flinkcdc也会报这个错)。
驱动版本过高DataGrip连接报错信息:如果是驱动版本问题,那就需要重置制作flink镜像,把高版本的驱动替换为合适的低版本驱动。
1、修改taskmanager的java.security文件,使其支持低版本的tls算法,具体路径为:java8:{jre-path}/lib/security/java.security,java11+:{jre-path}/conf/security/java.security找到jdk.tls.disabledAlgorithms配置项,删除TLSv1和TLSv1.1:
如果部署采用的是flink on k8s,此种方式需要修改镜像,可使用第二种方式。
2、taskmanager启动时动态指定:-Djdk.tls.disabledAlgorithms=xxxx,可以在flink-conf.yaml中使用如下方式动态指定:env.java.opts.taskmanager: '-Djdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize
我使用的dinky为0.7.3,flink为1.17.1,jre为11。
注意1:在实际的操作过程中发现如果只指定env.java.opts.taskmanager: '-Djdk.tls.disabledAlgorithms=xxx',系统变量传递不到taskmanager的java进程中,而下面这种方式却可以正常传递:env.java.opts.taskmanager: '-Duser.timezone=GMT+8 -Djdk.tls.disabledAlgorithms=xxx',有些令人费解、未作深究。
注意2:jdk.tls.disabledAlgorithms指定的内容要基于taskmanager使用的jre进行修改,否则可能会出现一些稀奇古怪的问题。
赞0
踩0