sql >> データベース >  >> RDS >> MariaDB

MariaDB用にMaxScaleをインストールして構成する方法

    アプリケーションとデータベースの間にロードバランサーを追加する理由はさまざまです。トラフィックが多い場合(および異なるデータベースノード間でトラフィックのバランスを取りたい場合)、またはロードバランサーを単一のエンドポイントとして使用したい場合(フェイルオーバーの場合、このロードバランサーはトラフィックを使用可能/正常なノード。)データベースからのデータの書き込みと読み取りに異なるポートを使用したい場合もあります。

    これらすべての場合に、ロードバランサーが役立ちます。MariaDBクラスターがある場合、このための1つのオプションは、MariaDBデータベースのデータベースプロキシであるMaxScaleを使用することです。

    このブログでは、手動でインストールおよび構成する方法と、ClusterControlがこのタスクでどのように役立つかを示します。この例では、1つのマスターノードと1つのスレーブノードを備えたMariaDBレプリケーションクラスターを使用し、オペレーティングシステムとしてCentOS8を使用します。

    MaxScaleのインストール方法

    MariaDBデータベースが稼働中であり、MaxScaleをインストールするためのマシン(仮想または物理)もあると想定します。別のホストを使用することをお勧めします。マスターに障害が発生した場合、MaxScaleはスレーブノードにフェイルオーバーできます。それ以外の場合、実行中のサーバーがダウンした場合、MaxScaleはアクションを実行できません。

    MaxScaleをインストールするにはさまざまな方法があります。この場合、MariaDBリポジトリを使用します。 MaxScaleサーバーに追加するには、次を実行する必要があります。

    $ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
    
    [info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo
    
    [info] Adding trusted package signing keys...
    
    [info] Successfully added trusted package signing keys

    次に、MaxScaleパッケージをインストールします。

    $ yum install maxscale

    これで、MaxScaleノードがインストールされました。開始する前に、ノードを構成する必要があります。

    MaxScaleを構成する方法

    MaxScaleは認証や監視などのタスクを実行するため、特定の権限を持つデータベースユーザーを作成する必要があります。

    MariaDB [(none)]> CREATE USER 'maxscaleuser'@'%' IDENTIFIED BY 'maxscalepassword';
    
    MariaDB [(none)]> GRANT SELECT ON mysql.user TO 'maxscaleuser'@'%';
    
    MariaDB [(none)]> GRANT SELECT ON mysql.db TO 'maxscaleuser'@'%';
    
    MariaDB [(none)]> GRANT SELECT ON mysql.tables_priv TO 'maxscaleuser'@'%';
    
    MariaDB [(none)]> GRANT SELECT ON mysql.roles_mapping TO 'maxscaleuser'@'%';
    
    MariaDB [(none)]> GRANT SHOW DATABASES ON *.* TO 'maxscaleuser'@'%';
    
    MariaDB [(none)]> GRANT REPLICATION CLIENT on *.* to 'maxscaleuser'@'%';

    MariaDBバージョン10.2.2から10.2.10にも以下が必要であることに注意してください:

    MariaDB [(none)]> GRANT SELECT ON mysql.* TO 'maxscaleuser'@'%';

    データベースユーザーの準備ができたので、構成ファイルを見てみましょう。 MaxScaleをインストールすると、ファイルmaxscale.cnfが/etc/の下に作成されます。いくつかの変数とそれを構成するさまざまな方法があるので、例を見てみましょう:

    $ cat  /etc/maxscale.cnf 
    
    # Global parameters
    
    [maxscale]
    
    threads = auto
    
    log_augmentation = 1
    
    ms_timestamp = 1
    
    syslog = 1
    
    
    
    # Server definitions
    
    [server1]
    
    type=server
    
    address=192.168.100.126
    
    port=3306
    
    protocol=MariaDBBackend
    
    [server2]
    
    type=server
    
    address=192.168.100.127
    
    port=3306
    
    protocol=MariaDBBackend
    
    
    
    # Monitor for the servers
    
    [MariaDB-Monitor]
    
    type=monitor
    
    module=mariadbmon
    
    servers=server1,server2
    
    user=maxscaleuser
    
    password=maxscalepassword
    
    monitor_interval=2000
    
    
    
    # Service definitions
    
    [Read-Only-Service]
    
    type=service
    
    router=readconnroute
    
    servers=server2
    
    user=maxscaleuser
    
    password=maxscalepassword
    
    router_options=slave
    
    [Read-Write-Service]
    
    type=service
    
    router=readwritesplit
    
    servers=server1
    
    user=maxscaleuser
    
    password=maxscalepassword
    
    
    
    # Listener definitions for the services
    
    [Read-Only-Listener]
    
    type=listener
    
    service=Read-Only-Service
    
    protocol=MariaDBClient
    
    port=4008
    
    [Read-Write-Listener]
    
    type=listener
    
    service=Read-Write-Service
    
    protocol=MariaDBClient
    
    port=4006

    この構成では、サーバー定義セクションに表示されているように、192.168.100.126(マスター)と192.168.100.127(スレーブ)の2つのデータベースノードがあります。

    2つの異なるサービスもあります。1つはスレーブノードがある読み取り専用用で、もう1つはマスターノードがある読み取り/書き込み用です。

    最後に、サービスごとに1つずつ、合計2つのリスナーがあります。ポート4008でリッスンしている読み取り専用リスナーと、ポート4006でリッスンしている読み取り/書き込みリスナー。

    これは基本的な設定ファイルです。より具体的なものが必要な場合は、MariaDBの公式ドキュメントに従うことができます。

    これで開始する準備ができたので、実行するだけです:

    $ systemctl start maxscale.service

    そして確認してください:

    $ maxctrl list services
    ff
    $ maxctrl list servers

    maxctrlコマンドのリストはここにあります。また、maxadminを使用することもできます。それを管理するために。

    次に、接続をテストしましょう。このために、MaxScaleIPアドレスとテストするポートを使用してデータベースへのアクセスを試みることができます。この場合、ポート4006のトラフィックはserver1に送信され、ポート4008のトラフィックはserver2に送信されます。

    $ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4006 -e 'SELECT @@hostname;'
    
    +------------+
    
    | @@hostname |
    
    +------------+
    
    | server1   |
    
    +------------+
    
    $ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4008 -e 'SELECT @@hostname;'
    
    +------------+
    
    | @@hostname |
    
    +------------+
    
    | server2   |
    
    +------------+

    動作します!

    ClusterControlを使用してMaxScaleをデプロイする方法

    ここで、ClusterControlを使用してこのタスクを簡素化する方法を見てみましょう。このため、MariaDBクラスターがClusterControlに追加されていることを前提としています。

    ClusterControlに移動->MariaDBクラスターを選択->クラスターアクション->ロードバランサーの追加->MaxScale。

    ここで、新しいMaxScaleノードをデプロイするか、既存のMaxScaleノードをインポートすることもできます1。デプロイする場合は、IPアドレスまたはホスト名、管理者とユーザーのMaxScale資格情報、スレッドの数、およびポート(書き込みおよび読み取り専用)を追加する必要があります。 MaxScale構成に追加するデータベースノードを指定することもできます。

    ClusterControlアクティビティセクションでタスクを監視できます。完了すると、MariaDBクラスターに新しいMaxScaleノードが作成されます。

    そして、ClusterControlUIからMaxScaleコマンドを実行します。 SSH経由のサーバー。

    手動で展開するよりも簡単に見えますよね?

    結論

    トラフィックのバランスをとったり分割したりする場合、またはフェイルオーバーアクションの場合でも、ロードバランサーを使用することは優れたソリューションであり、MariaDB製品としてのMaxScaleはMariaDBデータベースに適したオプションです。

    インストールは簡単ですが、それがあなたにとって新しいものである場合、構成と使用法は難しいかもしれません。その場合、ClusterControlを使用して、より簡単な方法でデプロイ、構成、および管理できます。


    1. SQLiteクエリ:行のすべての列を取得しますか(android)?

    2. MySQLでソーシャルネットワークシステムのデータベースを設計するためのガイド

    3. WHERE句のオプションの引数

    4. Ubuntu18.04にNextcloud15をインストールする方法