「Linuxのこと」カテゴリーアーカイブ

自分の尻拭いプロジェクト – 2 – Zabbix 4.4をCentOS 8(8.0.1905 (Core))にインストールする

ども。こんばんは。

気づけば年末年始の休暇もあと1日となりました。

この年末年始の最後に、やかして吹き飛ばした旧Zabbixの代わりに、新しいZabbixを構築します。

せっかくなのでCentOS 8にインストールします。

以下、とりあえずzabbixがうごいたやったーくらいの手順です。
SELinuxやfirewalldもノリで無効化しています。

apacheの設定周りとかもデフォルトのままです。

■CentOS 8.0.1905のインストール

VMWare ESXi 6.7.0U3上に仮想マシンを作成してDVD ISOファイルをもとにインストールします。
インストーラーは7とあんまり変わらないです。

とりあえず必要なものは後で入れるので、サーバにしました。
※あとでランレベルは3にします。

とりあえず入りました。

あれ、ifconfigとかnetstatとかそのまま使えちゃうのね。ipとかssとかせっかく覚えかけてたのに。

■CentOS 8 初期設定(1) ランベルを3にしたい

昔の人なので、inittabを探し回ってましたが、今はないようですので、以下のコマンドで変更します。
※CentOS 7系からこれのようですね。おじさんなので、inittabとかinit 3とかrunlevelな人ですorz

# systemctl set-default multi-user.target

以下確認コマンド

# systemctl get-default

■CentOS 8 初期設定(2) SELinuxを無効にする

無効にします。が、やらかしてカーネルパニックになります。
※今でもカーネルパニックっていうのかな。

Failed to load SELinux policy, freezing.

昔ながらのやらかして、/etc/sysconfig/selinuxの書き間違いです。

なので、シングルユーザで入って直します・・・が、シングルユーザモードの入り方がわからない。カーネルパラメータに–singleとか追加して起動すればいいんでしょ?と思ってたらこれも違っていた。。。

4行目のroを消してrw init=/sysroot/bin/shに書き換えてctrl+xで起動します。

はいれました。chroot /sysrootしてもいいですし、今回は/etc/selinuxを直すだけなので直接編集しました。

おバカですねぇ。disabledはそっちじゃない。(このミスはCentOS 5の頃からやらかしている気がしますね)

こんな感じに直してrebootして無事起動しました。

■CentOS 8 初期設定(3) その他初期設定

firewalldの無効化とSSHのrootログインの無効化をしました。
このあたりは特に特殊なことはなかったので割愛。

■(未解決)SSH経由での操作のレスポンスが悪い

ぱっと解決できなかったので放置していますが、ログイン後の操作のレスポンスがとても悪いです。エンター押すだけでもちょっと待たされます。VMWareのコンソール上だとそんなに遅く感じないのでSSH関連かtty関連のなにかかなー。ちょっとイライラします。

これはおいおい調査します。

■CentOS 8 初期設定(4) アップデート

CentOS 8からはyumが廃止されdnfになりました。
※pythonを3系に完全移行するためにdnfに変えたらしいです。

なおyumコマンドはdnfのラッパーとして残っていますのでyum updateでもdnf updateと同義になります。

とりあえずOSはこんな感じでしょうか。

■ZABBIX 4.4のインストール

以下のURLに従います。

https://www.zabbix.com/jp/download

うちは今回、4.4 / CentOS 8 / MySQL / Apache の構成としました。

なお、コマンドどおりに実行してもうまく行かない点がありましたのでその点は補足します。

まず先にmysql-serverとmysqlのインストールが必要です。
※サーバとクライアント。普通にdnf install mysql mysql-serverとかでいいです。自動起動とか忘れずに。

上記サイトに従ってコマンドを実行してきます。

・「a. Install Zabbix repository」はそのまま。

# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm
# dnf clean all

・「b. Install Zabbix server, frontend, agent」もそのまま。

# dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent

・「c. Create initial database」は案内されたgrant文がmysql 8系では通りません。

# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by ‘password’;
mysql> quit;

MySQL 8系ではGRANTと同時にユーザを作れなくなったようで、以下のようなエラーになります。

mysql> grant all privileges on zabbix.* to zabbix@localhost identified by ‘password’;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘identified by ‘password” at line 1

なので、ユーザ作成とGRANTをバラバラに実行します。
※passwordのところにはパスワードを設定します。
(“mysql> create database zabbix character set utf8 collate utf8_bin;”は実行できるはず。)

mysql> create user zabbix@localhost identified by ‘password’;
mysql> grant all privileges on zabbix.* to zabbix@localhost;

以下のコマンドも普通に流せました。

# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

あとは、サイトの記載どおりです。

とりあえずコアスイッチだけぽいっと追加しましたがうまく動いてそうです。

【バックナンバー】

ではでは。またの機会に。

自分の尻拭いプロジェクト – 1 –

ども。こんばんは。

先日のオペミスで仮想マシンを全台虚空に返したわけですが、昨日(2019/12/30)午後〜夜まで時間をかけてなんとか復旧しました。

結局ほぼ元通りの構成で面白みはないですが、バージョンがだいぶ新しくなりました。

  • AD(Windows Server 2008 R2)
    • Windows Server 2012 R2をインストールして再構築。
      ※手持ちのライセンスが2012 R2しかないので・・・。
    • NPS(RADIUS)の構築までサクッとできた。
      • ちなみにAD DSはインストールしていたけど、証明機関のをインストールしておらずPEAPが使えなくてハマった。
        証明機関さえインストールすれば解決できる。
        (旧ADはIISの証明書とかも発行してたので証明機関入ってたみたい。)
    • MacBook Airは一旦Active Directoryのバインド解除して再度バインドした。無事AD上のコンピュータに表示されたし新しい証明書もインストールされているので多分大丈夫だと思う。。。プロファイルも消えなかった。
    • 過去もハマったけど、評価版にそのままライセンス入れようとして、「このエディションのWindowsのライセンス認証にそのキーは使えません。別のキーを試してください」とか言われたので以下のコマンドでキーを登録。

      DISM /online /Set-Edition:ServerDatacenter /ProductKey:xxxxx-xxxxx-xxxxx-xxxxx-xxxxx /AcceptEula

  • 大昔から動いているLinux(CentOS 5)
    • 正直作り直しは困難と判断・・・。DHCPの設定ファイルも抜き出したかったし。思い出はなかなか消せなかった。
    • あと、基本DNSがこいつで、ADもDNSはこいつを参照/更新している関係で意外と大事な役割になっている。
      (今回もADにはDNSサーバをインストールせずに作ってしまった・・・。)
    • Acronisで取得したバックアップ(tibファイル)から復元 
      • vSphere Converter Standaloneでは6.0までしかサードパーティのイメージ変換機能が実装されておらず、手元の5.0でtibをvmdkに変換・・・するも失敗。
      • しょうがないのでAcronis TrueImageのブータブルCDで頑張って復元。
      • vSphere 6.7だと、マウスが動かない。
        TABキーとかの操作だとどうもうまく行かず、マウス機能(F10とか押すとテンキーでカーソルが動かせる)で頑張った。(わざわざMacBook Airにキーボード取り付けて・・・)
      • 一部どうしても見えないボタンがあったのでTABキーとか駆使してなんとか復元。結局これが一番うまくいくなー。(数年前にも同じことした気がする。)
  • PBX
    • FreePBX STABLE SNG7-PBX-64bit-1910(FreePBX 15/Linux 7.6/Asterisk 16)で再構築。
    • アナウンス音声の日本語版が付属していて嬉しい。
    • ひかり電話とのトランク、Cisco IP Phone 7961のレジスト、内線、外線発信/着信までまさか数時間で終わるとは思わなかった。
    • 特にIP PhoneのConfigが旧FreePBXサーバのtftpbootフォルダにしかおいてないと思い込んでいたのでもう一度Config作成は絶望かと半分あきらめていましたが、過去の自分がうまく動いたときの一連のパケットキャプチャを保存してくれていたので、パケットキャプチャの中身からtftpでやりとしていたファイルを抽出して復元できました。まぁファイルとしておいておいてくれれば言うことないのですが、自分の所業なので諦めます。(どうせパケットおいておけば最悪どうにかなるだろうとか当時考えたんだろうな。)
    • FreePBXのバージョンもだいぶ変わっていたけどCisco側は設定修正なしでいけた。日本語化まで数時間でできた。
  • 監視サーバ
    • まだ未構築・・・。年明けかな。

