2020年8月29日土曜日

vSphere環境のRHELのネットワークデバイスの名称ルール (ens192、224…) を確認してみた

RHEL 7は、ネットワークデバイスがeth0、eth1といったものからens192、ens224といった名称に変更になっている。これは、「biosdevname」と呼ばれる仕組みで名称が決定されるようだ。

この名称ルールによって、vSphereの仮想環境に構築したRHELのネットワークデバイスは、必ず「ensNNN (NNNは数字3桁)」となる。ググって調べたところ、「en」はEthernetを示し「s」はホットプラグの意味らしい。末尾3桁の数字は、PCIスロットの「Physical Slot」の値で決定するようだ。

上記法則は調べてわかったのだが、実際は末尾3桁の付与される法則は連番で付与されるものではなく、毎回NICを追加してからネットワークデバイス名称を確認する作業が必要となってしまう。そこで、実際にvSphereの仮想環境で、RHEL 8の仮想マシンに仮想NICを10本を付けた際のネットワークデバイス名称を確認することにした。

NICを10本付けた際のネットワークデバイス名称

OSを起動した状態で、1個ずつ仮想NIC追加し確認を行った。付与されるネットワークデバイス名称は以下のようになった。
NIC番号 デバイス名
1 ens192
2 ens224
3 ens256
4 ens161
5 ens193
6 ens225
7 ens257
8 ens162
9 ens194
10 ens226
どうやらネットワークデバイス名称の数字は以下のように32ずつ増加して推移するようだ。なお、ens160が存在しない理由は、Physical Slotの160を「VMware PVSCSI SCSI Controller」が利用しているためとなる。
192→224→256→
161→193→225→257→
162→194→226→258→
…

なお、「Physical Slot」はlspciコマンドで確認ができる。確かに、「Physical Slot」の値と名称は一致しているようだ。
# lspci -v
~(中略)~

03:00.0 Serial Attached SCSI controller: VMware PVSCSI SCSI Controller (rev 02)
        Subsystem: VMware PVSCSI SCSI Controller
        Physical Slot: 160
        Flags: bus master, fast devsel, latency 0, IRQ 18
        I/O ports at e000 [size=8]
        Memory at fe900000 (64-bit, non-prefetchable) [size=32K]
        Expansion ROM at fe910000 [disabled] [size=64K]
        Capabilities: [40] Express Endpoint, MSI 00
        Capabilities: [7c] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [94] Power Management version 3
        Capabilities: [9c] MSI-X: Enable+ Count=24 Masked-
        Capabilities: [100] Device Serial Number 57-0d-a1-90-50-05-05-68
        Kernel driver in use: vmw_pvscsi
        Kernel modules: vmw_pvscsi

~(中略)~

1b:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
        Subsystem: VMware VMXNET3 Ethernet Controller
        Physical Slot: 256
        Flags: bus master, fast devsel, latency 0, IRQ 17
        Memory at fd103000 (32-bit, non-prefetchable) [size=4K]
        Memory at fd102000 (32-bit, non-prefetchable) [size=4K]
        Memory at fd100000 (32-bit, non-prefetchable) [size=8K]
        I/O ports at 4000 [size=16]
        Expansion ROM at fd110000 [disabled] [size=64K]
        Capabilities: [40] Power Management version 3
        Capabilities: [48] Express Endpoint, MSI 00
        Capabilities: [84] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [9c] MSI-X: Enable+ Count=25 Masked-
        Capabilities: [100] Device Serial Number 00-0c-29-ff-ff-5a-a4-cb
        Kernel driver in use: vmxnet3
        Kernel modules: vmxnet3

1c:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
        Subsystem: VMware VMXNET3 Ethernet Controller
        Physical Slot: 257
        Flags: bus master, fast devsel, latency 0, IRQ 17
        Memory at fd003000 (32-bit, non-prefetchable) [size=4K]
        Memory at fd002000 (32-bit, non-prefetchable) [size=4K]
        Memory at fd000000 (32-bit, non-prefetchable) [size=8K]
        I/O ports at 3000 [size=16]
        Expansion ROM at fd010000 [disabled] [size=64K]
        Capabilities: [40] Power Management version 3
        Capabilities: [48] Express Endpoint, MSI 00
        Capabilities: [84] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [9c] MSI-X: Enable+ Count=25 Masked-
        Capabilities: [100] Device Serial Number 00-0c-29-ff-ff-5a-a4-f3
        Kernel driver in use: vmxnet3
        Kernel modules: vmxnet3

参考

2020年8月27日木曜日

nmcliでVLANインタフェースの設定を行う手順【RHEL 7/CentOS7以降対応】

以前、nmtuiコマンドを使ってLinuxでVLANインタフェースを作成する手順を記載した。

今回はnmcliコマンドを使って同様にVLANインタフェースを設定してみる。

通常のEthernetインタフェースに設定する場合

まずは通常のEthernetインタフェースを作成する。今回は「ens224」とした。

# nmcli c add type ethernet con-name ens224 ifname ens224
接続 'ens224' (5d3fc55a-9092-4370-91f9-0e89476473e4) が正常に追加されました。

「ens224」に対して、<インタフェース名>.<VLAN ID>という名前にてVLANインタフェースを作成する。

# nmcli c add type vlan con-name ens224.1011 dev ens224 id 1011
接続 'ens224.1011' (96ffeac0-1aee-4ef9-811c-837df3ec645e) が正常に追加されました。

あとは、作成したVLANインタフェースに対して、通常のインタフェースと同様にIPアドレス等の設定を行えばよい。

# nmcli c mod ens224.1011 ipv4.method manual ipv4.address 192.168.11.192/24 ipv4.gateway 192.168.11.31 ipv4.dns 192.168.11.61 ipv6.method ignore connection.autoconnect yes

Bondインタフェースに設定する場合

まずはBondインタフェースを作成する。詳細は以下別記事を参照いただきたい。

  • 【RHEL 7/CentOS7以降対応】Linuxのネットワークチーミング (Bonding) の設定
