Я новичок в кластеризации. Я пытаюсь настроить keepalived в HA с HAProxy и кластером MySQL (+2 узла кластера NDB). Конфигурация с 1 HAProxy (без поддержки активности и виртуального IP-адреса), похоже, работает правильно (я могу подключиться с клиентского MySQL к IP-адресу HAProxy и получить доступ к одному из двух узлов MySQL). Когда я добавляю keepalived на прокси-узел HA и добавляю 1 узел HAProxy + keepalived BACKUP, я больше не могу подключиться с клиента MySQL:
mysql: ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
firewall is disabled.
доступ к веб-серверу (Nginx) также возможен с HAproxy + keepalived на виртуальный IP-адрес !! Я использую Virtualbox с Ubuntu 18.04 и MySQL cluster 7.6.6.1. Пинг разрешен с любого сервера на другой.
Узел MySQL № 1: mysql_1 192.168.135.3 Узел MySQL № 2: mysql_1 192.168.135.4
Mgm_node # 1 (прокси HA + Keepalived): mysql_1 192.168.101
capodic @ mgm_cluster1: ~ $ netstat -nlta
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:1186 127.0.0.1:48968 ESTABLISHED
tcp 0 0 192.168.135.100:1186 192.168.135.2:39346 ESTABLISHED
tcp 0 0 192.168.135.101:40602 192.168.135.4:3306 TIME_WAIT
tcp 0 0 192.168.135.100:1186 192.168.135.3:44122 ESTABLISHED
tcp 0 0 192.168.135.100:1186 192.168.135.4:34628 ESTABLISHED
tcp 0 0 127.0.0.1:48968 127.0.0.1:1186 ESTABLISHED
tcp 0 0 192.168.135.100:1186 192.168.135.1:35682 ESTABLISHED
tcp 0 0 192.168.135.100:1186 192.168.135.1:35578 ESTABLISHED
tcp 0 0 192.168.135.101:40654 192.168.135.4:3306 TIME_WAIT
tcp 0 0 192.168.135.101:22 192.168.135.200:6765 ESTABLISHED
tcp 0 0 192.168.135.100:1186 192.168.135.2:39522 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
/etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local0 notice
maxconn 2000
user haproxy
group haproxy
defaults
log global
retries 2
timeout connect 3000
timeout server 5000
timeout client 5000
option dontlognull
balance leastconn
option redispatch 1
option http-server-close
listen mysql-cluster
bind 0.0.0.0:3306
mode tcp
option mysql-check user haproxy_check
balance roundrobin
server mysql_1 192.168.135.3:3306 check
server mysql_2 192.168.135.4:3306 check
listen http
# bind 192.168.135.100:80
bind 0.0.0.0:80
mode tcp
option tcplog
option httpchk
balance roundrobin # source
maxconn 500
server web01 192.168.135.3:80 maxconn 250
server web02 192.168.135.4:80 maxconn 250
listen stats
bind *:8080
mode http
stats enable
stats uri /stats
stats realm HAProxy Statistics
/etc/keepalived/keepalived.conf ========
global_defs {
…
enable_script_security
script_user capodic
}
vrrp_instance VI_1 {
interface enp0s8 # check eth port
state MASTER
priority 200 # 100 for BACKUP
virtual_router_id 33
advert_int 1
unicast_src_ip 192.168.135.101
unicast_peer {
192.168.135.102
}
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.135.100/24
}
notify_master /etc/keepalived/master.sh
notify_backup /etc/keepalived/backup.sh
}
capodic @ mgm_cluster1: ~ $ ip addr show enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:fa:d2:c0 brd ff:ff:ff:ff:ff:ff
inet 192.168.135.101/24 brd 192.168.135.255 scope global enp0s8
valid_lft forever preferred_lft forever inet 192.168.135.100/24 scope global secondary enp0s8
valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fefa:d2c0/64 scope link
valid_lft forever preferred_lft forever
Mgm_node # 2 (прокси HA + keepalived): mysql_1 192.168.102
/etc/haproxy/haproxy.cfg ===============================
global
log 127.0.0.1 local0 notice
maxconn 2000
user haproxy
group haproxy
defaults
….
listen mysql-cluster
bind *:3306
mode tcp
option mysql-check user haproxy_check
balance roundrobin
server mysql_1 192.168.135.3:3306 check
server mysql_2 192.168.135.4:3306 check
listen http
bind 0.0.0.0:80
mode tcp
option tcplog
option httpchk
balance roundrobin # source
maxconn 500
server web01 192.168.135.3:80 maxconn 250
server web02 192.168.135.4:80 maxconn 250
listen stats
bind *:8080
mode http
stats enable
stats uri /stats
stats realm HAProxy Statistics
stats auth admin:supersecret
/etc/keepalived/keepalived.conf ===================
global_defs {
enable_script_security
script_user capodic
}
vrrp_instance VI_1 {
interface enp0s8 # check eth port
state BACKUP
priority 100 # 100 for BACKUP
virtual_router_id 33
advert_int 1
unicast_src_ip 192.168.135.102
unicast_peer {
192.168.135.101
}
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.135.100/24
}