CentOS 8 に Pacemaker 2.0 をインストールする

CentOS8でHA構成組もうと思ったら ``Pacemaker`` がリポジトリになかったでござる問題。

# ネタ元
[CentOS 8のリポジトリにPacemaker / Corosyncが存在しない問題を調べてみた](https://densan-hoshigumi.com/server/centos8-pacemaker-corosync-notfound)

# 計画
ソースからインストールしようと頑張ってた過程で見つけたけど、たぶん以下で出来る。

```
# dnf -y install wget
# wget https://www.alteeve.com/an-repo/el8/alteeve-el8-repo-latest.noarch.rpm
# rpm -ivh alteeve-el8-repo-latest.noarch.rpm
# dnf -y install pacemaker
```

本当は GitHub の [Pacemaker-2.0.3](https://github.com/ClusterLabs/pacemaker) から ``make install`` しようと思って、 ``INSTALL.md`` に沿ったパッケージをかき集めてたんだけど、やっぱり ``corosynclib-devel`` あたりが ``CentOS-Base`` になくて、ググってたら上記リポジトリを見つけた。

# 試してみた

VirtualBoxに ``CentOS-8-x86_64-1905-dvd1.iso`` でCentOS8を最小構成インストール。

- enp0s3 … NAT(外部接続IF)
- enps08 … ホストオンリー(内部接続IF)
- お試しなので全部 ``root`` です。ごめんね。

```
# nmcli con mod enps03 \
  connection.autoconnect yes
# nmcil con mod enps08 \
  connection.autoconnect yes \
  ipv4.method manual \
  ipv4.address "192.168.56.31/24"

# dnf -y install wget
# wget https://www.alteeve.com/an-repo/el8/alteeve-el8-repo-latest.noarch.rpm
# rpm -ivh alteeve-el8-repo-latest.noarch.rpm
# dnf -y install pacemaker
  :(中略)
インストール済み:
  pacemaker-2.0.2-3.el8.2.x86_64                         nspr-4.21.0-2.el8_0.x86_64
  nss-3.44.0-7.el8_0.x86_64                              nss-softokn-3.44.0-7.el8_0.x86_64
  nss-softokn-freebl-3.44.0-7.el8_0.x86_64               nss-sysinit-3.44.0-7.el8_0.x86_64
  nss-util-3.44.0-7.el8_0.x86_64                         perl-TimeDate-1:2.30-13.el8.noarch
  python3-pip-9.0.3-13.el8.noarch                        python36-3.6.8-2.module_el8.0.0+33+0a10c0e1.x86_64
  avahi-libs-0.7-19.el8.x86_64                           bzip2-1.0.6-26.el8.x86_64
  cifs-utils-6.8-2.el8.x86_64                            cups-libs-1:2.2.6-25.el8.x86_64
  device-mapper-event-8:1.02.155-6.el8.x86_64            device-mapper-event-libs-8:1.02.155-6.el8.x86_64
  device-mapper-persistent-data-0.7.6-1.el8.x86_64       gssproxy-0.8.0-5.el8.x86_64
  keyutils-1.5.10-6.el8.x86_64                           libaio-0.3.110-12.el8.x86_64
  libqb-1.0.3-7.el8.x86_64                               libverto-libevent-0.3.0-5.el8.x86_64
  libwbclient-4.9.1-8.el8.x86_64                         libxslt-1.1.32-3.el8.x86_64
  lvm2-8:2.03.02-6.el8.x86_64                            lvm2-libs-8:2.03.02-6.el8.x86_64
  net-snmp-libs-1:5.8-7.el8_0.2.x86_64                   net-tools-2.0-0.51.20160912git.el8.x86_64
  nfs-utils-1:2.3.3-14.el8_0.2.x86_64                    perl-Carp-1.42-396.el8.noarch
  perl-Errno-1.28-416.el8.x86_64                         perl-Exporter-5.72-396.el8.noarch
  perl-File-Path-2.15-2.el8.noarch                       perl-IO-1.38-416.el8.x86_64
  perl-PathTools-3.74-1.el8.x86_64                       perl-Scalar-List-Utils-3:1.49-2.el8.x86_64
  perl-Socket-4:2.027-2.el8.x86_64                       perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch
  perl-Time-Local-1:1.280-1.el8.noarch                   perl-Unicode-Normalize-1.25-396.el8.x86_64
  perl-constant-1.33-396.el8.noarch                      perl-interpreter-4:5.26.3-416.el8.x86_64
  perl-libs-4:5.26.3-416.el8.x86_64                      perl-macros-4:5.26.3-416.el8.x86_64
  perl-parent-1:0.237-1.el8.noarch                       perl-threads-1:2.21-2.el8.x86_64
  perl-threads-shared-1.58-2.el8.x86_64                  psmisc-23.1-3.el8.x86_64
  python3-setuptools-39.2.0-4.el8.noarch                 quota-1:4.04-10.el8.x86_64
  quota-nls-1:4.04-10.el8.noarch                         rpcbind-1.2.5-3.el8.x86_64
  samba-client-libs-4.9.1-8.el8.x86_64                   samba-common-4.9.1-8.el8.noarch
  samba-common-libs-4.9.1-8.el8.x86_64                   tar-2:1.30-4.el8.x86_64
  pacemaker-schemas-2.0.2-3.el8.2.noarch                 corosync-3.0.2-3.el8_1.1.x86_64
  corosynclib-3.0.2-3.el8_1.1.x86_64                     libknet1-1.10-1.el8.2.x86_64
  libknet1-crypto-nss-plugin-1.10-1.el8.2.x86_64         libnozzle1-1.10-1.el8.2.x86_64
  pacemaker-cli-2.0.2-3.el8.2.x86_64                     pacemaker-cluster-libs-2.0.2-3.el8.2.x86_64
  pacemaker-libs-2.0.2-3.el8.2.x86_64                    resource-agents-4.1.1-33.el8.x86_64

完了しました!
```

# Alteeve さんとは？

で、このリポジトリ公開している [Alteeve](https://www.alteeve.com/) さんって何者じゃ。

[About Alteeve](https://www.alteeve.com/c/company/about-alteeve/)

```text

About Alteeve

We started in 1997 with the simple but powerful idea that your servers should never let you down.

Today, Alteeve is a software and systems design company specializing in server uptime and operational continuity.

As we have grown, we have maintained our commitment of exceeding our customers’ expectations and have used innovative thinking to develop products and provide solutions.

We set and design to world class availability standards. Our fault-tolerant technology stack has been developed from the ground up, going broader and deeper than any other platform available. This has enabled us to achieve historical uptime across all our deployments over 99.9999%.

Our core values of support, stability and innovation define who we are, how we work and what we stand for.  They guide our decisions and inspire us to make our customers successful through onboarding, training, proactive technical support and expanding the ways that they can use our products and services.

With clients across North America and a community of users that stretches around the world, our Intelligent Availability Platform – The Anvil! – is used by organizations ranging in size from small business to enterprise class in a variety of different fields.

Simple, stable, trusted, available. Alteeve.
```

OK, Google. 翻訳して。

>私たちは、サーバーが決してあなたを失望させないというシンプルだが強力なアイデアから1997年に始めました。
現在、Alteeveは、サーバーの稼働時間と運用の継続性に特化したソフトウェアおよびシステムの設計会社です。
成長するにつれて、お客様の期待を超えるというコミットメントを維持し、革新的な思考を使用して製品を開発し、ソリューションを提供してきました。
世界クラスの可用性標準を設定および設計します。フォールトトレラントテクノロジースタックはゼロから開発されており、利用可能な他のプラットフォームよりも広く深くなっています。これにより、すべての展開で99.9999％を超える履歴アップタイムを達成できました。
サポート、安定性、革新のコアバリューは、私たちが誰であるか、どのように働くか、何を意味するかを定義します。オンボーディング、トレーニング、プロアクティブな技術サポート、および製品とサービスの使用方法の拡大を通じて、お客様を成功に導くための意思決定を促します。
北米全域のクライアントと世界中に広がるユーザーコミュニティを備えた当社のIntelligent Availability Platform – The Anvil！ –さまざまな分野の小規模ビジネスからエンタープライズクラスまでの規模の組織で使用されます。
シンプル、安定、信頼、利用可能。アルティーブ。

企業…なのか。勝手にリポジトリ使っていいのかな。

# 確認してみる

```
# python3
Python 3.6.8 (default, May 21 2019, 23:51:36)
[GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

# pacemakerd --version
Pacemaker 2.0.2-3.el8.2
Written by Andrew Beekhof

# corosync -v
Corosync Cluster Engine, version '3.0.2'
Copyright (c) 2006-2018 Red Hat, Inc.

# pcs -v
-bash: pcs: コマンドが見つかりません
```

# PCS を追加してみる

```
# dnf -y install pcs
エラー:
 問題: cannot install the best candidate for the job
  - nothing provides python3-clufter >= 0.70.0 needed by pcs-0.10.2-4.el8.x86_64
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
```

<b> ** おおっと **</b>

``python3-clufter`` とやらがない。
ただ ``--skip-broken`` または ``--nobest`` を指定するととりあえずできるらしい。

それで何か問題があるかは動作させてから考えよう。

```
# dnf -y install pcs --nobest
# pcs --version
0.10.1
```

ま、とりあえずこれで。

# sfex を追加してみる

共有ディスクの排他制御である``sfex``を使おうとしたら存在しなかった。

```
# cd /usr/lib/ocf/resource.d/heartbeat
# ls -l sfex
ls: 'sfex' にアクセスできません: そのようなファイルやディレクトリはありません
```

``heartbeat`` が非推奨になったことに伴い消えたのだろうか。まじかよ。

[rpm.pbone.net](http://rpm.pbone.net/index.php3/stat/4/idpl/54733927/dir/redhat_el_6/com/sfex-1.3-11.4.x86_64.rpm.html)さんからrpmを取得して突っ込んで見る。

```
# ls -tlr sfex-1.3-11.4.x86_64.rpm
-rw-r--r--. 1 root root 17512  1月 22 05:46 sfex-1.3-11.4.x86_64.rpm

# rpm -ivh sfex-1.3-11.4.x86_64.rpm
警告: sfex-1.3-11.4.x86_64.rpm: ヘッダー V3 DSA/SHA1 Signature、鍵 ID f3fb08be: NOKEY
Verifying...                          ################################# [100%]
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:sfex-1.3-11.4                    ################################# [100%]
```

あれ？すんなんり入ったな。

```
# ls -l /usr/lib/ocf/resource.d/swdist/sfex
-rwxr-xr-x. 1 root root 15290  6月 18  2014 /usr/lib/ocf/resource.d/swdist/sfex
```

むかーしむかしと場所が変わってるな。