# nmcli c add type bond con-name bond0 ifname bond0 bond.options "downdelay=0,miimon=100,mode=active-backup,primary=ens224,updelay=0"
接続 'bond0' (aa7cfc85-ad14-4d2b-a3c9-d9154fd80957) が正常に追加されました。
# nmcli c add type ethernet slave-type bond con-name ens224 ifname ens224 master bond0
接続 'ens224' (ee918a9a-bdbb-489d-9feb-1d6efefe94e4) が正常に追加されました。
# nmcli c add type ethernet slave-type bond con-name ens256 ifname ens256 master bond0
接続 'ens256' (f8ec5b06-d43d-4d7e-a885-ac5120d556f2) が正常に追加されました。

「bond0」に対して、<Bondインタフェース名>.<VLAN ID>という名前にてVLANインタフェースを作成する。

# nmcli c add type vlan con-name bond0.1011 dev bond0 id 1011
接続 'bond0.1011' (9326c860-2f5b-420e-99ac-41d60260fa3f) が正常に追加されました 。

あとは、作成したVLANインタフェースに対して、通常のインタフェースと同様にIPアドレス等の設定を行えばよい。

# nmcli c mod bond0.1011 ipv4.method manual ipv4.address 192.168.11.192/24 ipv4.gateway 192.168.11.31 ipv4.dns 192.168.11.61 ipv6.method ignore connection.autoconnect yes

参考

2020年8月25日火曜日

Linuxのネットワークチーミング (Bonding) の設定手順【RHEL 7/CentOS7以降対応】

Linuxでは、複数のNICを束ねて (チーミングして) 冗長化する機能として「Bonding」がある。

BondingはOS標準の機能として利用できるものであり、設定方法は、以前以下にて記事にしている。

上記記事は、RHEL 6やCentOS 6時代のネットワーク設定ファイルを直接編集する方法であり、現在主流となっているRHEL 7 (CentOS 7) 以降のOSでは推奨されない設定方法となっている。

今回は、推奨手順である「NetworkManager」を使ったBondingの設定手順を記載する。

環境

  • OS : CentOS 8
  • NIC構成
    • ens192 : 作業のためにSSH接続するためのNIC
    • bond0 : ens224とens256を所属させる

Bonding設定手順

1. 設定前のNICの確認

NICの初期状態は以下の通り。ens224とens256をBondingして冗長化する。

# nmcli d s
DEVICE  TYPE      STATE     CONNECTION
ens192  ethernet  接続済み  ens192
ens224  ethernet  接続済み  ens224
ens256  ethernet  接続済み  ens256
lo      loopback  管理無し  --
# nmcli c s
NAME    UUID                                  TYPE      DEVICE
ens192  d218a6ca-5466-43af-a7a1-30a61fd832bb  ethernet  ens192
ens224  82f2f852-b37d-4cee-a1c5-ea87e2f0977b  ethernet  ens224
ens256  29593342-dfc3-4eef-8c3d-83937a27dc39  ethernet  ens256

2. 自動認識しているNIC設定を削除

自動認識しているens224とens256の2つのNIC設定 (Connection) は不要となるため削除しておく。削除はnmcli c delコマンドにて行う。

# nmcli c del ens224
接続 'ens224' (2f419b53-b2b3-4901-8845-40f3008783ba) が正常に削除されました。
# nmcli c del ens256
接続 'ens256' (9a9b2f3c-9bb4-4af4-af85-307c79fad4d0) が正常に削除されました。

3. Bondインタフェースを作成

Bondインタフェースを新規作成する。通常、ifnameは物理NICのデバイス名を指定するが、Bondインタフェースは特に実態となる物理NICが存在しないため、インタフェース名 (con-name) と同様に「bond0」にて作成すればよい。

bond.optionsについては、以下で設定した。

  • downdelay=0 : 監視でNICのリンクダウンを検知した後、ステータスを「down」に変化させるまでの遅延。0で無効に設定
  • miimon=100 : 監視感覚を100msecに設定
  • mode=activebackup : 冗長化方式をActive-Backupに設定
  • primary=ens224 : 優先インタフェースをens224に設定
  • updelay=0 : 監視でNICのリンクアップを検知した後、ステータスを「up」に変化させるまでの遅延。0で無効に設定
# nmcli c add type bond con-name bond0 ifname bond0 bond.options "downdelay=0,miimon=100,mode=active-backup,primary=ens224,updelay=0"
接続 'bond0' (aa7cfc85-ad14-4d2b-a3c9-d9154fd80957) が正常に追加されました。

4. BondインタフェースにNICを追加

先ほど作成したBondインタフェースである「bond0」に物理NICを追加する。「bond0」に所属させるため、slave-type bondmaster bond0を設定する。

# nmcli c add type ethernet slave-type bond con-name ens224 ifname ens224 master bond0
接続 'ens224' (ee918a9a-bdbb-489d-9feb-1d6efefe94e4) が正常に追加されました。
# nmcli c add type ethernet slave-type bond con-name ens256 ifname ens256 master bond0
接続 'ens256' (f8ec5b06-d43d-4d7e-a885-ac5120d556f2) が正常に追加されました。

5. BondインタフェースにIPアドレス等を設定

通常のインタフェースの設定と同様に、IPアドレスやデフォルトゲートウェイ、DNSなどの設定を投入する。設定内容は以下の通り。

  • IPv4設定を「手動」に : ipv4.method manual
  • IPv4アドレス : ipv4.address 192.168.11.192/24
  • IPv4のDGW : ipv4.gateway 192.168.11.31
  • IPv4のDNS : ipv4.dns 192.168.11.61
  • IPv6設定を「無視」 : ipv6.method ignore
  • OS起動時に自動接続する : connection.autoconnect yes
# nmcli c mod bond0 ipv4.method manual ipv4.address 192.168.11.192/24 ipv4.gateway 192.168.11.31 ipv4.dns 192.168.11.61 ipv6.method ignore connection.autoconnect yes

設定反映のため、アクティベートを実施する。

# nmcli c up bond0
接続が正常にアクティベートされました (master waiting for slaves) (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/29)

