デュアル VIP を使用した高可用性 MySQL クラスタの構築

デュアル VIP を使用した高可用性 MySQL クラスタの構築

1. プロジェクトの説明:

このプロジェクトの目的は次のとおりです。
ビジネスの安定性を確保するために読み取りと書き込みの分離を実現し、クラスタ全体の通信と監視を容易にし、クラスタ全体をバッチで展開および管理できる、可用性が高く効率的な MySQL クラスタを構築します。

2. プロジェクト環境:

8 台のサーバー (2G、2 コア)、centos7.8
mysql5.7.30 mysqlルーター8.0.21
キープアライブ2.0.10 ザビックス アンシブル

2. プロジェクトの手順:

1. Centos7.8システムをインストールし、Ansibleをデプロイし、すべてのマシン間でSSHシークレットフリーチャネルを構成する
2. Zabbix監視システムを導入する
3. Ansibleを使用してバイナリモードでMySQLをインストールしてデプロイする
主にMySQLのバイナリバージョンをインストールするためのスクリプトを通じて
4. Ansible を使用して mysqlrouter と keepalived をインストールし、他の 2 つのミドルウェア サーバーに読み取り/書き込み分離と高可用性を実装し、keepalived に 2 つのインスタンスを構成し、2 つの VIP を実装し、相互にマスターとバックアップとして機能します。
高可用性パフォーマンスをさらに向上します。
5. 3 台の MySQL サーバーでマスター スレーブ レプリケーションを構成し、読み取り/書き込み分離用のユーザーを確立してマスター + 2 台のスレーブ ノード (準同期 + GTID) クラスターを形成し、データベース サービスを提供して、遅延バックアップ サーバー (30 分遅延) を展開します。
6. MySQL フェイルオーバー プラグインをデプロイしてみる (独自のスクリプトを作成するか、MHA を使用する)
自動フェイルオーバーを実現し、マスター障害時の機能を確保します。別のスレーブを自動的にマスターに昇格させ、他のスレーブは新しいマスターに切り替えてバイナリ ログを取得します。
7. 読み取り/書き込み分離、高可用性、マスター/スレーブフェイルオーバーを検証およびテストする
8. ストレス テスト ソフトウェア (sysbench) を使用して、MySQL クラスター全体のパフォーマンス (CPU、IO、メモリなど) をテストします。

3. プロジェクトコンセプトマップ:

ここに画像の説明を挿入

4. Zabbix監視システムを導入する

ここに画像の説明を挿入

4.1 準備:

Zabbix 監視サーバーと監視対象ホストを展開して、さらに具体的な監視タスクを準備します。

LNMP環境をインストールする

ソースからZabbixをインストールする

監視ホストをインストールし、基本設定を変更する

Zabbix監視Webページを初期化する

Zabbixの要件を満たすようにPHP設定ファイルを変更する

監視対象ホストをインストールし、基本設定を変更する

RHEL7 仮想マシンを使用して、LNMP 環境、Zabbix および関連する依存パッケージをインストールおよび展開し、データベースを構成し、Zabbix 監視プラットフォームを初期化します。監視対象端末を 2 つ使用し、ソース コードから Zabbix エージェントをインストールします。 Zabbix 実験を完了するには、実験環境を構築する必要があります。トポロジは表 1 に示されています。

表1 実験トポロジー

ここに画像の説明を挿入

4.2 手順:

ステップ1: 監視サーバーを展開する

1) LNMP環境をインストールする

Zabbix 監視管理コンソールは Web ページを通じて表示する必要があり、データの保存には MySQL を使用する必要があるため、まず Zabbix 用の基本的な LNMP 環境を準備する必要があります。

ここに画像の説明を挿入

2) Nginx設定ファイルを変更する

PHP 動的 Web サイトをサポートするように Nginx を設定します。実行する必要がある PHP スクリプトが多数あるため、PHP スクリプトの実行を高速化するために、Nginx のさまざまな fastcgi キャッシュを有効にすることも必要です。

ここに画像の説明を挿入

3) サービスを開始する

Nginx、PHP-FPM、MariaDB サービスを起動し、SELinux とファイアウォールを無効にします。

ここに画像の説明を挿入

4) クライアントテストLNMP環境

サーバーは PHP テスト ページを作成し、ブラウザーはそのページにアクセスして Web 接続をテストします。

ここに画像の説明を挿入

ステップ2: 監視サーバーZabbix Serverを展開する 1) ソースコードからZabbix Serverをインストールする

ほとんどのソース コード パッケージには依存パッケージが必要ですが、zabbix も同様です。ソース コードをコンパイルする前に、関連する依存パッケージをインストールする必要があります。

ここに画像の説明を挿入

2) Zabbixを初期化する

データベースを作成し、Zabbix Webページを起動する

ここに画像の説明を挿入

ここに画像の説明を挿入

ヒント: 設定ファイルが正しくないためにサービスを開始できない場合は、zabbix_server を再度実行しないでください。
必ず killall zabbix_server を使用してサービスをシャットダウンし、再起動してください。
Zabbix_agent 設定ファイルを変更し、Zabbix_agent サービスを開始します。

ここに画像の説明を挿入

