Linuxクラスタの概要と高可用性ソフトウェアkeepalivedの構成、テスト


一、Linuxクラスタの概要


1)、機能によって二つの種類に分けられる:高可用性と負荷均衡高可用性クラスタは通常2台のサーバーであり、1台は仕事であり、もう1台は冗長である.サービスを提供する機械がダウンした場合、冗長は代わりにサービスを提供する.
2)、高可用性を実現するオープンソースソフトウェアは、heartbeat、keepalivedheartbeat:多くのBUGがあり、長い間更新されていないので、お勧めしません.3)、ロードバランシングクラスタは配布器として1台のサーバーが必要で、それはユーザーの要求をバックエンドのサーバーに配布する処理を担当して、このクラスタの中で、配布器のほかに、ユーザーにサービスを提供するサーバーで、これらのサーバーの数は少なくとも2のためにロードバランシングを実現するオープンソースソフトウェアはあります:LVS、keepalived、haproxy、nginx、ビジネスのF 5、Netscalerはコストが高くて、優勢:もっと高い同時量、安定性がよい.

二、高可用性のオープンソースソフトウェアkeepalived紹介


1)、heartbeatはcentos 6にいくつかの問題があり、実験効果に影響するため、keepalivedを使用して高可用性クラスタを実現した.2)、keepalivedはVRRP(Virtual Router Redundancy Protocl)によって高可用性を実現する.3)、このプロトコルでは複数の機能が同じルータを1つのグループに構成し、このグループにはmasterロール1つとN(N>=1)個のbackupロールがあります.masterは、VRRPプロトコルのパケットをマルチキャストで各backupに送信し、backupがmasterから送信されたVRRPパケットを受信できない場合、masterがダウンタイムしたとみなされます.この場合、各backupの優先度に基づいて、誰が新しいマスターになるかを決定する必要がある.4)、Keepalivedにはcore、check、vrrpの3つのモジュールが必要です.coreモジュールはkeepalivedの核心であり、メインプロセスの起動、メンテナンス、グローバルプロファイルのロードと和解を担当する.checkモジュールは健康検査を担当する.vrrpモジュールはVRRPプロトコルを実装するために使用される.

三、keepalivedで高可用性を構成する


1)、2台の機械aとbを用意し、aをmasterとし、bをbackupとする.両機器ともyum install-y keepalived 2を実行し、両機器ともnginxをインストールし、nginxをインストールする:yum install-y nginxをインストールする(どのサービスが高可用性を実現するかは我々の実験ではnginxを使用し、nginxは負荷均衡を行うことができる)3)、プロファイル設定vipを100編集a上のkeepalivedプロファイルに変更する[root@a ~]# >/etc/keepalived/keepalived.conf#クリアの内容は以下の内容を加えます.
   global_defs {                      # 
   notification_email {            # 
   [email protected]
 }
   notification_email_from [email protected]       # 
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {                      # 
    script "/usr/local/sbin/check_ng.sh"     #shell 
    interval 3                                               # 3S
}

vrrp_instance VI_1 {            # master
    state MASTER
    interface ens33                   # 
    virtual_router_id 51            # ID
    priority 100                         # 
    advert_int 1                       #
    authentication {
        auth_type PASS                    # 
        auth_pass aminglinux>com
    }
    virtual_ipaddress {                        # IP , 。
        192.168.188.100
    }

    track_script {                        # 
        chk_nginx
    }

}

コンテンツはhttps://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_keepalived.conf取得
aマシンのモニタリングスクリプトの編集:vi/usr/local/sbin/check_ng.shは以下の内容を定める.
 #!/bin/bash
# , 
d=`date --date today +%Y%m%d_%H:%M:%S`
# nginx 
n=`ps -C nginx --no-heading|wc -l`
# 0, nginx, nginx ,
# 0, nginx , keepalived
if [ $n -eq "0" ]; then
        /etc/init.d/nginx start
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

内容はhttps://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_check_ng.shチェックスクリプト755へのアクセス権の取得:chmod 755/usr/local/sbin/check_ng.shsystemctl start keepalived aマシン起動サービスpa aux|grep keepそのログファイルを起動するかどうかを確認します:/var/logs/messagesそれからそのIPアドレスを確認します:ip addファイアウォールが開いているかどうかを確認し、私たちはそれらを閉じる必要があります.iptables -nvLgetenforcesystemctl stop firewalld
4)、Bマシンからプロファイルを編集するように構成する:元のkeepalivedをクリアする.confファイル内容:>/etc/keepalived/keepalived.conf編集:vi/etc/keepalived/keepalived.confは以下の内容を追加します.
global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com
    }
    virtual_ipaddress {
        192.168.188.100
    }

    track_script {
        chk_nginx
    }

}

内容はhttps://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_keepalived.conf私たちが修正しなければならない点は、重みを90に変更し、仮想IPをホストと同じ100に変更し、idを維持することです.
Bマシンモニタスクリプト、vi/usr/local/sbin/check_を上から編集ng.shは以下の内容を加える.
# , 
d=`date --date today +%Y%m%d_%H:%M:%S`
# nginx 
n=`ps -C nginx --no-heading|wc -l`
# 0, nginx, nginx ,
# 0, nginx , keepalived
if [ $n -eq "0" ]; then
        systemctl start nginx
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

コンテンツhttps://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_check_ng.shスクリプト755へのアクセス権Bを取得してサービスsystemctl start keepalivedps aux|grep keepも起動する
6)、yumでインストールnginxアクセスページディレクトリは:/usr/share/nginx/html/index.html

四、高可用性テスト


まず、curl-Iでnginxバージョンを表示できるなど、2台のマシンのnginxの違いを特定します.
テスト1:masterのnginxサービスをオフにします.
keepalivedサービスを開始すると、nginxはオフになりません.検出スクリプト:テスト2:masterにiptablesルールを追加iptables-I OUTPUT-p vrrp-j DROPはマシンの切替サービステストにテストできません3:masterのkeepalivedサービスを閉じてIP 100にアクセスし、直接ジャンプしました.テスト4:master上のkeepalivedサービスを起動してIP 100にアクセスし、直接プライマリにジャンプします.
nginx以外は高可用性を構成できますが、mysqlなどは可能です.