動作確認

Bondingされたインタフェースの状態は「/proc/net/bonding/[Bondインターフェース]」にて確認できる。今回は「/proc/net/bonding/bond0」となる。

Pingを1秒間隔で打ちながら切り替わり動作を確認してみた。まず、正常時の状態を確認する。

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: ens224 (primary_reselect always)
Currently Active Slave: ens224   ←★ens224がActive
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens224
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:31:7a:1b
Slave queue ID: 0

Slave Interface: ens256
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:31:7a:25
Slave queue ID: 0

ens224を切断すると、もう一方のNICであるens256に切り替わる。切り替わり時のPing欠けは2回だった。

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: ens224 (primary_reselect always)
Currently Active Slave: ens256   ←★ens256に切り替わる
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens224
MII Status: down   ←★ステータスが「down」になる
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1   ←★Failure Countが+1
Permanent HW addr: 00:0c:29:31:7a:1b
Slave queue ID: 0

Slave Interface: ens256
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:31:7a:25
Slave queue ID: 0

ens224を復旧させると、もうens224に切り戻る。切り替わり時のPing欠けは2回だった。

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: ens224 (primary_reselect always)
Currently Active Slave: ens224   ←★ens224に切り替わる
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens224
MII Status: up   ←★ステータスが「up」になる
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1   ←★Failure Countは1のまま
Permanent HW addr: 00:0c:29:31:7a:1b
Slave queue ID: 0

Slave Interface: ens256
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:31:7a:25
Slave queue ID: 0

なお、「Link Failure Count」が1のままリセットされないが、リセットしたい場合は、Bondingデバイスを再度アクティベートすればよい。

# nmcli c up bond0
接続が正常にアクティベートされました (master waiting for slaves) (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/35)
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: ens224 (primary_reselect always)
Currently Active Slave: ens224
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens224
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0   ←★Failure Countが0にリセットされる
Permanent HW addr: 00:0c:29:31:7a:1b
Slave queue ID: 0

Slave Interface: ens256
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:31:7a:25
Slave queue ID: 0

参考

2020年8月22日土曜日

nmcliコマンドでネットワーク設定を行う手順まとめ【RHEL 7/CentOS7以降対応】

RHEL 7やCentOS 7以降では、NetworkManagerによるNIC設定が推奨されている。NetworkManagerではテキストベースではあるがGUI風に設定ができるnmtuiコマンドと、完全にコマンドベースで設定するためのnmcliコマンドの2種類が用意されている。

通常はnmtuiコマンドを使えば、必要な設定は問題なく実施できるのだが、今回は勉強のために、あえてnmcliコマンドを使ってNIC設定をおこなってみた

本記事ではnmcliコマンドに対して調べた結果を記載する

環境

  • OS : CentOS 8
  • NIC : ens224のデバイスに対してnmcliコマンドにて設定を実施

nmcliコマンドの使用方法

NICのデバイス確認

NICのデバイスを確認するコマンドは以下の通り。

# nmcli d s
DEVICE  TYPE      STATE     CONNECTION
ens192  ethernet  接続済み  ens192
ens224  ethernet  接続済み  有線接続 1
ens256  ethernet  接続済み  有線接続 2
lo      loopback  管理無し  --

簡易表示をする場合は以下コマンドとなる。

# nmcli -t d
ens192:ethernet:connected:ens192
ens224:ethernet:connected:有線接続 1
ens256:ethernet:connected:有線接続 2
lo:loopback:unmanaged:

NIC設定 (Connection) の確認

NIC設定 (Connectionと呼ばれる) を確認するコマンドは以下の通り。

# nmcli c s
NAME        UUID                                  TYPE      DEVICE
ens192      d218a6ca-5466-43af-a7a1-30a61fd832bb  ethernet  ens192
有線接続 1  52a1f691-0784-3b34-a0c3-5bf9dc8d798e  ethernet  ens224
有線接続 2  2d2d5b96-bf3a-3360-8b3e-b0d3dbdea206  ethernet  ens256

簡易表示をする場合は以下コマンドとなる。

# nmcli -t c
ens192:d218a6ca-5466-43af-a7a1-30a61fd832bb:802-3-ethernet:ens192
有線接続 1:52a1f691-0784-3b34-a0c3-5bf9dc8d798e:802-3-ethernet:ens224
有線接続 2:2d2d5b96-bf3a-3360-8b3e-b0d3dbdea206:802-3-ethernet:ens256

特定のNICに設定されているパラメータを一覧表示させる場合は、Connection名を指定する。

