VRRP无法切换VIP的问题分析:

Keepalived的配置文件:
/etc/kolla/keepalived/keepalived.conf
当中,nopreempt选项是影响切换的因素之一,另一个因素则是:
vrrp_instance kolla_internal_vip_51 {
    ...
    track_script {
        check_alive
    }
}
而check_alive的定义是:
vrrp_script check_alive {
    script "/check_alive.sh"
    interval 2
    fall 2
    rise 10
}
即Keepalived根据健康检查脚本/check_alive.sh的返回值决定是否成为主路由器。
/check_alive.sh脚本检查本地HAProxy是否在运行,而本地HAProxy没有在运行,脚本的健康检查结果是失败。
所以VIP无法切换。

本地HAProxy没有在运行,本地haproxy.cfg配置要求监听VIP,而此时本地网卡未配置VIP,导致HAProxy无法监听。
因此只能手动先把VIP转移:
docker stop keepalived
docker stop haproxy
ip addr del 172.24.9.198/32 dev enp2s0f0
ip addr add 172.24.9.198/32 dev enp2s0f0
docker start haproxy
去掉nopreempt选项:
docker start keepalived

此处备忘如何清楚网卡的所有IP地址:
ip addr flush dev eth0

***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****
查看HAProxy的启动日志:
[root@node2 ~]# docker logs haproxy
...
[ALERT] 123/132247 (11) : Starting proxy rabbitmq_management: cannot bind socket [172.24.9.198:15672]
[ALERT] 123/132247 (11) : Starting proxy keystone_internal: cannot bind socket [172.24.9.198:5000]
[ALERT] 123/132247 (11) : Starting proxy keystone_admin: cannot bind socket [172.24.9.198:35357]
[ALERT] 123/132247 (11) : Starting proxy glance_registry: cannot bind socket [172.24.9.198:9191]
[ALERT] 123/132247 (11) : Starting proxy glance_api: cannot bind socket [172.24.9.198:9292]
[ALERT] 123/132247 (11) : Starting proxy nova_api: cannot bind socket [172.24.9.198:8774]
[ALERT] 123/132247 (11) : Starting proxy nova_metadata: cannot bind socket [172.24.9.198:8775]
[ALERT] 123/132247 (11) : Starting proxy placement_api: cannot bind socket [172.24.9.198:8780]
[ALERT] 123/132247 (11) : Starting proxy nova_novncproxy: cannot bind socket [172.24.9.198:6080]
[ALERT] 123/132247 (11) : Starting proxy neutron_server: cannot bind socket [172.24.9.198:9696]
[ALERT] 123/132247 (11) : Starting proxy horizon: cannot bind socket [172.24.9.198:80]
[ALERT] 123/132247 (11) : Starting proxy cinder_api: cannot bind socket [172.24.9.198:8776]
[ALERT] 123/132247 (11) : Starting proxy heat_api: cannot bind socket [172.24.9.198:8004]
[ALERT] 123/132247 (11) : Starting proxy heat_api_cfn: cannot bind socket [172.24.9.198:8000]
[ALERT] 123/132247 (11) : Starting proxy mariadb: cannot bind socket [172.24.9.198:3306]
[ALERT] 123/132247 (11) : Starting proxy rabbitmq: cannot bind socket [172.24.9.198:5672]
从日志看出,HAProxy无法在VIP进行监听。

经确认,内核参数“net.ipv4.ip_nonlocal_bind=1”使得HAProxy能够在非本地的IP地址进行监听。

检查发现此内核参数已经设置开机启动:
[root@node2 ~]# grep ip_nonlocal_bind /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind=1

检查内核运行过程中此参数的状态:
[root@node2 ~]# cat /proc/sys/net/ipv4/ip_nonlocal_bind
0
发现此参数为0,不知被谁篡改。

设置为1:
[root@node2 ~]# echo 1 >/proc/sys/net/ipv4/ip_nonlocal_bind

重启haproxy容器:
[root@node2 ~]# docker stop haproxy;docker start haproxy

验证HAProxy已经能够在VIP进行监听:
[root@node2 ~]# ss -lnp|grep '\.198:'
tcp    LISTEN     0      128    172.24.9.198:3306                  *:*                   users:(("haproxy",pid=10784,fd=21))
tcp    LISTEN     0      128    172.24.9.198:8780                  *:*                   users:(("haproxy",pid=10784,fd=14))
tcp    LISTEN     0      128    172.24.9.198:9292                  *:*                   users:(("haproxy",pid=10784,fd=11))
tcp    LISTEN     0      128    172.24.9.198:80                    *:*                   users:(("haproxy",pid=10784,fd=17))

