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 3030
SELinuxを無効にせずに、SELinuxがポート3030、9200、および9000をバイパスするようにしていましたが
しかし、SElinux を無効にすると、再び正常に動作します。SELinux を無効にすることはサーバーの管理には当てはまらないため、これが適切な方法ではないことはわかっています。
私はグーグルで何時間も調べましたが、これらの問題を抱えているのは地球上で私だけである可能性があります. 誰かがこれら2つのケースを解決するのを手伝ってくれますか?