# nmcli c s ens224
connection.id:                          ens224
connection.uuid:                        a1089320-d4d8-4746-a3cd-fc0bd982e643
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              ens224
connection.autoconnect:                 いいえ
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1596897283
connection.read-only:                   いいえ
connection.permissions:                 user:root
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     不明
connection.lldp:                        default
connection.mdns:                        -1 (default)
connection.llmnr:                       -1 (default)
connection.wait-device-timeout:         -1
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          いいえ
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-blacklist:   --
802-3-ethernet.mtu:                     自動
802-3-ethernet.s390-subchannels:        --
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            --
802-3-ethernet.wake-on-lan:             default
802-3-ethernet.wake-on-lan-password:    --
ipv4.method:                            auto
ipv4.dns:                               192.168.11.61
ipv4.dns-search:                        intrat.local
ipv4.dns-options:                       --
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.11.192/24
ipv4.gateway:                           192.168.11.31
ipv4.routes:                            { ip = 192.168.11.0/24, nh = 192.168.11>
ipv4.route-metric:                      -1
ipv4.route-table:                       0 (unspec)
ipv4.routing-rules:                     --
ipv4.ignore-auto-routes:                いいえ
ipv4.ignore-auto-dns:                   いいえ
ipv4.dhcp-client-id:                    --
ipv4.dhcp-timeout:                      0 (default)
ipv4.dhcp-send-hostname:                はい
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.never-default:                     いいえ
ipv4.may-fail:                          はい
ipv4.dad-timeout:                       -1 (default)

~(以下略)~

NIC設定を削除

NIC設定を削除するコマンドは以下の通り。OSがデフォルトで設定する名前が気に入らない場合や、一度設定をクリアして一から設定しなおしたい時などに利用する。

# nmcli c del "有線接続 1"
接続 '有線接続 1' (52a1f691-0784-3b34-a0c3-5bf9dc8d798e) が正常に削除されました 。

NIC設定を追加

NIC設定を新規追加するコマンドは以下の通り。

# nmcli c add type ethernet con-name ens224 ifname ens224
接続 'ens224' (d414ca42-62e5-4753-a04e-4df3088f347f) が正常に追加されました。

NIC設定にIPアドレス等の設定を追加

追加してNIC設定に詳細なパラメータを設定するコマンドは以下の通り。nmtuiコマンドで設定できる項目については、以下表に記載の通りとなる。設定不要な項目は省略できる。

パラメータ 設定例 説明
ipv4.method manual IPv4アドレス設定を選択。自動 (auto) または手動 (manual) で設定。
ipv4.addresses 192.168.11.192/24 IPアドレスを設定。
ipv4.gateway 192.168.11.31 デフォルトゲートウェイを設定。
ipv4.dns 192.168.11.61 DNSサーバを設定。
ipv4.dns-search intrat.local 「検索ドメイン」の設定。
ipv4.routes “192.168.33.0/24 192.168.11.31” スタティックルートの設定。「<ネットワークアドレス/プレフィックス> <ゲートウェイ>」で設定する。
ipv4.never-default no 「このネットワークはデフォルトのルートには使用しない」の設定。デフォルト「no」。
ipv4.ignore-auto-routes no 「自動的に取得されたルートを無視」の設定。デフォルト「no」。
ipv4.ignore-auto-dns no 「自動的に取得された DNS パラメーターを無視」の設定。デフォルト「no」。
ipv4.may-fail yes 「この接続には IPv4 アドレス設定が必要になります」の設定。デフォルト「yes」。
ipv6.method ignore IPv6アドレスの設定を選択。特にIPv6通信が不要であれば無視 (ignore) で設定。
autoconnect yes 「自動的に接続する」の設定。デフォルト「yes」。
connection.permissions “” 「全ユーザーに使用可能」の設定。デフォルト「""」。nmtuiでチェックを外した場合は「user:root」となる。

以下コマンド実行例となる。

# nmcli c mod ens224 ipv4.method manual ipv4.addresses 192.168.11.192/24 ipv4.gateway 192.168.11.31 ipv4.dns 192.168.11.61 ipv6.method ignore autoconnect yes ipv4.dns-search intrat.local ipv4.routes "192.168.33.0/24 192.168.11.31"

複数のスタティックルートを設定

スタティックルートを複数設定したい場合は+ipv4.routesのように頭に+を付けて設定を行う。なお、削除する場合は-ipv4.routesのようになる。

# nmcli c mod ens224 +ipv4.routes "192.168.11.0/24 192.168.11.31" +ipv4.routes "192.168.22.0/24 192.168.11.31"

設定反映 (アクティベート)

設定反映はアクティベートと呼ばれる作業が必要だが、これは以下コマンドを実行すればよい。インタフェースがUp状態でも本コマンドでアクティベートされる

# nmcli c up ens224
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/15)
2020年8月20日木曜日

OP25B環境でメール送信できるようにPostfixを構築する

OP25B (Outbound Port 25 Blocking) とは、ウイルスやスパムなどで外部に大量のメール送信をすることを防ぐことを目的として、外部との25番ポート (SMTP) の通信を拒否する設定のことをいう。この設定は一般的な家庭向けのインターネットサービスプロバイダーでは標準で設定されており、解除することはできない。

OP25Bが有効となった環境においては、SMTPによるメール送信はできないが、サブミッションポートと呼ばれる587番ポートを使ったメール送信を行うことができる。サブミッションポートを使ったメール送信では、プロトコル自体はSMTPが用いられるが、SMTP AUTHによる認証が必要となる。

今回、Postfixにてサブミッションポートを使ったメール送信設定を実施した

環境

  • OS : CentOS 8

Postfixのインストール

CentOS 8は標準でPostfixがインストールされていないのでインストールを行う。同時に、SMTP AUTHに必要となる「cyrus-sasl」関連のパッケージと、メール送信テストに使える「mailx」パッケージを導入しておく。

# dnf install postfix -y
# dnf install cyrus-sasl cyrus-sasl-plain -y
# dnf install mailx -y

Postfixの設定

1. Postfixのmain.cfを修正

Postfixインストール後、「/etc/postfix/main.c」に対して以下設定修正・追加を行う。メールのリレー先サーバは、プロバイダーの情報を参照して適切なFQDNを設定すること。なお、FQDNを[]を囲んでいるが、これはDNSに対してMXレコードの名前解決をせず、AレコードのIPアドレスにて名前解決を行う設定となる。今回のようにメール送信にプロバイダーのメールサーバを使用する場合は、原則[]で囲んでおけば問題なさそうだ。

# 受信許可ネットワークの設定
mynetworks = 127.0.0.0/8, 192.168.0.0/16

# 受付インタフェースを修正
inet_interfaces = all
inet_protocols = ipv4

# メールのリレー先サーバを指定
relayhost = [<メールサーバのFQDN>]:587

# SMTP認証設定 (最下行に追加)
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_password
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain,login

2. SMTP AUTH用のパスワードファイルを作成

SMTP AUTHはユーザ情報とパスワードが必要となるので、「/etc/postfix/smtp_password」というファイルを作成し、以下構文で設定を行う。

[<メールサーバのFQDN>]:587 <ユーザ名>:<パスワード>

以下記述例となる。

# vi /etc/postfix/smtp_password
[smtp.example.com]:587 USERNAME@example.com:PASSWORD

パスワード情報が含まれるため、rootのみ読み書きできるように権限設定を行ったのち、postmapコマンドでhash化したDBファイルを作成する。

