【DRBD9】rpmパッケージをビルドしてインストールする
- 2017/08/30
- fumikura
今更ながらですが、DRBD9をインストールしてみました。他のサイトを参考にしていると、ソースからのmake、make installでしかインストールしていなかったので、rpmパッケージをビルドしてからインストールする方法を試してみました。
環境
- OS: CentOS 7(パッケージグループ Base、Development Tools をインストール)
- KVM上の仮想マシン(HDDは8GBと50GBの2台を搭載した状態)
- drbd01~drbd03の3台でクラスタを構成
- drbd01のIPアドレス: 192.168.24.223
- drbd02のIPアドレス: 192.168.24.224
- drbd03のIPアドレス: 192.168.24.225
rpmパッケージの作成
準備:rpmbuild環境構築
rpmbuildの環境を構築するツールがあるので、コマンド一つでrpmbuild環境が構築できます。
[root@drbd01 ~]# yum install -y rpmdevtools
ユーザに戻り、rpmdev-setuptreeコマンドを叩きます。
rpmbuildディレクトリから.rpmmacrosまで作成してくれます。
[fumikura@drbd01 ~]$ rpmdev-setuptree
[fumikura@drbd01 ~]$ tree -a
~~~
.
|-- .rpmmacros
`-- rpmbuild
|-- BUILD
|-- RPMS
|-- SOURCES
|-- SPECS
`-- SRPMS
~~~
7 directories, 7 files
必要パッケージのインストール
DRBD9のインストールに必要なパッケージをインストールします。
[fumikura@drbd01 ~]$ sudo yum install -y libxslt libxslt-devel pygobject2 help2man kernel-abi-whitelists
ソースのダウンロード
今回は、gitリポジトリがあるものはgitから入手しました。
ソース置場用のディレクトリを作って移動します。
[fumikura@drbd01 ~]$ mkdir Archives
[fumikura@drbd01 ~]$ cd Archives
– drbd kernel module
[fumikura@drbd01 Archive]$ git clone --recursive git://git.drbd.org/drbd-9.0.git
– drbd-utils
[fumikura@drbd01 Archives]$ git clone --recursive git://git.linbit.com/drbd-utils.git
– drbdmanage
[fumikura@drbd01 Archive]$ git clone --recursive git://git.drbd.org/drbdmanage.git
drbd kernel moduleのrpmパッケージ作成
今回は、公式サイトにてリリースされている最新リリースのdrbd-9.0.8に合わせてビルドしようと思います。
[fumikura@drbd01 Archive]$ cd drbd-9.0
[fumikura@drbd01 drbd-9.0]$ git checkout drbd-9.0.8
[fumikura@drbd01 drbd-9.0]$ make .filelist
[fumikura@drbd01 drbd-9.0]$ make kmp-rpm
drbd-utilsのrpmパッケージ作成
(2017.09.04,Mon 追記)
下記のまま、rpm作成を行うと、rpmのインストール時に競合が起こります。drbd.spec.inを以下のように修正してから実施してください。
--- ../drbd-utils.orig/drbd.spec.in 2017-09-01 15:01:35.721074085 +0900
+++ ./drbd.spec.in 2017-09-04 10:48:54.719119053 +0900
@@ -31,6 +31,7 @@
# conditionals may not contain "-" nor "_", hence "bashcompletion"
%bcond_without bashcompletion
%bcond_without sbinsymlinks
+%undefine with_sbinsymlinks
# --with xen is ignored on any non-x86 architecture
%bcond_without xen
%bcond_without 83support
[fumikura@drbd01 Archives]$ cd drbd-utils
[fumikura@drbd01 drbd-utils]$ git checkout v9.0.0
[fumikura@drbd01 drbd-utils]$ ./autogen.sh
[fumikura@drbd01 drbd-utils]$ ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
[fumikura@drbd01 drbd-utils]$ make .filelist
[fumikura@drbd01 drbd-utils]$ make rpm
drbdmanageのrpmパッケージ作成
drbdmanageはソース直下のディレクトリ、distの中にrpmパッケージが生成されます。
[fumikura@drbd01 Archive]$ cd drbdmanage/
[fumikura@drbd01 drbdmanage]$ make rpm
[fumikura@drbd01 drbdmanage]$ cd dist/
[fumikura@drbd01 dist]$ ls -al
合計 1080
drwxrwxr-x. 2 fumikura fumikura 111 8月 8 17:08 .
drwxrwxr-x. 11 fumikura fumikura 4096 8月 8 17:08 ..
-rw-rw-r--. 1 fumikura fumikura 507844 8月 8 17:08 drbdmanage-0.99.5-1.noarch.rpm
-rw-rw-r--. 1 fumikura fumikura 298012 8月 8 17:08 drbdmanage-0.99.5-1.src.rpm
-rw-rw-r--. 1 fumikura fumikura 294884 8月 8 17:08 drbdmanage-0.99.5.tar.gz
rpmパッケージのインストール
先程作成されたパッケージは、~/rpmbuild/RPMS/x86_64の中に10個、~/hoge/drbdmanage/distの中に1個の計11個のrpmパッケージが生成されています。
このうち、debuginfoとついているパッケージはインストールしなくても大丈夫です。
/home/fumikura/rpmbuild/RPMS/x86_64/kmod-drbd-9.0.8_3.10.0_514.26.2-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-kernel-debuginfo-9.0.8-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-utils-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-xen-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-udev-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-pacemaker-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-heartbeat-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-bash-completion-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-debuginfo-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/Archive/drbdmanage/dist/drbdmanage-0.99.5-1.noarch.rpm
drbd kernel moduleのインストール
[fumikura@drbd01 x86_64]$ sudo rpm -ivh kmod-drbd-9.0.8_3.10.0_514.26.2-1.el7.centos.x86_64.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:kmod-drbd-9.0.8_3.10.0_514.26.2-1################################# [100%]
drbd-utilsのインストール
drbd-utils-9.0.0-1.el7.centos.x86_64.rpmはパッケージ自身と競合をおこして普通にインストールはできない為、–forceオプションでインストールします。(2017.09.04,Mon 修正)
[fumikura@drbd03 x86_64]$ sudo rpm -ivh drbd-utils-9.0.0-1.el7.centos.x86_64.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:drbd-utils-9.0.0-1.el7.centos ################################# [100%]
その他のパッケージについては、drbd-9.0.0-1.el7.centos.x86_64.rpm が他のパッケージに依存しているので、先に、xen、udev、pacemaker、heartbeat、bash-completionをインストール後にインストールしてください。
[fumikura@drbd01 x86_64]$ sudo rpm -ivh drbd-xen-9.0.0-1.el7.centos.x86_64.rpm \
> drbd-udev-9.0.0-1.el7.centos.x86_64.rpm \
> drbd-pacemaker-9.0.0-1.el7.centos.x86_64.rpm \
> drbd-heartbeat-9.0.0-1.el7.centos.x86_64.rpm \
> drbd-bash-completion-9.0.0-1.el7.centos.x86_64.rpm \
> drbd-9.0.0-1.el7.centos.x86_64.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:drbd-bash-completion-9.0.0-1.el7.################################# [ 17%]
2:drbd-pacemaker-9.0.0-1.el7.centos################################# [ 33%]
3:drbd-udev-9.0.0-1.el7.centos ################################# [ 50%]
4:drbd-xen-9.0.0-1.el7.centos ################################# [ 67%]
5:drbd-9.0.0-1.el7.centos ################################# [ 83%]
6:drbd-heartbeat-9.0.0-1.el7.centos################################# [100%]
drbdmanageのインストール
[fumikura@drbd01 dist]$ sudo rpm -ivh drbdmanage-0.99.9-1.noarch.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:drbdmanage-0.99.9-1 ################################# [100%]
インストールは以上です。drbd01~drbd03すべてのノードでインストール作業を実施します。
次に、簡単にDRBDクラスタの構成を行ってみます。
DRBDクラスタの構成
DRBD用領域の作成
drbd01~drbd03のすべてのノードで実施します。
パーティションの作成
[root@drbd01 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
コマンド (m でヘルプ): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-104857599, 初期値 2048):
初期値 2048 を使います
Last sector, +sectors or +size{K,M,G} (2048-104857599, 初期値 104857599):
初期値 104857599 を使います
Partition 1 of type Linux and of size 50 GiB is set
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
物理ボリューム(PV)の作成
[root@drbd01 ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
ボリュームグループ(VG)の作成
[root@drbd01 ~]# vgcreate drbdpool /dev/sdb1
Volume group "drbdpool" successfully created
ここで指定する”drbdpool”はdrbdmanageで使用されるデフォルト名ですので、変更せずに作成します。
drbdmanageでのノードの追加
準備: firewalldの設定
drbdmanageがノード間の通信に利用するポートを開けます。ノード間の制御には6996、6999を利用しています。
リソースの同期には、7000~7800を利用しています。まとめて、6996~7800を開けています。
[root@drbd01 ~]# firewall-cmd --add-port=6996-7800/tcp --zone=public --permanent
success
[root@drbd01 ~]# firewall-cmd --reload
success
[root@drbd01 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports: 6996-7800/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
クラスタの初期化
drbd01のみで実行します。
[root@drbd01 ~]# drbdmanage init 192.168.24.223
You are going to initialize a new drbdmanage cluster.
CAUTION! Note that:
* Any previous drbdmanage cluster information may be removed
* Any remaining resources managed by a previous drbdmanage installation
that still exist on this system will no longer be managed by drbdmanage
Confirm:
yes/no: yes
Empty drbdmanage control volume initialized on '/dev/drbd0'.
Empty drbdmanage control volume initialized on '/dev/drbd1'.
Waiting for server: .
Operation completed successfully
ノードの追加
drbd02を追加する
※まずdrbd01でコマンドを実行。各ノードで実行するコマンドを発行します。
[root@drbd01 ~]# drbdmanage add-node drbd02 192.168.24.224
Operation completed successfully
Operation completed successfully
Host key verification failed.
Give leader time to contact the new node
Operation completed successfully
Operation completed successfully
Join command for node drbd02:
drbdmanage join -p 6999 192.168.24.224 1 drbd01 192.168.24.223 0 xxxxSecretKeyxxxx
上記の”drbdmanage join …..”をdrbd02で実行します。
[root@drbd02 ~]# drbdmanage join -p 6999 192.168.24.224 1 drbd01 192.168.24.223 0 xxxxSecretKeyxxxx
You are going to join an existing drbdmanage cluster.
CAUTION! Note that:
* Any previous drbdmanage cluster information may be removed
* Any remaining resources managed by a previous drbdmanage installation
that still exist on this system will no longer be managed by drbdmanage
Confirm:
yes/no: yes
Waiting for server to start up (can take up to 1 min)
Operation completed successfully
drbd03についても同様に実施します。
・drbd01側
[root@drbd01 ~]# drbdmanage add-node drbd03 192.168.24.225
Operation completed successfully
Operation completed successfully
Host key verification failed.
Give leader time to contact the new node
Operation completed successfully
Operation completed successfully
Join command for node drbd03:
drbdmanage join -p 6999 192.168.24.225 2 drbd01 192.168.24.223 0 xxxxSecretKeyxxxx
・drbd03側
[root@drbd03 ~]# drbdmanage join -p 6999 192.168.24.225 2 drbd01 192.168.24.223 0 xxxxSecretKeyxxxx
You are going to join an existing drbdmanage cluster.
CAUTION! Note that:
* Any previous drbdmanage cluster information may be removed
* Any remaining resources managed by a previous drbdmanage installation
that still exist on this system will no longer be managed by drbdmanage
Confirm:
yes/no: yes
Waiting for server to start up (can take up to 1 min)
Operation completed successfully
クラスタの状態確認
[root@drbd01 ~]# drbdmanage list-nodes
+----------------------------------------------------------------------------------------+
| Name | Pool Size | Pool Free | | State |
|----------------------------------------------------------------------------------------|
| drbd01 | 51196 | 51188 | | ok |
| drbd02 | 51196 | 51188 | | ok |
| drbd03 | 51196 | 51188 | | ok |
+----------------------------------------------------------------------------------------+
[root@drbd01 ~]# drbdadm status
.drbdctrl role:Primary
volume:0 disk:UpToDate
volume:1 disk:UpToDate
drbd02 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
drbd03 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
※”drbdmanage list-nodes”は”drbdmanage n”と省略できます。
リソースの追加
リソースを作成する
[root@drbd01 ~]# drbdmanage add-resource mysql-pri
リソース名を”mysql-pri”としたのは、後でMySQLのクラスタに利用するつもりです…
リソースのボリュームを設定する
[root@drbd01 ~]# drbdmanage add-volume mysql-pri 10GB
Operation completed successfully
リソースをデプロイするクラスタ数を設定する
[root@drbd01 ~]# drbdmanage deploy-resource mysql-pri 3
Operation completed successfully
※リソースの割り当てを個別にノードへデプロイするには、”drbdmanage assign-resource”コマンドを使用します。
[root@drbd01 ~]# drbdmanage assign-resource mysql-pri drbd03
Operation completed successfully
リソース追加直後の状態
[root@drbd01 ~]# drbdadm status
.drbdctrl role:Primary
volume:0 disk:UpToDate
volume:1 disk:UpToDate
drbd02 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
drbd03 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
mysql-pri role:Secondary
disk:UpToDate
drbd02 role:Secondary
replication:SyncSource peer-disk:Inconsistent done:57.30
drbd03 role:Secondary
replication:SyncSource peer-disk:Inconsistent done:50.46
“Inconsistent”は不整合の状態です。”done”の後の数字は同期状態の進行具合を表示してます。
同期が終わると、このような表示になります。
[root@drbd01 ~]# drbdadm status
.drbdctrl role:Primary
volume:0 disk:UpToDate
volume:1 disk:UpToDate
drbd02 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
drbd03 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
mysql-pri role:Secondary
disk:UpToDate
drbd02 role:Secondary
peer-disk:UpToDate
drbd03 role:Secondary
peer-disk:UpToDate
リソース”mysql-pri”のroleがどのノードでも”Secondary”になっているのは、DRBD9からは、リソースをマウントしたノードが自動的にPrimaryとなる仕様となっているからだとか。
今回は、ここまで。次回はDRBDの新機能、クライアント機能を利用して、MySQLサーバからリソースmysql-priをマウントしてみようと思います。
以上
Mac からのリモートデスクトップ接続で日本語キーボード使う
- 2017/08/17
- murave
- Mac
- リモートデスクトップ
dockerからAmazon EC2への奮闘記
- 2017/08/09
- okada
- Amazon EC2
- Docker
- Laravel
今までdockerを使ったことがなかった私、勉強がてらLaradockを使ってLaravelで開発を行っていました
そこからAmazon EC2へ移行するまでの過程で色々行き詰まり、
なんとかLaradockからEC2へ環境移行することができましたので、
今後のメモのためにログを残しておこうと思います
今回書く内容はLaradockの環境設定〜Amazon EC2へ設置するまでの簡単な流れで行き詰ったものを晒すだけのほぼ日記の様なものです(笑)
Docker for Mac 〜 Laradockを導入するまで
$ git clone --depth=1 -b v5.5.1 https://github.com/LaraDock/laradock.git
$ cd laradock
$ cp env-example .env
$ vi .env
…とこのようにまずはドキュメントに従って導入を行っていました
しかし
問題1:Laradockを導入したが起動しない
$ docker-compose up -d nginx mysql
ERROR: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`.
$ docker-machine start default
Host does not exist: "default"
defaultを設定しないといけない?
$ docker-machine create --driver virtualbox default
をすればよい、とのことだったので実行してみたけれどエラー発生
そもそもDocker for Macはvirtualbox使わなくても良くなった、との記述を見かけた気が…
解決:boot2dockerとDocker for macが混在していた
Laradockの問題ではなく、dockerの問題でした
どうやらDocker for Macを入れる前にboot2dockerをhomebrewで入れていたようで、
PC内にdockerが2つある状態でした
ということでboot2dokerを削除
brew uninstall docker boot2docker docker-compose docker-machine
念のためDocker for Macもアンインストールして入れ直し、もう一度動かしてみた所無事にLaradockを動かすことができました!
まぁこんなことしでかすなんて自分くらいしかいないと思うので参考にはならないかもしれませんが、思い出の一つとして…
問題2:MySQLが動かない
次のようなエラーが発生してMySQLが起動しない
docker-compose ps
を実行してみた所、laradock_mysql_1のstateはExitでした
$ docker-compose up --build -d nginx mysql
$ docker-compose exec mysql bash
ERROR: No container found for mysql_1
ログを確認
$ docker logs laradock_mysql_1
2017-08-01T08:01:50.339823Z 0 [ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4800!
解決:MySQLのデータファイルを削除
このエラーに関しては.envファイルを確認し、MySQLのデータファイルを削除した所、起動に成功しました
$ vi .env ⇐ laradock/.envを確認
10 ### Data Path:
11 # For all storage systems.
12
13 DATA_SAVE_PATH=~/.laradock/data
$ cd ~/.laradock/data
$ mv data data.old
Laradockが動かない…動かない…と入れ直しを繰り返した時にゴミファイルとして残ってしまっていた模様
ローカルからAmazon EC2へ
システムが出来上がり、次はシステムをローカルからEC2へ移行作業へ…
まずLaradock環境内のバージョンを確認
EC2側にもPHP7.1、MySQL5.7、nginxをインストール
$ docker-compose exec workspace bash
# php -v
PHP 7.1.4-1+deb.sury.org~xenial+1 (cli) (built: Apr 11 2017 22:12:32) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.1.4-1+deb.sury.org~xenial+1, Copyright (c) 1999-2017, by Zend Technologies
# php artisan --version
Laravel Framework 5.4.30
# exit
exit
$ docker-compose exec mysql bash
# mysql --version
mysql Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper
# exit
exit
EC2側環境作成
PHP、MySQL、nginxインストール後…
以下のファイルを編集
$ vi /etc/php-fpm.d/www.conf
24 user = nginx
25 ; RPM: Keep a group allowed to write in log dir.
26 group = nginx
48 listen.owner = nginx
49 listen.group = nginx
50 listen.mode = 0660
$ vi /etc/nginx/nginx.conf
40 server {
44 root /var/www/html/public;
73 location ~ \.php$ {
74 root /var/www/html/public;
75 fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
76 fastcgi_index index.php;
77 fastcgi_param SCRIPT_FILENAME /var/www/html/public$fastcgi_script_name;
78 include fastcgi_params;
79 }
それぞれのサービスを起動 & 自動起動するように設定
$ sudo service nginx start ⇐ サービス起動
$ sudo service php-fpm start
$ sudo service mysqld start
$ sudo chkconfig nginx on ⇐ 自動起動
$ sudo chkconfig php-fpm on
$ sudo chkconfig mysqld on
MySQL5.7ではrootユーザには初期パスワードなるものが存在し、
最初はそのパスワードでログインする
[ec2-user@ip-172-31-46-167 ~]$ sudo cat /var/log/mysqld.log
2017-08-03T06:59:34.488345Z 1 [Note] A temporary password is generated for root@localhost: Jt?eJUpbO6kl ⇐コレ
rootのパスワードは変更しておくべし
$ mysql -u root -p
> ALTER USER 'root'@'localhost' IDENTIFIED BY 'パスワード';
Laravelのドキュメントに従いComposerをインストール後、Laravel5.4を導入
$ composer global require "laravel/installer"
$ cd /var/www/
$ laravel new html
ブラウザでLaravelのTOP画面が表示されることを確認
Laradockからお引っ越し
ローカルのLaravelより、gitを使ってアーカイブファイル作成!
Laradockには既に.gitignoreファイルが準備されており、logファイル等など必要ないファイルは省かれる様になっていました。便利!
git archive HEAD --output=~/WorkSpace/project/release/archive.zip
このファイルを/var/www/htmlに上書き(.envの取扱い注意!)し、
ファイルの権限を変更 chmod o+w -R storage
そして以下のコードを実行
$ php artisan config:cache
$ php artisan route:cache
.env.exampleを.envに書き換え、EC2上の環境に合わせた設定に書き換えます
そしてブラウザで確認!
The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths.
こんなエラーが表示されましたよ…
以下を実行
$ php artisan key:generate
$ php artisan config:clear
.envファイルの APP_KEY=
にキーがセットされるわけですね
無事TOPが表示されました!
でもページが遷移しませんよ?
/loginへ遷移できません。404エラーです。
原因はnginxの設定。5.4のドキュメント通りにnginx.confを編集。
$ vi /etc/nginx/nginx.conf
49 location / {
50 try_files $uri /index.php?$query_string;
51 }
これで他のページへも遷移できるようになりました!
以上がEC2への引っ越し奮闘記になります。
Laravel 5.1 でログ出力、faultline-php追加編
Laravel の次のLTS、5.5もそろそろ来そうな昨今ですが、また5.1のログ出力の話です。
昨日のBlogに書いたようにプロジェクトのログ出力に faultline-php (https://github.com/faultline/faultline-php) を組み込みました。Monolog integration のありがたさよ。
今日は faultline 関係の .env 対応を進めているのですが、コードがややこしくなる前の素朴なのをサンプルとして出しておこうかな〜と。
Serverless未経験おじさんのfaultline導入記
- 2017/08/02
- murave
- faultline
- Serverless
実験用に自分のメアドで新しくAWSのアカウント作ろうと思ったら存在してました、muraveです。事務所引っ越す前の住所になってたので5年以上放置してた模様。
実験にはお安めのVPSを使うことが多いのですが、Serverlessという波にのるためにAWSを使わざるをえないのです。というか faultline を使いたい!
サーバーレスアーキテクチャなエラートラッキングツール faultline
きっかけは『PHPカンファレンス福岡2017』です。その時のスライド。動画もきてました
コレだ! と思いましたね。
だいたい、今はまともなメールを送信するのも面倒じゃないですか?
某メール送信サービスを使おうと思ったこともあったのですが、エラーメール送信するには「利用者」の契約が必要とのことで、不特定多数の利用者が想定されるサービスでは使えません。そもそもエラー通知をメールで欲しいわけでもなく、今もメールから Slack に連携しています。
faultline は運用コストが低く(手間的にもマネー的にも)、そしてなによりクライアントの JavaScript についても利用できることに魅力を感じます。
faultline-jsを使ってJavaScriptのエラートラッキングにfaultlineを利用する
前置きが長くなってしまいました。これからが本番。導入について、主にどこで引っかかったか、です。
この投稿の続きを読む »
funcphoneとダイヤル録音
ダイヤル録音アプレットは電話転送処理を、
funcphoneの音声案内を通して円滑に行う事ができるアプレットです
事前準備
今回、電話の受け取り側が電話を受け取れない場合は留守録へと案内されます
左メニュー「留守録案内メッセージ」より、案内メッセージを設定しましょう
設定してみる
- フロー編集画面を開きます
転送先はユーザまたはグループを選択できるのですが、
グループを指定した場合、所属するユーザが登録しているデバイスに着信がはいるので注意です
発信者IDはどの電話番号にこのフローを実行させるのかを選択します
- 転送処理を行う前にユーザにメッセージを発信するか設定を行います
今回は転送前にメッセージを流すよう設定を行っています
- 音声案内は「転送案内を配信者に行う」に設定しています
転送先のユーザが電話を受け取った際にどこから電話がかかってきたのかを音声案内でお知らせしてくれます
「○○さんへの着信です。受け取る場合には1を推してください→1を押す→会話開始」
また『誰も応答応答しなかったら…』は、転送先のユーザが電話を受け取らなかった場合の処理を選択します
『留守録』を選択しますとfuncphoneメニュー『留守録案内メッセージ』で設定したメッセージが読み上げられた後、
発信者の留守録が開始されます
試してみる
- 管理画面を開いた状態で、
電話機からフローを充てた電話番号に電話を開始すると、設定した転送案内が開始されます - 電話を受け取る側は転送された着信を受け取ると『1ボタン』を押すよう、音声案内が流れます
- 受け取り側が『1ボタン』を押すと会話開始、受け取れなかった場合は掛けた側には電話が受け取れない受け取れない事を音声案内でお知らせします
funcphoneとSMSフロー(着信電話番号編)
着信番号アプレットは、着信番号によってメッセージの振り分けを行うことが出来るアプレットです
設定してみる
- アプレットをセットし、振り分けする電話番号を設定します
- 振り分ける電話番号に実行するアプレットと『上記以外の場合に行うアクション〜』にSMS返信アプレット設置します
- それぞれのSMS返信アプレットにメッセージを記入します
↓指定した電話番号宛
↓それ以外の電話番号宛
確認してみる
-
設定した電話番号宛にメッセージを送ります
設定時間によって、返ってくるメッセージが違うことを確認してください - 指定した電話番号以外から
funcphoneにてもう一つ米国番号を取得して確認してみました
- 受信箱を確認すると、正しくメッセージが受信されていることが確認できました
funcphoneとSMSフロー(スケジュールアプレット編)
これもまた以前書きました「funcphoneを使った営業時間管理」で疲れているスケジュールアプレットのSMS版です
設定してみる
- 以前ご紹介したスケジュールアプレットと同様の処理を行うことで、
メッセージが送られてきた時間帯による処理の振り分けを行うことができるようになります
- 営業時間のアプレットにSMS返信アプレットを設置
メッセージを設定します
↓ 営業時間
↓ 営業時間外