以下、電話関連(FreePBX)のメモ。

環境、バージョンは以下の通り。

ハイパバイザー:VMware vSphere 6.7.0U3
イメージ:FreePBX STABLE SNG7-PBX-64bit-1910(CentOS 7.6ベース)
FreePBX :15
Asterisk:16

今回は全部WebUIだけで完結しましたが、以下ハマったポイントを書いておきます。

なおSIPドライバーはPJSIPです。

  • FreePBXのIPアドレス変更
    • /etc/sysconfig/network-scripts/ifcfg-eth0を編集。
      ※CentOS 7系だけどNetworkManagerは使ってないみたい。
  • tftpサーバの起動
    • /etc/xinetd.d/tftpを編集
    • disableをnoにしてservice xinetd restartする。
  • Fail2Banの解除
    • なんかGUIからできなくなった?ぽいのでコマンドで
      service fail2ban stop
      /var/log/fail2ban.logをけす
      service fail2ban start
  •  FreePBXのモジュール更新
    • 量が多すぎて一度にアップグレードができなかった。少しずつ更新する必要あり。
  • TCPのリッスン(Cisco IP Phoneのため)
    • Asterisk SIP設定で、chan_pjsipの設定を変えばいいが、Apply Configだけでは反映されず、osごと再起動が必要だった(Asteriskの再起動でも良かったかも)。
  • Outboundルール(外線発信)
    • 以前は「0X」だけでマッチした気がしますが、今回はそれだとルールにマッチせず11桁と10桁それぞれ登録しました。
  • ひかり電話にRegistできているのに、外線発信、着信両方FreePBXまでこない。
    • 正直ここが一番ハマりましたが、Asterisk SIP設定のGeneral SiP SettingsのNAT設定の外部アドレスを自分自身のIPアドレスにして、再起動したらうまくいきました。
      ※我が家はFreePBXからひかり電話HGWまでの間はNATはしていません。
      デフォルトでは、へんてこなIPアドレス(104.145.12.102)が1設定されており、実際のSIPパケット見ているとViaとかContactとかにそのIPがセットされていました。

以下、最低限のひかり電話発着信のためにいじったところ
(WebUIは日本語にしていたので項目が日本語のところがあります。)
※DID/CID制御とかはしていません。やりたい方はVoIP-Info.jp Wikiが大変参考になります。

  • ひかり電話HGW側
    • 内線設定
    • ダイジェスト認証なし
    • MACアドレスはうちの場合だとL3スイッチになる
      ※最初SVIのMACアドレスにしてたけど、よく考えたらNAT関わるわけじゃないから普通に出ていくところのインターフェースのMACアドレスを登録。
  • 接続
    •  トランク
      • General
        • トランク名:適当
        • アウトバウンドCID:自分の外線番号
        • 最大チャネル数:1(うちは1本の契約)
      • ダイヤル番号の操作ルール
        • 未設定
      • PJSIP設定
        • General
          • ユーザ名:0003(HGWの内線番号の頭に0を3つ)
          • Language Code:日本語
          • SIP Server:ひかり電話HGWIPアドレス
        • 高度な設定
          • DTMF Mode:バンド内
          • From Domain:ひかり電話HGWIPアドレス
          • From User:3(HGWの内線番号。0なし)
          • クライアントURI:sip:3@ひかり電話HGWIPアドレス
          • なんとなくパケットみてこんなリクエストになってれば行けるはず。

            REGISTER sip:ひかり電話HGWIPアドレス SIP/2.0
            From: <sip:3@ひかり電話HGWIPアドレス>;(略)
            To: <sip:3@ひかり電話HGWIPアドレス>

    • インバウンドルート
      • 単純に全部着信回すなら気にしなくていい。
      • 宛先をセット:自分で作った着信グループ
    • アウトバンドルート
      • ルートCID:意味ないらしいけど一応外線番号
      • 内線を上書き:はい
      • 一致したルートのトランクシーケンス:ひかり電話とのトランク
    • Dial Patterns
      • こんなかんじで。(これだと110とか119とか104とかは発信できませんのでご注意。うちは発信するつもりはないのであえて携帯と固定電話だけトランクに流すようにしています。)

あら、書いてみると意外と設定すくないですね。

あ、書いてないですが内線は普通に設定しています。
といっても番号とSecretくらしか設定してないですが・・・。

あと、我が家専用ですが、Cisco側がTCP/5061でSIPをしゃべるのでPJSIPがTCPで5061を待ち受けるようにしています。
※過去のFreePBXではchan_ipでしかTCPが設定できずいろいろ悩んでポート変えていたみたいです。

今日は家の掃除もしたし、なんとか新年が迎えられます。

皆様良いお年を。

ではでは。またの機会に。

 

我ながら自分のバカさ加減に腹が立つ・・・。

ども。こんばんは。

派手にオペミスしました。

というか、してたことに数時間後に気づきました。

移行したばかりのVMのデータストア吹き飛ばしました\(^o^)/

そして、旧NASからも削除済みで、旧NAS上はすでにThikで新しいLUNを作ってしましましたので、もう復元できない\(^o^)/

10数年分のログと思い出が(´;ω;`)

まぁいい。これが仕事じゃなくてよかったと思うことにしよう。
そし旧環境から気持ちを一新するいい機会を得たと、新しいことにチャレンジする機会を得たということにしよう(´;ω;`)

結局、何をやらかしたか。

  1. 旧NAS上にバックアップ用にiSCSIのLUNを作る(←問題なし)
  2. 新NAS上で旧NASをiSCSIでマウントする(←IPアドレスを間違ってしまい自分を自分でをマウントしていた)
    タイムマシンがあったら過去に戻ってぶん殴りたい。
  3. iSCSIのLUNをEXT4でフォーマット(←大惨事発生、気づかずorz)
  4. 新NASでLUNのエクスポートジョブ開始(←更に問題をややこしくした。自らとどめを・・・)
  5. なんか仮想マシンの調子が悪いぞ?(←気づき)
  6. VMからデータストアがみえないなー(←軽い気持ち)
  7. LUNエクスポートジョブキャンセル(←これはまあありかな)
  8. データストア消失に気づく(←まだ希望があった)
  9. パーティションの作り直し方とか調べて色々する(←無意味)
  10. 作業中のスクリーンショットとかを見直す(←あっ)

\(^o^)/

