首页 > 其他分享 >Kolla OpenStack yoga 版本部署时 haproxy 无法正常工作的问题排查

Kolla OpenStack yoga 版本部署时 haproxy 无法正常工作的问题排查

时间:2023-12-27 20:23:43浏览次数:34  
标签:haproxy yoga option 端口 mysql 3306 OpenStack mariadb

前言

这个缺陷很奇怪,仅在使用我的公司自研的操作系统上部署时产生。但是这个由于 haproxy 的配置缺陷导致的问题确实存在,记录以供后续参考。

问题表现

在部署过程与部署完成后均出现 mysql 数据无法连接的问题。导致集群无法工作。

问题原因排查

进入 mysql 容器,通过命令行工具指定 host 登录 mysql 发现 mysqld 是正常工作的,但是 api 地址(经过 haproxy 代理的服务地址上) 3306 并未监听。
此时问题基本就定位到了 haproxy 上,查看日志,日志没有关于 3306 端口的错误(其实此刻3306端口根本没有被代理)。检查 haproxy 配置 /etc/kolla/haproxy/services.d/mariadb.cfg

# /etc/kolla/haproxy/services.d/mariadb.cfg
frontend mariadb_front
    mode tcp
    option clitcpka
    timeout client 3600s
    option tcplog
    bind 10.50.124.236:3306
    default_backend mariadb_back

backend mariadb_back
    mode tcp
    option srvtcpka
    timeout server 3600s
    option httpchk
     server DAS-OS 10.50.124.235:3306 check port 4569 inter 2000 rise 2 fall 5

貌似一切都正常。
查看 haproxy 的控制台(1984 端口,账号密码写在/etc/kolla/haproxy/haproxy.cfg配置文件中)。我们发现了 mariadb_back 这个状态是错误的。???

猜测

这样问题就很奇怪了,对比该别的集群 haproxy 的配置完全一样,为什么这里会发生错误呢。并且 haproxy 的容器到 mariadb 的容器网络是畅通的,mariadb 的服务也是正常工作的。为何会检测不通过内,我手动测试是完全OK的。
抱着尝试的心态看了下 haproxy mariadb_back 的配置,有一项引起了我的注意 option httpchk。这是一个非 http 的服务为什么使用 http 这个状态检测方式呢,不应该是 tcp 什么的么?但是,但是 !有经验的同学也会知道,当我们用 nc 或者 curl 访问 mysql 的 3306 端口是有一定的回显的(嗯大概是 http 1.0 那种毫无格式的回显)。于是我尝试着在 harproxy 的容器中 curl 访问 mariadb 的 3306 端口。嗯~~~,报错了 ---- 不支持 http 1.0 格式。具体的回显我忘记的,但是大概是这个意思。但是这个方式在其他的系统中是可以正常获得 mariadb 的回显的,唯独这里不行,由于时间紧急,这个问题我将会放到后续探究。

解决

确认了问题所在问题的解决就变得简单了。修改为 tcplog 重启后即可正常工作。

标签:haproxy,yoga,option,端口,mysql,3306,OpenStack,mariadb
From: https://www.cnblogs.com/oscar2960/p/17931353.html

相关文章

  • 记录一次 OpenStack 集群在创建虚机后无法获取 IP 的问题
    现象所有的组件状态都是正常工作的,DHCP服务正常工作,在个个虚拟网络设备端口抓包,发现OpenVSwitch上DHCP包可以通行,虚机获取DHCPDiscover请求可以正常发出,但是无法收到回包。抓包命令tcpdump-ieth0udpport67orport68-vvv抓包点网络节点上对应的网络空间的的......
  • haproxy
    文档.2.4LTSyum-yinstallgccopenssl-develpcre-develsystemd-develmakecleanmake-j4TARGET=linux-glibc\USE_OPENSSL=1\USE_ZLIB=1\USE_PCRE=1\USE_SYSTEMD=1makeinstall[root@localhost~]#cat/......
  • 使用Zabbix监控openstack的系统资源
    1概述OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)授权。OpenStack为私有云和公有云提供可扩展的弹性的云计算服务。项目目标是提供实施......
  • python openstacksdk
     参考:openstackregionlist获取yaml配置的域信息ragion_name,也可以通过配置less/etc/neutron/neutron.conf获取region_name  openstacksdk旨在与任何OpenStack云对话。为此,需要一个配置文件。openstacksdk支持 clouds.yaml 文件,但也可以使用环境变量。......
  • kubekey 部署内置 haproxy k8s 高可用集群
    内置haproxy高可用架构:1、下载脚本[root@master1~]#curl-sfLhttps://get-kk.kubesphere.io|VERSION=v2.0.0sh-如果访问Github和Googleapis受限先执行以下命令再执行上面的命令exportKKZONE=cn2、给脚本赋予执行权限[root@master1~]#chmod+xkk3、创建包含默认配......
  • openstack虚拟网络的管理
    学完之后,回答这些问题1)了解虚拟网络,子网,端口的功能2)了解网桥的功能3)理解网络,子网,端口的管理命令4)理解网桥的命令  一:虚拟网络的管理1:网络管理语法格式:openstacknetwork操作选项网络名 常用的操作:create 创建网络delete删除网路list查看网络......
  • 手搭train版的openstack
    准备两台虚拟机分别作为controller节点和compute节点主机硬件IP虚拟机网卡controller2cpu+4GB内存+60GB硬盘192.168.238.30192.168.108.30NAT模式仅主机模式compute2cpu+4GB内存+50GB硬盘192.168.238.31192.168.108.31NAT模式仅主......
  • openstack中运维操作的命令
    1:keystone运维管理的选项有域,项目,用户,角色,服务,端点这些操作首先域是用户和项目的集合,所以创建项目的时候要指定域,删除的时候也要指定域,但是在创建用户的时候需要指定域,删除用户的时候不需要指定域格式:openstack操作的对象动作一些简单的运维:创建一个用户并分配这个用户一......
  • openstack 常用命令
    1.创建一个磁盘cinderlist&&cindertype-list&&glanceimage-listcindercreate--volume-typeISCSI--image-id5c86aff6-2ed6-4b56-a5f2-48ae68b891fc--nametest102.创建一个虚拟机openstacknetworklist&&openstacksecuritygrouplist&&......
  • 基于kvm虚拟机创建openstack qcow2磁盘镜像
    前提知识KVM做单机管理虚拟机,Openstack集群管理虚拟机 使用工具virt-manager 虚拟机管理器(VirtualMachineManager) 目标基于Kylin-Server-V10-SP3-General-Release-2303-X86_64.iso创建qcow2格式的openstack磁盘镜像 qcow2镜像制作使用环境      IP:......