デュアル 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 8.0 のメモリ消費の詳細な分析

目次1. innodb_buffer_pool_size 2. innodb_log_buffer_...

MySQLの起動と接続方法の例分析

目次mysqldの起動方法方法 1: mysqld方法 2: mysqld_safe方法3: mys...

MySQL 5.7.23 解凍バージョンのインストールチュートリアル(画像とテキスト付き)

毎回インストールチュートリアルを探すのは面倒なので、後で確認できるように手順をバックアップします。解...

Docker のコンテナ データ ボリュームの概要

目次Dockerコンテナのデータ量データボリュームの使用方法1: コマンド-vを使用して直接マウント...

MySqlのインストールとアンインストールに関する詳細なチュートリアル

この記事では、MySqlのインストールとアンインストールのチュートリアルを参考までに紹介します。具体...

Zabbix の psk 暗号化と zabbix_get 値の組み合わせ

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

MySQL ストアド プロシージャで case ステートメントを使用する詳細な例

この記事では、例を使用して、MySQL ストアド プロシージャでの case ステートメントの使用方...

Tomcat9 のダウンロード、インストール、設定 + Eclipse への統合に関する詳細なチュートリアル

トムキャット公式サイトtomcatはローカルサーバーと同等であり、Webページを開くことができます設...

画像のフェードインとフェードアウト効果を実現する js

この記事では、画像のフェードインとフェードアウトを実現するためのjsの具体的なコードを参考までに紹介...

yum インストールエラーの問題を解決する 保護されたマルチライブラリバージョン

現在、クラウドサーバーに nginx をインストールする際、最初に zlib などの依存ライブラリを...

Vueは質問応答機能を実装する

1. リクエスト回答インターフェース2. ユーザーの回答が正しいかどうかを判断します。回答が正しい場...

MySQL 8.0.18はデータベースにユーザーを追加し、権限を付与します

1. データベースにログインするには、rootユーザーを使用することをお勧めします。 mysql -...

mysql の存在する例と存在しない例の詳細な説明

mysql の存在する例と存在しない例の詳細な説明テーブルA |列1 | 列1 | 列3 |テーブル...

Docker swarm を使用して Nebula Graph クラスターを迅速にデプロイする方法のチュートリアル

1. はじめにこの記事では、Docker Swarm を使用して Nebula Graph クラスタ...

Nginx で limit_req_zone を使用して同じ IP へのアクセスを制限する方法

Nginx は、ngx_http_limit_req_module モジュールの limit_req...