序文
現在、インターネット上の主流の高可用性ソリューション ソフトウェアにはkeepalived
、、、、heartbeat
および があり、これらはheartbeat
高可用性ソフトウェアを実現するために比較的初期に使用されましたkeepalived
が現在は軽量で管理が容易で、高可用性を実現するのに使いやすいものになっています。ソリューション。
1.1 Keeplived の高可用性機能
Keepalived
これは、レイヤー 3、4、7 のスイッチング機構と同様のソフトウェアでありKeepalived
、ヘルスチェックと VRRP 冗長プロトコルの 2 つの機能があり、keepalived
モジュール設計となっており、異なるモジュールが異なる機能を担当します。
1.2 Keeplived の共通モジュール
Core
: これはkeepalived の中核であり、メインプロセスの開始と保守、グローバル設定ファイルのロードと分析などを担当します; :さまざまなヘルスチェック方法を含むkeepalived のヘルスチェック
check
を担当します。およびLVS構成分析を含む対応する構成分析: VRRPDサブプロセス、VRRPDサブプロセスはVRRPプロトコルを実装します。
VRRP
1.3 Keeplived の役割
Keepalived の役割は、Web サーバーのステータスを検出することです。Web サーバーまたは Mysql サーバーがダウンしている場合、または作業が失敗した場合、Keepalived はそれを検出し、障害のある Web サーバーまたは Mysqlサーバーをシステムから削除します。正常に動作している場合、Keepalived はWeb サーバーと Mysql サーバーをサーバー グループに自動的に追加します。
この利点は、手動介入の必要がなく、keepalived がこれらのタスクを自動的に完了し、手動で行う必要があるのは障害が発生した WEB または MYSQL サーバーを修復することだけであることです。
先ほどキープアライブの機能について触れましたが、Keepalived
レイヤー3、4、7のスイッチング機構と同様のソフトウェアです。
3階、4階、7階の理念を話しましょう
1.4 レイヤ 3、4、および 7 での Keeplived の実装原理
- トランスポート層: keepalived が Layer3 モードで動作する場合、keepalived は定期的にサーバー グループ内のサーバーに ICMP パケットを送信し(特定のサービスの IP アドレスに ping できないことが判明した場合)、keepalived はサーバーが無効であることを報告します。 、サーバー クラスターから削除します。(Layer3 のアプローチは、サーバーの IP アドレスが有効かどうかを、サーバーが正常に動作しているかどうかの基準として使用することです。)
- ネットワーク層: Layer4 は主にTCP ポートの状態に基づいてサーバーが正常に動作しているかどうかを判断します。たとえば、WEB サーバーのサービス ポートは通常 80 です。ポート 80 が開始されていないことが keepalived によって検出されると、keepalived はこのサーバーをサーバー グループから削除します。
- アプリケーション層: アプリケーション層ではレイヤー7が動作します。サーバープログラムがユーザーの設定に従って正常に動作しているかどうかをKeepalivedがチェックします。この方法で判断します。ユーザーの設定と一致しない場合、keepalivedはサーバーをサーバーから削除します。サーバーグループ。
keepalived の 3 つのモジュールのうち、VRRP モジュールがより重要であり、正式名はVirtual Router Redundancy Protocol
Virtual Router Redundancy Protocol です。その原理を一緒に見てみましょう。
2. Keepalived VRRP の原理
2.1 VRRPの原則1
- VRRP は、LAN 内でデフォルト ゲートウェイを構成する際の単一障害点の問題を解決するために IETF によって提案されました。
- VRRP はエッジ ネットワーク (ユーザーが使用するネットワーク) で広く使用されており、その設計目標は、特定の状況下で混乱を引き起こすことなく IP データ トラフィックのフェイルオーバーをサポートし、ホストが単一のルーターを使用できるようにし、実際のルーターの障害を利用できるようにすることです。この場合でも、ルーター間の接続は維持できます。
実際のネットワーク環境では、ほとんどの場合、通信する必要がある 2 つのホストに直接の物理接続がありません。このような状況では、それらの間のルートをどのように選択すればよいでしょうか? ホストは宛先ホストへのネクストホップ ルートをどのように選択しますか? この問題には通常、次の 2 つの解決策があります。
動的ルーティング プロトコル RIP、OSPF を使用し、
ホスト上で静的ルーティングを構成します。
ただし、ホスト上でロードステート ルーティングを構成することは、管理、メンテナンス コスト、サポートされているかどうかなど多くの問題があるため、非常に現実的ではありません。スタティック ルーティングの構成は非常に一般的になりましたが、ルーター (またはデフォルト ゲートウェイ) がシングル ポイントになることがよくあります。VRRP の目的は、スタティック ルーティングのシングル ポイント障害の問題を解決することです。VRRP は、選出プロトコルを通じて、LAN 内の仮想ルーターの中の特定の VRRP ルーターにルーティング タスクを動的に割り当てます。
2.1 VRRPの原則2
- VRRP テクノロジを通じて、2 つの物理ホストをルーターと見なすことができ、2 つの物理ホストは仮想ルーティング クラスターを形成します。最も高いマスターを持つホストが VIP を生成し、ユーザーによって開始された IP パケットの転送またはユーザー要求の処理を担当します。 Nginx+Keepalived の組み合わせでは、ユーザーのリクエストは keepalived VIP アドレスに直接アクセスし、マスターの対応するサービスとポートにアクセスします。
- VRRP仮想ルータークラスターでは、複数の物理ルーターで構成されますが、これらの複数の物理ルーターは同時に動作することはできませんが、MASTERと呼ばれるルーターがルーティング作業を担当し、その他はBACKUPであり、 MASTERは静的ではありません。各 VRRP ルーターが選挙に参加できるようになり、最終的な勝者が MASTER になります。
- MASTER には、仮想ルータの IP アドレスを持つ、または VIP になるなどのいくつかの権限があり、ゲートウェイ アドレスに送信されたパケットを転送し、ARP リクエストに応答する責任を負います。
- VRRP は選挙プロトコルを通じて仮想ルーターの機能を実装しており、すべてのプロトコル パケットは IP マルチキャスト (マルチキャスト) パケット (マルチキャスト アドレス 224.0.0.18) の形式で送信されます。仮想ルーターは、VRID (範囲 0 ~ 255) と一連の IP アドレスで構成され、外部では既知の MAC アドレスとして表示されます。したがって、仮想ルータ クラスタのグループでは、誰が MASTER であっても、MAC と VIP は外部的には同じです。クライアント ホストは、MASTER の変更のためにルーティング設定を変更する必要はありません。
- MASTER として機能する VRRP ルーターは常に VRRP マルチキャスト パケット (VRRP アドバタイズメント メッセージ) を送信し、BACKUP は優先順位が高くない限り MASTER をプリエンプトしません。MASTER が利用できない (BACKUP がマルチキャスト パケットを受信できない) 場合、複数の BACKUP の中で最も優先度の高い BACKUP が優先して MASTER になります。このプリエンプションは非常に高速であり、サービスの継続性が確保されます。セキュリティを考慮して、VRRP パケットは暗号化プロトコルを使用して実行されます。VRRP テクノロジーに基づいて、IP アドレスのドリフトを実現できます。これはフォールトトレラントなプロトコルであり、企業の運用環境で広く使用されています。
3.キープアライブサービスを展開する
サービスをデプロイする前に、仮想マシンを初期状態に復元する必要もあります。
IP | サーバーシステム | 仕える |
---|---|---|
192.168.28.166 | セントス7.9 | キープアライブ |
keepalived サービスをインストールするには 2 つの方法があります。1 つは yum コマンドを使用してインストールする方法、もう 1 つは keepalived をコンパイルしてインストールする方法です。
両方の方法をデモンストレーションします。
3.1 Keeplived サービスのコンパイルとインストール
3.1.1 公式 Web サイトで圧縮パッケージをダウンロードする
keepalived 公式ウェブサイトのアドレス - ここをクリック
wget -c https://www.keepalived.org/software/keepalived-1.2.0.tar.gz -P /usr/src/
証明書の有効期限が切れた場合は、次のように追加できます。--no-check-certificate
wget -c https://www.keepalived.org/software/keepalived-1.2.0.tar.gz -P /usr/src/ --no-check-certificate
3.1.2 圧縮パッケージを解凍する
[root@localhost ~]# cd /usr/src/
[root@localhost src]# tar xf keepalived-1.2.0.tar.gz
[root@localhost src]# cd keepalived-1.2.0/
[root@localhost keepalived-1.2.0]# ls
AUTHOR configure COPYING INSTALL keepalived.spec.in README
bin configure.in doc install-sh lib TODO
ChangeLog CONTRIBUTORS genhash keepalived Makefile.in VERSION
次に、コンパイルに必要なソフトウェア パッケージをインストールする必要があります: gcc gcc-c++ make cmake openssl openssl-devel Popt-devel など。
3.1.3 必要なコンパイル ソフトウェア パッケージをダウンロードする
yum install -y gcc gcc-c++ make cmake openssl openssl-devel popt-devel
ダウンロード後、プリコンパイル、コンパイル、インストールを開始できます。
3.1.4 コンパイルとインストール
./configure --prefix=/usr/local/keepalived/ --with-kernel_dir=/usr/src/kernels/3.10.0-514.el7.x86_64/
make -j4 && make -j4 install
コンパイル後、echo $? を使用して、前のコマンドが正しく実行されたかどうかを判断できます。
3.1.5 keepalived ファイルを対応するディレクトリにコピーします。
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir -p /etc/keepalived
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
3.1.6 サービスの開始
keepalived
一般に、キープアライブは、高可用性ソリューションを実現するための代替としてサーバー クラスターを使用できるため、WEB サービスまたは MySQL サービス マシンにデプロイする必要があるため、構成ファイルに関連するコンテンツを追加する必要もあります。業務内容。
3.2 yum インストール Keepalived
yum インストール方法はより速くて簡単です
3.2.1 キープアライブのインストール
yum install keepalived.x86_64 -y
3.2.2 設定ファイルの変更
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
#全局定义块
global_defs {
notification_email {
#指定keepalived在发生切换时需要发送email到的对象,一行一个;
[email protected]
}
#指定发件人
notification_email_from [email protected]
#指定smtp服务器地址
smtp_server 127.0.0.1
#指定smtp连接超时时间
smtp_connect_timeout 30
#运行keepalived机器的名称
router_id LVS_DEVEL
}
#VRRP实例定义块
vrrp_instance VI_1 {
#设置主机状态,MASTER|BACKUP
state MASTER
#对外提供服务的网络接口,要与本地的通信的接口一致
interface ens32
#VRID标记 ,路由ID,可通过tcpdump命令查看
virtual_router_id 51
#优先级,高优先级竞选为master
priority 100
#健康检查间隔,默认1秒
advert_int 5
#设置认证
authentication {
#认证方式
auth_type PASS
#认证密码
auth_pass 1111
}
#设置vip
virtual_ipaddress {
#IP段与本地的路由一致
192.168.28.188
}
}
3.2.3 サービスの開始
systemctl start keepalived.service
[root@localhost ~]# ps -ef|grep keepalived
root 9318 1 0 17:06 ? 00:00:00 /usr/sbin/keepalived -D
root 9319 9318 0 17:06 ? 00:00:00 /usr/sbin/keepalived -D
root 9320 9318 0 17:06 ? 00:00:00 /usr/sbin/keepalived -D
root 9360 5025 0 17:07 pts/0 00:00:00 grep --color=auto keepalived
運用環境では Keepalived を使用して通常に実行され、子プロセスの監視を担当する親プロセス、VRRP 子プロセス、Checkers 子プロセスの合計 3 つのプロセスが開始されます。
要約する
keepalived には多くの概念があり、最初に理解し、デプロイ方法を知る必要があります。次の記事では、keepalived と nginx を組み合わせて、keepalived サービスが設定されたサービスに基づいて高可用性ソリューションを実装できるようにします。内容が大丈夫だと思われる場合は、高評価を押してサポートしてください。