MySQLデュアルマスター+キープアライブにより高可用性クラスターを実現

1. keepalivedをインストールして構成する

master-a端:

1)安装keepalivedの
[ルートのCentOS〜@]#
#yumのkeepalivedの安装keepalivedのインストール[CentOSの〜@ルート]
[ルート@ CentOSの〜]#
[ルート@ CentOSの〜]#rpmで-qa keepalivedの
keepalivedの-1.3.5-16.el7 .x86_64
[root @ CentOS〜]#

2)keepalivedの設定ファイル変更
[CentOSのルート@〜]#
[CentOSのルート@〜]#>#空元のプロファイル/etc/keepalived/keepalived.conf
[CentOSのルート@〜]#
[CentOSのルート@〜]#のVim /etc/keepalived/keepalived.conf#カスタム構成ファイル
!keepalivedの構成ファイル

global_defs {
notification_email {br /> [email protected]
}
smtp_server 192.168.23.1
smtp_connect_timeout 30
router_id MySQL-HA
}

vrrp_script chk_mysql {
script "/etc/keepalived/chk_mysql.sh"
interval 2
weight -5
fall 3
}

vrrp_instance VI_1 {
state BACKUP
interface ens32
mcast_src_ip 192.168.18.103
virtual_router_id 55
priority 100
advert_int 1
nopreempt

認証{
auth_type PASS
auth_pass 123456
}

virtual_ipaddress {
192.168.18.110/24
}

track_script {
chk_mysql
}
}

[root @
CentOS〜]#[root @ CentOS〜]#cat /etc/keepalived/keepalived.conf#設定を表示
MySQLデュアルマスター+キープアライブにより高可用性クラスターを実現

3)mysqlステータス検出スクリプトを記述します
[root @
CentOS〜]#[root @ CentOS〜]#vim /etc/keepalived/chk_mysql.sh

#!/ bin / bash
counter = $(netstat -na | grep "LISTEN" | grep "3306" | wc -l)
if ["$ {counter}" -eq 0]; その後、
systemctl stop keepalived
fi

[root @
CentOS〜]#[root @ CentOS〜]#cat /etc/keepalived/chk_mysql.sh#スクリプトコンテンツを表示
MySQLデュアルマスター+キープアライブにより高可用性クラスターを実現
[root @ CentOS〜]#[root @ CentOS〜]#chmod
+ x / etc / keepalived / chk_mysql .sh#スクリプトに実行権限を与える

4)启动keepalived [root @ CentOS〜
]#
[root @ CentOS〜]#systemctl start keepalived
[root @ CentOS〜]#systemctl enable keepalived

master-b end:
1)keepalivedをインストールします
[root @ CentOS-2〜]#
[root @ CentOS-2〜]#yum install keepalived

2)keepalived構成ファイルを変更します
[root @ CentOS-2〜]#
[root @ CentOS-2〜]#> /etc/keepalived/keepalived.conf#元の構成をクリアします
[root @ CentOS-2〜] #vim / etc / keepalived / keepalived.conf#カスタム構成ファイル

keepalivedの構成ファイル

global_defs {
notification_email {br /> [email protected]
}
smtp_server 192.168.23.1
smtp_connect_timeout 30
router_id MySQL-HA
}

vrrp_script chk_mysql {
script "/etc/keepalived/chk_mysql.sh"
interval 2
weight -5
fall 3
}

vrrp_instance VI_1 {
state BACKUP
interface ens32
mcast_src_ip 192.168.18.104
virtual_router_id 55
priority 95
advert_int 1

認証{
auth_type PASS
auth_pass 123456
}

virtual_ipaddress {
192.168.18.110/24
}

track_script {
chk_mysql
}
}

[root @ CentOS-2〜]#
[root @ CentOS-2〜]#cat /etc/keepalived/keepalived.conf
MySQLデュアルマスター+キープアライブにより高可用性クラスターを実現

3)mysqlステータス検出スクリプトを記述します
[root @ CentOS-2〜]#
[root @ CentOS-2〜]#vim /etc/keepalived/chk_mysql.sh

#!/ bin / bash
counter = $(netstat -na | grep "LISTEN" | grep "3306" | wc -l)
if ["$ {counter}" -eq 0]; その後、
systemctl stop keepalived
fi

[root @ CentOS-2〜]#
[root @ CentOS-2〜]#cat /etc/keepalived/chk_mysql.sh
MySQLデュアルマスター+キープアライブにより高可用性クラスターを実現
[root @ CentOS-2〜]#
[root @ CentOS- 2〜] #chmod + x / etc /keepalived/chk_mysql.sh#スクリプトに実行権限を付与する

4)启动keepalived
[root @ CentOS-2〜]#
[root @ CentOS-2〜]#systemctl start keepalived
[root @ CentOS-2〜]#systemctl enable keepalived

2. keepalived + MySQLデュアルマスターの可用性をテストする

1)mysqlステータスを表示する

master-a end:
[root @
CentOS〜]#[root @ CentOS〜]#systemctl status mysqld #mysqlが実行されているかどうかを確認
MySQLデュアルマスター+キープアライブにより高可用性クラスターを実現

master-b端:
[root @ CentOS-2〜]#
[root @ CentOS-2〜]#systemctl status mysqld
MySQLデュアルマスター+キープアライブにより高可用性クラスターを実現

2)VIPが存在するサーバーを確認します

Master-a end:
[root @
CentOS〜]#[root @ CentOS〜]#ip a #VIPがmaster-aエンドにあることがわかりました
MySQLデュアルマスター+キープアライブにより高可用性クラスターを実現

master-b端:
[root @ CentOS-2〜]#
[root @ CentOS-2〜] #ip a
MySQLデュアルマスター+キープアライブにより高可用性クラスターを実現

3)master-a側でmysqlサービスを停止し、VIPがどのサーバーにあるかを確認します

master-a端:
[root @ CentOS〜]#
[root @ CentOS〜]#systemctl stop mysqld
[root @ CentOS〜]#ip a
MySQLデュアルマスター+キープアライブにより高可用性クラスターを実現

master-b end:
[root @ CentOS-2〜]#
[root @ CentOS-2〜]#ip a#master-b endに移動して表示
MySQLデュアルマスター+キープアライブにより高可用性クラスターを実現

4)master-a側でmysqlサービスとkeepalivedサービスを開始し、master-b側でmysqlサービスを停止し、VIPがどのサーバーにあるかを確認します[root @ CentOS〜
]#
[root @ CentOS〜]#systemctl start mysqld #Startマスターaのmysql
[root @ CentOS〜]#systemctl start keepalived#master-aのkeepkeepalivedを開始[root @ CentOS〜
]#

[root@CentOS-2 ~]#
[root@CentOS-2 ~]# systemctl stop mysqld #停止master-b端的mysql
[root@CentOS-2 ~]#

[root @
CentOS〜]#[root @ CentOS〜]#ip a#master-aネットワークカードを確認する
MySQLデュアルマスター+キープアライブにより高可用性クラスターを実現

[root @ CentOS-2〜]#
[root @ CentOS-2〜]#ip a#master-b側のネットワークカードのステータスを確認する
MySQLデュアルマスター+キープアライブにより高可用性クラスターを実現

3.実験的結論

検証と比較により、MySQLデュアルマスタークラスターがkeepalivedによって高可用性を正常に達成したことがわかります

おすすめ

転載: blog.51cto.com/14783377/2486669