仮説

仮説

RHEL 7またはCentOS 7でTLSを介してGaleraおよびMariaDBバージョン10.1をインストールして使用し、SCL(ソフトウェアコレクション)を使用せずに強制モードでSELinuxを有効にする方法は?

ベストアンサー1

仮説

  • 誰ですかいいえRHEL 7 SCL(ソフトウェアコレクション)またはrh-mariadb101 {、-galera}を使用する
  • RHEL 7 / CentOS 7サーバーがありますエッフェルインストール済み
  • SELinux が必要で実行中で適用されます。
  • Firewalldはデフォルトで実行されブロックされます。
  • 3つのホストIPは1.2.3.4、1.2.3.5、1.2.3.6です。

ファイアウォールの構成

GaleraとMariaDBが正常に動作するために必要なポートは、TCPポート4444、4567、4568、およびUDPポート4567です。 MariaDBにはTCPポート3306が必要です。この構成では、ホスト 1.2.3.4、1.2.3.5、および 1.2.3.6 だけでなく、将来のホスト IP 1.2.3.7 もクラスタの一部になる可能性があると仮定します。また、この構成では、すべてのホストがポート3306に接続できると想定しています。ログインしてsu -root でログインします。次のコマンドを実行します。

# firewall-cmd --zone=public --add-port=3306/tcp
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4444 protocol=tcp accept'
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4444 protocol=tcp accept' --permanent
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4567 protocol=tcp accept'
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4567 protocol=tcp accept' --permanent
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4568 protocol=tcp accept'
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4568 protocol=tcp accept' --permanent
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4567 protocol=udp accept'
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4567 protocol=udp accept' --permanent

SELinuxポリシーの準備

ログインしてsu -ルーティングしてください。次の手順を実行または実行します。最後の行は、デフォルト以外のデータ位置にのみ必要です。/homeデータ位置をまたはsystemdに設定すると、/usrMariaDBの書き込みが禁止され、MariaDBが失敗します。この問題を解決するには、ProtectSystem=falseユニットファイルで設定してください/lib/systemd/system/mariadb.service。それからsystemctl daemon-reload

# mkdir selinux && cd selinux
# cat > galera.te << XYZZY
module galera 1.0;

require {
        type unconfined_t;
        type initrc_tmp_t;
        type rsync_exec_t;
        type init_t;
        type mysqld_t;
        class process setpgid;
        class file { execute execute_no_trans getattr open read };
        class service enable;
}

#============= mysqld_t ==============
allow mysqld_t initrc_tmp_t:file open;
allow mysqld_t rsync_exec_t:file { execute execute_no_trans getattr open read };
allow mysqld_t self:process setpgid;

#============= unconfined_t ==============
allow unconfined_t init_t:service enable;
XYZZY

# checkmodule -M -m galera.te -o galera.mod
# semodule_package -m galera.mod -o galera.pp
# semodule -i galera.pp
# semanage port -m -t mysqld_port_t -p tcp 4567
# semanage port -m -t mysqld_port_t -p udp 4567
# semanage port -m -t mysqld_port_t -p tcp 4444
# semanage port -m -t mysqld_port_t -p tcp 4568
# semanage fcontext -a -t mysqld_db_t "/alternate/path/to/data/mysql(/.*)?"

MariaDBリポジトリの追加、パッケージのインストール、構成

ダウンロードhttps://yum.mariadb.org/RPM-GPG-KEY-MariaDB。このキーを提供するWebサーバーが信頼できることを確認してください。新しいリポジトリのセキュリティはここに依存します。

# cp RPM-GPG-KEY-MariaDB /etc/pki/rpm-gpg/ ; chmod ugo+r /etc/pki/rpm-gpg/RPM-GPG-KEY-MariaDB
# cat > /etc/yum.repos.d/mariadb.repo << XYZZY
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/rhel7-amd64
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled = 1
XYZZY
# chmod ugo+r /etc/yum.repos.d/mariadb.repo
# yum install MariaDB-server galera

パッケージのインストール後にクラスタを作成する前に、一般的な手順に従ってMariaDBを構成する必要があります。以下の最初の行は、デフォルト値とは異なるデータ位置を使用する場合にのみ必要です。

# mysql_install_db --user=mysql --group=mysql --ldata=/alternate/path/to/data/mysql
# systemctl start mariadb
# mysql_secure_installation
# systemctl stop mariadb
# galera_new_cluster

MariaDB + Galeraが実行されていることを確認してください。その場合は、次の2つのホストを構成できます。以前のようにSELinuxルールとパッケージをインストールしますが、/etc/my.cnf.d/server.cnfの[galera]セクションに次の行を追加します。元の galera サーバの IP が 1.2.3.4 で、対応するピアサーバの IP が 1.2.3.5 および 1.2.3.6 であると仮定します。キャッシュサイズをシステムに適したサイズに設定します。

[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_provider_options="gcache.size=1024M; gcache.page_size=1024M"
wsrep_cluster_address=gcomm://1.2.3.4,1.2.3.5,1.2.3.6
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2

# systemctl start mariadb

この時点で、ログはデータが最初のサーバーから現在のサーバーにコピーされたことを示す必要があります。残りのサーバーでこの手順を繰り返します。

これで、ソースサーバーでMariaDBを停止し、/etc/my.cnf.d/server.cnfソースサーバーでMariaDBを再起動します。ピア間でデータが同期していることを確認してください。

TLSの有効化

このオプションのセクションでは、X.509v3 証明書と対応する秘密鍵をすでに生成していると仮定します。証明書と鍵の両方を暗号化されていないPEM形式で保存する必要があります。この例では、ファイル名がそれぞれserver.crtと仮定されていますserver.key

# cp server.crt /etc/pki/tls/certs/ ; chmod ugo+r /etc/pki/tls/certs/server.crt ; cp server.key /etc/pki/tls/private/server.key ; chmod 640 /etc/pki/tls/private/server.key ; chgrp mysql /etc/pki/tls/private/server.key

/etc/my.cnf.d/server.cnfこのセクションに次の行を追加します[mysqld]。 ssl_cert=/etc/pki/tls/certs/server.crt ssl_key=/etc/pki/tls/private/server.key

/etc/systemd/system/mariadb.service.d/TLS.conf次のコンテンツにします。

[service]
Environment=”MYSQLD_OPTS=--ssl”

Systemd は systemd と同じなので、systemctl daemon-reloadもう一度実行して新しい設定を読みます。

MariaDBがTLS接続を受け入れるには、サーバーを再起動する必要があります。この構成ステップではTLSを使用できますが、必須ではありません。

ログを確認して、MariaDBがTLSが有効になってロードされていることを確認してくださいjournalctl _SYSTEMD_UNIT=mariadb.service。 TLS 起動失敗は [警告] としてのみ記録されます。 ^(

このようなことをするのは今回が初めてです。改善されたらと思います:^)

おすすめ記事