まぁいつかはやめようと思ってたわけだし、OSも全体的にサポート切れだし、メールはオンプレExchangeからO365へ、DNSはCloudflareへ、ブログもAWSにそれぞれ移行は終わってるので、実害は少ないかも。

直前まで使っていた仮想マシンと消失により想定される影響はこんなところかな。

  • AD(Windows Server 2008 R2)
    • Exchangeはもう役目を終えている(無駄にo365とのハイブリッドのままだけど・・・)
    • ADのSyncしなくなったからo365側もちょっと設定見直そう。
    • NPS(RADIUSサーバ)が死んだので一部機器の無線LANが死ぬ
      →もう.1Xもやめようかと思うけど、FreeRADIUSで再構築かな・・・。やっぱAD作り直すか・・・。(手持ちが2012しかないけど。。。)
    • MacBook AIRのアカウントに影響でるかも?
      →これ一番まずいかも・・・。今一番怖い。
  • 大昔から動いているLinux(CentOS 5)
    • 最悪Acronisのバックアップから戻せる(今朝フルバックアップが取れてる)けど、どうするかな・・・。
    • LAN内のDNSのマスターだった(セカンダリは物理サーバなのでセーフ)
    • そういえばADもこのDNSサーバを更新しにいく方式だっけか。。
    • DHCPサーバがいなくなった
      • 一部MACアドレス固定で払い出している機器がある。。。
        地道にFortiGateに移行するか。。。
    • SYSLOGを受けていた
    • SNMP-TRAPをメールに変換して飛ばしてた。
    • LAN内の機器のSMTP中継サーバだった。
    • AWSのサーバのSSHキーをここにしかおいてない気がしたけど一応バックアップとってた
  • PBX
    • 電話死亡
    • クソ苦労して作ったIP PhoneのConfigがとんだと思う。。
    • DHCPサーバでtftpサーバのIPとか渡してたっけか・・・。
  • 監視サーバ
    • ふるーいzabbix。2.xとかそんくらいかも
    • トラフィックとか見るのに便利だったなぁ

実質4台が常時稼働だったけど、それぞれ思い入れというか、もう存在が日常なサーバたちだったので、実のところショック大。。。

まぁ年末年始を利用して色々作り直そう。

来年は良いことあるといいな。

ではでは。またの機会に。

NASリプレースプロジェクト – 6 –

ども。こんばんは。

地道にデータをコピーしています。

まずはReadyNAS104の中身をコピーしています。
ReadyNASがおわったらTS-859 Pro+に取り掛かろうとしています。

今の所、

ReadyNAS -[NFS]-> CentOS -[NFS]-> TS-873

こんな感じでやっています。ReadyNAS側は以前からCentOSにマウントして使っていましたので、NFSマウントを一つ追加してコピーしています。
#ReadyNAS104は4TBx4でRAID5ですが、多分200Mbpsで頭打ちかな。。。 

しかし毎回悩むのが、コピー方法です。
さらっと、「コピー」と書きましたが、今回はmvコマンドを使ってNFSからNFSへ移動する形をとっていました。

毎回悩みます。この作業。SMBでマウントしてWindows上からやるのがいいのか?とか。Linux使うにしてもNFSじゃなくてCIFSのほうがいいのか?とか。rsyncのほうがいいのかなーとか。
新NASで旧NASを直接マウントしてもいいんじゃかないか?とか。

まぁ結局今回mvでやったのですが、ちょっとハマりました。
どうでもいいデータから作業し始めてよかった・・・。

以下ハマったこと

(1)ReadyNAS側のI/Oがおっつかないので移動に失敗する

これは割とどうしようもないです。きりの良いところで、時々ReadyNASを再起動しないと激重になります。

(2)オーナー、グループがおかしくなる

これは想定内。あとでQNAP上でchownで強引にやって直しています。(本当は両機器でuidなどを合わせるべきかと思いますが。。。。)

(3)inodeが重複する(inter-device move failed )

これは正直知りませんでした。。。。
#うち場合SSDキャッシュ使っていますがその場合、inodeってQNAPのキャッシュのinodeなのかな・・・?

参考:[linux] 異なるデバイスを跨いだ mv で inter-device move failed エラー
参考:mvコマンドでエラー「inter-device move failed, unable to remove target」が出る。
参考:cpとmvとinodeの話

(4)cpだと-pが使えない?

mv問題を解決するためcpを使うことにしましたが、-pをつけると失敗する(cp:cannot create regular file )ケースが多かったです。(これ”(5)”のせいだったかも・・・)

オプションなしだと、権限やオーナーは(2)で対処できるとして、日付が全部コピーした時間に上書きされます。なので、今回は以下のようにしました。
※「-p」は「–preserve=mode,ownership,timestamps」と同等のようです。

nohup cp -r –preserve=timestamps 旧 NAS 新NAS > result.txt &

※iやvはお好みで。

(5)QNAP側のRAID6スクラブ中はやはり失敗が多い。

初期構築時に、毎週日曜日の0時からスクラブを開始するようにしていました。(初期設定ではoff)

速度は中(既定)で、150MB/secほどで進んでいました。体験上は全然遅くないのですが、やっぱりI/Oがちょっともつれる感じがあります。

スクラブは最低1ヶ月に一回以上が推奨らしい。ので、毎週しなくてもいいかということで、月イチにしました。まぁホットスペアもあるし大丈夫だと思います。。
RAID10だとこれいらないんだよなー。地味に14時間くらいかかります。

完全移行にはまだまだかかりそうです。

【バックナンバー】

ではでは。またの機会に。

令和になったことだしクラウドへ移行する – 9 – t2.micro激重の原因とKUSANAGIのキャッシュの本気、CloudFlare+Incapsulaの多段化

ども、こんにちは。

前回の記事でt2.microのCPUクレジットを使い切って激重になった話を書かせていただきました。

んで、まぁ適当にKUSANAGIのnginxのログを解析していると・・・・

[root@kusanagi80 nginx]# zcat access.log-20190508 | awk ‘{ print $NF,$2,$3,$12,$10,$15,$16 }’ | sort | uniq -c | sort -rn | head -n 10
18840 “138.68.229.65” – – 200 /blog//xmlrpc.php “Mozilla/5.0 (Windows
(1位以下はすでに桁が全く違うので割愛)

どうもbot臭いのです。

「xmlrpc.php」へのアクセスを時間帯別に解析してみると、まぁ激重時間と大体一緒ですかね。

また、CdloufFlareがキャッシュしていなかったのも納得です。

[root@kusanagi80 nginx]# zcat access.log-20190508.gz |grep /blog//xmlrpc.php | awk ‘{ print $7 }’ | cut -b 2-15 | sort | uniq -c | sort -rn | head -n 10
4345 07/May/2019:17
4317 07/May/2019:16
4021 07/May/2019:18
3707 07/May/2019:15
541 07/May/2019:20
538 07/May/2019:19
519 07/May/2019:21
508 07/May/2019:22
345 07/May/2019:23
7 07/May/2019:12

ということで、CloudFlareで bot対策をしようと思ったのですが、無償だとGoogleなどのbotも止めてしまいそうです。

Before getting started

Cloudflare Firewall Rules can affect how traffic from known bots is handled. For details, see this FAQ.

ふむ。よろしい。ならばここに関しては無償のIncapsulaのほうが向いてるな。ということで、いつか失敗した多段に再挑戦します。

が、その前に、ちょっとKUSANAGIのbcacheとfcacheを設定してみます。