# chmod 600 /etc/postfix/smtp_password
# postmap /etc/postfix/smtp_password
# ls -l /etc/postfix/smtp_password*
-rw------- 1 root root    58  8月 16 06:12 /etc/postfix/smtp_password
-rw------- 1 root root 12288  8月 16 06:12 /etc/postfix/smtp_password.db

3. Postfixを起動

最後にPostfixを起動させ、ステータスでエラーが発生していなければ、設定は成功となる。

# systemctl start postfix
# systemctl enable postfix
# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor pre>
   Active: active (running) since Sun 2020-08-16 05:48:12 JST; 27s ago
 Main PID: 23119 (master)
    Tasks: 3 (limit: 11091)
   Memory: 4.7M
   CGroup: /system.slice/postfix.service
           tq23119 /usr/libexec/postfix/master -w
           tq23120 pickup -l -t unix -u
           mq23121 qmgr -l -t unix -u

 8月 16 05:48:11 t3022cent systemd[1]: Starting Postfix Mail Transport Agent...
 8月 16 05:48:12 t3022cent postfix/master[23119]: daemon started -- version 3.3>
 8月 16 05:48:12 t3022cent systemd[1]: Started Postfix Mail Transport Agent.

動作確認

動作確認のためmailコマンドでメール送信をしてみよう。以下のように、-SオプションでPostfixを導入したサーバをメールサーバとして指定し、25番ポートを使ってメールが転送され、Gmailなどの外部のメールアドレスでメール受信できれば成功となる。

# echo "Test message" | mail -S smtp://<Postfixを導入したサーバのIPアドレス>:25 -s "Subject : Test mail" <送信先メールアドレス>
2020年8月17日月曜日

ESXiをインストールしたPCをWake on LANで起動できるようにする

法人向けのサーバ製品であれば、IPMI (HPEのiLOやDELLのiDRAC) といった専用のハードウェア制御機能が搭載されているので、遠隔操作にて電源の起動を行うことができる。しかし、コンシューマ向けの通常のPCにはIPMIの機能は備わっておらず、電源を落としたPCを遠隔地から起動させることはできない。

我が家の検証用PCは、外出中であっても検証目的などでアクセスしたい場面があるのだが、先日ゲリラ豪雨発生時の落雷によって、PCが落ちてしまった。

このような場合、遠隔地からPCが起動できず困ってしまうため、Wake on LANによる電源起動をできるよう設定してみた

やりたいこと

もともと私の自宅検証環境は、外出中であってもVPNを張って外部から接続が可能となっている。検証用のESXiは2台稼働しており、二重障害の発生は想定しないこととして、お互いESXi上で稼働している仮想マシンからマジックパケットを送信し、他方のESXiを起動できるよう構成する。

Wake on LAN有効化

ESXiがインストールされたPCにおいてWake on LANを有効化する場合、ESXi自体には特別な設定は不要となるが、UEFI BIOSにて設定変更が必要となる。マザーボードのメーカーによって設定箇所が微妙に異なるので、マニュアル等を参照して設定箇所は確認いただきたい。

以下は、私が所有するASUSとASRockのマザーボードでの設定箇所となる。

メーカー 設定箇所 設定内容
ASUS Advanced > APM > Power On By PCIE Enabledに変更
ASRock Advanced > ACPI Configuration > PCIE Devices Power On Enabledに変更

上記設定をすることで、Wake on LANの起動に必要となる「マジックパケット」をNICにて受信できる状態となる。あとは、ブロードキャストドメインに存在する他の機器から、マジックパケットを送信することでPCが起動される。

マジックパケットを送信する方法を簡単に記載しておこう。

【Windows】Wake on LANのマジックパケットを送信する

Windowsの標準機能ではマジックパケットを送信することができないので、フリーソフトなどを使ってマジックパケットを送信する。

例えば、以下URLからダウンロードできる「Wake on LAN for Windows」を使用すれば、マジックパケットを送信できる。

今回は試していないが、「nWOL」も軽量で使いやすそうだ。

【Linux】Wake on LANのマジックパケットを送信する

net-toolsパッケージに含まれるether-wakeを使うことでマジックパケットを送信することができる。以下は、実行例となる。

# ether-wake 11:22:33:44:55:66
2020年8月11日火曜日

RPAソフトウェア「UiPath」の無料評価版インストール手順

ロボティック・プロセス・オートメーション (RPA) と呼ばれる、人がPCで実施していた作業を自動化するソフトウェアが数年前から注目されており、日本国内・国外問わず多数のソフトウェアが販売されている。

Googleの日本国内における検索結果のトレンドをみると、「UiPath」と「WinActor」が2強であることがわかる。

UiPathは個人であれば永遠に無料で使える評価版が提供されている。ライセンスとしては、以下が含まれている。

  • Studioと呼ばれるRPAのワークフロー開発環境 x 2環境分
  • Attended Robotstと呼ばれる人が都度実行するロボット x 2台分
  • Unattended Robotsと呼ばれるUiPath Orchestratorと呼ばれる統合管理サービスから実行するロボット x 1台分

※(参考) UiPath RPA Platform無料評価版 Studio&Cloud | UiPath

今回、UiPathの無料評価版を使ってロボットのワークフロー開発環境となる「UiPath Studio Pro/StudioX」のインストール手順と、クラウドサービスにて提供されている統合管理ツール「UiPath Orchestrator」との接続手順を記載する

UiPath Studioのインストール

1. UiPathのアカウント作成

以下サイトから「Community Cloud」の「Try It」を選択し、アカウントの登録を行う。

アカウントの登録を行うと、以下のような管理画面 (UiPath Automation Cloud) にアクセスできるようになる。

2. UiPath Studio Pro/StudioXのインストーラをダウンロード

UiPath Automation Cloudの右側の「Studio/StudioXをダウンロード」を選択し、インストーラをダウンロードする。1つのインストーラにStudio/StudioXの両方が含まれており、容量は300MB程度となり、2020/8/10時点では、バージョンは「20.6.0-beta0093」となっていた。

3. UiPath Studio Pro/StudioXをインストール

