MySQL、MHA高可用性クラスタアーキテクチャを実現


MHA:Master HAは、主ノードを監視し、自動故障から他のスレーブノードへの移行を実現することができる.あるスレーブノードを新しいマスターノードに昇格させることにより、マスターコピーに基づいて実現するには、クライアントの協力が必要である.現在、MHAは主にマスターマルチスレーブのアーキテクチャをサポートしている.MHAを構築するには、レプリケーションクラスタの中に少なくとも3台のデータベースサーバが必要である.財力が荒い場合は、MHA監視管理サーバとして専用のサーバを使用することもできます.
MHA動作原理
  • 1ダウンタイムクラッシュのmasterからバイナリログイベント(binlog events)
  • を保存
  • 2最新の更新を含むslave
  • を識別する.
  • 3アプリケーション差異の中継ログ(relay log)は、他のslave
  • に適用される.
  • 4 masterから保存されたバイナリログイベント(binlog events)
  • を適用する
  • 5 slaveを新しいmaster
  • に昇格
  • 6他のslaveに新しいマスターを接続するコピー
  • 注意:MHAはsshに基づく必要があり、key検証登録方法
  • 関連パッケージ
  • MHAモニタサーバインストール:mha 4 mysql-manager-0.55-1.el5.noarch,mha4mysql-node-0.54-1.el5.noarch
  • 他のホストはクラスタサーバからインストール:mha 4 mysql-node-0.54-1.el5.noarch

  • 次は実験環境です
  • 4台centos-7ホスト、1台はMHA管理サーバーを構築し、他の3台は、1主2従アーキテクチャ
  • を行う.
  • 実験手順を理解しやすくするために、私はサーバー名をそれぞれ簡略化アルファベットで表します:MHAサーバー:MHA、masterサーバー:M 1、slaveサーバー:S 1、s 2
  • まず公式サイトに行ってMHAソフトウェアパッケージをダウンロードして、注意:必要×××
  • 公式サイト:https://code.google.com/archive/p/mysql-master-ha/
  • mha4mysql-manager-0.55-1.el5.noarch
  • mha4mysql-node-0.54-1.el5.noarch

  • 一、主従レプリケーションクラスタアーキテクチャの構成
    (一)、masterサーバの構成
    1、プロファイルの変更
        vim /etc/my.cnf
         [mysqld]          
        [mysqld]
        log-bin                 #       
        server_id=1               #          id  
        innodb_file_per_table   #          ,      
        skip_name_resolve=1     #  DNS  

    2,M 1に先ほどダウンロードしたMHAパッケージをインストール:mha 4 mysql-node-0.54-1.el5.noarch
        yum install mha4mysql-node-0.54-1.el5.noarch   

    3 mariadbサービスの開始
        systemctl start mariadb
        systemctl enable mariadb
    

    4、データベースセキュリティプログラムの実行
        "mysql_secure_installation"
    
                 :  root        ,    
                 :    root   ,
                 :          ,
                 :  root       ,
                 :    test      ,
                 :           ,

    5、複製権限を持つユーザーアカウントを作成し、MHAサーバーとデータベースを管理するユーザーとして使用します.このユーザーはすべての権限を持つ必要があります.
        1,             
            GRANT REPLICATION SLAVE  ON *.* TO 'repluser'@'HOST' IDENTIFIED BY 'replpass'; 
    
                    :
                    'repluser'@'HOST' :            ip   ,   %     10.0.0.%
                    IDENTIFIED BY:    
                    *.* :       ,   
                    GRANT REPLCATION SLAVE:           
    
                         repluser           
        2,  MHA    
            GRANT REPLICATION SLAVE  ON *.* TO 'mha'@'HOST' IDENTIFIED BY 'replpass';  
    
                    :
                    'mha'@'HOST' :            ip   ,   %     10.0.0.%
                    IDENTIFIED BY:    
                    *.* :       ,   
                    GRANT ALL :               

    (二)S 1サーバの構成
    1、プロファイルの変更
       vim /etc/my.cnf
        server_id=2
        read_only                   #         ,         
        log-bin
        relay_log_purge=0           #       
        skip_name_resolve=1
        innodb_file_per_table
        "log-bin"             
        "  :    MySQL    ,                ,
                          ?    MHA  ,  master   down  ,
        MHA                        ,                  "

    2,M 1に先ほどダウンロードしたMHAパッケージをインストール:mha 4 mysql-node-0.54-1.el5.noarch
        yum install mha4mysql-node-0.54-1.el5.noarch   

    3 mariadbサービスの開始
        systemctl start mariadb
        systemctl enable mariadb
    

    4、データベースセキュリティプログラムの実行
        "mysql_secure_installation"
    
                 :  root        ,    
                 :    root   ,
                 :          ,
                 :  root       ,
                 :    test      ,
                 :           ,

    6,レプリケーション権限のあるユーザーアカウントを使用してプライマリサーバに接続し、レプリケーションスレッドを起動する
        1,                   
            CHANGE MASTER TO 
                 MASTER_HOST='master_host',         #  master  IP
                 MASTER_USER='repluser',            #  master       
                 MASTER_PASSWORD='replpass',        #   master        MASTER_LOG_FILE='mysql-bin.xxxxx', #  master               
                 MASTER_LOG_POS=#;                  #       ,   master           ,show master logs;
    
        2,      IO_THREAD SQL_THREAD
             START SLAVE; 

    7,slaveサーバスレッドステータスの表示
        MariaDB [(none)]> show slave status\G
        *************************** 1. row ***************************
                       Slave_IO_State: Waiting for master to send event
                          Master_Host: 192.168.68.17
                          Master_User: repluser
                          Master_Port: 3306
                        Connect_Retry: 60
                      Master_Log_File: mariadb-bin.000001
                  Read_Master_Log_Pos: 557
                       Relay_Log_File: mariadb-relay-bin.000002
                        Relay_Log_Pos: 843
                Relay_Master_Log_File: mariadb-bin.000001
                     Slave_IO_Running: Yes  "       NO       "
                    Slave_SQL_Running: Yes "        NO        "
                      Replicate_Do_DB: 
                  Replicate_Ignore_DB: 
                   Replicate_Do_Table: 
               Replicate_Ignore_Table: 
              Replicate_Wild_Do_Table: 
          Replicate_Wild_Ignore_Table: 
                           Last_Errno: 0
                           Last_Error: 
                         Skip_Counter: 0
                  Exec_Master_Log_Pos: 557
                      Relay_Log_Space: 1139
                      Until_Condition: None
                       Until_Log_File: 
                        Until_Log_Pos: 0
                   Master_SSL_Allowed: No
                   Master_SSL_CA_File: 
                   Master_SSL_CA_Path: 
                      Master_SSL_Cert: 
                    Master_SSL_Cipher: 
                       Master_SSL_Key: 
                Seconds_Behind_Master: 0 "         0      "
        Master_SSL_Verify_Server_Cert: No
                        Last_IO_Errno: 0
                        Last_IO_Error: 
                       Last_SQL_Errno: 0
                       Last_SQL_Error: 
          Replicate_Ignore_Server_Ids: 
                     Master_Server_Id: 1
    

    (三)S 2サーバ上でS 1上の操作を同じ手順で行い、S 2の構成を完了する
    主従レプリケーションテスト
        1, M1      
        MariaDB [(none)]> create database a1;
        Query OK, 1 row affected (0.00 sec)
    
        M1 [(none)]> show databases;
        +--------------------+
        | Database           |
        +--------------------+
        | information_schema |
        | a1                 |
        | mysql              |
        | performance_schema |
        | test               |
        +--------------------+
        5 rows in set (0.00 sec)
    
        2, S1,S2       。
        S1 [(none)]> show databases;
        +--------------------+
        | Database           |
        +--------------------+
        | information_schema |
        | a1                 |
        | mysql              |
        | performance_schema |
        | test               |
        +--------------------+
        5 rows in set (0.01 sec)
    
        S2 [(none)]> show databases;
        +--------------------+
        | Database           |
        +--------------------+
        | information_schema |
        | a1                 |
        | mysql              |
        | performance_schema |
        | test               |
        +--------------------+
        5 rows in set (0.01 sec)
    

    (四)、MHAサーバーの配置
    1,すべてのホストSSHを実現し、key検証登録方法に基づいて、この方法はローカルエリアネットワークでしか使用できないことに注意する.
    ①任意のホスト上に一対の公開秘密鍵を生成し、例えばM 1上に生成する
        ssh-keygen
                       .ssh/  
                ls .ssh/
                id_rsa  id_rsa.pub 
    

    ②、それから全体をssh/ディレクトリを自機M 1にコピー
        ssh-copy-id  M1_IP
                 .ssh         
                ls .ssh/
                authorized_keys  id_rsa  id_rsa.pub  known_hosts

    ③、全体をsshディレクトリを他のすべてのホストにコピー
        ssh-copy-id MHA_IP
        ssh-copy-id S1_IP
        ssh-copy-id S2_IP

    ④, ssh接続テスト,パスワード入力なしで成功
    [root@MHA ~]# ssh 192.168.68.7
    Last login: Fri Mar 30 13:21:52 2018 from 192.168.68.1
    [root@master ~]#

    原理:すべてのホストは1つの公開鍵を使って、実はこれらのホストは1台のホストだと思って、だからこれ.sshファイルは決して漏らさないでください.漏洩したら、パスワードを必要とせずに任意のホストにログインできることを意味します.これは、ローカルエリアネットワークでしか使用できない理由です.もし、パブリックネットワークで使用するには、各ホストに公開秘密鍵を生成し、各ホストで互いにコピーしたり、1台のホストにコピーしたりする必要があります.このホストの上にsshディレクトリの下のauthorized_keysこのファイルは他のすべてのホストにコピーされます
    2、2つのパッケージをインストールします.
  • mha4mysql-manager-0.55-1.el5.noarch.rpm
  • mha4mysql-node-0.54-1.el5.noarch

  • 注意:epelソースを配置する必要があります.アリ雲のepelソースでいいです.
       yum install mha4mysql-manager-0.55-1.el5.noarch.rpm mha4mysql-node-0.54-1.el5.noarch.rpm 

    3,MHA構成を格納するディレクトリを作成する
        mkdir -pv /etc/mha/

    4.MHAプロファイルディレクトリに管理プロファイルを作成します.ファイル名は必要ありません.
        vim /etc/mha/app1.cnf
    
    #      
    
        [server default]                                          #    
        user=mha                                                  #mhauser(mysql              )
        password=123123                                           #  
        manager_workdir=/data/mha/test/                           #    
        manager_log=/data/mha/test/manager.log                    #    
        remote_workdir=/data/mha/test/                            #       
        ssh_user=root                                             #ssh  
        repl_user=reluser                                         #      (mysql              )
        repl_password=123123                                      #  
        ping_interval=1                                           #      ( )
    
        [server1]                                                 #    
        hostname=172.18.30.1                                      #    
        candidate_master=1                                        #           
        [server2]                                                 #    
        hostname=172.18.30.2                                      #    
        candidate_master=1                                        #           
        [server3]                                                 #    
        hostname=172.18.30.4                                      #    

    5,MHAが持参したSSH検出スクリプトによりSSHが正常に接続されているかを検出する
        [root@test ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf
        Sat Mar 31 19:18:47 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
        Sat Mar 31 19:18:47 2018 - [info] Reading application default configuration from /etc/mha/app1.cnf..
        Sat Mar 31 19:18:47 2018 - [info] Reading server configuration from /etc/mha/app1.cnf..
        Sat Mar 31 19:18:47 2018 - [info] Starting SSH connection tests..
        Sat Mar 31 19:18:49 2018 - [debug] 
        Sat Mar 31 19:18:47 2018 - [debug]  Connecting via SSH from [email protected](172.18.30.107:22) to [email protected](172.18.30.108:22)..
        Sat Mar 31 19:18:48 2018 - [debug]   ok.
        Sat Mar 31 19:18:48 2018 - [debug]  Connecting via SSH from [email protected](172.18.30.107:22) to [email protected](172.18.30.109:22)..
        Sat Mar 31 19:18:49 2018 - [debug]   ok.
        Sat Mar 31 19:18:50 2018 - [debug] 
        Sat Mar 31 19:18:47 2018 - [debug]  Connecting via SSH from [email protected](172.18.30.108:22) to [email protected](172.18.30.107:22)..
        Sat Mar 31 19:18:49 2018 - [debug]   ok.
        Sat Mar 31 19:18:49 2018 - [debug]  Connecting via SSH from [email protected](172.18.30.108:22) to [email protected](172.18.30.109:22)..
        Sat Mar 31 19:18:49 2018 - [debug]   ok.
        Sat Mar 31 19:18:50 2018 - [debug] 
        Sat Mar 31 19:18:48 2018 - [debug]  Connecting via SSH from [email protected](172.18.30.109:22) to [email protected](172.18.30.107:22)..
        Sat Mar 31 19:18:49 2018 - [debug]   ok.
        Sat Mar 31 19:18:49 2018 - [debug]  Connecting via SSH from [email protected](172.18.30.109:22) to [email protected](172.18.30.108:22)..
        Sat Mar 31 19:18:50 2018 - [debug]   ok.
        Sat Mar 31 19:18:50 2018 - [info] All SSH connection tests passed successfully.
    

    6,MHAが持参した検査コピー状況を利用して、コピーが正常かどうかを検査する
        [root@test ~]# masterha_check_repl --conf=/etc/mha/app1.cnf 
        Sat Mar 31 19:19:26 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
        Sat Mar 31 19:19:26 2018 - [info] Reading application default configuration from /etc/mha/app1.cnf..
        Sat Mar 31 19:19:26 2018 - [info] Reading server configuration from /etc/mha/app1.cnf..
        Sat Mar 31 19:19:26 2018 - [info] MHA::MasterMonitor version 0.56.
        Sat Mar 31 19:19:28 2018 - [info] GTID failover mode = 0
        Sat Mar 31 19:19:28 2018 - [info] Dead Servers:
        Sat Mar 31 19:19:28 2018 - [info] Alive Servers:
        Sat Mar 31 19:19:28 2018 - [info]   172.18.30.107(172.18.30.107:3306)
        Sat Mar 31 19:19:28 2018 - [info]   172.18.30.108(172.18.30.108:3306)
        Sat Mar 31 19:19:28 2018 - [info]   172.18.30.109(172.18.30.109:3306)
        Sat Mar 31 19:19:28 2018 - [info] Alive Slaves:
        Sat Mar 31 19:19:28 2018 - [info]   172.18.30.108(172.18.30.108:3306)  Version=5.5.56-MariaDB (oldest major version between slaves) log-bin:enabled
        Sat Mar 31 19:19:28 2018 - [info]     Replicating from 172.18.30.107(172.18.30.107:3306)
        Sat Mar 31 19:19:28 2018 - [info]     Primary candidate for the new Master (candidate_master is set)
        Sat Mar 31 19:19:28 2018 - [info]   172.18.30.109(172.18.30.109:3306)  Version=5.5.56-MariaDB (oldest major version between slaves) log-bin:enabled
        Sat Mar 31 19:19:28 2018 - [info]     Replicating from 172.18.30.107(172.18.30.107:3306)
        Sat Mar 31 19:19:28 2018 - [info]     Primary candidate for the new Master (candidate_master is set)
        Sat Mar 31 19:19:28 2018 - [info] Current Alive Master: 172.18.30.107(172.18.30.107:3306)
        Sat Mar 31 19:19:28 2018 - [info] Checking slave configurations..
        Sat Mar 31 19:19:28 2018 - [info]  read_only=1 is not set on slave 172.18.30.108(172.18.30.108:3306).
        Sat Mar 31 19:19:28 2018 - [warning]  relay_log_purge=0 is not set on slave 172.18.30.108(172.18.30.108:3306).
        Sat Mar 31 19:19:28 2018 - [info]  read_only=1 is not set on slave 172.18.30.109(172.18.30.109:3306).
        Sat Mar 31 19:19:28 2018 - [warning]  relay_log_purge=0 is not set on slave 172.18.30.109(172.18.30.109:3306).
        Sat Mar 31 19:19:28 2018 - [info] Checking replication filtering settings..
        Sat Mar 31 19:19:28 2018 - [info]  binlog_do_db= , binlog_ignore_db= 
        Sat Mar 31 19:19:28 2018 - [info]  Replication filtering check ok.
        Sat Mar 31 19:19:28 2018 - [info] GTID (with auto-pos) is not supported
        Sat Mar 31 19:19:28 2018 - [info] Starting SSH connection tests..
        Sat Mar 31 19:19:31 2018 - [info] All SSH connection tests passed successfully.
        Sat Mar 31 19:19:31 2018 - [info] Checking MHA Node version..
        Sat Mar 31 19:19:32 2018 - [info]  Version check ok.
        Sat Mar 31 19:19:32 2018 - [info] Checking SSH publickey authentication settings on the current master..
        Sat Mar 31 19:19:33 2018 - [info] HealthCheck: SSH to 172.18.30.107 is reachable.
        Sat Mar 31 19:19:34 2018 - [info] Master MHA Node version is 0.56.
        Sat Mar 31 19:19:34 2018 - [info] Checking recovery script configurations on 172.18.30.107(172.18.30.107:3306)..
        Sat Mar 31 19:19:34 2018 - [info]   Executing command: save_binary_logs --command=test --start_pos=4 --binlog_dir=/var/lib/mysql,/var/log/mysql --output_file=/data/mastermha/app1//save_binary_logs_test --manager_version=0.56 --start_file=mariadb-bin.000001 
        Sat Mar 31 19:19:34 2018 - [info]   Connecting to [email protected](172.18.30.107:22).. 
          Creating /data/mastermha/app1 if not exists..    ok.
          Checking output directory is accessible or not..
           ok.
          Binlog found at /var/lib/mysql, up to mariadb-bin.000001
        Sat Mar 31 19:19:34 2018 - [info] Binlog setting check done.
        Sat Mar 31 19:19:34 2018 - [info] Checking SSH publickey authentication and checking recovery script configurations on all alive slave servers..
        Sat Mar 31 19:19:34 2018 - [info]   Executing command : apply_diff_relay_logs --command=test --slave_user='mha' --slave_host=172.18.30.108 --slave_ip=172.18.30.108 --slave_port=3306 --workdir=/data/mastermha/app1/ --target_version=5.5.56-MariaDB --manager_version=0.56 --relay_log_info=/var/lib/mysql/relay-log.info  --relay_dir=/var/lib/mysql/  --slave_pass=xxx
        Sat Mar 31 19:19:34 2018 - [info]   Connecting to [email protected](172.18.30.108:22).. 
          Checking slave recovery environment settings..
            Opening /var/lib/mysql/relay-log.info ... ok.
            Relay log found at /var/lib/mysql, up to mariadb-relay-bin.000002
            Temporary relay log file is /var/lib/mysql/mariadb-relay-bin.000002
            Testing mysql connection and privileges.. done.
            Testing mysqlbinlog output.. done.
            Cleaning up test file(s).. done.
        Sat Mar 31 19:19:35 2018 - [info]   Executing command : apply_diff_relay_logs --command=test --slave_user='mha' --slave_host=172.18.30.109 --slave_ip=172.18.30.109 --slave_port=3306 --workdir=/data/mastermha/app1/ --target_version=5.5.56-MariaDB --manager_version=0.56 --relay_log_info=/var/lib/mysql/relay-log.info  --relay_dir=/var/lib/mysql/  --slave_pass=xxx
        Sat Mar 31 19:19:35 2018 - [info]   Connecting to [email protected](172.18.30.109:22).. 
          Checking slave recovery environment settings..
            Opening /var/lib/mysql/relay-log.info ... ok.
            Relay log found at /var/lib/mysql, up to mariadb-relay-bin.000002
            Temporary relay log file is /var/lib/mysql/mariadb-relay-bin.000002
            Testing mysql connection and privileges.. done.
            Testing mysqlbinlog output.. done.
            Cleaning up test file(s).. done.
        Sat Mar 31 19:19:36 2018 - [info] Slaves settings check done.
        Sat Mar 31 19:19:36 2018 - [info] 
        172.18.30.107(172.18.30.107:3306) (current master)
         +--172.18.30.108(172.18.30.108:3306)
         +--172.18.30.109(172.18.30.109:3306)
    
        Sat Mar 31 19:19:36 2018 - [info] Checking replication health on 172.18.30.108..
        Sat Mar 31 19:19:36 2018 - [info]  ok.
        Sat Mar 31 19:19:36 2018 - [info] Checking replication health on 172.18.30.109..
        Sat Mar 31 19:19:36 2018 - [info]  ok.
        Sat Mar 31 19:19:36 2018 - [warning] master_ip_failover_script is not defined.
        Sat Mar 31 19:19:36 2018 - [warning] shutdown_script is not defined.
        Sat Mar 31 19:19:36 2018 - [info] Got exit code 0 (Not master dead).
    
        MySQL Replication Health is OK.
    

    7,MHAを起動して、この命令を実行することに注意してフロントが運行して、端末はずっと詰まっています
        [root@test ~]# masterha_manager --conf=/etc/mha/app1.cnf
        Sat Mar 31 19:23:26 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
        Sat Mar 31 19:23:26 2018 - [info] Reading application default configuration from /etc/mha/app1.cnf..
        Sat Mar 31 19:23:26 2018 - [info] Reading server configuration from /etc/mha/app1.cnf..
    

    8、主従切替テスト
    我々はM 1ホストを手動でダウンタイムし、理論的にはMHAはS 1マシンをMasterサーバに引き継ぎ、M 1ホストを自動的に蹴り落とし、最終的にはS 1がmaster、S 2がslaveサーバとなる.
    1,M 1のmariadbサービスをダウンタイム
        systemctl  stop mariadb

    2,S 1に登録して状況を確認する
        MariaDB [(none)]> show master logs;
        +--------------------+-----------+
        | Log_name           | File_size |
        +--------------------+-----------+
        | mariadb-bin.000001 |       715 |
        | mariadb-bin.000002 |       245 |
        +--------------------+-----------+
        2 rows in set (0.00 sec)
    
        MariaDB [(none)]> show slave status;
        Empty set (0.00 sec)
    
        MariaDB [(none)]> show variables like '%read_only%';
        +------------------+-------+
        | Variable_name    | Value |
        +------------------+-------+
        | innodb_read_only | OFF   |
        | read_only        | OFF   |
        | tx_read_only     | OFF   |
        +------------------+-------+
        3 rows in set (0.00 sec)
        "      ,MHA       ,   B     read_only        。"

    3,S 2に登録して状況を調べる
            MariaDB [(none)]> show slave status\G
        *************************** 1. row ***************************
                       Slave_IO_State: Waiting for master to send event
                          Master_Host: 172.18.30.108
                          Master_User: repluser
                          Master_Port: 3306
                        Connect_Retry: 60
                      Master_Log_File: mariadb-bin.000002
                  Read_Master_Log_Pos: 245
                       Relay_Log_File: mariadb-relay-bin.000002
                        Relay_Log_Pos: 531
                Relay_Master_Log_File: mariadb-bin.000002
                     Slave_IO_Running: Yes
                    Slave_SQL_Running: Yes
                      Replicate_Do_DB: 
                  Replicate_Ignore_DB: 
                   Replicate_Do_Table: 
               Replicate_Ignore_Table: 
              Replicate_Wild_Do_Table: 
          Replicate_Wild_Ignore_Table: 
                           Last_Errno: 0
                           Last_Error: 
                         Skip_Counter: 0
                  Exec_Master_Log_Pos: 245
                      Relay_Log_Space: 827
                      Until_Condition: None
                       Until_Log_File: 
                        Until_Log_Pos: 0
                   Master_SSL_Allowed: No
                   Master_SSL_CA_File: 
                   Master_SSL_CA_Path: 
                      Master_SSL_Cert: 
                    Master_SSL_Cipher: 
                       Master_SSL_Key: 
                Seconds_Behind_Master: 0
        Master_SSL_Verify_Server_Cert: No
                        Last_IO_Errno: 0
                        Last_IO_Error: 
                       Last_SQL_Errno: 0
                       Last_SQL_Error: 
          Replicate_Ignore_Server_Ids: 
                     Master_Server_Id: 2
        1 row in set (0.00 sec)
    
        "    ,S2             S1  
    
            。"

    MHAのエラー処理の構築
    エラー1
        [root@test ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf
        Sat Mar 31 20:14:26 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
        Sat Mar 31 20:14:26 2018 - [info] Reading application default configuration from /etc/mha/app1.cnf..
        Sat Mar 31 20:14:26 2018 - [info] Reading server configuration from /etc/mha/app1.cnf..
        Sat Mar 31 20:14:26 2018 - [error][/usr/share/perl5/vendor_perl/MHA/Config.pm, ln383] Block name "server" is invalid. Block name must be "server default" or start from "server"(+ non-whitespace characters).
        Block name "server" is invalid. Block name must be "server default" or start from "server"(+ non-whitespace characters). at /usr/share/perl5/vendor_perl/MHA/SSHCheck.pm line 148.
    
        "  :           MHA                [server]       "
        [server default]
        user=mha
        password=centos
        manager_workdir=/data/mastermha/app1/
        manager_log=/data/mastermha/app1/manager.log
        remote_workdir=/data/mastermha/app1/
        ssh_user=root
        repl_user=repluser
        repl_password=centos
        ping_interval=1
    
        "[server]" 

    エラー2
                       ,                
        [root@centos-MHA ~]# masterha_check_ssh  --conf=/etc/mha/app1.cnf
        Can't locate MHA/SSHCheck.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/bin/masterha_check_ssh line 25.
        BEGIN failed--compilation aborted at /usr/bin/masterha_check_ssh line 25.
    
        [root@centos-MHA ~]# ln -s /usr/lib/perl5/vendor_perl/MHA/ /usr/lib64/perl5/vendor_perl/
        [root@centos-M1 ~]# ln -s /usr/lib/perl5/vendor_perl/MHA/ /usr/lib64/perl5/vendor_perl/
        [root@centos-S1 ~]# ln -s /usr/lib/perl5/vendor_perl/MHA/ /usr/lib64/perl5/vendor_perl/
        [root@centos-S2 ~]# ln -s /usr/lib/perl5/vendor_perl/MHA/ /usr/lib64/perl5/vendor_perl/