参考:詳解!KUSANAGIキャッシュ講座

で、うちの場合は、サブディレクトリにWordPressをおいていますので、まずはKUSANAGIのシェルを修正します。

まぁこの辺みながら雰囲気で。fcacheは早い話、nginxのリバースプロキシ機能でのキャッシュ、bcacheは動的に生成されるページを一定期間HTMLとして静的に保存する。両方組み合わせれば、bcacheで静的に生成されたHTMLをリバプロがキャッシュして返してくれると。

参考:KUSANAGIでサブディレクトリにWordPressを複数インストールする

で、onにします。

さて、実際効果はあるのかというところをちょっとテストしてみます。

WebPageTestで測ってみました。
※Tokyo, Japan – EC2 – Chromeで。

  • 旧オンプレサイト(CentOS Cpu 4コア/Mem:3GB)
    • https://www.webpagetest.org/result/190508_47_351c4d9104d0ca884007a289d9065993/
    • First Bytes 1.958s Fully Load 20.796s
  • 新サイト(AWS t2.micro) CloudFlareなし
    • https://www.webpagetest.org/result/190508_T5_c5f0471c39b6ab87f8c1434dd7518f10/
    • First Bytes 2.817s Fully Load 20.163s
    • 流石にCPU性能、メモリ性能では旧オンプレ環境に負けてるので遅いですね。
  • 新サイト(AWS t2.micro) + CloudFlare
    • https://www.webpagetest.org/result/190508_AR_24e95db4462d767499f2b0859ef05bed/
    • First Bytes 2.065s Fully Load 17.114s
    • お、早くなりました。これを基準にbcacheとfcacheを試していきます。
  • 新サイト(AWS t2.micro) + CloudFlare + KUSANAGI fcache
    • https://www.webpagetest.org/result/190508_4J_7b0928d6f924e8d4698b6753caeed8d1/
    • First Bytes 0.845s Fully Load 15.867s
    • おおー。確実に早くなりました。以下のようにF-CACHEにHITしたことがわかります。
  • 新サイト(AWS t2.micro) + CloudFlareなし + KUSANAGI fcache
    • https://www.webpagetest.org/result/190508_5W_8e0f63161b11d9fd14497d9f13b5a3b9/
    • First Bytes 0.588s Fully Load 18.046s
    • おー、CloudFlareなしfcacheオンリーだと、初速はめちゃめちゃ早いですね。
  • 新サイト(AWS t2.micro) + CloudFlare + KUSANAGI fcache + KUSANAGI bcache
    • https://www.webpagetest.org/result/190508_97_66422e4c559c1d51847abac508e88ba8/
    • First Bytes 0.892s Fully Load 15.231s
    • 初速は落ちましたね。けど、やっぱり他の静的コンテンツがCloudFlareのキャッシュから帰ってくるので、全体的なスピードはアップした、という感じでしょうか。
  • 新サイト(AWS t2.micro) + CloudFlareなし + KUSANAGI fcache + KUSANAGI bcache
    • https://www.webpagetest.org/result/190508_BD_ea283a342e16f40954704f80b313cff8/
    • First Bytes 0.614s Fully Load 18.451s
    • やはり初速は早いけど、全体的にはCloudFlareのCDNのほうが強いですね。
  • 新サイト(AWS t2.micro) + Incapsula(Static+Dynamicモード) + KUSANAGI fcache + KUSANAGI bcache
    • https://www.webpagetest.org/result/190511_A0_cda343e19da80c01960fe5d7d3c34170/
    • First Bytes 1.165s Fully Load 17.531s
    •  初速遅いけど判定は、Cですね。。
  • 新サイト(AWS t2.micro) + Incapsula(Static+Dynamicモード+Dynamic Content Acceleration(※)) + KUSANAGI fcache + KUSANAGI bcache
    • https://www.webpagetest.org/result/190511_R9_f82b1950e6e8f1b3d46e4dc9f0443109/
    • First Bytes 1.036s Fully Load 17.636s
    • Dynamic Content Acceleration機能です。今回はAWSのVPCがus-eastなので、アシュバーン?が最寄りでした。てか応答速っ。
  • 新サイト(AWS t2.micro) + CloudFlare + Incapsula(Static+Dynamicモード+Dynamic Content Acceleration(※)) + KUSANAGI fcache + KUSANAGI bcache
    • https://www.webpagetest.org/result/190512_KK_01657d85a38a8e24a91fbc0cc160285c/
    • First Bytes 1.033s Fully Load 13.971s
    • 初速ともにまぁまぁですね。一応両方ちゃんと通ってます。
      ※X-Iinfo: がNNNなので、Incapsulaのキャッシュはまだ効いてませんでした・・・けど、CloudFlareがHITしているので、結局AWSまでは取りには行ってないはず。
  • 新サイト(AWS t2.micro) + CloudFlare + Incapsula(Staticモード+Dynamic Content Acceleration(※)) + KUSANAGI fcache + KUSANAGI bcache
    • https://www.webpagetest.org/result/190512_M8_c66631c02506ebbda0a56be2d30fbda1/
    • First Bytes 1.312s Fully Load 14.404s
    • 一つ上とまぁ誤差ですね。
  • 新サイト(AWS t2.micro) + CloudFlare + Incapsula(キャッシュ無効+Dynamic Content Acceleration(※)) + KUSANAGI fcache + KUSANAGI bcache
    • https://www.webpagetest.org/result/190512_7E_1393ad66c4ae2ed3eb8490e5876edda1/
    • First Bytes 1.382s Fully Load 14.749s
    • 今これです。

ということで、初速は、CloudFlareなしで、KUSANAGIのfcacheが一番速い。
トータルは CloudFlare + Incapsula(Static+Dynamicモード+Dynamic Content Acceleration(※)) + KUSANAGI fcache + KUSANAGI bcacheが一番速いようです。

が、まぁ今回IncapsulaはBot制御目的ですし、2箇所でキャッシュ持つとややこしいので、キャッシュはCloudFlareだけにしました。

■CloudFlareとIncapsulaの多段構成について

多段構成のポイント?ですが、

Incapsulaを手前にすることは(おそらく無償版では)不可。
無償版IncapsulaはOriginにCNAMEが使えずIPアドレスしか使えない。

CloudFlareを前にする場合のポイント。(多分合ってると思う)

・CloudFlareに別のドメインを作ってそっちをIncapsulaに登録する
→同じ名前をCloudFlareとIncapsulaに存在すると以下のようなエラーになる。
※IncapsulaのProxyが名前解決したときに自分じゃない名前解決結果が来るから?と思われる。
→そんなことないです。それできなかったら導入前のhostsを使ったテストもできないので。(2019/05/26)

【2019/05/26 追記】

いろいろ間違ってます。普通にincapsulaにはwww.hits-net.comで登録してそのCNAMEをCloudFlareで向けつつCloudFlareのCDNを有効にすれば動きます。
↑のError code 23の原因にはサポートとも確認しましたが、結局わからずじまいで、なぜか今日改めて試したらうまくいきました。

CNAME reuseの機能を活用して、CloudFlareの本丸ドメインをCNAMEでIncapsulaに向ける。
→Incapsulaにはxxx.hits-net.comで登録してるけど、そこで払い出されたCNAMEをwww.hits-net.comに向けてさらにCloudFlareのCDNとDNSをオンにして、多段にしました。

 

■リダイレクトの初速を上げる

