有大佬试过静态编译 keepalived 吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
guanzhangzhang
V2EX    Linux

有大佬试过静态编译 keepalived 吗

  •  
  •   guanzhangzhang
    zhangguanzhang 2022-02-23 13:14:05 +08:00 4949 次点击
    这是一个创建于 1407 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言    2022-02-23 14:38:49 +08:00
    1. 不管适不适合 docker ,我现在要解决的是容灾的时候机器开机,keepalived 是容器,在 docker daemon 起来后起来的,你说不适合 docker ,那不能提供静态编译 keepalived 的话,就不要说不适合 docker 。我要静态编译自然是很多 os 上去直接部署
    2. 说我没搞懂依赖的,麻烦先去看看,issue
    3. 如果没搞过就不要回复没用的评论,我不想浪费双方的时间。
    第 2 条附言    2022-02-23 15:46:18 +08:00
    有几个人不看 我贴的 issue 连接里,我已经按照官方文档尝过的很几个步骤了。
    无用的和骂人的回复我已经删掉了,对线的话请到其他帖子里
    第 3 条附言    2022-02-24 11:40:38 +08:00
    截止 2022/02/24 11:38 ,issue 里有个大佬 hack 编译成功后,开发者已经根据他的提醒发现了 openssl 的一个 link 问题,并提交更改了 configure 后,我编译了下成功了。后续有空我跟进测试下看看使用上会有问题没
    第 4 条附言    2022-02-24 18:56:10 +08:00
    33 条回复    2022-02-24 14:56:22 +08:00
    julyclyde
        1
    julyclyde  
       2022-02-23 13:20:33 +08:00
    这东西就不适合放 docker 里
    hu8245
        2
    hu8245  
       2022-02-23 13:22:45 +08:00
    你不先把你的依赖关系搞定再提问吗?
    guanzhangzhang
        3
    guanzhangzhang  
    OP
       2022-02-23 14:35:27 +08:00
    来个搞过的大佬回复下,不像回复没用的评论了
    julyclyde
        4
    julyclyde  
       2022-02-23 15:24:12 +08:00   1
    看了附言,lzsb ,鉴定完毕
    Badupp
        5
    Badupp  
       2022-02-23 15:28:30 +08:00
    @julyclyde 很难不支持
    guanzhangzhang
        6
    guanzhangzhang  
    OP
       2022-02-23 15:29:45 +08:00
    几个弱智别回复了
    defunct9
        7
    defunct9  
       2022-02-23 15:36:05 +08:00
    哦,用 ucarp 吧。看看你的编译报错,需要一堆库。也许 ucarp 需要的库少,适宜静态编译。
    guanzhangzhang
        8
    guanzhangzhang  
    OP
       2022-02-23 15:40:45 +08:00
    @defunct9 大佬,你说的这个我搜了下不符合我的使用场景。不好换的,目前我是使用 lvs ,已经生产上运行很久了,现在是解决容灾拉低故障时间,编译这个已经看了官方的 INSTALL 的那个文档,尝试过在不同阶段传入 CFLAGS 和 LDFLAGS 都报错,感觉官方可能某个地方这俩变量传入是覆盖而不是拼接,所以 lib 找不到。
    defunct9
        9
    defunct9  
       2022-02-23 16:13:13 +08:00
    上 F5 、BigIP
    tomychen
        10
    tomychen  
       2022-02-23 16:48:04 +08:00
    keepalived 要静态编译首先:
    1. 你的依赖库得静编,包括 openssl kmod 等。
    2. 依赖库静编了,也不代表一定能编过编译,因为依赖库静编的过程,有可能是有动、静交叉
    3. 以上条件全符合了,也不代表就一定能在不同版本的系统上跑。因为还有个变态的 glibc 。
    F281M6Dh8DXpD1g2
        11
    F281M6Dh8DXpD1g2  
       2022-02-23 16:50:16 +08:00
    楼主这问问题的态度真是.....
    不能静态编译,我搞过,你信么....
    a663
        12
    a663  
       2022-02-23 17:10:07 +08:00
    张馆长?
    a663
        13
    a663  
       2022-02-23 17:11:24 +08:00
    @julyclyde 人家来讨论技术的,你上来就 SB ,这里只有你 SB
    corvofeng
        14
    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
        15
    guanzhangzhang  
    OP
       2022-02-23 22:27:42 +08:00
    @defunct9 完全内网。toB 的,f5 不现实,很多客户是只提供机器,我明天看看等 issue 看看开发者的回复,下午和开发者沟通后 configure 过了,但是 make 报错
    guanzhangzhang
        16
    guanzhangzhang  
    OP
       2022-02-23 22:29:16 +08:00
    @liprais 我下午试过很多不同 os 里,以及 issue 的作者回复,目前过了 configure ,make 有问题,等晚上时区后看看其他开发者有见解没
    guanzhangzhang
        17
    guanzhangzhang  
    OP
       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
        18
    yinyu  
       2022-02-23 23:55:04 +08:00
    猜猜我是谁
    szpunk
        19
    szpunk  
       2022-02-24 01:40:24 +08:00
    @guanzhangzhang #17 issue 里面回答了,改下 -lcrypto -lssl 顺序,把 -lssl 放前面,就只有一个报错了,这个报错我不知道是不是 OpenSSL 3.0 改了啥还是怎么,反正硬改那个报错的 check_ssl.c 让它通过编译,能不能用你自己测试了。
    corvofeng
        20
    corvofeng  
       2022-02-24 07:52:47 +08:00 via Android
    @guanzhangzhang 我看 issue 里面普通的动态编译也没成功。应该想办法先编译成功,再加参数来做静态链接。
    zhoudaiyu
        21
    zhoudaiyu  
    PRO
       2022-02-24 08:51:25 +08:00 via iPhone
    @defunct9 还是开个 SSH 让我上去瞅瞅吧
    defunct9
        22
    defunct9  
       2022-02-24 08:52:22 +08:00
    似乎 issue 解决了这个问题。但是能不能用就得你来测试并给出答案了。
    defunct9
        23
    defunct9  
       2022-02-24 08:53:20 +08:00
    @zhoudaiyu 这个就不用我 ssh 了,因为提问的也是个运维高手。看 issue 就能看出来
    zhoudaiyu
        24
    zhoudaiyu  
    PRO
       2022-02-24 08:54:26 +08:00 via iPhone
    @defunct9 同行?你也是运维吗?
    CnpPt
        25
    CnpPt  
       2022-02-24 08:55:14 +08:00
    我之前编译了 keepalived 单二进制随处用这算是静态编译吗
    defunct9
        26
    defunct9  
       2022-02-24 08:59:16 +08:00   1
    @zhoudaiyu 握手,都是运维
    guanzhangzhang
        27
    guanzhangzhang  
    OP
       2022-02-24 09:24:33 +08:00
    @corvofeng 老哥你起好早刷论坛,不使用 CCFLAG 和 LDFALGS 那俩变量动态编译是能成功的(这样就是跟随官方的教程编译安装的)。issue 里的步骤我今天试下
    guanzhangzhang
        28
    guanzhangzhang  
    OP
       2022-02-24 09:25:54 +08:00
    @CnpPt 可以 ldd `which keepalived`看下是不是显示 not a dynamic link 就可以看出来是不是静态编译,我们客户是不同的政企,也就是客户是完全内网也可能,包管理用不了,所以安装 keepalived 很难,从 docker 挪出来就要考虑静态编译了
    Kinnice
        29
    Kinnice  
       2022-02-24 09:32:11 +08:00
    @guanzhangzhang 如果静态编译如果实在不好解决的话,可以尝试把各个 os 的包以及可能用到的依赖下载下来,然后编写脚本判断安装 [keepalived.tar install.sh],这是能预期的解决方案。
    corvofeng
        30
    corvofeng  
       2022-02-24 10:03:52 +08:00
    @guanzhangzhang 实在编译麻烦可以把.so 文件一起打包拷贝过去, 加个 LD_PRELOAD 环境变量到对应的目录就可以, 需要静态编译的场景用 go 会好一点
    guanzhangzhang
        31
    guanzhangzhang  
    OP
       2022-02-24 11:37:40 +08:00
    @corvofeng 我是在纯服务进程,然后利用 iptables +ipset+ keepalived 的 lvs 把 k8s 的 ipvs-svc https://zhangguanzhang.github.io/2021/09/28/ipvs-svc/ 扣下来上生产的,不是所有环境都需要 k8s ,go 的话可以从 kube-proxy 扣代码实现个,但是后续还要评估和增加成本
    guanzhangzhang
        32
    guanzhangzhang  
    OP
       2022-02-24 11:38:30 +08:00
    @Kinnice 开发者已经更新 keepalived 的 configure 了,我试了下能静态编译了,下午我找个实体的 os 测下我用的配置功能能正常工作不
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2336 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 02:43 PVG 10:43 LAX 18:43 JFK 21:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86