Kolla 4.0.0环境下VIP无法迁移问题排查的更多相关文章

  1. thinkphp 5.0 lnmp环境下 无法访问,报错500(public目录)

    两种方法: 1.修改fastcgi的配置文件 /usr/local/nginx/conf/fastcgi.conf fastcgi_param PHP_ADMIN_VALUE "open_b ...

  2. MongoDB4.0 WINDOWS环境下 副本集、分片部署

    部署开始: 创建路径 D:\Program Files\MongoDB\MySet下 config Data log 文件夹 config文件夹下准备配置文件: 分片1的副本集1 storage: d ...

  3. cocos2d-x v3.0各个环境下创建项目以及编译、执行官方DEMO

    摘自:https://github.com/cocos2d/cocos2d-x/ 怎样创建一个新项目 How to start a new game Download the code from co ...

  4. vue2.0开发环境下解决跨域问题

    1.找到vue 项目下的配置文件 /config/index.js 2.找到 proxyTable 配置项 proxyTable: { '/api': { target: 'http://www.xx ...

  5. 在AE10.1环境下调试其他版本的程序

    不同人的可能使用的开发环境不一样,使用SDK版本也不一样,比如用ArcEngine9.3开发的程序在ArcEngine10.1下就不能运行,需要重新调试,才能运行. 这里的例子程序是其他网友在ArcE ...

  6. C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 VC中进程与进程之间共享内存 .net环境下跨进程、高频率读写数据 使用C#开发Android应用之WebApp 分布式事务之消息补偿解决方案

    C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing). ...

  7. win7 IIS7环境下部署PHP 7.0

    最近在本机电脑win7 II7环境下部署PHP 7.0遇到一些问题,将之记录下来 简要步骤如下: 1.到php官网下载php,由于是IIS环境要下载非线程安全的版本,我下载的是7.0.13 2.解压到 ...

  8. 100怎么变成100.00 || undefined在数字环境下是:NaN || null在数字环境下是0 || 数组的toString()方法把每个元素变成字符串,拼在一起以逗号隔开 || 空数组转换成字符串后是什么?

    100怎么变成100.00?

  9. Windows环境下Android Studio v1.0安装教程

    Windows环境下Android Studio v1.0安装教程 准备工具 JDK安装包. 要求:JDK 7以及以上版本. Android Studio安装文件. Windows: exe(包含SD ...

随机推荐

  1. CentOS 7.4 下面安装 jdk 10 的一点总结

    CentOS 7.4 下面安装 jdk 10 的一点总结 一.前期工作 1.检验系统原版本 [root@zck ~]# java -version java version "1.7.0_& ...

  2. onethink 重写URL后,apache提示No input file specified

    <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{RE ...

  3. JavaScript Output

    JS can "display" data in different ways: (1)Writing into an alert box, using window.alert( ...

  4. vue中keep-alive

    vue2.0提供了一个keep-alive组件用来缓存组件,避免多次加载相应的组件,减少性能消耗 1.基本用法,缓存整个页面或组件 <keep-alive> <component&g ...

  5. [BZOJ2458][BeiJing2011]最小三角形(分治)

    求平面上n个点组成的周长最小的三角形. 回忆平面最近点对的做法,找到横坐标的中点mid分治到两边,合并时考虑离mid横坐标不超过当前最小值d的所有点,按y排序后暴力更新答案. 这个题也一样,先分治到两 ...

  6. JZYZOJ1442 [noip2013]华容道 bfs 最短路 剪枝

    http://172.20.6.3/Problem_Show.asp?id=1442 想到最短路的简直神了,如果我写我大概只能写一个30分的bfs. 从数据范围可以看出思路是bfs剪枝,但这里的剪枝是 ...

  7. Manacher算法总结

    部分图片转自:http://www.cnblogs.com/grandyang/p/4475985.html manacher算法(民间称马拉车算法233)是用来找字符串中的最长回文子串的,先来说一下 ...

  8. Codeforces 741B Arpa's weak amphitheater and Mehrdad's valuable Hoses

    [题目链接] http://codeforces.com/problemset/problem/741/B [题目大意] 给出一张图,所有连通块构成分组,每个点有价值和代价, 要么选择整个连通块,要么 ...

  9. BZOJ 1066 [SCOI2007]蜥蜴(最大流)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1066 [题目大意] 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些 ...

  10. 【动态规划】【记忆化搜索】hdu5965 扫雷

    f(i,j,k)表示第i行,放的雷的状态为j{0表示不放,1表示往上放,2表示往下放,3表示上下都放},剩余还有k(0<=k<=2)个要放的方案数. 先给出我这个sb写的错误代码,死都没调 ...