アップグレードの準備
-
アップグレードの戦略を決定し、アップグレード先のバージョンを選択してください。 詳しい情報については、「アップグレードの要求事項」を参照してください。
-
GitHub Enterprise Serverバックアップユーティリティ で、プライマリインスタンスの新しいバックアップを作成してください。 詳しい情報については、GitHub Enterprise ServerバックアップユーティリティREADME.md ファイルを参照してください。
-
アップグレードパッケージを使ってアップグレードをする場合は、GitHub Enterprise Server のエンドユーザのためにメンテナンス時間枠をスケジューリングしてください。 ホットパッチを利用している場合、メンテナンスモードは必要ありません。
注釈: メンテナンスウィンドウは、実行しようとしているアップグレードの種類によります。 ホットパッチを利用するアップグレードは、通常メンテナンスウィンドウを必要としません。 リブートが必要になることもあります。そのリブートは後で行うことができます。 MAJOR.FEATURE.PATCH というバージョン付けのスキームに従い、アップグレードパッケージを使ったパッチのリリースで生じるダウンタイムは、通常 5 分未満です。 データの移行を含むフィーチャリリースは、ストレージの性能および移行するデータの量に応じた時間がかかります。 詳しい情報については、「メンテナンスモードの有効化とスケジューリング」を参照してください。
スナップショットの取得
スナップショットは、ある時点での仮想マシン(VM)のチェックポイントです。 アップグレードに失敗した場合にスナップショットからVMを回復できるよう、仮想マシンをアップグレードする前にスナップショットを取っておくことを強くおすすめします。 新しいフィーチャリリースにアップグレードするなら、VM のスナップショットを取らなければなりません。 パッチリリースへのアップグレードをするなら、既存のデータディスクをアタッチできます。
スナップショットには2種類あります。
-
VM スナップショットは、ユーザデータおよび設定データを含む VM の状態全体を保存します。 このスナップショットの手法には大量のディスク領域が必要になり、時間がかかります。
-
データディスクスナップショットはユーザデータだけを保存します。
注釈:
- プラットフォームによっては、ユーザのデータディスクだけのスナップショットを取ることができません。 それらのプラットフォームでは、VM 全体のスナップショットを取る必要があります。
- ハイパーバイザーが完全なVMスナップショットをサポートしていないなら、ルートディスクとデータディスクのスナップショットを時間をおかずに取らなければなりません。
プラットフォーム | スナップショットの取得方法 | スナップショットドキュメンテーションのURL |
---|---|---|
Amazon AWS | ディスク | https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-creating-snapshot.html |
Azure | VM | https://docs.microsoft.com/ja-jp/azure/backup/backup-azure-vms-first-look-arm |
Hyper-V | VM | https://technet.microsoft.com/en-us/library/dd851843.aspx |
Google Compute Engine | ディスク | https://cloud.google.com/compute/docs/disks/create-snapshots |
VMware | VM | https://pubs.vmware.com/vsphere-50/topic/com.vmware.wssdk.pg.doc_50/PG_Ch11_VM_Manage.13.3.html |
XenServer | VM | https://support.citrix.com/article/CTX122978 |
ホットパッチでのアップグレード
GitHub Enterprise Serverは、ホットパッチを利用して最新のパッチリリースへアップグレードできます。ホットパッチにはメンテナンスウィンドウが不要で、通常は再起動も必要ありません。 ホットパッチは新しいパッチリリースへのアップグレードに利用できますが、新しいフィーチャリリースへのアップグレードには利用できません。 たとえば2.10.1
から2.10.5
へのアップグレードは同じフィーチャリリースなので可能ですが、2.10.9
から2.11.0
へは異なるフィーチャリリースなので行えません。Management Console を使うと、ホットパッチを即座にインストールすることや、後にインストールするようにスケジュールすることができます。 管理シェルを使って ghe-upgrade
ユーティリティでホットパッチをインストールすることもできます。 詳細は「アップグレードの要求事項」を参照してください。
注釈: クラスタ環境では、Management Console を使ったホットパッチのインストールはできません。 クラスタ環境でホットパッチをインストールするには、「クラスタをアップグレードする」を参照してください。
ホットパッチでの単一のアプライアンスのアップグレード
Management Console を使ってホットパッチをインストールする
- 自動アップデートを有効化してください。 詳しい情報については「自動アップデートの有効化」を参照してください。
- 任意のページの右上で をクリックします。
- 左のサイドバーでManagement Consoleをクリックしてください。
- Management Consoleの上部でUpdates(アップデート)をクリックしてください。
- 新しいホットパッチがダウンロードされたなら、Install package(パッケージのインストール)ドロップダウンメニューを使ってください。
- すぐにインストールするならNow(即時)を選択してください。
- 後でインストールするなら、後の日付を選択してください。
- Click Install.
管理シェルを使ったホットパッチのインストール
ノート: 自動アップデートチェックを有効にしたなら、アップグレードパッケージをダウンロードする必要はなく、自動的にダウンロードされたファイルを利用できます。 詳しい情報については「自動アップデートチェックの有効化」を参照してください。
- GitHub Enterprise Server インスタンスにSSHでアクセスしてください。
$ ssh -p 122 admin@HOSTNAME
- GitHub Enterprise Serverのリリースページにアクセスしてください。 アップグレードしたいリリースの隣の Download(ダウンロード)をクリックし、続いて Upgrading(アップグレード)タブをクリックしてください。アップグレードのホットパッケージ(.hpkgファイル)のURLをコピーしてください。
cURL
を使ってGitHub Enterprise Server インスタンスにアップグレードパッケージをダウンロードしてください。admin@HOSTNAME:~$ curl -L -O UPGRADE-PKG-URL
- パッケージのファイル名を使って
ghe-upgrade
コマンドを実行してください。admin@HOSTNAME:~$ ghe-upgrade GITHUB-UPGRADE.hpkg *** verifying upgrade package signature...
- カーネル、MySQL、Elasticsearch やその他のプログラムのアップグレードにリブートが必要なら、ホットパッチアップグレードスクリプトが通知してくれます。
ホットパッチを使ったレプリカインスタンスを持つアプライアンスのアップグレード
注釈: ホットパッチをインストールする場合、メンテナンスモードに入ったりレプリケーションを停止したりする必要はありません。
High Availability と Geo-replication が設定されたアプライアンスは、プライマリインスタンスに加えてレプリカインスタンスを使います。 これらのアプライアンスをアップグレードするには、プライマリインスタンスとすべてのレプリカインスタンスの両方を、1 つずつアップグレードしなければなりません。
プライマリインスタンスのアップグレード
- 「管理シェルを使ってホットパッチをインストールする」の指示に従ってプライマリインスタンスをアップグレードしてください。
レプリカインスタンスのアップグレード
メモ: Geo-replication の一部として複数のレプリカインスタンスを動作させているなら、この手順は各レプリカインスタンス 1 つずつに繰り返してください。
-
Upgrade the replica instance by following the instructions in "Installing a hotpatch using the administrative shell." If you are using multiple replicas for Geo-replication, you must repeat this procedure to upgrade each replica one at a time.
-
ポート122のSSH経由でレプリカインスタンスに"admin"ユーザとして接続してください。
$ ssh -p 122 admin@replica-host
-
以下を実行して、アップグレードを検証してください。
$ ghe-version
アップグレードパッケージでのアップグレード
フィーチャシリーズ内の最新のパッチリリースへのアップグレードにはホットパッチが利用できますが、新しいフィーチャリリースへのアップグレードにはアップグレードパッケージを使わなければなりません。 たとえば 2.11.10
から 2.12.4
へのアップグレードの場合、これらは異なるフィーチャシリーズなので、アップグレードパッケージを使わなければなりません。 詳細は「アップグレードの要求事項」を参照してください。
アップグレードパッケージでの単一のアプライアンスのアップグレード
ノート: 自動アップデートチェックを有効にしたなら、アップグレードパッケージをダウンロードする必要はなく、自動的にダウンロードされたファイルを利用できます。 詳しい情報については「自動アップデートチェックの有効化」を参照してください。
-
GitHub Enterprise Server インスタンスにSSHでアクセスしてください。
$ ssh -p 122 admin@HOSTNAME
-
GitHub Enterprise Serverのリリースページにアクセスしてください。 アップグレードしたいリリースの隣の Download(ダウンロード)をクリックし、続いて Upgrading(アップグレード)タブをクリックしてください。 適切なプラットフォームを選択し、アップグレードパッケージ (.pkgファイル) の URL をコピーしてください。
-
cURL
を使ってGitHub Enterprise Server インスタンスにアップグレードパッケージをダウンロードしてください。admin@HOSTNAME:~$ curl -L -O UPGRADE-PKG-URL
-
メンテナンスモードを有効にし、GitHub Enterprise Server インスタンス上のすべてのアクティブなプロセスが完了するのを待ってください。 詳しい情報については"メンテナンスモードの有効化とスケジューリング"を参照してください。
メモ: High Availability 構成のプライマリアプライアンスをアップグレードする場合には、「プライマリインスタンスをアップグレードする」の指示に従っているならアプライアンスはメンテナンスモードになっているはずです。
-
パッケージのファイル名を使って
ghe-upgrade
コマンドを実行してください。admin@HOSTNAME:~$ ghe-upgrade GITHUB-UPGRADE.pkg *** verifying upgrade package signature...
-
アップグレードを続けてパッケージ署名検証後に再起動することを承諾します。 新しいルートファイルシステムがセカンダリパーティションに書かれ、インスタンスは自動的にメンテナンスモードで再起動します。
*** applying update... This package will upgrade your installation to version version-number Current root partition: /dev/xvda1 [version-number] Target root partition: /dev/xvda2 Proceed with installation? [y/N]
-
単一アプライアンスのアップグレードであれば、メンテナンスモードを無効化してユーザが GitHub Enterprise Server インスタンス を利用できるようにしてください。
メモ: High Availability 設定のアプライアンスをアップグレードする場合、すべてのレプリカをアップグレードし、レプリケーションが最新の状態になるまではメンテナンスモードのままでなければなりません。 詳細は「レプリカインスタンスをアップグレードする」を参照してください。
アップグレードパッケージを使ったレプリカインスタンスを持つアプライアンスのアップグレード
High Availability と Geo-replication が設定されたアプライアンスは、プライマリインスタンスに加えてレプリカインスタンスを使います。 これらのアプライアンスをアップグレードするには、プライマリインスタンスとすべてのレプリカインスタンスの両方を、1 つずつアップグレードしなければなりません。
プライマリインスタンスのアップグレード
警告: レプリケーションが停止されると、プライマリに障害があった場合には、レプリカがアップグレードされてレプリケーションが再開されるまでに行われた作業は失われます。
- プライマリインスタンスでメンテナンスモードを有効化し、すべてのアクティブなプロセスが完了するのを待ちます。 詳しい情報については、「メンテナンスモードの有効化」を参照してください。
- ポート122のSSH経由でレプリカインスタンスに"admin"ユーザとして接続してください。
$ ssh -p 122 admin@replica-host
- レプリカインスタンス、あるいは Geo-replication の一部として複数のレプリカインスタンスを動作させている場合は、すべてのレプリカインスタンスで
ghe-repl-stop
を実行してレプリケーションを停止させます。 - 「アップグレードパッケージで単一アプライアンスをアップグレードする」の指示に従い、プライマリインスタンスをアップグレードしてください。
レプリカインスタンスのアップグレード
メモ: Geo-replication の一部として複数のレプリカインスタンスを動作させているなら、この手順は各レプリカインスタンス 1 つずつに繰り返してください。
-
Upgrade the replica instance by following the instructions in "Upgrading a single appliance with an upgrade package." If you are using multiple replicas for Geo-replication, you must repeat this procedure to upgrade each replica one at a time.
-
ポート122のSSH経由でレプリカインスタンスに"admin"ユーザとして接続してください。
$ ssh -p 122 admin@replica-host
-
以下を実行して、アップグレードを検証してください。
$ ghe-version
-
レプリカインスタンス上でレプリケーションを開始するには、
ghe-repl-start
を実行してください。 -
レプリカインスタンスで、レプリケーションサービスが正しく動作していることを確認するには、
ghe-repl-status
を実行してください。 このコマンドは、レプリケーションが問題なく進行しており、レプリカがアップグレードされていれば、すべてのサービスに対してOK
を返します。 コマンドがReplication is not running
を返すなら、レプリケーションはまだ開始中かもしれません。ghe-repl-status
をもう一度実行する前に 1 分間ほど待ってください。メモ: resync の処理が進んでいる間は、
ghe-repl-status
はレプリケーションが遅れていることを示す期待どおりのメッセージを返すかもしれません。 たとえばCRITICAL: git replication is behind the primary by more than 1007 repositories and/or gists
のようなメッセージです。ghe-repl-status
がOK
を返さない場合は、以下の手順に従って手動でレプリケーションを開始してください。- レプリカインスタンスで再度
ghe-repl-setup <primary-instance-ip>
を実行してください。 - レプリカインスタンス上でレプリケーションを開始するには、
ghe-repl-start
を実行してください。 - レプリカインスタンスで、レプリケーションサービスが正しく動作していることを確認するには、
ghe-repl-status
を実行してください。 このコマンドは、レプリケーションが問題なく進行しており、レプリカがアップグレードされていれば、すべてのサービスに対してOK
を返します。
- レプリカインスタンスで再度
-
最後のレプリカのアップグレードが完了し、resync も完了したなら、ユーザが GitHub Enterprise Server インスタンス を使えるようにメンテナンスモードを無効化してください。
失敗したアップグレードからのリストア
アップグレードが失敗もしくは中断したなら、インスタンスを以前の状態に復帰させなければなりません。 この処理を完了させるプロセスは、アップグレードの種類によります。
パッチリリースのロールバック
パッチリリースをロールバックするには、--allow-patch-rollback
を付けて ghe-upgrade
コマンドを使います。 アップグレードをロールバックする場合には、.pkg拡張子を持つアップグレードパッケージを使わなければなりません。 .hpkg拡張子を持つホットパッチのパッケージファイルはサポートされません。
ghe-upgrade --allow-patch-rollback EARLIER-RELEASE-UPGRADE-PACKAGE.pkg
コマンドを実行した後に再起動が必要です。 パッチリリースでは移行は行われないので、ロールバックはデータパーティションには影響しません。
詳細は「コマンドラインユーティリティ」を参照してください。
フィーチャリリースのロールバック
フィーチャリリースからロールバックするには、ルートおよびデータパーティションが整合した状態になることを保証するため、VM スナップショットからリストアしてください。 詳細は「スナップショットを取得する」を参照してください。