いま「/blog」へのリダイレクトは、cloudflareがやってる・・・と思う。

 

【2019/5/12追記】

何故かIncapsulaが時折古いオリジン(旧オンプレ)に転送してしまう謎現象が発生したので切り戻しました。
今はCloudFlareオンリーです。

このX.X.X.100っていまいま設定上どこにもないんですよねー。

同じドメインを何度か消したり入れたりしてるから一部のPoPにゴミ情報のこったかなぁ。

まいったなぁ。てかよく見たらCNAME Reuseって

Note: Available for Enterprise plan customers only.

あちゃー。

【2019/05/26 追記】
結局のところ、原因不明です。多分やっぱり古い情報持ってたとしか思えないですね。
上述の通りサポートともいろいろやりとりして、Incapsulaのサイト登録もやり直しましたが、結局原因不明で時間が解決したか、何らかのIncapsula側のメンテナンスで直ったとかそんな感じですね。

【2019/05/27 追記】
CloudFlareとIncapsulaの多段化はやはり無理でした。
令和になったことだしクラウドへ移行する – 10 – CloudFlare+Incapsulaの多段化はやっぱり無理

 

【バックナンバー】

ではでは。またの機会に。

令和になったことだしクラウドへ移行する – 8 – t2.microが激重になる

ども。こんばんは。

mariaDB問題は解決して、ようやく落ち着いたかと思ったら、今日はなぜかブログが激重になりました。。。

で、調べてみると、st(steal)が上昇していました。

今まで意識したことがなかったのですが、st値は、

【EC2】CPU使用率のsteal項目とは

馴染みがない項目だったのでで詳細を調べてみると、仮想サーバにおいて
「ゲストOSに処理を要求をしても、CPUリソースを割り当てられなかった時間の割合」
を意味するとのことです。

らしいです。で実際こんな感じでstが80%消費されており、実質20%しかCPUが使えない?状態のようです。

そりゃ重いわな。

AWSコンソールで、CPUクレジットを見ていると、クレジット使い切っちゃったみたいですね。

t2.microのCPUクレジットは144です。
※t3.microはほぼ値段一緒なのにCPUクレジットが多いんですよねー。やっぱt3にしたいなぁ。

バースト可能パフォーマンスインスタンスの CPU クレジットおよびベースラインパフォーマンス

とりあえず、インスタンスを再起動するとリセットされるようなのでその場しのぎですが再起動しました。

うーん。なかなかクラウドならではですねぇ。

これKUSANAGIのbcacheとか効かせたら処理減って軽くなるのかなぁ。とりあえず明日一日様子見ですね。

確かにちょっとアクセスおおかったのかなぁ。。。

 

【バックナンバー】

ではでは。またの機会に。

 

令和になったことだしクラウドへ移行する – 6 – ブログがAWSになりました。

ども。こんばんは。

件名のとおりです。

いろいろありつつ、半日でなんとか終わりました。

多分見れてるはず。です。

もちろんCloudFlare越しですが。

awsは12ヶ月無料枠のt2.microでKUSANAGIを入れました。
※KUSANAGIの推奨はメモリ4GB以上ですが、まぁこのくらいの規模なら全然余裕ですね。きっと。

ただ、KUSANAGIの全力は出てないと思いますが、前よりはキャッシュはCloudFlareのキャッシュも効いているはず。

疲れた。

途中経過は概ねログと画面キャプチャがあるのですが、もうありふれた話ばかりなので今回はポイントだけを自分用にメモです。

  • AWS
    • 普通にセットアップ、管理者のMFAを有効にしたくらい
    • あと一応請求が$10超えたらメール来るようにしてみた。
    • VPC
      • リージョンは最安で米国東部(バージニア)
        • どうせCloudFlare通すしきっといい感じになる。。。とおもう。
      • アベイラビリティゾーンはus-east-1f
    • EC2
      • インスタンスはt2.micro
        • 本当はt3にしたかったが、AMIのKUSANAGIが対応していなかった
      • Elastic IP一つ取得
    • KUSGANAGI
      • とりあえずyumで諸々アップデートしてから設定
      • php7だとうちの古めかしいvistaテーマが動かない&諸々エラーが出たのでphp5.6に戻した(kusanagi initやりなおし)。
      • サブディレクトリにWordPressを展開しているので多分効いてないKUSANAGIの機能がある気がする。
      • bcacheを効かせるには、多分以下の設定いれればいけるかも?
      • てか、KUSANAGIってそれ用のWordPressプラグインあるっぽいけどそのへんよくわかんない
      • あと、サブディレクトリに入れた関係か多分Let’s Encryptちゃんと動いてないと思う。
    • 引っ越しの仕方
      • BackWPupプラグインでファイルもDBの抜こうとしたが、旧環境だとPHPが2GB以上のファイルをP扱えなくてエラー(PHPバージョンで扱えない大きさのアーカイブになります。)でアーカイブがコケまくったので諦めた。
        • 一応古いPHPで2GB以上のファイルが扱えないことはないが再コンパイルなんて今さらやってられないのでスルー。
      • wp-contents配下をtgzで固めてscpでゴリゴリコピーした。
      • KUSANAGIのデフォルトのドキュメントルートをまるまる「/blog」にコピーしてwp-contentsだけ上書き。
      • DBはBackWPupで抜いたものをmysqlコマンドでどーん。
    • 心残りというか明日以降確認
      • KUSANAGIのサブディレクトリ化もう少し見直す
      • SSL化する?(Cloudflareの機能でもいいかも)
      • キャッシュのテスト
      • メールでDBのバックアップ飛ばしてるけど、多分動かないだろうなぁ。
      • ちと、ポートスキャンとか外部からのアクセス確認をば。セキュリティグループはしっかり作ったはず。
      • Google Analyticsとか大丈夫だと思うけど、明日確認
    • いずれやりたい
      • せっかくAWSのアカウント作ったし、BackWPupはS3にバックアップ取れるので、バックアップの方式を検討する

そんなところかな。

【追記】

やっぱりへんだなぁーと思ってたらやりがちなことをやってしまっていた。
参考:KUSANAGIに移設する際の5つの手順をまとめてみた

ここでの注意点は移設先のwp-content内にあるmu-pluginsを削除してしまわない事。
よくあるのがwp-contentをリネームしてまるっと置き換える方法。これやっちゃうとKUSANAGI用のオリジナルプラグインがなくなっちゃいますので、リネームしたディレクトリから移しておきましょう。

KUSANAGI用のオリジナルプラグインはWordPressの高速化の一端を担っています。
多言語に対応したWordPressが日本語で表示できるのは当たり前ですが、この翻訳が管理画面なども遅くする原因にもなっています。ですので、翻訳ファイルをキャッシュしてしまうことでWordPressの高速化を図っています。

なせ、オリジナルプラグインなのか。それはWordPressのコアを修正したりしないためです。
良く勘違いされるのがKUSANAGIで導入されたWordPressはチューニング(改造)されていると言う間違いですね。これやっちゃうとバージョンアップできなくなるので絶対やりません。

 

これで、Azure、Office365、AWSとGCPもちょっとだけ(AIY Voice Kitで)やったので、主要なクラウドには手が広げられたかなぁ。

以下画像アップロードテスト。