ダウンロードしたexeファイルを実行すれば、何も聞かれることなくUiPath Studioがインストールされ起動してくる。

ちなみに、インストール後に再度インストーラを実行すると、後述するUiPath Orchestratorとの接続情報もリセットされるようなので注意。

4. Communityライセンスを選択

起動時にライセンスアクティベーションを求められるので「Communityライセンス」を選択する。

5. UiPath Studio Pro/StudioXのどちらかを選択

UiPath Studio Proと UiPath StudioXの選択が求められる。通常の仕様をするならUiPath Studio Proを選択すればよいが、マニュアルなしでワークフローを作って動作させてみたいのであれば、UiPath StudioXを選択するのもアリだ。
※実際、私はUiPath StudioXをマニュアルなしで使って希望通りのワークフローを作ることができた。

6. 最新版/安定板の選択

特に理由がなければ「安定板」を選択でよいだろう。

以上で、UiPath Studio Pro/StudioXが使えるようになった。

UiPath Orchestratorと接続

UiPath Studio Pro/StudioXをインストールしたのち、UiPath Orchestratorと呼ばれるクラウドサービスで提供されている統合管理ツールと接続する。UiPath Orchestratorと接続することで、正しくライセンスの消費もされるようになる。

1. UiPath Orchestratorにログイン

UiPath Automation Cloudにて、「Orchestrator サービス」を選択する。通常、「アカウント名+Default」という名前になっている。

2. 「クラシックフォルダー」を選択

UiPath Orchestratorでは「モダンフォルダー」と「クラシックフォルダー」の2つの表示があるが、今回は「クラシックフォルダー」で設定を行うため、左上のフォルダ選択にて「クラシックフォルダー」を選択する。

3. 「マシン」を作成

UiPath StudioをインストールしたOSのホスト名と同じ名前でマシンの登録を行う。

4. 「ロボット」を作成

ロボットを任意の名前 (今回はrobot01) で作成する。この際に、先ほど作成したマシンを選択し、OS上の実行アカウントを登録する。

なお、このアカウントを登録する際に、ドメイン名はFQDNではなく、コマンドプロンプトでwhoamiコマンドを実行した際のユーザと同じ表記で合わせる必要があるので注意。

Microsoft Windows [Version 10.0.17763.1217]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Users\tadmin>whoami
intrat\tadmin  ←★この表示と同じ表記でユーザ名を指定する

5. UiPath StudioをインストールしたマシンをUiPath Orchestratorに接続

タスクトレイの「UiPath Assistant」をクリックし、UiPath Assistantの画面を開き、歯車アイコンを選択したのち「Orchestrator Settings」を選択する。

以下を設定し、「Connect」ボタンを押す。

  • Machine Name : OSのホスト名が自動入力される
  • Orchestrator URL : https://cloud.uipath.com/<アカウント名>/<アカウント名>Default/
  • Machine Key : UiPath Orchestratorでマシンを作成した際に生成されたKeyを入力

問題なく接続できれば、ステータスが「Connected, Licensed」となるはずだ。

なお、ロボット作成時に設定したユーザ名が、OS情報 と不一致している場合は、「Connected, Unlicensed」となり、マウスオーバーすると「Robotが存在しません」と表示される。

この場合は、UiPath Orchestratorで設定したロボットの登録内容において、ユーザ情報がOSのコマンドプロンプトでwhoamiコマンドを実行した際の表示と同じになっていない可能性があるので、再度設定見直しを実施しよう。

まとめ

以上でUiPathを使用する準備が整った。試しに、UiPath StudioXを使ってスマホで撮影した動画をXMedia Recodeというフリーソフトでエンコードする作業を自動化してみたところ、1時間程度で実装することができた。直感的にワークフローを作成することができ、利用者に対するハードルはかなり低いソフトウェアであると感じた。

2020年8月8日土曜日

Raspberry Pi OSインストール手順 (Raspberry Pi Imagerを使ったOSイメージ書き込みと初期設定)【2020年版】

2017年に購入したRaspberry Pi 3 Model Bがあったのだが、途中でRaspberry Pi Zero Wに置き換えたことにより、ずっと使わずに放置していた。ふと使いたくなって久しぶりに起動させようとしたら、Kernel Panicで起動しなくなっていたのでRaspbianをインストールしなおすことにした。

前回のインストール手順は2017年に記事としてまとめていたので、そちらを参考にしつつ、今回も同様にNOOBSを使ってインストールをしようとしたのだが、調べてみるとNOOBSではなく「Raspberry Pi Imager」を使う手順に推奨手順が変わっているらしい。

それどころかRaspbianも名前が変わって「Raspberry Pi OS」に名称が変更されているらしい。

と、いろいろ数年の間に変化があったので、再度インストール手順をまとめてみた。

Raspberry Pi ImagerにてSDカードにRaspberry Pi OSを書き込む

1. Raspberry Pi Imagerをダウンロード

以下からダウンロードする。私のダウンロードしたタイミングでは「imager_1.4.exe」というバージョンとなっていた。

2. SDカードに書き込みを行うPCにRaspberry Pi Imagerをインストール

Raspberry Pi Imagerはexe形式になっているので、実行してPCにインストールすればよい。

3. Raspberry Pi Imagerを起動し書き込み前の設定を行う

Raspberry Pi Imagerを起動するとOSとSDカードの指定を行うシンプルな画面が表示されるので、以下の通り設定する。

  • Operating System : Raspberry Pi OS (32-bit)
  • SD Card : 書き込み先のSDカードを指定

なお、SDカードは書き込み時にフォーマットされるので、未フォーマットの状態であっても問題ない。今回は、過去にインストールしたRaspbianが書き込まれた状態のまま書き込みをしたが、問題なく成功している。

4. 書き込み開始

SDカードの内容はすべて消去される旨のメッセージが表示されるので、「Yes」を選択して書き込みを開始する。

インターネット経由でデータをダウンロードしながら書き込みするので環境に依存するが、おおよそ1時間で書き込みは完了する。気長に待とう。

5. 書き込み完了

