Windows10に Node.jsを導入する

インストールは簡単

Node.js サイトにアクセスすると、最新のmsi インストーラが掲載されているので、それをダウンロードしてインストールするだけです。私はLTS版をインストールしました。

セットアップ PROXY

会社でnode.jsを使う場合はproxy サーバーの設定が必要になる。コマンドプロンプトよりnpmコマンドで環境変数に定義する。

> npm config set proxy http://<ユーザー名>:<パスワード>@<PROXYサーバーアドレス>:<ポート番号>
> npm config set https-proxy http://<ユーザー名>:<パスワード>@<PROXYサーバーアドレス>:<ポート番号>

セットアップ npmを最新にする

最新にしておかないと、オメーのnpm古すぎ!とか怒られることあるので、パッケージ管理ツールのnpmを最新にします。

> npm install -g npm
:
> npm rebuild
> npm --version
6.11.3

 

誤自宅のメモリ事情

今、メモリ価格は底値をついた

先週末までメモリ価格は底値でした。5月連休で2枚セットで約26000円したメモリが18000円まで下がっていました。ところが先週末は反転して19000円に上昇です。買うなら今です。

私が購入したものではないですが、主にゲーム用OCメモリもkakaku.comによれば同じような形で価格遷移しています。

誤自宅サーバーで使うメモリ

光らないメモリ。メモリを光らせてどうするのさ。非発光原理主義者としては基本要件ですが、それとは別にZen2が待ちきれなくて 5月連休にRyzen7 2700XとX470アーキでメモリにはG-SKILLの3200MHzを購入しました。正直なところですと、Zen2アーキがでたとしてもRHEL7のカーネルで動くとは思えなかったので。

Ryzenの場合はメモリ性能がシステム全体の性能に影響します。リンク先の DDR4 Memory Scaling Performance with Ryzen 7 2700X on the AMD X470 Platform ベンチマークを見てください。メモリクロックが3000MHzを境界に性能差があきらかになっています。購入時には是非とも3000MHz以上のものをチョイスしたいところですが、シングルランクとデュアルランクという区別と、その区別毎に動作可能最大周波数が異なるそうです。
誤自宅サーバーを組む場合は全メモリスロットに挿すだろうし、可能な限りの大容量で組みますのでなかなか難しいです。今回のアーキですと4枚挿しで1枚あたり16GBのメモリを入れたいところですが、4枚挿しの場合のクロックはシングルランクのメモリでも2133MHzまでしか標準スペックです。容量を犠牲にして2枚挿しでマザーボードが6層基板であれば2933MHzまでとか。ふむ。3000MHz以上はつまりOCですので安定稼働は優先課題から除外します。容量と性能優先です。

購入品 G.Skill F4-3200C16D-32GSXWB を2セット

メモリのスペックは以下の通りです。これを2セット、4枚挿入しています。

Memory Type DDR4
Capacity 32GB (16GBx2)
Multi-Channel Kit Dual Channel Kit
Tested Speed 3200MHz  PC4-25600
Tested Latency 16-18-18-38-2N
Tested Voltage 1.35V
SPD Speed2133MHz
SPD Voltage 1.20V

マザーボードの設定を変更してSPDなど無視して額面どおりに動かす設定にしました。1.35Vで3200MHzにして、ついでにCPUクロックも全8コア4.1GHz固定にしています。CPUクーラーは虎徹2にしました。安定稼働は未判断ですが2週間程度は連続稼働できています。

参考までにマザーボードはASUSのPRIME X470-PROにしています。これを購入する前にASRockのMASTER SLIを購入したのですが、痛恨のミスでPCIeスロットが2本しか搭載していないのを確認しておらず、急きょ購入しました。RAIDアレイボードと10GbEのNICがあり、これにビデオボードを挿す必要があるので16レーン形状のスロットが3本必要です。

X470-PROはPCIe の3本目がGen2 でレーン数4本と貧弱ではあるのですが、スロット形状は16レーンなので、再貧弱ビデオボードを挿すことが可能です。たとえば表示するだけなら1スロット幅で搭載できるGT1300です。サーバーでMLをするわけでもないのでこれで十分です。GNOMEたちあげてChromeからYouTubeも閲覧できます。

今、この構成にSATAのSSDを取り除いて、NVMEのSSDを搭載して性能向上を図ろうとしています。NVMeをそれもLinuxで扱うのは初めてだったのでそのあたりの技術的な情報は後日報告します。

CISCO CatalystでLAG(EtherChannel)を設定してNETGEAR L2SW xs708Eと対向する

L2 EtherChannelの設定

自宅では1GbEと10GbEのネットワークセグメントの橋渡しにCiscoのCatalyst 3750G-24TSを使っています。ws-c3750g-24ts-1uっていう奴ですね。もうEOLで大古ですが家庭内のL3SWとして1GbEならこれで十分です。オークションで2万円以下で中古業者から購入できます。CCNA勉強用にも最適じゃないでしょうか。

Switch間の接続は家庭内なので切れたりはしませんが、高速道路でいうところの複数車線の性能がでる可能性があるのでLAG(CiscoではEtherChannelと呼ぶ)を設定します。リンク速度が最大で2Gbps (1対向ではなく複数のホスト対向の合計)になります。こういったLAGにはLACPを使いますが私が所有する対向側のL2SWがstatic LAGのみサポートとのことで、教科書どおりの綺麗な設定ではなくなっています。

対向先の10GbEのポートを2つも使ってMAX 2Gbpsとは、なんて贅沢な設定なんだ!