連休中に、メールとWebのクラウド化が無事完了したε-(´∀`*)ホッ

これで、なんと我が家のFWでは外部→内部を処理するルールがなくなってしまう&監視するものがなくなってしまう。。

それはそれで少しさみしいですね。
とはいえ、まだオンプレでもいろいろやりたいことはあるかなー。

【バックナンバー】

ではでは。またの機会に。

俺はVGAを少し甘く見ていたのかもしれない ― 小型モバイルディスプレイ購入

ども。こんばんは。

小型で持ち運びできるモバイルディスプレイを買いました。

サーバのメンテナンスとかにも使えるかなというのと、ちょっとだけ仕事でも必要だったので。

以下長い話になりますが結論を先に。

VGAが必要なら素直に最初からVGA付きを買うべし。

もう一度言おう。

VGAが必要なら素直に最初からVGA付きを買うべし。

 

ここから本編。小型のディスプレイ(小型モニター)がほしいなと。

今も昔も小さいガジェットには憧れますよね。特に持ち運びとかポータブルなんていうキーワードは大好きです。

今回購入にあたっての条件としては・・・

  • 価格は1万円〜1万5千円くらい
  • 10インチ程度(7インチ、8インチ、10.1インチとかそのへん)
  • 比較的軽い。1Kg以下
  • インターフェースはHDMI
  • USBバスパワーで動く(USB給電可) ※安い価格帯のものなので、ACアダプタとかはちょっと怖いかなという意味合いで。
  • できれば、Type-CでPD給電でなやつで、DisplayPort Alternate Modeで出力できるとなおよし。
    Type-C 1本でPCとつないで完結するなら、セカンドスクリーンとしても利用できそう。
  • 解像度はFullHD(FHD、1920×1080)出てほしい

な、感じです。

で、上記の条件でAmazonを探してみるとゴロゴロ中華製が出てきます。

今回候補にあげたのは

Eleduino 10.8 インチHDR IPSフルHD1080P携帯型ゲームモニター ディスプレイ,Nintendo Switch PS4 Pro, Xbox One, Xbox One X, PCのラップトップ対応,USB Type-C/HDMI/スピーカ内蔵/保護ケース

→¥15,886(5%引きクーポンあり)。重さが1Kg以下、保護ケース付きという感じ。ちょっと高いが前提条件を満たす。

cocopar ®11.6インチ 16:9/4:3 HDMI/VGA/3.5mmイヤホン端子 解像度1920*1080PS3/PS4/xbox360/…

→¥12,800。重さは1.1Kgほど。VGAがついている。ちょっとゴツい感じ。USB給電はできない。ACアダプタ付属。

METIS モニター 7インチ ディスプレイ VGA/AV/HDMIケーブル付き 内蔵スピーカー Raspberry Pi対応 1080p液晶 HDM…

→¥4,960。車載用ディスプレイっぽい。小さめ。VGA付きで軽そう。USB給電はできないっぽい。

その他ユーラック(実はUPERFECT?サポートのメールアドレスがユーラックもuperfectになってる・・・。しかもhotmailって)や、Gechicのon-lapシリーズ、おなじみセンチュリー、ASUSなど検討しましたが、価格が高かったり、怪しさ満点だったりで総合評価で、今回はEleduinoを買いました。(まぁeleduinoも十分怪しい。。。)

正直本当はセンチュリーのLCD-8000VH2Bあたりがいいなーとは思ってましたが、販売終了の上に2万円オーバーと結構高い。

編注:後々買ったものを合計すると余裕でセンチュリーのディスプレイが買えます。

 

ということで、Eleduinoとやらのディスプレイを購入。

どうやらEleduinoというのは中国?かどっかのラズパイのアクセサリーショップ?らしい?くて、ディスプレイの製造元はmagedokという会社らしいです。

あえて、mageokにリンクを貼っていません。

公式ページであると思われる

hxxp://www[.]magedok[.]com/

ですが、(まぁ私のURLの表記を見ていただいたら分かる通り)アクセスはおすすめしません。。。

もしかしたら、magedokの偽サイトなのかも?一瞬疑ってしまいますが、本物のようです。

なんと、初回アクセス時以下のような糞な広告にリダイレクトされます。

この時点でだいぶ購入したことを後悔し始めますが、Amazon発送だし、まりあえず届いたし、いいかな。。。と。

では早速開封を。

 

中華らしいきれいな化粧箱に入っています。

付属品は、Type-Aの給電ケーブル、Type-Cケーブル(3.0 Gen2らしい。なぜかType-Aは裸なのにこっちは袋入)、mini-HDMI->HDMIケーブル。VESA用ネジ。マニュアル、おー!なかなか豪華ではないですか。

次に本体のお目見え。ケースに入っています。見た感じはいい感じ!

なかなか綺麗です。

あ、ケースは両面テープでくっつけるわけですね。。。

端子類。ケーブルが付属なので大丈夫ですが、mini-HDMIなので注意。Type-Cは給電用と映像用と別れています。後でマニュアルの接続方法のページを載せます。

ボタン類。まぁ普通かな。

 

裏面。スピーカーがあります。ケースにもちゃんとスピーカー用の穴が空いています。

magedokのロゴ。。。とURL、アクセスはオススメしない。型番はM108Aらしい。

両面でくっつけたところ。立ちますが、油断するすぐコケます

とりあえず手元にあったauのType-C共通ACアダプタ(非PD)で給電しながらラズパイにつないでみた様子。
意外と画質も悪くない。いい感じだ。

OSD。これも普通のモニターと同じかな?ただ、これ、No Signalな状態だと出すとこができませんので注意です。
Type-CないしHDMI信号が来てないと出ない。。。

]

言語は日本語も選択可能。

以下接続方法。PD対応ならこのモニターを通じでPCにも給電できます。実際できました。(写真はないです。。)

携帯(HTC U11)ともUSB Type-C 1本で映像出力できました。
※HTC U11はDP Alt Modeに対応しています。

 

ところで、マニュアルにはギフトとやらが入ってると書かれていましたが、何もなかった気がします。。。

以下、仕様的なページ。

【2019/04/17追記】
付属のUSB Type-Cケーブルが不良だったようで、Type-C 1本のみでPCとつなぐと数秒に一回暗転?(一回消える。flickeringってやつ?ちらつくというより、瞬きしてるような感じ)するのに困っていました。
電源供給+HDMIだと全く問題なかったのですが。。。。
その後、ケーブルを変えたら普通に使えるようになりました。

現在は職場でフリースペースとかの打ち合わせで活用しています。

 

さて、ここまでは意外と良かったのです。

んじゃま、手元のHP ML110にでもつないでみますかーと。

ここで気づく。今手元にあるのはHDMI to VGA。いわゆるデジアナ変換。んー。じゃぁMini-HDMIをHDMIに変換して更にVGAのオスメスを変換すれば・・・と思ったけど、そうじゃない。

今回はアナデジ変換が必要になるやないかい。

じゃぁ買えばいいかとということで以下を購入。

VGA to HDMI 変換ケーブル、 GANA 金メッキVGA→HDMI 出力 ビデオ変換アダプタ USB給電 1080P対応 (給電用USBケーブ…

→¥1,380。まぁこんなもんか。アナデジ変換は電力がいるんだなぁなんて思ってたり。

編注:ここで、Amazonのレビューに書いてある重大なことを見落としています。

翌日到着。早速開封。

まぁこんなもんかという感じ。
給電用のMicroUSBもちゃんとついてますが、実際は給電なくても大丈夫なケースが多いみたいです。

早速HP ML110のVGAポートへ接続。
※ML110->VGA->VGA to HDMI->HDMI to mini-HDMI->ディスプレイ。給電なし。

おー久々に見るESXiの画面。なかなかよいではないか。

 

次の日、ちょっと会社のラボルームへ持っていってとあるアプライアンスのVGAへつないでみると。。

No Signal

え?(つд⊂)ゴシゴシ

ん?あれ?別のサーバだと映るのに、このアプライアンスだけ?あれ?

そしてAmazonのレビューを見直すと・・・・。

おっふ。

マザーボードのBIOS設置画面で使用する解像度 720X400 70Hzはサポートされてませんでした。
ですのでこの解像度のまま表示を行うシステムでは表示が出ません。
システムの解像度を設定できれば表示されます。

通常のPCでは1024×768 60/70/75/85Hzはどれか設定できるので可能と思います。
現在は1024×768 60Hzに設定し使用してます。

サポートされる解像度は面倒なので全部は書きませんが、640×480、1280×960が有るのでモニタが対応していれば可能と思います。

マニュアルには対応解像度書いてありますが、Amazonの商品ページにも載せておいてほしいです。

慌てて、ラボルームに転がっていた適当なディスプレイにつないでみると、

720×400 70Hz

٩(๑´0`๑)۶

