HAProxy 和 MariaDB Galera 集群,连接被拒绝

问题描述 投票:0回答:0

感谢您看到这个!

我正在一个项目中工作,我想使用 docker-compose 创建 3 个带有 HAProxy 负载均衡器的 MariaDB Galera Cluster 节点,这是

docker-compose.yml
文件:

version: "3.8"
services:

    nodo1:
        image: hauptmedia/mariadb:10.1
        container_name: nodo1
        hostname: node1
        restart: on-failure
        ports:
            - 10001:3306
        environment:
            - MYSQL_ROOT_PASSWORD=test
            - REPLICATION_PASSWORD=test
            - MYSQL_DATABASE=matias
            - MYSQL_USER=matias
            - MYSQL_PASSWORD=test
            - GALERA=On
            - NODE_NAME=nodo1
            - CLUSTER_NAME=maria_cluster
            - CLUSTER_ADDRESS=gcomm://
        command: --wsrep-new-cluster

        
    nodo2:
        image: hauptmedia/mariadb:10.1
        container_name: nodo2
        hostname: nodo2
        restart: on-failure
        links:
            - nodo1
        ports:
            - 10002:3306
        environment:
            - REPLICATION_PASSWORD=test
            - GALERA=On
            - NODE_NAME=nodo2
            - CLUSTER_NAME=maria_cluster
            - CLUSTER_ADDRESS=gcomm://node1

        
    nodo3:
        image: hauptmedia/mariadb:10.1
        container_name: nodo3
        hostname: nodo3
        restart: on-failure
        links:
            - nodo1
        ports:
            - 10003:3306
        environment:
            - REPLICATION_PASSWORD=test
            - GALERA=On
            - NODE_NAME=nodo3
            - CLUSTER_NAME=maria_cluster
            - CLUSTER_ADDRESS=gcomm://node1

    
    haproxy:
        image: haproxy:latest
        container_name: haproxy
        restart: on-failure
        ports:
            - 3306:3306
        volumes:
            - /home/ansible/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro

MariaDB Galera Cluster 运行良好,我可以创建数据库并且复制在所有节点中工作,但是,错误出现在 HAProxy 中。这是

haproxy.cfg
文件:

global
    maxconn 4096
    log /dev/log local0
    user root
    group root
    daemon

defaults
    log global
    mode tcp
    option tcplog
    option dontlognull
    timeout connect 5000
    timeout client 50000
    timeout server 50000

frontend galera_frontend
    bind *:3306
    mode tcp
    option mysql-check user matias

    default_backend galera_backend

backend galera_backend
    mode tcp
    balance roundrobin
    option mysql-check user matias
    server nodo1 nodo1:10001 check
    server nodo2 nodo2:10002 check  
    server nodo3 nodo3:10003 check 

当我启动 Compose 并使用命令

docker logs haproxy
这是输出:

[root@rockyLinuxLAB ansible]# docker logs haproxy 

[NOTICE]   (1) : haproxy version is 2.7.8-58c657f
[NOTICE]   (1) : path to executable is /usr/local/sbin/haproxy
[WARNING]  (1) : config : parsing [/usr/local/etc/haproxy/haproxy.cfg:20] : 'mysql-check' ignored because frontend 'galera_frontend' has no backend capability.
[ALERT]    (1) : config : [/usr/local/etc/haproxy/haproxy.cfg:29] : 'server galera_backend/nodo2' : could not resolve address 'nodo2'.
[ALERT]    (1) : config : [/usr/local/etc/haproxy/haproxy.cfg:30] : 'server galera_backend/nodo3' : could not resolve address 'nodo3'.
[ALERT]    (1) : config : Failed to initialize server(s) addr.
[NOTICE]   (1) : haproxy version is 2.7.8-58c657f
[NOTICE]   (1) : path to executable is /usr/local/sbin/haproxy
[WARNING]  (1) : config : parsing [/usr/local/etc/haproxy/haproxy.cfg:20] : 'mysql-check' ignored because frontend 'galera_frontend' has no backend capability.
[NOTICE]   (1) : New worker (8) forked
[NOTICE]   (1) : Loading success.
[WARNING]  (8) : Server galera_backend/nodo1 is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 2 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
[ALERT]    (8) : sendmsg()/writev() failed in logger #1: No such file or directory (errno=2)
[WARNING]  (8) : Server galera_backend/nodo2 is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
[WARNING]  (8) : Server galera_backend/nodo3 is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
[ALERT]    (8) : backend 'galera_backend' has no server available!`

制作此项目的原因是具有水平扩展和冗余,具有负载平衡器、Web 服务(nginx 容器)和数据库。

docker mariadb haproxy
© www.soinside.com 2019 - 2024. All rights reserved.