...
Блок кода |
---|
! Configuration File for keepalived
global_defs {
script_user root
enable_script_security
}
vrrp_script check_network {
script "/etc/keepalived/check_mysql.sh"
interval 5
weight 50
fall 3
rise 3
init_fail
user root
}
vrrp_instance VI_SWLC {
# state MASTER
interface <interface>
virtual_router_id 1
track_script {
check_network
}
track_interface {
<interface> weight 50
}
priority 150
advert_int 1
nopreempt
# Uncomment and comment "nopreempt" if preemption needed
#preempt_delay 180
authentication {
auth_type PASS
auth_pass eltex
}
virtual_ipaddress {
<virtual ip> dev <interface> label <interface>:1
}
notify_master "/etc/keepalived/keep_notify.sh master"
notify_backup "/etc/keepalived/keep_notify.sh backup"
notify_fault "/etc/keepalived/keep_notify.sh fault"
unicast_peer {
<ip address 2 server>
}
}
|
Тест-скрипт
Скрипт пингует проверяет активность mysql server соседней машины и возвращает код результата. Таким образом, при успешном выполнении скрипта, гарантируется, что SoftWLC достижим для внешних клиентов.
...
При смене состояния сервера, выполняется скрипт keep_notify.sh, где <mysql_user> и <mysql_password> - логин и пароль от БД MySQL (по умолчанию root/root).
/etc/keepalived/keep_notify.sh
...
MariaDB [(none)]> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 100.110.3.91<ip_server2>
Master_User: replication
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000013
Read_Master_Log_Pos: 3332141
Relay_Log_File: localhost-relay-bin.000062
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000013
Slave_IO_Running: No
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 3332141
Relay_Log_Space: 0
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: No
Gtid_IO_Pos:
Replicate_Do_Domain_Ids:
Replicate_Ignore_Domain_Ids:
Parallel_Mode: optimistic
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State:
Slave_DDL_Groups: 0
Slave_Non_Transactional_Groups: 0
Slave_Transactional_Groups: 0
1 row in set (0.000 sec)
|
...
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.152.12<ip_server1>
Master_User: replication
Master_Port: 5890
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 2682485
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 2674921
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 2682485
Relay_Log_Space: 2675231
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: Slave_Pos
Gtid_IO_Pos: 0-1-13677
Replicate_Do_Domain_Ids:
Replicate_Ignore_Domain_Ids:
Parallel_Mode: optimistic
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Slave_DDL_Groups: 740
Slave_Non_Transactional_Groups: 0
Slave_Transactional_Groups: 12844
1 row in set (0.001 sec)
|
...