ヒント: 設定ファイルが正しくないためにサービスを開始できない場合は、zabbix_agentd を再度実行しないでください。

必ず killall zabbix_agentd を使用してサービスをシャットダウンし、再起動してください。
ブラウザはZabbix_serverサーバーのWebページにアクセスします

ここに画像の説明を挿入

PHP設定ファイルを変更したら、ブラウザを使用して再度サーバーにアクセスします。
次のプロンプトメッセージが表示されます。

ここに画像の説明を挿入

ここに画像の説明を挿入

注: PHP LDAP 警告ステータスには問題はありません。
「データベースの初期化」ページで、図に示すようにデータベース関連のパラメータを入力します

ここに画像の説明を挿入

ログインページで、ユーザー(admin)とパスワード(zabbix)でログインします。
ログイン後、図のように言語環境を中国語に設定します。

ここに画像の説明を挿入

ここに画像の説明を挿入

ステップ3: 監視対象ホストにZabbixエージェントを展開する 1) ソースコードからZabbixエージェントソフトウェアをインストールする

2.100 と 2.200 でも同じ操作を実行します ( zabbixclient_web1を例にします)。

ここに画像の説明を挿入

2) エージェント設定ファイルを変更し、エージェントを起動します。

ここに画像の説明を挿入

3) 起動スクリプトをコピーする(オプション)

サービスの管理、サービスの開始と終了を容易にする起動スクリプトがあります。

起動スクリプトはzabbixソースディレクトリにあります。

ここに画像の説明を挿入

5. プロジェクト経験:

1. クラスター全体のアーキテクチャを計画し、慎重に構成し、事前にスクリプトを準備し、必要に応じて変更するようにしてください。

2. ファイアウォールと selinux の問題にはもっと注意を払う必要がある

3. MySQLクラスタリングと高可用性について深く理解している

4. 自動化されたバッチ展開と監視のアプリケーションと理解の拡大

5. Keepalivedの設定にはより慎重さが必要となり、IPアドレスの計画には新たな理解が求められる

6. デュアルVIPを使用する場合は、2つのロードバランシングレコードを追加してDNSポーリングを実装し、2つのVIPロードバランサーへの転送を実現します。

デュアル VIP を使用した高可用性 MySQL クラスターの構築に関するこの記事はこれで終わりです。高可用性 MySQL クラスターの関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL 高可用性クラスタの展開とフェイルオーバーの実装
  • クラスタrpmを使用してMySQLをインストールするための詳細な手順
  • MySQL クラスタの詳細な説明: 1 つのマスターと複数のスレーブのアーキテクチャ実装
  • MySQLクラスタ構築の詳しい説明

<<: 

>>:  仕事の効率を上げるJS略語スキル20選

推薦する

MySQL 整合性制約の例の詳細な説明

この記事では、MySQL の整合性制約について説明します。ご参考までに、詳細は以下の通りです。メイン...

HTML でよく使われるメタ百科事典 (推奨)

メタタグは、HTML言語のヘッド領域にある補助タグです。HTML文書のヘッダーにあるヘッドタグとタイ...

JavaScript Proxyオブジェクトの詳細な説明

目次1. プロキシとは何ですか? 2. 使い方は? 1. プロキシを使用する簡単な例2. 対象オブジ...

ローカル yum ソースの設定、国内 yum ソースの設定、epel ソースの設定を行う Linux の手順

1. ローカルyumソースを設定する1. ISOイメージをマウントする マウント -o loop /...

ポップアップ効果を実現するにはjsを使用します

この記事の例では、ポップアップ効果を実現するためのjsの具体的なコードを参考までに共有しています。具...

CSS3 のテキストとフォントの新しい設定

テキストシャドウテキストシャドウ: 水平オフセット 垂直オフセット ぼかし色互換性: IE10+ &...

Next.js 入門チュートリアル

目次導入Next.jsプロジェクトを作成するNext.js プロジェクトを手動で作成するcreact...

Linux の権限管理コマンド (chmod/chown/chgrp/unmask) の詳細な説明

目次chmod例権限に関する特別な注意分析するチョーンchgrp umask Linux オペレーテ...

Docker-compose におけるdepends_on 順序問題を解決する方法についての簡単な説明

コンテナをソートするためにdepends_onを使用しても、コンテナ間の依存関係の問題は完全には解決...

Ubuntu 18.04 Server バージョンのインストールと使用方法 (画像とテキスト)

1 システムのインストール手順OSバージョン:1804イメージのダウンロード: http://cd...

jsはショッピングサイトの虫眼鏡機能を実現します

この記事では、ショッピングサイトの虫眼鏡機能を実現するためのjsの具体的なコードを紹介します。具体的...

高可用性 Web クラスターを実装するための Keepalived+Nginx+Tomcat サンプル コード

高可用性 Web クラスターを実現する Keepalived+Nginx+Tomcat 1. Ngi...

Windows Server 2016 で Flash を有効にする方法

最近、VMware Horizo​​n を導入してテストしましたが、そのコンソールにはデフォルトで ...

React Hooks の一般的な使用シナリオ (概要)

目次1. ステートフック1. 基本的な使い方2. 更新3. 合併を実現する4. 遅延初期化状態5. ...