このアプライアンス、BIOSどころか起動後のコンソールも720×400 70Hzやないかーい!

ESXiは起動後に1024×768 60Hzに上がるみたいです。だから映ってたのか・・・・。

てか、720×400 70Hzってなにそれ?と思って調べてみると、以下WikipediaのVGAより。

テキストモード[編集]

  • 80字×25行、9×16ドットフォント、有効解像度は720×400ドット、16色またはモノクロ。後者は旧来のMDAベースのアプリケーションと互換性がある。
  • 40字×25行、同じフォントサイズを持ち、有効解像度は360×400ドット。
  • 80字×43行、80字×50行(8×8ドットフォント)16色、有効解像度は640×344(EGA互換)または640×400ドット。

この他にも画面解像度や画面モードをカスタマイズすることで様々な表示モードの画面信号を生成できる。

なるほど。VGA(Video Graphics Array)の規格として超ベースな部分として持っているグラフィックモード(いわゆる640×480とか)と並ぶモードなのか!

よかろう。話は簡単だ。VGA to HDMIのアナデジ変換で720×400 70Hzい対応しているものを買えばいいわけだ。

編注:↑まちがい。

以外と公式に720×400 70Hz対応と記載のあるVGA to HDMI変換が少なく、以下を購入。

PCのVGA画像とステレオオーディオをデジタルのHDMIに変換【ezVGA+a-HDMI】 アイシル

¥3,980。くっ・・・結構高い。。。けど背に腹は変えられん!ということで購入。

翌日届きます。デリバリプロバイダさん毎日ごめんなさいm(_ _)m

早速開封。さすが日本製、いい箱に入ってます。

中身はこんな感じ。VGAのオス->メスな延長がついてて親切。
こいつはminiUSBで給電みたいですね。久々に見たわ。miniUSB
※慌てて写真撮ったので見切れています。。。。

でもなんか新品?なのに傷が多い・・・気がする。。。

 

早速、またラボルームに持ち込む。

No Signal

あれれ、別のサーバだとやっぱり映る。
※ちなみに、ezVGA+a-HDMIは給電必須の模様です。

・・・ということは、ディスプレイ側が720×400の解像度、もしくは70Hzの入力に対応していない・・・?
普通のWindows PCにつないで70Hz付近で出力してみるもNo Signal。

・。
・・。
・・・。

(T_T)

はぁ…

もうこうなったら、意地でも720×400 70Hzで出力してやる!と、言うことで、そもそもVGAがついてればきっとテキストモードにも対応しているはずだろうということで次にこれを購入。

Eyoyo 5インチモニター ミニ 800×480 TFT LCD スクリン ディスプレイ BNC/VGA/AV/HDMI機能付き スピーカー内蔵 E…

→¥6,999。5インチなので結構小さい。が、USB(microUSB)で給電できるし、HDMIも、そして何よりVGAがついている。

今朝方到着。デリバリプロバイダさん本当にこの一週間毎日のようにすいませんでした。

早速開封。

箱はでかい。

左が本体で右がアクセサリ。

結構いろいろついてる。HDMIケーブル、給電用microUSB、マウンタ、マウンタ用の両面テープ?、ACアダプタ、VGAケーブル。

本体登場。お、なかなか綺麗。右上の黄色いテープ?は保護シートを外すためのもの。勢いよく剥がしました。

マニュアルによると型番は「S501H」らしい。

背面。あれ、DC入力の端子・・・曲がってね?まぁいいさ、USBがある。

とりあえず、手元のauのMicroUSB共通アダプターをつないで見る。
無事ロゴが出た。

こいつはNo Signalな状態でもOSDが使えたり、入力切り替えができる。なかなか優秀。

とりあえず、付属のHDMIケーブルでラズパイをつなぐ。
映るけど字がちっちゃい・・・。まぁこれは想定内。いいんだよ。俺はどうせこのディスプレイでは720×400 70HZ以外の出力なしねーんだから!

さて、一応付属のVGAケーブルと、microUSBケーブルのテストを兼ねてML 110のVGAにつなぐ。
今回はVGA-VGA。まぁ当たり前だが映る。

そして、720×400 70Hzのテスト・・・だが、家にある機器でそんな解像度出せるのか?と思いつつ、NAS(QNAP)をRebootしてみる・・・。

あれ、POSTの画面はVGA(640×480 60Hz)なのか・・・

お?お?

キタ━━━━(゚∀゚)━━━━!!
720×400 70Hz キタ━━━━(゚∀゚)━━━━!!

オイラももう思い残すこたぁねーだよ。

やったよ。映ったよ。。。

ということでここまで買ったものたち。

No かったもの 値段 備考
1 magedokのディスプレイ ¥15,886 最初に購入。
2 GANAのVGA to HDMI変換 ¥1,380 720×400 70Hz未対応。
3 アイシルのezVGA+a-HDMI ¥3,980 magedok側が720×400 70Hzに未対応だった模様で役に立たず
4 Eyoyoの5インチVGA付きディスプレイ ¥6,999 720×400 70Hzの出力OK

合計

¥28,245 これ余裕で最初からセンチュリー買えたじゃね?
※センチュリーが720×400 70Hz対応かは未確認ですが、多分VGA搭載なら大丈夫かと。あと、センチュリーでは、製品ページに一部BIOSが映らないのでメインディスプレイには使えないと書いてる製品もありました。

 

はあ。何やってんでしょうね。

いろいろモバイルディスプレイを見てると、BIOSが出ないからメインディスプレイには使えないという記載が結構ありますね。

最近はHDMIで、EFIなんかだと解像度も高いし、こういうレガシー?なVGAとか意識しなくなってきましたが、まだまだこういうケースが有るということですね。

ゆくゆくはHDMIもType-Cに置き換わっていくのかな。

週明け会社のラボで、例のアプライアンスともう一度勝負だ!

ではでは。またの機会に。

SSHで「no matching key exchange method found. Their offer: diffie-hellman-group1-sha1」と言われたら

ども。こんばんは。

最近ウチのCatalyst 3750にSSHできなくなってしまいました。

bash-3.2$ ssh hoge@hogehoge

Unable to negotiate with 192.168.x.x port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

