KeepalivedのMaster/Slave確認

表題の通りである。どのようにしたら良いのかいまいちわからない。。

■ 環境

  • Keepalive 1.2.13
  • CentOS 6.7

■ ip address show

ログインしたサーバで下記のように実行して結果を見て判断している。

$ ip a
  :
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet XX.XX.XX.X1/24 brd XX.XX.XX.255 scope global eth0
  :
$
$ ip a
  :
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet XX.XX.XX.X1/24 brd XX.XX.XX.255 scope global eth0
    inet XX.XX.XX.X2/24 scope global secondary eth0
  :
$

この”scope global secondary eth0“(VIP)がある方が”Master“であると判断をしている。

■ /var/log/messages

もしくは”messages“に出力されているログを確認するか。

$ cat /var/log/messages
  :
Jun 26 19:09:10 withsin001 Keepalived_vrrp[13830]: VRRP_Instance(VI_0) Entering BACKUP STATE
  :
$

これは”Master“から”Backup(Slave)”に変わった時のログである。この時もう一台の”messages“には下記のように出力されていた。

$ cat /var/log/messages
  :
Jun 26 19:09:11 withsin002 Keepalived_vrrp[14030]: VRRP_Instance(VI_0) Transition to MASTER STATE
Jun 26 19:09:11 withsin002 Keepalived_vrrp[14030]: VRRP_Instance(VI_0) Entering MASTER STATE
Jun 26 19:09:11 withsin002 Keepalived_vrrp[14030]: VRRP_Instance(VI_0) setting protocol VIPs.
  :
$

`ip`コマンドの結果を確認するか、ログを確認するかしか今のところ手段を知らない。もっと他に良い手段はないのであろうか?

以上。

urldecode

コマンドラインで表題を行う。前に”encode“に関しては書いていたのに”decode“には書いていなかったようなのでメモ。

■ 環境

  • shell

■ urldecode

`nkf`を使用する。前の記事の通りにまずは”urlencode“した文字列を使う。

$ echo "テスト" | nkf -WwMQ | tr = %
%E3%83%86%E3%82%B9%E3%83%88
$

これを”urldecode“するには下記のようにする。

$ echo "%E3%83%86%E3%82%B9%E3%83%88" | nkf -w --url-input
テスト
$

戻せた。

以上。

■ 関連

コマンドラインでurlencode

PHP7 Opcache

表題の件について。しばし触っていなかったPHP。サイト表示を速くしたいとの依頼から、”APC“を入れれば良いのでは?と思ったが最近は違うようだ。

■ 環境

  • PHP 7.0.16
  • Amazon Linux

■ apcu

APC“で検索してみると下記の結果を得られた。

$ sudo yum search apc
Loaded plugins: priorities, update-motd, upgrade-helper
================= N/S matched: apc ==================
apc-panel.noarch : APC control panel
apcu-panel.noarch : APCu control panel
apcu70-panel.noarch : APCu control panel for php 7.0
php-ZendFramework-Cache-Backend-Apc.noarch : Zend Framework APC cache backend
php-pecl-apc.x86_64 : APC caches and optimizes PHP intermediate code
php-pecl-apc-devel.x86_64 : APC developer files (header)
php54-pecl-apc.x86_64 : APC caches and optimizes PHP intermediate code
php54-pecl-apc-devel.x86_64 : APC developer files (header)
php55-pecl-apc.x86_64 : APC caches and optimizes PHP intermediate code
php55-pecl-apc-devel.x86_64 : APC developer files (header)
php55-pecl-apcu.x86_64 : APC User Cache
php55-pecl-apcu-devel.x86_64 : APCu developer files (header)
php56-pecl-apcu.x86_64 : APC User Cache
php56-pecl-apcu-devel.x86_64 : APCu developer files (header)
php70-pecl-apcu.x86_64 : APC User Cache
php70-pecl-apcu-devel.x86_64 : APCu developer files (header)
perl-Mail-IMAPClient.noarch : An IMAP Client API

  Name and summary matches only, use "search all" for everything.
$

apcu“?”u“とは何だ?と少々違和感を感じた。調べてみるとPHP5.5以降からAPCは”opcache + APCu“という組み合わせになったようだ。とりあえず何も考えずに”opcache“を入れることにした。

■ opcache

$ sudo yum search opcache
Loaded plugins: priorities, update-motd, upgrade-helper
================= N/S matched: apc ==================
php55-opcache.x86_64 : The Zend OPcache
php56-opcache.x86_64 : The Zend OPcache
php70-opcache.x86_64 : The Zend OPcache

  Name and summary matches only, use "search all" for everything.
$

これをインストールする。

$ sudo yum install php70-opcache

versionを確認すると表示された。

$ php -v
PHP 7.0.16 (cli) (built: Mar  6 2017 19:45:42) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.16, Copyright (c) 1999-2017, by Zend Technologies
$

設定ファイルも下記にあるようだ。

/etc/php-7.0.d/10-opcache.ini

以上。

AmazonLinuxでJSTに固定

AmazonLinuxにおいて表題の通り。”glibc“のパッケージを”update“した際に”JST“にしておいた時間が”UTC“に戻ってしまっていた。

■ 環境

  • Amazon Linux

■ /etc/localtime

/etc/localtime“はいつも変更をしている。

$ sudo cp /usr/share/zoneinfo/Japan /etc/localtime

これで”JST“に変わったと満足してしばらく放置してしまうことが多々ある。前述の通り”glibc“のパッケージを”update“した際に再度”UTC”に戻ってしまうという現象が発生する。

■ /etc/sysconfig/clock

このファイルも下記のように変更する。

$ cat /etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=true
$

後はおとなしく次の”update“を待つべし。

以上。

ssh ip address show

表題ではいまいち伝わらない気もするが…。単なるメモである。

■ 環境

  • Linux
  • Mac OSX El Capitan

■ ssh ${HOST} ip address show

スクリプトの中で、複数のホストにSSH接続し、`ip address show`の結果を確認して表示を変えたい。当初、単に下記のように実装したらエラーであった。

$ ssh ${HOST} ip a
bash: ip: command not found
$

実際にSSH接続でログイン後に同じコマンドを実行したところ、正常に結果を得られるのは確認している。

$ ssh ${HOST}
[ec2-user@withsin ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 06:fa:1f:80:b8:9b brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.11/24 brd 10.1.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::4fa:1fff:fe80:b89b/64 scope link
       valid_lft forever preferred_lft forever
[ec2-user@withsint ~]$

さてどういうことかと思ったが、思い当たることをいくつか実施したところ”PATH“の問題であった。下記のように実行することで思い通りの結果を得られた。

$ ssh ${HOST} /sbin/ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 06:fa:1f:80:b8:9b brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.11/24 brd 10.1.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::4fa:1fff:fe80:b89b/64 scope link
       valid_lft forever preferred_lft forever
$

満足である。

以上。