ポイント

  • L3SWですがEtherChannelはL2の定義です。
  • 複数のポートを同時に定義して束ねる(チャネル化する)のでrange指定します。
  • 組んだ設定はPort-channelとしてインターフェース定義します。
  • 対向のNETGEAR L2SWのLAGはスタティック・リンク・アグリゲーションのためLACP(IEEE802.3ad)は使えません。強制的にチャネルさせます。(mode on)
  • 対向はCISCO製品ではないので独自のDTPは送信しないようにnonegosiateにします。しなくてもいいですけれどね。
  • 今回の構成は複数のVLANを含みません。Switch間接続に複数のVLANを通す場合は 802.1qとtrunk設定が必要です。ポートVLAN-IDは20とします。対向先は10GbEで別セグメントとして運用しているのだ!
  • 設定するポートはint gig1/0/23 と24で作成するPort-channelは6とします。
  • no shutdownは忘れがち
  • 終わったらwriteしとこうな!

conf t

l3sw(config) # interface range gigabitethernet 1/0/23 -24
l3sw(config-if-range) # switchport access vlan 20
l3sw(config-if-range) # switchport mode access
l3sw(config-if-range) # switchport nonegotiate
l3sw(config-if-range) # no shutdown
l3sw(config-if-range) #
channel-group 6 mode on
l3sw(config-if-range) # exit

CentOS 7.6でPHP 5.6を扱う

CentOS 7.6ではPHPは5.4が標準

PHP 5.6のEOLは2019年なので残り僅かだが、CentOS 7.6では5.4が標準である。セキュリティ問題はバックポートされているので心配ないが、バージョン番号だけをみてインストール可否をしているパッケージがあるので(たとえばWordpress)、とりあえず5.6にあげておきたい。最新はPHP 7.1ですかね。epelのレポジトリをインストールされていること前提で手順を進めます。

レポジトリをインストール
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

ポイント:remiのレポジトリはデフォルトでdisableになっているので利用時は enablerepoする。
PHP5.6がレポジトリにあるか確認
# yum list --enablerepo=remi --enablerepo=remi-php56 | grep php
ずらっとでてくればOK

ではインストール
ポイント:"epelもenablerepoにしている" 依存するライブラリがepelにあるのだ(libmcrypt)
# yum install --enablerepo=epel --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof

バージョンアップされていることを確認
# php --version
PHP 5.6.40 (cli) (built: Apr 30 2019 11:35:35) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
    with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans

Ryzen7でファイルサーバー兼ovirt-engineを組む(その2)

oVirtって何さ

oVirtはvmware社のvSphereとだいたい同じ位置づけの仮想化統合基盤でOSSである。ESXiに相当するのがoVirt-nodeでvCentreに相当するのがoVirt-engineかな。oVirtを商用サポートしたのがRHEVでoVirt開発のほとんどがRH社員で構成されている。

ああ、そんなこと聞いているんじゃないってことは判っているさ。oVirtは誤自宅で構築できるパーソナルクラウドもできる基盤だよ。しかもサーバー1台でも構築できちゃうんだぜ。

誤自宅のoVirtの構成

今回マザーボードが故障したため、CPUをcore i7-3770KかRyzen7 2700Xにアーキを変更してコア数とメモリが倍に増えた。なんで増強しているかというと、ファイルサーバーの余ったCPUパワーを仮想サーバーに振ることができるからさ。

OSCentOS 7.6
ファイルサーバーNFS / iSCSI / FCP 基本はNFS
管理DBPostgreSQL
ハイパーバイザーKVMベース(KVM + qemu, livbirt, VDSM)
管理ovirt-engine

構築/設定は簡単

具体的な手順はいろいろなサイトにあるので多くは語らないけれど環境だけなら1台のPCで作れるし、管理側のメモリ利用量は4GB程度なので2つ3つくらいのVMは余裕で作れる。

  1. CentOS のインストールと最新化
  2. 内向けDNSにホスト登録 (/etc/hostsにFQDNを書いて頑張ってもよい)
  3. ファイルサーバーとしてnfsを構築&firewall-cmdでポート開放 サービス起動とexportsの設定(2つ必要でVMイメージ保存用とインストールなどで用いるISOイメージ保存用)
  4. ovirtのリポジトリ情報をインストール(2019/5時点の最新は4.3)
  5. ovirt-engineをインストール
  6. engine-setupコマンドで基本構成を組む(自ホストが管理サーバでDBも抱えるように問いに答えるだけ)
  7. 自動で構築開始、PostgreSQLやfirewall-cmdが自動でセットアップされる
  8. 管理WEBから自ホストが仮想サーバーであるとして登録、KVMなどが自動でセットアップされる
  9. 必要ならホストのネットワーク設定を実施する
  10. ストレージドメインとして3で作ったnfsストレージを登録する
  11. イメージデータバックアップ用として別サーバーにnfsを用意してエキスポートドメインとして登録する

Ryzen7 2700X oVirt(qemu)での認識

AMD EPYC OBPB SSBD としてCPUのアーキタイプが登録される。これってEPYCのアーキで例の投機的実行に関する脆弱性対策が2つとも打たれているCPUだよっていう意味だ。コア数がめちゃくちゃ少ないEPYCですかね。それEPYCといわないと思うが、アーキ的には同じなのかね。

逆にこれまでのcore i7-3770Kが速いSandyBridgeではなくWestmareとか認識されていて、coreアーキがスポイルされていたからうれしい限り。うちの管理画面をちょっと見せます。