0


HAProxy を使用して、IP: 192.168.206.41 mariadb1
192.168.206.157 mariadb2
192.168.206.94 mariadb3で Mariadb クラスターを制御しようとしています。DB: 192.168.206.41 haproxy1 192.168.206.157 haproxy2
と同じサーバーに haproxy をインストールします。


私の問題は、構文を使用するときです: mysql -u root -p -h 192.168.206.94 -P 3030 -e "select Host, User, Password from mysql.user"on mariadb1 を使用して、haproxy1 と mariadb3 の間の接続をテストします。それは動作せず、応答します:

[root@mariadb1 ~]# mysql -u root -p -h 192.168.206.94 -P 3030 -e "select Host, User, Password from mysql.user" Enter password:
ERROR 2002 (HY000): Can't connect to MySQL 「192.168.206.94」のサーバー (115)

SELinuxを無効にし、両方のサーバーのfirewalldに必要なポートを追加しましたが

[root@mariadb1 ~]# firewall-cmd --list-ports;
3306/tcp 443/tcp 80/tcp 4567/tcp 4568/tcp 4444/tcp 4567/udp 873/tcp 9200/tcp 9000/tcp 3030/tcp

これは両方のサーバーで同じです。

ここに私の /etc/haproxy/haproxy.cfg があります:

global
    log 127.0.0.1   local2
    maxconn 1024
    user haproxy
    group haproxy
    daemon
    stats socket /var/run/haproxy.sock mode 600 level admin         # Make sock file for haproxy

defaults
    log     global
    mode    tcp
    option  tcplog
    option  dontlognull
    retries 3
    option  redispatch
    maxconn 1024
    timeout http-request 10s
    timeout connect 5s
    timeout client 50000ms
    timeout server 50000ms

listen mariadb_cluster 0.0.0.0:3030
## MariaDB balance leastconn - the cluster listening on port 3030.
    mode tcp
    balance leastconn
    option httpchk
    option tcp-check
    server mariadb1 192.168.206.41:3306 check port 9200
    server mariadb2 192.168.206.157:3306 check port 9200
    server mariadb3 192.168.206.94:3306 check port 9200 backup       # Make mariadb3 as backup - automatic replication data

listen stats 0.0.0.0:9000
## HAProxy stats web gui running on port 9000 - username and password: huy123.
    mode http
    stats enable
    stats uri /stats
    stats realm HAProxy\ Statistics
    stats auth huy123:huy123
    stats admin if TRUE

/etc/my.cnf の bind-address=127.0.0.1 もチェックして無効にしました

Mariadb クラスターは、Mariadb>show status like 'wsrep_cluster_size'; という構文で問題なく動作します。反応:

 MariaDB [(none)]> show status like 'wsrep_cluster_size';
 +--------------------+-------+
 | Variable_name      | Value |
 +--------------------+-------+
 | wsrep_cluster_size | 3     |
 +--------------------+-------+
 1 row in set (0.001 sec)

また、すべての権限を持つユーザー root@'%' と、xinetd の clustercheck 用の別のユーザーも作成します。

また、ファイル /etc/hosts でサーバーのすべての IP を宣言します。

もう 1 つの重大な問題は、haproxy1 を mariadb2 (haproxy を使用するもの) に接続しようとすると、次のように表示されることです。

[root@mariadb1 ~]# mysql -u root -p -h 192.168.206.157 -P 3030 -e "select Host, User, Password from mysql.user" Enter password:
ERROR 2013 (HY000): Lost connection to MySQL server at 「ハンドシェイク: 初期通信パケットの読み取り中」、システム エラー: 11

# semanage port -m -t http_port_t -p tcp 3030SELinuxを無効にせずに、SELinuxがポート3030、9200、および9000をバイパスするようにしていましたが

しかし、SElinux を無効にすると、再び正常に動作します。SELinux を無効にすることはサーバーの管理には当てはまらないため、これが適切な方法ではないことはわかっています。

私はグーグルで何時間も調べましたが、これらの問題を抱えているのは地球上で私だけである可能性があります. 誰かがこれら2つのケースを解決するのを手伝ってくれますか?

4

0 に答える 0