デュアル 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選

推薦する

Linux での grep コマンドの使い方の詳細な説明

Linux grep コマンドLinux の grep コマンドは、ファイル内の条件を満たす文字列を...

W3C が推奨するモバイル Web マークアップ言語 XHTML Basic 1.1

W3C は最近、「 XHTML Basic1.1 」と「 Mobile Web Best Prac...

MySQL可視化ツールNavicatへの接続方法

Navicatをインストールした後次のエラーが発生する場合があります: Client does no...

ウェブデザイナーが注意すべき 43 のウェブデザインの間違い

これはウェブサイトのユーザビリティに関する記事です。著者は自身の経験に基づいて、ウェブサイトのデザイ...

Iframe 適応高さコードに関する 3 つの議論

B/S システム インターフェースを構築する場合、メイン ページ index.html 内に他のペー...

Node.js を使用して png 画像に透明なピクセルがあるかどうかを判断する方法

背景PNG 画像は jpg 画像よりも多くのストレージスペースを占有しますが、PNG 画像の品質は大...

Nodejs 配列キューと forEach アプリケーションの詳細な説明

この記事では、Nodejs 開発プロセスで遭遇する配列の特性によって発生する問題と解決策、および配列...

MySQL InnoDB ロック メカニズムの詳細な例

1. InnoDBのロック機構InnoDB ストレージ エンジンは、行レベルのロックとトランザクショ...

新しいカーネルをLinuxシステムに移植する手順

1. ubuntu16.04 イメージと対応する ubuntu16.04 カーネル バージョンのソー...

Docker Compose で利用可能な環境変数の詳細な説明

Compose のいくつかの部分は、何らかの方法で環境変数を扱います。このチュートリアルは、必要な情...

JavaScript の例におけるループの使用法の詳細な説明

退屈だったので、ループに関する簡単な演習をいくつかまとめてみました。JS を学び始めたばかりの方に役...

HTML マーキータグの使用例

このタグはHTML3.2の一部ではなく、MSIE3以降のカーネルのみをサポートしています。そのため、...

入力ボックスのカーソルサイズの表示が一貫していない問題の解決方法

入力ボックス内のカーソルのサイズが一定ではありませんIE7とChromeの違いは非常に明白ですまず、...

ZabbixはPSK共有キーを使用してサーバーとエージェント間の通信を暗号化します。

Zabbix バージョン 3.0 以降、Zabbix サーバー、Zabbix プロキシ、Zabbi...