書き込みが完了すると、SDカードを自動でアンマウントしてくれるので、そのままPCから抜いて、Raspberry Piに刺せばよい。

Raspberry Piを起動&初期設定

1. 初期設定ウィザードにて設定

Raspberry Pi OS初回起動時には「Welcome to Raspberry Pi」という名前の初期設定ウィザードが表示されるので、以下の通り設定していく。

  • Set Country :
    • Country : Japan
    • Language : Japanese
    • Timezone : Asia/Tokyo
  • Change Password : 適切に設定
  • Set Up Screen : そのまま次へ
  • Set Wireless Network : しばらく待つとWi-FiのSSIDが一覧表示されるので、接続対象のSSIDを選択
  • Enter Wireless Network Password : 適切に設定
  • Update Software : そのまま次へ。アップデートは30分程要するので気長に待つ

ウィザードの最後で再起動を要求されるので、「Restart」を選択し再起動を行う。

2. SSHを有効化

Raspberry Pi OSはデフォルトではSSHが無効となっている。リモート操作ができず不便なので有効とする。端末を開き、以下を実行して「Raspberry Pi Software Configuration Tool (raspi-config)」を開く。

$ sudo raspi-config

raspi-configの画面が表示されるので、「5 Interfacing Options」を選択する。

「P2 SSH」を選択する。

「Would you like the SSH server to be enabled?」と表示される。

この画面で「はい」を選ぶとSSHが有効に、「いいえ」を選ぶとSSHが無効になる。「いいえ」が設定変更をキャンセルする意味ではなく、SSHが無効化されてしまうので注意

ESCキーでraspi-configを抜けて、sshdのステータスを確認し問題なく起動していればOKとなる。

$ systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-07-29 13:26:11 JST; 3s ago

~(以下略)~

3. 時刻同期設定

Raspberry Pi OSではDebianベースとなるので、時刻同期はntpdやChronyではなく「systemd-timesyncd」が利用されている。

時刻同期の状態を確認すると、「x.debian.pool.ntp.org」に対して時刻同期はされているようだ。

$ timedatectl timesync-status
       Server: 2001:470:1f07:9fe::f00d (2.debian.pool.ntp.org)
Poll interval: 34min 8s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 1
    Reference: GPS
    Precision: 1us (-24)
Root distance: 0 (max: 5s)
       Offset: +6.899ms
        Delay: 196.933ms
       Jitter: 12.925ms
 Packet count: 9
    Frequency: -4.487ppm

私の環境の場合は、NTPサーバが存在することから、以下の折設定を変更する。

$ cat /etc/systemd/timesyncd.conf
~(中略)~

[Time]
NTP=192.168.33.23 ←★追記
#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

設定を変更後、設定反映を行う。

$ sudo systemctl restart systemd-timesyncd
Warning: The unit file, source configuration file or drop-ins of systemd-timesyncd.service changed on disk. Run 'systemctl daemon-reload' to reload units.
$ sudo systemctl daemon-reload

反映後の時刻同期のステータスを確認する。「System clock synchronized」がYesであれば問題なく時刻同期が成功している。

$ timedatectl status
               Local time: 水 2020-07-29 13:45:55 JST
           Universal time: 水 2020-07-29 04:45:55 UTC
                 RTC time: n/a
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

同期先のサーバが変更されていればOKとなる。

$ timedatectl timesync-status
       Server: 192.168.33.23 (192.168.33.23)
Poll interval: 34min 8s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: 85F3EEA4
    Precision: 1us (-26)
Root distance: 2.532ms (max: 5s)
       Offset: -1.112ms
        Delay: 5.927ms
       Jitter: 1.709ms
 Packet count: 117
    Frequency: -4.424ppm

4. 固定IP設定

DHCPによるIPアドレス設定の場合は、特にデフォルトから変更する必要はないが、固定IPアドレス設定を行う場合は「/etc/dhcpcd.conf」にてIPアドレス等の指定を行う。

$ sudo vi /etc/dhcpcd.conf
~(中略)~
interface eth0                     # 有線はeth0を指定
static ip_address=192.168.11.15/24 # IPアドレスとサブネットマスクを設定
static routers=192.168.11.31       # デフォルトゲートウェイを設定
static domain_name_servers=192.168.11.61 192.168.11.62 # DNSを設定
interface wlan0                    # 無線 (Wi-Fi) はwlan0を指定
static ip_address=192.168.33.15/24 # IPアドレスとサブネットマスクを設定

上記設定後OS再起動を行い、IPアドレスの状態を確認してみた。以下の通り、eth0とwlan0に指定した固定IPアドレスが設定されている。

$ ip a | grep -e eth0 -e wlan0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet 192.168.11.15/24 brd 192.168.11.255 scope global noprefixroute eth0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.33.15/24 brd 192.168.33.255 scope global noprefixroute wlan0

5. スタティックルート設定

Raspberry Pi OSでルーティングを追加する場合は、以前以下の記事にて説明をしている。

再掲とはなるが、ルーティング追加のコマンドを「/etc/network/if-up.d/static-routes」に記載することで、OS起動時にルーティング追加できる。

$ sudo vi /etc/network/if-up.d/static-routes
#!/bin/sh
# Add Static Route
sleep 10
route add -net 192.168.11.0 netmask 255.255.255.0 gw 192.168.33.31 metric 1 wlan0

$ sudo chmod +x /etc/network/if-up.d/static-routes

まとめ

以上でRaspberry Pi OSのインストールと初期設定手順は完了となる。

最後に、Raspberry Pi OSのバージョンを確認してみたところ、バージョンは10.4となっていた。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

$ cat /etc/debian_version
10.4
2020年8月2日日曜日

Pacemakerでメンテナンスモードを使って、クラスタリソースのフェイルオーバーを抑止する

Pacmekaerでは、Pacmekaer自身の計画的なバージョンアップやリソースの設定変更時などにおいて、予期せぬリソースのフェイルオーバーやSTONITH発動を抑止することを目的として「メンテナンスモード」という機能が用意されている。

メンテナンスモード実行方法

