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

推薦する

フレックスレイアウトは、1行あたりの固定行数と適応レイアウトを実現します。

この記事では、1行あたりの固定行数+アダプティブレイアウトを実現するフレックスレイアウトを紹介し、皆...

Pengyou.com モバイル クライアントのダウンロード ページのデザイン共有 (画像とテキスト)

まずは簡単なデータを見てみましょう。 Googleが発表したレポートによると、 ①中国の都市の97%...

MySQL での実行計画の explain コマンド例の詳細な説明

序文explain コマンドは、クエリ オプティマイザーがクエリの実行を決定した方法を確認する主な方...

Vue の基本的な手順の例のグラフィック説明

目次1. v-on指令1. 基本的な使い方2. 糖衣構文3. イベントパラメータ4. イベント修飾子...

Linuxはlsof/extundeleteツールを使用して、誤って削除されたファイルやディレクトリを復元します。

序文Linux には Windows のような目立つごみ箱がないため、簡単に復元することはできません...

vmware14Pro で Ubuntu システム インターフェイスが小さすぎる問題の解決方法の詳細な説明

1. 動作環境vmware14proウブントゥ 16.04LTS 2. 問題の説明vmware14P...

Linuxサーバーのディスク容量を拡張する方法

目次序文ステップ序文今日、es ログが記録されていないことに気付きました。filebeat、elas...

ウェブサイトのAboutページの紹介コンテンツの書き方

公式、電子商取引、ソーシャル ネットワーキング、個人のいずれの Web サイトでも、訪問者に貴重な時...

JavaScript排他的思考の具体的な実装

前回のブログで、Xiao Xiong は関連する要素の操作方法を更新しましたが、同じ要素のグループが...

ソフトウェア 404 と 404 エラーとは何か、またそれらの違いは何ですか

まず、404 とソフト 404 とは何でしょうか? 404: 簡単に言えば、ユーザーが存在しないペー...

dns-prefetch とは何ですか? フロントエンドの最適化: DNS の事前解決によりページ速度が向上します

目次背景1. dns-prefetch とは何ですか? 2. dns-prefetch を設定するに...

mysql bin-log ログファイルを sql ファイルに変換する方法

mysqlbinlogのバージョンを表示mysqlbinlog -V [--version] bin...

Javascriptを使用して滑らかな曲線を生成する方法

目次序文ベジェ曲線の紹介二次ベジェ曲線3次ベジェ曲線ベジェ曲線計算機能フィッティングアルゴリズム付録...

MySQL トリガーの使用方法と利点と欠点の紹介

目次序文1. トリガーの概要2. トリガーの作成2.1 トリガー構文の作成2.2 コード例3. トリ...

Docker はキューとタスクのスケジューリングを実現するために Laravel アプリケーションをデプロイします

前回の記事では、Docker を使用して Laravel アプリケーションをデプロイする方法について...