较多的 os 上,完全内网,目前是 docker 起的,但是这样机器宕机启动的时候,keepalived 容器是在 docker daemon 后起来的,所以目前打算是静态编译 keepalived ,尝试了下都不行。 尝试的步骤见 issue https://github.com/acassen/keepalived/issues/2107
较多的 os 上,完全内网,目前是 docker 起的,但是这样机器宕机启动的时候,keepalived 容器是在 docker daemon 后起来的,所以目前打算是静态编译 keepalived ,尝试了下都不行。 尝试的步骤见 issue https://github.com/acassen/keepalived/issues/2107
|
julyclydeFeb 23, 2022
1
这东西就不适合放 docker 里
|
|
hu8245Feb 23, 2022
2
你不先把你的依赖关系搞定再提问吗?
|
|
3
来个搞过的大佬回复下,不像回复没用的评论了
|
|
4
看了附言,lzsb ,鉴定完毕
|
|
6
几个弱智别回复了
|
|
defunct9Feb 23, 2022
7
哦,用 ucarp 吧。看看你的编译报错,需要一堆库。也许 ucarp 需要的库少,适宜静态编译。
|
|
8
@defunct9 大佬,你说的这个我搜了下不符合我的使用场景。不好换的,目前我是使用 lvs ,已经生产上运行很久了,现在是解决容灾拉低故障时间,编译这个已经看了官方的 INSTALL 的那个文档,尝试过在不同阶段传入 CFLAGS 和 LDFLAGS 都报错,感觉官方可能某个地方这俩变量传入是覆盖而不是拼接,所以 lib 找不到。
|
|
defunct9Feb 23, 2022
9
上 F5 、BigIP
|
|
tomychenFeb 23, 2022
10
keepalived 要静态编译首先:
1. 你的依赖库得静编,包括 openssl kmod 等。 2. 依赖库静编了,也不代表一定能编过编译,因为依赖库静编的过程,有可能是有动、静交叉 3. 以上条件全符合了,也不代表就一定能在不同版本的系统上跑。因为还有个变态的 glibc 。 |
|
F281M6Dh8DXpD1g2Feb 23, 2022
11
楼主这问问题的态度真是.....
不能静态编译,我搞过,你信么.... |
|
a663Feb 23, 2022
12
张馆长?
|
|
corvofengFeb 23, 2022
14
我之前用 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/ |
|
15
@defunct9 完全内网。toB 的,f5 不现实,很多客户是只提供机器,我明天看看等 issue 看看开发者的回复,下午和开发者沟通后 configure 过了,但是 make 报错
|
|
16
@liprais 我下午试过很多不同 os 里,以及 issue 的作者回复,目前过了 configure ,make 有问题,等晚上时区后看看其他开发者有见解没😁
|
|
17
@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 里开发者回复吧 |
|
yinyuFeb 23, 2022
18
猜猜我是谁
|
|
szpunkFeb 24, 2022
19
@guanzhangzhang #17 issue 里面回答了,改下 -lcrypto -lssl 顺序,把 -lssl 放前面,就只有一个报错了,这个报错我不知道是不是 OpenSSL 3.0 改了啥还是怎么,反正硬改那个报错的 check_ssl.c 让它通过编译,能不能用你自己测试了。
|
|
corvofengFeb 24, 2022 via Android
20
@guanzhangzhang 我看 issue 里面普通的动态编译也没成功。应该想办法先编译成功,再加参数来做静态链接。
|
|
defunct9Feb 24, 2022
22
似乎 issue 解决了这个问题。但是能不能用就得你来测试并给出答案了。
|
|
CnpPtFeb 24, 2022
25
我之前编译了 keepalived 单二进制随处用这算是静态编译吗
|
|
27
@corvofeng 老哥你起好早刷论坛,不使用 CCFLAG 和 LDFALGS 那俩变量动态编译是能成功的(这样就是跟随官方的教程编译安装的)。issue 里的步骤我今天试下
|
|
28
@CnpPt 可以 ldd `which keepalived`看下是不是显示 not a dynamic link 就可以看出来是不是静态编译,我们客户是不同的政企,也就是客户是完全内网也可能,包管理用不了,所以安装 keepalived 很难,从 docker 挪出来就要考虑静态编译了
|
|
KinniceFeb 24, 2022
29
@guanzhangzhang 如果静态编译如果实在不好解决的话,可以尝试把各个 os 的包以及可能用到的依赖下载下来,然后编写脚本判断安装 [keepalived.tar install.sh],这是能预期的解决方案。
|
|
corvofengFeb 24, 2022
30
@guanzhangzhang 实在编译麻烦可以把.so 文件一起打包拷贝过去, 加个 LD_PRELOAD 环境变量到对应的目录就可以, 需要静态编译的场景用 go 会好一点
|
|
31
@corvofeng 我是在纯服务进程,然后利用 iptables +ipset+ keepalived 的 lvs 把 k8s 的 ipvs-svc https://zhangguanzhang.github.io/2021/09/28/ipvs-svc/ 扣下来上生产的,不是所有环境都需要 k8s ,go 的话可以从 kube-proxy 扣代码实现个,但是后续还要评估和增加成本
|
|
32
@Kinnice 开发者已经更新 keepalived 的 configure 了,我试了下能静态编译了,下午我找个实体的 os 测下我用的配置功能能正常工作不
|