これ、macOS Sierra以降で起きるみたい、というかRaspbianでも起きるのでもう最近のSSHの仕様として弱い暗号アルゴリズムはサポートしないという感じですね。

一応、ホストごとに弱いCipherもサポートできるようにできるみたいです。
以下のconfigを編集します。

$ vi ~/.ssh/config

私は↑のファイルはなかったので新規作成しました。こんな感じです。

Host hogehoge←ホスト名
KexAlgorithms +diffie-hellman-group1-sha1

Host 192.168.x.x←IPアドレスで繋ぐこともあるかも?なのでIPアドレスも書く
KexAlgorithms +diffie-hellman-group1-sha1

実はこれだけはダメでした。この状態で繋ぐと

bash-3.2$ ssh hoge@hogehoge

Unable to negotiate with 192.168.x.x port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

なので、最終的にこんな感じに。

Host hogehoge←ホスト名
KexAlgorithms +diffie-hellman-group1-sha1
Ciphers +aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

Host 192.168.x.x←IPアドレスで繋ぐこともあるかも?なのでIPアドレスも書く
KexAlgorithms +diffie-hellman-group1-sha1
Ciphers +aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

解決はしましたけど、これ、そもそもIOSが古いですね。もう駄目かなー。

そんなうちのIOSはこんなやつです。

Switch   Ports  Model              SW Version              SW Image            
——   —–  —–              ———-              ———-          
*    1   24     WS-C3750G-24T      12.2(37)SE1             C3750-ADVIPSERVICESK

ではでは。またの機会に。

Google AIY Voice Kitで自作スマートスピーカー – 2 – GCPへの登録とサンプル実行

ども。こんばんは。

続いては、GCP周りです。

これもガイドには載っていますが、ガイドの画面キャプチャがちっちゃいのでこちらでも紹介したいと思います。

今回はGoogle Assitant APIを使うためにGoogle Cloud Platformにサインアップして、新しいプロジェクトの作成やAPIキーを取得します。
取得したAPIキーをAIY Voice Kitにコピーしてサンプルを動作するところまでをやります。

まずはGCPのコンソール(https://console.cloud.google.com/)にアクセスします。

私は初利用だったので、規約の同意とかが出てきました。
※Googleのアカウントはすでに持っていたモノを使っています。

新しいプロジェクトを作成します。

任意ですが「AIY Voice Kit」とかにしてみました。

できました。

作成されたプロジェクトが選ばれていることを確認して「API & Services」のダッシュボードに移動します。

Google Assistant APIを検索します。

APIを有効します。

有効化できたらこんな感じになります。
※「認証情報の作成」っていうボタンを押したくなるのですが一旦我慢します。

こんな感じで、左側の「認証情報」を選択して「OAuth同意画面」を設定します。
ユーザに表示するサービ名は最後に出てきます。
※それ以外はメールアドレスのみ入力しましたが多分大丈夫。。

で、次左のタブに移動してOAuthのクライアントIDとクライアントシークレットを作成します。

クライアントの種別とかを設定します。
今回はその他にして手打ちで入力しました。

作成を押した後ポップアップでIDとシークレットが表示されますが後でダウンロードできます。

出来上がったものをダウンロード(JSON形式)します。

ここまででGCP上での操作は一旦終了!

次にGoogle Assistant関連のアクティビティの設定をします。
これ結構重要みたいです。

実際にAssistantを使いたいGoogleアカウントでアクティビティの管理(https://myaccount.google.com/activitycontrols)にアクセスします。

以下のアクティビティを有効にします。(私は全部有効になっていました。)

  • ウェブとアプリのアクティビティ
    • Chrome の閲覧履歴と Google サービスを使用するウェブサイトやアプリでのアクティビティを含める
      ※↑これにチェック入ってないと一辺倒な応答しか返さない?らしい。
  • 端末情報
  • 音声アクティビティ
  • イメージはこんなかんじ。

では、いよいよAIY Voice Kitを使います!

ダウンロードしてたJSONファイルを転送します。

 

ダウンロードしたJSONファイルをAIY Voice Kitにアップロードします。
※ダウンロードした状態だと「client_secret_****」という名前のはず。

アップロード後以下のファイル名にリネームします。

/home/pi/assistant.json

ここまでで準備完了。

いよいよサンプルプログラムを実行するのですが、私はSSH環境でやっています。

HDMIでディスプレイに繋いでいれば、AIY用のターミナルがあるようですが、SSH経由だと環境変数などを一旦読み込む必要があります。

こんな感じ。(piユーザでログイン後に実行)

pi@hoge~ $ cd AIY-voice-kit-python/
pi@hoge:~/AIY-voice-kit-python $ source env/bin/activate
(env) pi@hoge:~/AIY-voice-kit-python $

じゃぁOK Googleなやつ言ってみますか!

(env) pi@hoge:~/AIY-voice-kit-python $ src/assistant_library_demo.py

※初回は以下のようにアカウントの同意?を求めるURLが出る模様です。ディスプレイとか繋いでるとブラウザが立ち上がってたのかも?

とりあえず普通にURLをコピーして(別の端末でもいいので)アクセスします。

アカウントの選択が出てきます。

アクセスを許可します。

コードが出てくるのでこれをSSHに戻って貼り付けます。

これで喋るはずです。

OK google!

(ボタンが光ります!おおお!)

今日の天気は♪

You are welcome!

・・・You are welcome?

 

!?

・・・あれ?

あ、こいつ英語しかしゃべれないんだった・・・

ということでこうなりました。
※こっ恥ずかしいので、私の声はカット済み。ハウアーユーとネイティブジャパニーズで喋りかけました。

 

あと、音でかい・・・。

音量(ボリューム)の調節はこちらが参考になりました。

Voice Kitで自作GoogleHomeを作る際に付け足したこと

$ sudo amixer -M #←ミキサーの名前を確認

$ sudo amixer set Master 70% #←音をちっちゃく。
Simple mixer control ‘Master’,0
  Capabilities: volume
  Playback channels: Front Left – Front Right
  Capture channels: Front Left – Front Right
  Limits: 0 – 255
  Front Left: 179 [70%]
  Front Right: 179 [70%]

起動時に小さくする用にしたほうがいいですね。

日本語の件は、一応つい最近Assistant SDKが多言語対応したみたい?ですね。

Google、「Google Assistant SDK」を日本語対応などの新機能でアップデート

あと、先駆者の方がいらっしゃいましたが、いわゆるGoogle Homeのようにはなかなかいかない模様ですね。。。

AIYスピーカーを、ほぼ日本語版Google Homeに【Google Assistant SDアップデート】

と、とりあえず動いた!!!

次回は・・・。。。うーん。どうしましょ。日本語対応ですかね。。。

あと、Cloud Speech(音声の認識してくれるサービス)は有料?らしいですが、日本語もちゃんと聞き取れる見たいでです。

また、登録していませんが、2017年12月30時点では、

料金はざっくりまとめると、月間60分までは無料。(15秒単位。一秒しか喋らなくても15秒分としてカウントされる)
それ以上(61~100 万分)は、$0.006 / 15 秒*らしいです。

えと、単純計算で

60分/15秒=240回

240回/31日=7.741…

一日7回までは無料で使える感じですかね。単純計算ですが。

で、まぁ追加になっても15秒1円もかからない($0.006=0.67643743 円 2017/12/30時点)し、いいかなぁ。
これも無料トライアルに含まれるんかな?(←まだトライアル登録してないけど。)

バックナンバー

ではでは。またの機会に・