クラスタ全体をメンテナンスモードにする場合

クラスタ全体をメンテナンスモードにする場合は、以下を実行する。「maintenance」のスペルが長くて面倒くさいが、頑張って入力する

# pcs node maintenance --all

クラスタ全体をメンテナンスモードから通常状態に戻すには、以下を実行する。

# pcs node unmaintenance --all

各ノード単位でメンテナンスモードにする場合

ノード単位でメンテナンスモードにする場合は、以下を実行する。対象ノード名を省略した場合は、コマンドを実行したノードがメンテナンスモードになる。

# pcs node maintenance <対象ノード名>

ノード単位でメンテナンスモードから通常状態に戻すには、以下を実行する。対象ノード名を省略した場合は、コマンドを実行したノードが通常状態に戻る。

# pcs node unmaintenance <対象ノード名>

実際にメンテナンスモードを試してみた

実際にクラスタをメンテナンスモードにした際の動作を確認してみよう。

ノード#1 (t3021cent) をメンテナンスモードにした状態で、手動でSquidのサービスを停止しても、リソースのフェイルオーバーが発生しないことを確認する。

まずは、ノード#1をメンテナンスモードにする。ノードのステータスが「maintenance」となり(★1箇所)、各リソースは「unmanaged」と表示される(★2箇所)。

# pcs node maintenance t3021cent
# pcs status
Cluster name: clst-01
Cluster Summary:
  * Stack: corosync
  * Current DC: t3021cent (version 2.0.3-5.el8_2.1-4b1f869f0f) - partition with quorum
  * Last updated: Wed Jul 29 08:50:02 2020
  * Last change:  Wed Jul 29 08:49:57 2020 by root via cibadmin on t3021cent
  * 2 nodes configured
  * 8 resource instances configured

Node List:
  * Node t3021cent: maintenance ★1
  * Online: [ t3022cent ]

Full List of Resources:
  * Resource Group: rg-01:
    * rs-vip-33 (ocf::heartbeat:IPaddr2):       Started t3021cent (unmanaged) ★2
    * rs-systemd-squid  (systemd:squid):        Started t3021cent (unmanaged) ★2
  * Clone Set: rs-systemd-unbound-clone [rs-systemd-unbound]:
    * rs-systemd-unbound        (systemd:unbound):      Started t3021cent (unmanaged) ★2
    * Started: [ t3022cent ]
  * Clone Set: rs-ping-33-clone [rs-ping-33]:
    * rs-ping-33        (ocf::pacemaker:ping):  Started t3021cent (unmanaged) ★2
    * Started: [ t3022cent ]
  * rs-stonith-01       (stonith:fence_ESXi):   Started t3021cent (unmanaged) ★2
  * rs-stonith-02       (stonith:fence_ESXi):   Started t3022cent

Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

この状態でsquidを手動で停止させてみる。

# systemctl status squid | grep Active
   Active: active (running) since Sat 2020-07-25 15:45:49 JST; 3 days ago
# systemctl stop squid
# systemctl status squid | grep Active
   Active: inactive (dead)

Squidを停止させても、Squidのリソースである「rs-systemd-squid」のステータスは「Started t3021cent (unmanaged)」となっており(★箇所)、フェイルオーバーが発生しないことがわかる。

# pcs status
Cluster name: clst-01
Cluster Summary:
  * Stack: corosync
  * Current DC: t3021cent (version 2.0.3-5.el8_2.1-4b1f869f0f) - partition with quorum
  * Last updated: Wed Jul 29 08:55:31 2020
  * Last change:  Wed Jul 29 08:49:57 2020 by root via cibadmin on t3021cent
  * 2 nodes configured
  * 8 resource instances configured

Node List:
  * Node t3021cent: maintenance
  * Online: [ t3022cent ]

Full List of Resources:
  * Resource Group: rg-01:
    * rs-vip-33 (ocf::heartbeat:IPaddr2):       Started t3021cent (unmanaged)
    * rs-systemd-squid  (systemd:squid):        Started t3021cent (unmanaged) ★
  * Clone Set: rs-systemd-unbound-clone [rs-systemd-unbound]:
    * rs-systemd-unbound        (systemd:unbound):      Started t3021cent (unmanaged)
    * Started: [ t3022cent ]
  * Clone Set: rs-ping-33-clone [rs-ping-33]:
    * rs-ping-33        (ocf::pacemaker:ping):  Started t3021cent (unmanaged)
    * Started: [ t3022cent ]
  * rs-stonith-01       (stonith:fence_ESXi):   Started t3021cent (unmanaged)
  * rs-stonith-02       (stonith:fence_ESXi):   Started t3022cent

Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

Squidを停止したままメンテナンスモードを解除するとフェイルオーバーしてしまうので、Squidを起動した後、メンテナンスモード解除を行う。

# systemctl start squid
# pcs node unmaintenance t3021cent
# pcs status
Cluster name: clst-01
Cluster Summary:
  * Stack: corosync
  * Current DC: t3021cent (version 2.0.3-5.el8_2.1-4b1f869f0f) - partition with quorum
  * Last updated: Wed Jul 29 08:56:52 2020
  * Last change:  Wed Jul 29 08:56:48 2020 by root via cibadmin on t3021cent
  * 2 nodes configured
  * 8 resource instances configured

Node List:
  * Online: [ t3021cent t3022cent ]

Full List of Resources:
  * Resource Group: rg-01:
    * rs-vip-33 (ocf::heartbeat:IPaddr2):       Started t3021cent
    * rs-systemd-squid  (systemd:squid):        Started t3021cent
  * Clone Set: rs-systemd-unbound-clone [rs-systemd-unbound]:
    * Started: [ t3021cent t3022cent ]
  * Clone Set: rs-ping-33-clone [rs-ping-33]:
    * Started: [ t3021cent t3022cent ]
  * rs-stonith-01       (stonith:fence_ESXi):   Started t3021cent
  * rs-stonith-02       (stonith:fence_ESXi):   Started t3022cent

Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

以上でメンテナンスモードの動作確認は完了となる。

人気の投稿