有大佬试过静态编译 keepalived 吗

2022-02-23 13:14:05 +08:00
 guanzhangzhang

较多的 os 上,完全内网,目前是 docker 起的,但是这样机器宕机启动的时候,keepalived 容器是在 docker daemon 后起来的,所以目前打算是静态编译 keepalived ,尝试了下都不行。 尝试的步骤见 issue https://github.com/acassen/keepalived/issues/2107

3983 次点击
所在节点    Linux
33 条回复
julyclyde
2022-02-23 13:20:33 +08:00
这东西就不适合放 docker 里
hu8245
2022-02-23 13:22:45 +08:00
你不先把你的依赖关系搞定再提问吗?
guanzhangzhang
2022-02-23 14:35:27 +08:00
来个搞过的大佬回复下,不像回复没用的评论了
julyclyde
2022-02-23 15:24:12 +08:00
看了附言,lzsb ,鉴定完毕
Badupp
2022-02-23 15:28:30 +08:00
@julyclyde 很难不支持
guanzhangzhang
2022-02-23 15:29:45 +08:00
几个弱智别回复了
defunct9
2022-02-23 15:36:05 +08:00
哦,用 ucarp 吧。看看你的编译报错,需要一堆库。也许 ucarp 需要的库少,适宜静态编译。
guanzhangzhang
2022-02-23 15:40:45 +08:00
@defunct9 大佬,你说的这个我搜了下不符合我的使用场景。不好换的,目前我是使用 lvs ,已经生产上运行很久了,现在是解决容灾拉低故障时间,编译这个已经看了官方的 INSTALL 的那个文档,尝试过在不同阶段传入 CFLAGS 和 LDFLAGS 都报错,感觉官方可能某个地方这俩变量传入是覆盖而不是拼接,所以 lib 找不到。
defunct9
2022-02-23 16:13:13 +08:00
上 F5 、BigIP
tomychen
2022-02-23 16:48:04 +08:00
keepalived 要静态编译首先:
1. 你的依赖库得静编,包括 openssl kmod 等。
2. 依赖库静编了,也不代表一定能编过编译,因为依赖库静编的过程,有可能是有动、静交叉
3. 以上条件全符合了,也不代表就一定能在不同版本的系统上跑。因为还有个变态的 glibc 。
liprais
2022-02-23 16:50:16 +08:00
楼主这问问题的态度真是.....
不能静态编译,我搞过,你信么....
a663
2022-02-23 17:10:07 +08:00
张馆长?
a663
2022-02-23 17:11:24 +08:00
@julyclyde 人家来讨论技术的,你上来就 SB ,这里只有你 SB
corvofeng
2022-02-23 17:16:37 +08:00
我之前用 docker 编译过旧版本的 puppet, 可以考虑在 Docker 里面静态编译, 然后拷贝二进制文件来用

https://corvo.myseu.cn/2019/11/12/2019-11-12-Docker%E7%B3%BB%E5%88%97(%E5%85%AB)-Docker%E5%A5%87%E7%94%A8-%E7%BC%96%E8%AF%91%E6%97%A7%E7%89%88%E8%BD%AF%E4%BB%B6/
guanzhangzhang
2022-02-23 22:27:42 +08:00
@defunct9 完全内网。toB 的,f5 不现实,很多客户是只提供机器,我明天看看等 issue 看看开发者的回复,下午和开发者沟通后 configure 过了,但是 make 报错
guanzhangzhang
2022-02-23 22:29:16 +08:00
@liprais 我下午试过很多不同 os 里,以及 issue 的作者回复,目前过了 configure ,make 有问题,等晚上时区后看看其他开发者有见解没😁
guanzhangzhang
2022-02-23 22:35:18 +08:00
@corvofeng 静态编译是指编译完成后 file 它显示 static link ,以及 ldd 它显示 not a dynamic link 。也就是不依赖 so ,我们客户是很多不同的 os 都有,而且完全内网都有可能,也就是说包管理被我们默认当成无法使用,所以包管理安装 keepalived 不现实,包括 docker 我们现阶段是用官方的 static-bin 那个压缩包安装的。目前我静态编译过 nginx ,fio ,keepalived 这个我下午尝试了下很难。
你文章这个我看了下实际是动态编译的,恰好宿主机也有这些 so ,静态编译一般是 configure 脚本提供选项 --with-cc-opts 之类的,或者传值 CFLAGS LDFLAGS 之类的,以及编译阶段的支持,我还是等 issue 里开发者回复吧
yinyu
2022-02-23 23:55:04 +08:00
猜猜我是谁
szpunk
2022-02-24 01:40:24 +08:00
@guanzhangzhang #17 issue 里面回答了,改下 -lcrypto -lssl 顺序,把 -lssl 放前面,就只有一个报错了,这个报错我不知道是不是 OpenSSL 3.0 改了啥还是怎么,反正硬改那个报错的 check_ssl.c 让它通过编译,能不能用你自己测试了。
corvofeng
2022-02-24 07:52:47 +08:00
@guanzhangzhang 我看 issue 里面普通的动态编译也没成功。应该想办法先编译成功,再加参数来做静态链接。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/835897

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX