※本ページは、”Creating ULN Mirrors for Exadata Database Server Updates” の翻訳です。


Exadataパッチ・マネージャ(patchmgr) – 定期的な更新でExadataを更新するためのツール- データベース・サーバーを更新するときに、dnf (以前のyum)リポジトリをソースとして使用できることをご存知でしょうか?

また、Exadataの月次更新がUnbreakable Linux Network (ULN)のチャネルとして使用可能であることをご存知でしょうか?

お客様がこの二つの質問に「はい」と答えてくださることを期待しています。 しかしながら、私はそれがよく知られていないことを示す十分なSlackと電子メールメッセージを受け取りましたので、このブログを書くことにしました。

前述のとおり、KVMホスト、KVMゲスト、DomU、Dom0(Exadata X5 〜 Exadata X8)を更新すると、patchmgrに適用する更新のURLの場所をpatchmgrに指定でき、patchmgrはこれを使用してパッケージを更新できます。patchmgrの構文を見ると、事前チェックおよびアップグレード・コマンドで使用可能な–yum_repoスイッチを確認できます。

./patchmgr --dbnodes database_node_file
  { --backup [--rolling] [--unkey] |
  --precheck { --yum_repo base_URL | --iso_repo zipped_iso_file } [ --target_version version ] [--unkey] |
  --upgrade { --yum_repo base_URL | --iso_repo zipped_iso_file } [ --target_version version ] [--rolling] [--unkey] | 
  --complete [ --target_version version ] [--unkey] |
  --rollback [--rolling] [--unkey] |
  --cleanup  [--unkey] }
  [ --log_dir { log_directory | auto } ]

 

通常は、My Oracle Supportからpatchmgrを実行するサーバーにisoファイルをダウンロードして実行すると思いますが、Exadataのフリートが非常に多数の場合はどうなるでしょうか?たとえば、多数のVMクラスタがある場合、または適用する必要がある幅広いターゲット・バージョンがある場合、これらのすべてのアセットに更新を管理および適用する管理者が多数存在する場合など。パッチ・ソース管理を一元化することを推奨します。

Exadataデータベース・サーバー・リソース用のパッケージを広く配布しやすく標準化するために、データベース・サーバー更新をULNのチャネルとしてパッケージ化しています。

補足- ストレージサーバーは、非アクティブなシステムパーティションに所定の位置から更新されるため、リポジトリは必要ありません。RoCEスイッチ、管理スイッチの更新は、スイッチ固有の方法で提供されるため、パッケージ・リポジトリも必要ありません。

ULNを見てみましょう。https://linux.oracle.com のULNにログインし、「Channel」タブをクリックすると、次のような内容が表示されます。

ULN

下部を見て、Oracle Linux 8リポジトリを参照すると、”Exadata release 23.1.5.0.0 db server installation packages (x86_64)” および”Exadata release 23.1.9.0.0 db server installation packages (x86_64)”などのチャネルが表示されます。これらは実際のリポジトリ名(使用した例の「exadata_dbserver_23.1.5.0.0_x86_64_base」と「exadata_dbserver_23.1.9.0.0_x86_64_base」)に対応しており、それぞれ約1,060個ほどのパッケージがあります。

ESS23

また、これらの更新は、「latest(最新)」リポジトリを使用するのではなく、フルインストールとして提供されることに注意してください。Exadataハードウェアおよびソフトウェア・スタック全体で、各リリースのパッケージを厳選し、テストおよび認証します。

ULNのチャネルが表示されることは分かりましたが、どのように使用したら良いでしょうか?

ご質問ありがとうございます。設計上、patchmgrはULNと直接は通信しません。patchmgrがこれらのチャネルを使用できるようにするには、データベース・サーバーとpatchmgrを実行しているシステムがアクセスできる内部サーバーにミラー化する必要があります。

dnfミラーを入力します。

dnf (またはyum)ミラーは、ULNを登録しているLinuxサーバーであり、特定のチャネルをダウンロード(ミラー)して、HTTPを介して使用できるように構成されています。

さあ始めましょう。ここでいくつかの仮定をします:

  1. Oracle Linux 8を実行している、dnfミラー・サーバーとして使用できるVMまたはサーバーがあります(以下の例では「yumrepo」と呼ばれています)。
  2. dnfミラー・サーバーへのrootアクセス権があります。
  3. dnfミラー・サーバーは、更新するすべてのExadataデータベース・サーバー(KVMホスト、KVMゲスト、Dom0およびDomU)からアクセスできます。
  4. ULNでアクティブなCSIがあります。

これから取り上げる主なステップは次のとおりです。

  1. ULNへのdnfミラー・サーバーの登録
  2. 1つ以上のExadataチャネルへのサーバーのサブスクライブ
  3. チャネルをサーバにミラーリング
  4. ミラー化されたチャネルに対応するようにApache HTTPを構成します

 

ULNへのdnfミラー・サーバーの登録

このステップは簡単です。各OL8インストールには、dnfミラー・サーバーをULNに「接続」し、ミラー化するチャネルの知識をサーバーに与えるためのuln_registerという単純なユーティリティが含まれています。

dnfミラー・サーバー上のrootユーザーとして、uln_registerユーティリティを実行します。

[root@yumrepo ~]# uln_register

 

後続のステップは非常に簡単で、ここで説明されています。

また、このサーバーがYumサーバーであることをULNに通知する必要があります。この方法としては、uln-channelコマンドを使用します。

[root@yumrepo ~]# uln-channel --enable-yum-server

プロンプトが表示されたら、適切なULNユーザー名とパスワードを指定します。

 

Exadataチャネルの追加

これで、dnfミラー・サーバーがULNに登録されたので、関連するExadataチャネルをサブスクライブできます。これを行うには、登録したdnfミラー・サーバーのために linux.oracle.com の「System Detail」ページに移動します。次のようになります。

ULN mirror details

 

「Manage Subscriptions」ボタンに注目してください。クリックすると、適切なExadataリリース・チャネルを追加できるシャトル・メニューが表示されます。Exadata System Software 23.1.9、23.1.8および23.1.7のチャネルを追加しました。

save subscription

「Save Subscriptions」をクリックすると、サーバーで次にdnf更新を実行するときに、これらのリポジトリをミラー化に使用できるようになります。

次に進む前に、使用可能なチャネルを確認します。多数のExadataリリースが使用可能であることがわかります。そのため、単一のdnfミラー・サーバーを使用して、Exadata System Software 22.1 (Oracle Linux 7に基づく)、23.1 (Oracle Linux 8に基づく)および将来のリリースをホストできます。ひとつのミラーから!

dnfミラーにチャネルを追加するもう1つの方法は、uln-channel コマンドを使用することです。ヘルプを見てみましょう。

[root@yumrepo ~]# uln-channel --help
Usage: uln-channel [options]

Options:
-c CHANNELS, --channel=CHANNELS
                        name of channel you want to (un)subscribe
-a, --add             subscribe to channel
-r, --remove          unsubscribe from channel
-l, --list            list channels
-b, --base            show base channel of a system
-L, --available-channels
                        list all available child channels
-v, --verbose         verbose output
-u USER, --user=USER  your user name
-p PASSWORD, --password=PASSWORD
                        your password
--enable-yum-server   set yum server
--disable-yum-server  set yum server
-h, --help            show this help message and exit

 

コマンドラインから1つ以上のチャネルを追加するには、次のようにします。

uln-channel -a -c channel [-c channel …]

 

チャネルを確認するには、uln-channel –listにサブスクライブしたdnfミラー・サーバーを使用します。

[root@yumrepo ~]# uln-channel --list
ol8_x86_64_UEKR7
ol8_x86_64_baseos_latest
ol8_x86_64_appstream
ol8_x86_64_ksplice
exadata_dbserver_23.1.9.0.0_x86_64_base
exadata_dbserver_23.1.8.0.0_x86_64_base
exadata_dbserver_23.1.7.0.0_x86_64_base

 

これらのいずれかをミラー化する前に、それらの情報(特に、ミラー化時にそれぞれが使用する領域)を少し取得します。

[root@yumrepo ~]# dnf repoinfo exadata*

This system is receiving updates from Unbreakable Linux Network or Spacewalk.
Exadata release 23.1.7.0.0 db server installation packages (x86_64)                               491 kB/s | 1.4 MB     00:02
Exadata release 23.1.8.0.0 db server installation packages (x86_64)                               3.3 kB/s | 3.0 kB     00:00
Exadata release 23.1.9.0.0 db server installation packages (x86_64)                               3.3 kB/s | 3.0 kB     00:00
Repo-id            : exadata_dbserver_23.1.7.0.0_x86_64_base
Repo-name          : Exadata release 23.1.7.0.0 db server installation packages (x86_64)
Repo-status        : enabled
Repo-revision      : 1698083972
Repo-updated       : Mon 23 Oct 2023 05:59:32 PM GMT
Repo-pkgs          : 1,069
Repo-available-pkgs: 1,029
Repo-size          : 1.3 G
Repo-baseurl       : https://linux-update.oracle.com/XMLRPC/GET-REQ/exadata_dbserver_23.1.7.0.0_x86_64_base
Repo-expire        : 1 second(s) (last: Mon 22 Jan 2024 03:50:32 AM GMT)

Repo-id            : exadata_dbserver_23.1.8.0.0_x86_64_base
Repo-name          : Exadata release 23.1.8.0.0 db server installation packages (x86_64)
Repo-status        : enabled
Repo-revision      : 1700242893
Repo-updated       : Fri 17 Nov 2023 05:41:33 PM GMT
Repo-pkgs          : 1,070
Repo-available-pkgs: 1,030
Repo-size          : 1.4 G
Repo-baseurl       : https://linux-update.oracle.com/XMLRPC/GET-REQ/exadata_dbserver_23.1.8.0.0_x86_64_base
Repo-expire        : 1 second(s) (last: Mon 22 Jan 2024 12:45:36 AM GMT)

Repo-id            : exadata_dbserver_23.1.9.0.0_x86_64_base
Repo-name          : Exadata release 23.1.9.0.0 db server installation packages (x86_64)
Repo-status        : enabled
Repo-revision      : 1703126080
Repo-updated       : Thu 21 Dec 2023 02:34:40 AM GMT
Repo-pkgs          : 1,070
Repo-available-pkgs: 1,030
Repo-size          : 1.5 G
Repo-baseurl       : https://linux-update.oracle.com/XMLRPC/GET-REQ/exadata_dbserver_23.1.9.0.0_x86_64_base
Repo-expire        : 1 second(s) (last: Mon 22 Jan 2024 12:45:37 AM GMT)
Total packages: 3,209

各チャネルのサイズは約1.5 GBで、それぞれ約1,050個のパッケージが含まれていることが分かると思います。Exadataリリースには、Oracle DatabaseおよびExadataシステム・ソフトウェアの実行に必要なパッケージのみが含まれているため、パッケージ・リストは、1,700を超えるパッケージで構成される base Linux 8リポジトリと比較してはるかに小さいことに注意してください。

 

ミラーディレクトリを準備する

次に、チャネルがミラー化される場所を準備する必要があります。

/u01/yumをベース・ディレクトリとして使用します。

[root@yumrepo ~]# mkdir -p /u01/yum

 

Apache HTTP Serverおよびdnf-utilsのインストール

チャネルをローカルにミラー化するには、yum-utilsがサーバーにインストールされていることを確認する必要があります。

[root@yumrepo ~]# rpm -qa | grep -i yum-utils
yum-utils-4.0.21-23.0.1.el8.noarch

 

上記でエントリが返されない場合は、yum-utils パッケージをインストールする必要があります。

[root@yumrepo ~]# dnf install -y yum-utils

 

ミラー化されたチャネルに対応するためにHTTPサーバーが必要なため、Apache HTTP Serverもインストールする必要があります。

[root@yumrepo ~]# dnf install -y httpd

 

Apache HTTP Serverの構成

Apacheがインストールされ、チャネルがミラー化されるベース・ディレクトリを作成したので、継続の構成ステップを実行できます。

ベース・ディレクトリを前の作成した場所から /var/www/html/yum にリンクします。

[root@yumrepo ~]# ln -s /u01/yum /var/www/html/yum

 

Oracle LinuxサーバーでSELinuxがenforcingモードで有効になっている場合は、ミラー・ディレクトリに対して正しいコンテキストを設定する必要があります。

[root@yumrepo ~]# semanage fcontext -a -t httpd_sys_content_t "/u01/yum(/.*)?"
[root@yumrepo ~]# restorecon -RFv /u01/yum

 

Apacheのhttpd.confファイルを編集します。

[root@yumrepo ~]# sed -i "/^#ServerName www.example.com:80/a ServerName $(hostname -i):80" /etc/httpd/conf/httpd.conf

FollowSymLinksオプションがアクティブであることを確認します。<Directory “/var/www/html”>見出しの下で、オプション行にFollowSymLinksが含まれていることを確認します。

[root@yumrepo ~]# cat /etc/httpd/conf/httpd.conf | grep "/var/www/html" -A20
DocumentRoot "/var/www/html"
    
#
# Relax access to content within /var/www.
#

  
    AllowOverride None
    # Allow open access:
    Require all granted

 
    
# Further relax access to the default document root:

  
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

 


次に、Webサーバーを起動し、そのステータスを確認します。

[root@yumrepo ~]# systemctl enable --now httpd
[root@yumrepo ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2024-01-19 03:17:36 GMT; 3 days ago
    Docs: man:httpd.service(8)
Process: 230188 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
Main PID: 155561 (httpd)
Status: "Running, listening on: port 80"
    Tasks: 213 (limit: 5408)
Memory: 11.2M
CGroup: /system.slice/httpd.service
        ├─155561 /usr/sbin/httpd -DFOREGROUND
        ├─230194 /usr/sbin/httpd -DFOREGROUND
        ├─230195 /usr/sbin/httpd -DFOREGROUND
        ├─230196 /usr/sbin/httpd -DFOREGROUND
        └─230197 /usr/sbin/httpd -DFOREGROUND

Jan 21 03:09:02 yumrepo systemd[1]: Reloading The Apache HTTP Server.
Jan 21 03:09:02 yumrepo systemd[1]: Reloaded The Apache HTTP Server.
Jan 21 03:09:02 yumrepo httpd[155561]: Server configured, listening on: port 80
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.


最後に、ポート80へのインバウンド・トラフィックがサーバーに到達できることを確認します。

[root@yumrepo ~]# firewall-cmd --permanent --add-service=http
[root@yumrepo ~]# firewall-cmd --reload

 

ローカルYumミラーへのリポジトリの同期

これでExadataチャネルをミラーリングできるようになりました。ミラーリングは、次のように dnf repositoryync コマンドを使用して行います。ここでは、複数の –repoid オプションを使用して、3つのチャネルを1つのコマンドでミラー化しています。ネットワーク接続およびミラー化しているチャネル数によっては、時間がかかる場合があります。

[root@yumrepo ~]# dnf reposync --delete --download-metadata -p /u01/yum --repoid exadata_dbserver_23.1.7.0.0_x86_64_base --repoid exadata_dbserver_23.1.8.0.0_x86_64_base --repoid exadata_dbserver_23.1.9.0.0_x86_64_base

これにより、3つのサブスクライブ済チャネルのすべてのパッケージが /u01/yum 以下にダウンロードされ、Apacheはhttp://yumrepo/yum/exadata_dbserver_xxx_x86_64_base の形式でこれらのパッケージを即時に提供します。xxxはリリース番号です(リリース23.1.7.0.0は http://yumrepo/yum/exadata_dbserver_23.1.7.0.0_x86_64_base )。

 

patchmgr との接続

Exadataのpatchmgrユーティリティでyumミラーを使用するには、ミラーを取得したのと同じくらい簡単です。事前チェック・ステップとアップグレード・ステップの両方に、–yum-repo を入力として提供するオプションがあります。

patchmgr --dbnodes database_node_file --precheck --yum_repo base_URL --target_version version
patchmgr --dbnodes database_node_file --upgrade --yum_repo base_URL --target_version version --rolling

 

具体的な例として、Exadataデータベース・サーバーのセットを23.1.9.0.0リリースに更新するとします。

patchmgr --dbnodes database_node_file --precheck --yum_repo http://yumrepo/yum/exadata_dbserver_23.1.9.0.0_x86_64_base --target_version 23.1.9.0.0
patchmgr --dbnodes database_node_file --upgrade --yum_repo http://yumrepo/yum/exadata_dbserver_23.1.9.0.0_x86_64_base --target_version 23.1.9.0.0 --rolling

私は上記でpatchmgrを使う方法については完全には触れていません、単にあなたが作成したミラーをどう使うかについて触れてます。DBサーバーをpatchmgrで更新する前に、必ずDBサーバーのバックアップを取るようにしてください。このExadataのドキュメントが、patchmgrの使用と正しい実行順序を知ることを始めるのに最適な場所です。

 

最終的な考え

そこには、Exadataソフトウェア・チャネルのyumミラーのpatchmgrによる作成とそれ以降の使用があります。これらのミラーは、データベース・サーバーの更新専用だということを覚えておいてください。

ご覧のとおり、ミラー・サーバーの設定は特に難しくなく、長期的には、Exadataデータベース・サーバーのメンテナンスがしやすくなります。前述したように、Exadataチャネルはフル・リリースであるため、毎月最新のチャネルをサブスクライブし、dnf repositoryync コマンドを使用してミラー化する必要があります。

Exadataソフトウェアを集中管理する目的でHTTPサーバーが実行されるようになったため、これをストレージ・サーバーの自動更新元として使用することもできます。これについてはこちらをご覧ください。

 

リソース