YAMAHAルータの実機・検証 第2回 IPIPによる接続(NTTフレッツ網を利用したVPN)

2014/11/27 YAMAHA, 技術系 投稿者:

第2回はIPIPによる接続(NTTフレッツ網)の設定・検証を行います。

拠点間でVPN接続を行う場合、インターネット回線を介した「インターネットVPN」とインターネット回線を介さない「IP-VPN」があります。 第1回で紹介した VPNクライアントソフトウェア によるリモートアクセスはインターネットVPNになります。

インターネットVPNはインターネット網を使って仮想の通信トンネルを構成します。
そのままでは通信データの改ざん、盗聴をされてしまうのでIPsecなどを利用して通信内容を暗号化します。

IP-VPNはインターネット網を介さないで「通信事業者が独自に構成した網(NTTのフレッツVPNワイドなど)」を利用して「仮想の通信トンネル」を構成します。

「IPIP」とは何か?
暗号・認証処理を行わないで通信のトンネルを構成します。
暗号化されていないので通常のパケット転送とほぼ同等の通信速度を実現することができます。
インターネット網を介さないフレッツVPNワイドと組み合わせることでセキュリティと通信の高速性の両方を兼ね備えたネットワークを構築することができます。

今回はNTTのフレッツVPNワイドを利用して「IPIP」でVPNを構築します。
また、IPIPと同様にフレッツVPNワイドを利用して「IPsec」でVPNを構築してIPIPとIPsecの通信速度の比較を行います。

「IPsec」とは何か?
暗号技術を使って、IPパケット単位でデータの改ざん防止や秘匿機能を提供します。
これを使うことで通信の途中で内容を覗き見られたり改ざんされることを防ぎます。

ネットワーク構成

今回検証するネットワーク構成になります。

ipip-network-002

フレッツVPNワイドを利用してIPIPでVPNを構築します。
拠点Aにある「192.168.0.102」のパソコンから拠点Bにある「192.168.1.201」のパソコンにアクセスを行い、通信速度の検証をします。

ルータの設定

■拠点Aにある192.168.0.1の設定内容

ip route default gateway tunnel 2
ip route 192.168.1.0/24 gateway tunnel 2
ip route 192.168.100.1 gateway pp 1
ip lan1 address 192.168.0.1/24
pp select 1
 pp always-on on
 pppoe use lan2
 pp auth accept pap chap
 pp auth myname (フレッツVPNワイドの接続ID) (フレッツVPNワイドのパスワード)
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ip pp address 192.168.100.2/32
 pp enable 1
tunnel select 2
 tunnel encapsulation ipip
 tunnel endpoint address 192.168.100.2 192.168.100.1
 tunnel enable 2
nat descriptor type 1 masquerade

■拠点Bにある192.168.1.1の設定内容

ip route default gateway tunnel 1
ip route 192.168.0.0/24 gateway tunnel 1
ip route 192.168.100.2 gateway pp 2
ip lan1 address 192.168.1.1/24
pp select 2
 pp always-on on
 pppoe use lan2
 pp auth accept pap chap
 pp auth myname (フレッツVPNワイドの接続ID) (フレッツVPNワイドのパスワード)
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ip pp address 192.168.100.1/32
 ip pp mtu 1454
 pp enable 2
tunnel select 1
 tunnel encapsulation ipip
 tunnel endpoint address 192.168.100.1 192.168.100.2
 tunnel enable 1
nat descriptor type 1 masquerade

それぞれのルータを設定した後、コマンドプロンプトからpingで通信が確立されていることが確認できます。

IPsecとIPIPの通信速度を比較!

フレッツVPNワイドを利用して「IPIP」と「IPsec」それぞれのVPNを構築し通信速度の比較を行いました。

■IPIPの結果

ips-ip-ipip-002

※アップロード:32.4Mbps  ダウンロード:45.2Mbps

■IPsecの結果

ips-ip-ipsec-002

※アップロード:26.7Mbps  ダウンロード:34.8Mbps

上記の結果からIPIPは暗号化がされていないので通信速度がIPsecより速いことがわかります。
フレッツVPNワイドを利用する場合、IPIPでVPNを構築すればいいかというとそうもいきません。

なぜかというと、IPIPはトンネルセッションのキープアライブがないのでIPSecのようにセッション断を検知することができません。

例えば
フレッツVPNワイドを利用してIPIPでVPNを構築した場合、NTTの光回線で工事や障害が発生した場合、NTTの光回線が復旧してもIPIPがセッション断を検知することができないのでIPIPのセッションをすぐに接続できず拠点間の通信復旧までに時間がかかる可能性があります。

一方、IPsecでVPNを構築した場合、通信断け検知しNTTの光回線が復旧するとIPsecのセッションもすぐに通信が開通します。

企業などで利用する場合は通信速度よりも安定性を重視する場合が多いのでIPsecを利用したVPN構築が一般的と言えます。

通信速度を重視しIPIPを利用する場合は回線断などによりセッションが切断された時の対処方法を明確にして対応できるようにすることが大切です。

次回は
LANポートやMACアドレスなどの組み合わせで、不正な通信を遮断 について紹介します。

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
ブログ
Nedia What's up!
 HOME  ブログ

YAMAHAルータの実機・検証 第1回VPNクライアントソフトウェアによるリモートアクセス!

2014/11/25 YAMAHA, 技術系 投稿者:

今ではインターネットは当たり前のように使われています。
企業や家庭でインターネットを接続する時はルータを利用し複数のパソコン、スマートフォンやタブレットをインターネットにつなげています。

ルータにはさまざまな機種があり家庭向けと企業向けで備わっている機能が違います。
今回は企業向けのルータ YAMAHA RTX1200を使って設定・検証を行います。

全4回に分けてそれぞれの設定・検証を紹介します。

第1回 VPNクライアントソフトウェアによるリモートアクセス(インターネットVPN)
第2回 IPIPによる接続(NTTフレッツ網を利用したVPN)
第3回 LANポートやMACアドレスなどの組み合わせで、不正な通信を遮断
第4回 部署毎に社内ネットワークを分離(VLAN)

VPNクライアントソフトウェアによるリモートアクセス

 第1回目はVPNクライアントソフトウェアによるリモートアクセスの設定について取り上げます。

まずはVPNとは何か?
VPNとはVirtual Private Networkの略になります。
インターネットに接続されている利用者の間に通信のトンネルを構成して
第3者がアクセスすることのできない仮想的なプライベートなネットワークを作ることです。

VPNでできることは?
インターネットを利用して企業の拠点間を専用線のように相互接続しセキュリティを高めた通信が可能です。
例えば本社に設置されているファイルサーバが遠く離れた支店からでもアクセスしファイルの閲覧・編集ができます。

VPNクライアントソフトウェアとは?
クライアントソフトをパソコンにインストールすることによってルータとVPN接続を可能にします。

リモートアクセスとは?
リモートアクセスとはクライアントパソコンとVPNルータで接続する方法です。

ネットワーク構成

 今回検証するネットワーク構成です。network-003
外出先のクライアントパソコン(192.168.10.1)からVPNで本社内のサーバ(192.168.0.101)に
アクセスできるように設定を行います。

ルータの設定

今回はYAMAHA RTX1200を利用します。
まずはルータの設定内容を記載します。
VPNはIPsecを使った内容です。

ip route default gateway pp 1
ip route 192.168.10.0/24 gateway tunnel 1
ip filter source-route on
ip filter directed-broadcast on
ip lan1 address 192.168.0.1/24
ip lan1 proxyarp on
##PPPoEの設定##
pp select 1
 pp keepalive use lcp-echo
 pp always-on on
 pppoe use lan2
 pppoe auto connect on
 pppoe auto disconnect off
 pp auth accept pap chap
 pp auth myname ISP接続アカウント ISPパスワード
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ip pp mtu 1454
 ip pp secure filter in 1020 1030 1040 1041 2000
 ip pp secure filter out 1010 1011 1012 1013 1014 1015 3000 dynamic 100 101 102
 103 104 105 106 107
 ip pp nat descriptor 1
 pp enable 1
##VPN(IPsec)の設定##
tunnel select 1
 ipsec tunnel 101
  ipsec sa policy 101 1 esp aes-cbc sha-hmac
  ipsec ike keepalive use 1 off
  ipsec ike pre-shared-key 1 text (事前共有鍵)
  ipsec ike remote address 1 any
  ipsec ike remote name 1 vpn-client(クライアントの名前)
 ip tunnel tcp mss limit auto
 tunnel enable 1
##フィルタ設定##
ip filter 1010 reject * * udp,tcp 135 *
ip filter 1011 reject * * udp,tcp * 135
ip filter 1012 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 1013 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 1014 reject * * udp,tcp 445 *
ip filter 1015 reject * * udp,tcp * 445
ip filter 1020 reject 192.168.0.0/24 * * * *
ip filter 1030 pass * 192.168.0.0/24 icmp * *
ip filter 1040 pass * 192.168.0.1 udp * 500
ip filter 1041 pass * 192.168.0.1 esp * *
ip filter 2000 reject * *
ip filter 3000 pass * *
ip filter dynamic 100 * * ftp
ip filter dynamic 101 * * www
ip filter dynamic 102 * * domain
ip filter dynamic 103 * * smtp
ip filter dynamic 104 * * pop3
ip filter dynamic 105 * * netmeeting
ip filter dynamic 106 * * tcp
ip filter dynamic 107 * * udp
nat descriptor type 1 masquerade
nat descriptor masquerade static 1 1 192.168.0.1 udp 500
nat descriptor masquerade static 1 2 192.168.0.1 esp
ipsec auto refresh on
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.0.51-192.168.0.100/24
dns server pp 1
dns private address spoof on

VPNクライアントソフトウェアの設定

続いてWindows7にインストールしたYAMAHAのVPNクライアントソフトの設定です。
クライアントソフトは「YMS-VPN7」を利用しました。

 client-002

(1)・・・任意の名前を設定します。
(2)・・・RTX1200設定内容30行目の 事前共有鍵を設定します。
(3)・・・(2)と同じパスワードを再度設定します。
(4)・・・RTX1200設定内容32行目の ipsec ike remote name の(クライアントの名前)を設定します。
(5)・・・RTX1200の固定グローバルIPアドレスを設定します。
(6)・・・RTX1200設定内容28行目の内容と同じ設定にします。
(7)・・・RTX1200設定内容28行目の内容と同じ設定にします。
(8)・・・RTX1200のLAN側IPアドレスを設定します。
(9)・・・RTX1200のトンネル経由設定のIPアドレスを設定します。

設定が終ったら「接続制御」内の「接続ボタン」をクリックします。
正常にVPN接続ができると「未接続」から「接続中」になります。
※コマンドプロンプトからpingで通信が確立されていることが確認できます。

software-001

IPsecとPPTPの通信速度の違い

IPsecとPPTPで通信速度を比べた場合、どのくらい速度差がでるか検証を行いました。
IPsecはVPNクライアントソフトウェアを利用、PPTPはWindowsPPTP接続で試しました。
通信・パソコン環境は同じパソコン・同じ回線を使い検証を行いました。

■IPsecの結果

ipsec-002

■PPTPの結果

pptp-001
※PPTP接続した時、VPNルータから割り当てられた
 IPアドレスは「192.168.0.201」になります。

上記の結果からIPsec接続の方が通信速度が速いという結果でした。

今回IPsec接続するために利用したソフトウェアは有料になります。
クライアントパソコンの台数が複数ある場合は、その台数分もしくは同時接続する台数分の
ライセンス費用が必要になります。

一方、PPTP接続の場合はWindowsのOSにPPTPクライアントとしての機能があります。
クライアントパソコンの台数が増えても費用が掛かることはありません。
今回のPPTP接続もWindowsのPPTPクライアント機能を利用して接続を行いました。

弊社ではセキュリティ面など総合的に考えた場合IPsecを利用した接続を勧め致しますが、
通信速度、セキュリティ、価格面、それぞれのご要望に沿った内容でご提案しております。
それぞれの利用環境をしっかりと把握してVPN環境の構築を行っていくのが大切です。

次回は
IPIPによる接続(NTTフレッツ網を利用したVPN)について紹介します。

 

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
ブログ
Nedia What's up!
 HOME  ブログ

SSDへ移行して私の作業は効率化されるのか?

2014/11/20 ビジネス系 投稿者:

前回、デスクトップ型PCをSSD化した検証結果を紹介致しましたが、今回は実際に私の作業PCをSSD化してみましたのでそのレポートをしてみたいと思います。
PCでゲームをする人や、ゲーム機のHDDをSSDにして「ゲームの起動やセーブが速くなった!」とは良く聞きますが、ビジネスPCをSSDにして「仕事の効率が上がった!」「売上が上がった!」という声はあまり見かけない気がするので、早速私のPCで検証したいと思います。

これまでの私のPCは朝出社し、電源を入れ、メールチェックが出来る状態になるまでに15分くらいかかっており、朝礼までにメールを見ることが出来ないことも多々ありました。
導入当初は気にならなかったPCの起動も、2年もすると重くなって来ているのを感じます。
この状態のPCがSSD化されることにより、実際の私の仕事はどこまで効率化されるのでしょうか。

20141118

作業用PCのSSD化概要

今回はOSのクリーンインストールを行います。
移行ツールを使い、バックアップから復元で移行する手段もありますが、2年ほど使って要らないツールや細かい不要ファイルもたまっていると思いますのでクリーンインストールを選択しました。

移行前の私のPC

  • OS:Windows7 Pro
  • CPU:Intel Corei7-2600
  • メモリ:8GB
  • HDD:500GB SATA2接続
  • エクスペリエンスインデックス プライマリハードディスク:5.8

残念ながらSATA2接続なのでSSDの性能を十分には引き出せませんが、前回の検証からSATA2でも圧倒的に速くなるので入れ替える価値は十分にあります。

20141118-2

前回検証したこのSSDに換装しました。

結果!SSD化して私の作業は効率化されたのか?

朝、始業時のメールチェックまで15分かかっていたものが2分ほどで済むようになりました。
始業のタイミングで10分以上の短縮となっています。
メールのチェックの後、メールのやりとりや簡単な作業依頼であればできてしまうくらいの余裕があります。
また、朝礼、朝会前にある程度の一日のスケジュールがたてられる事によって、その日のスタートから変わってくる気がします。
日々の5分10分の作業の積み重ねが年間を通してみると変わってくると思います。
朝のひと幕だけで大幅に作業時間の短縮ができたと思います。

その他のアプリケーションなどの動作はどうでしょうか

OSを含めたPC全体の動きがとても軽快でWebサイトの閲覧からマイクロソフトオフィス、Adobe系ツールに至るまで私が業務で使うものの全てが速く、確実に効率は上がっていると思います。
当初、ファイルサーバ内のデータについてはネットワーク越しのHDDを用いたサーバにあるためSSDの恩恵は受けにくい予想をしていたのですが、
アプリケーション自体がとても軽快に動作しているので、「通常の」ファイルを開く、保存するといった動作は以前より速くなっている気がします。

それでは重いデータではどうでしょうか?

業務の性質上、お客様からファイルサイズの大きいデータ(イラレやフォトショ)を受け取り、それを元に作業を行うことが多々あります。
このようなデータについては、「アプリケーションの起動は速い」がその後の「データの読み込みは今までと同じ」となっております。
当然といえば当然なのですが、保存に関しても同様で重いデータの場合は保存に十数秒かかったりしています。

実際の作業を行ってみて

まだSSD化を行って1週間ほどではありますが、実際に飲食店向けのサイト更新作業を行ったのでその感想を少々。
作業内容は
・Adobeツールを使い、大きい写真をWeb用に補正、加工
・テキストエディタでHTMLコーディングを行い複数のブラウザで確認
・FTPツールでサーバへアップロード、本番環境で確認
この作業の繰り返しなわけですが、一連のサイクルにアプリケーションの起動待ちや切り替え待ち、ブラウザのもたつき等がなく作業効率が上がっていたと思います。

結論

前回のSSD化の検証結果にもあったように間違いなく「SSD化によって作業効率は確実に上がる!」と断言できます。
私の環境ではありますが、朝のメールチェックだけでも10分、一日を通してみるとそれ以上に短縮できていると思います。
みなさんの環境ではもっと効果が高い可能性もあります。

ここで前回の検証結果の文章をもう一度・・・

SSDを導入することによりPCを使った全ての動作が速くなると言えると思います。
仮にSSDの導入で「1日5分」節約が出来たとします。企業平均年間休日(休暇)110日とし、255日を出勤日とすると、
5(分)×255(日)=1,275(分)=21.25(時間)
となります。いち社員が21時間仕事に費やすことによって生み出す利益を考えると、SSDを導入するのにかかる費用は簡単に取り戻す事ができると思います。
しかも、PCを使って仕事をする社員が10人、20人、30人といらっしゃる場合はどうでしょうか?
年間を通して大きなプロジェクトをひとつふたつ余分に出来るかもしれません。
「時は金なり」と良く言いますが、PCで作業をすることが増えた昨今、PC作業の効率化が企業の売上、利益向上につながるといえるのではないでしょうか?

移行作業は大変かと思いますので、新しくPCを購入する際には「ストレージをSSDにする」という検討を行ってみてはいかがでしょうか?
導入コスト以上の見返りがあると思います。
ご検討の際は弊社スタッフへお声掛け下さい。

実際に行った移行工程はこちら

移行データのバックアップ(エクスポート)

クリーンインストールを行うため、消えてしまっては困るデータ、移行しなくてはいけないデータの洗い出しを行い、移行用データとして別にまとめておきます。

  • メールデータ(メール、アドレス帳、振り分けルール)
  • FTPツール設定データ(FileZilla、WinSCP)
  • フォント
  • 社内コミュニケーションツールのログ
  • お気に入り(ブックマーク)

20141118-4

後述するアプリケーションインストールファイルとともにこんな感じにひとまとめにしておきます。

その他にIMEの辞書などお使いの方はそれを。
また、弊社の場合、画像やHTMLソースなどのお客様のデータはすべて社内のファイルサーバに置いてあるので移行の必要はありません。
意図的にこういったデータをPC内に貯めないよう注意しながら運用していますので、PCの取り替え時などに便利です。
また、PCが壊れてしまった際もデータを失うことがありません。

この運用方法は弊社が実践しており、お客様にもおすすめしている方法です。
気になる方は弊社スタッフまでご相談下さい。

20141118-3

移行後インストールを行うアプリケーション

続いてインストールを行うアプリケーションのインストールファイルやディスクを用意します。
※Adobe系のツール、マイクロソフトオフィスなどライセンスが伴うアプリケーションををお使いの方は「ライセンス認証の解除」もしくは「アンインストール」を忘れずに行って下さい。

  • OS Windows7 Pro
  • チップセットドライバ
  • ウィルスチェックソフト NOD32
  • マイクロソフトオフィス2010(Outlook、Word、Excel、PowerPoint)
  • Adobe Design and Web Premium CS6
  • FTPツール(FileZilla、WinSCP)
  • HTMLエディタ等開発ツール
  • 各種ブラウザ(Firefox、GoogleChrome、Safari)
  • その他、コミュニケーションツール等

移行作業開始

全体的な流れとしては、
 1. 移行データをUSBメモリや外付HDDにコピー
 2. PCをシャットダウンし、HDDとSSDを差し替える
 3. SSDにWindows7をクリーンインストール、アップデート
 4. 各アプリケーションのインストール、アップデート
 5. 移行データの復元
となります。

移行作業の注意点としては

検証の際に分かりましたが、SSDといえどもOSやアプリケーションのアップデートにはかなり時間がかかります。時間に余裕がある時に作業を行わないと、急な作業依頼やトラブルがあった際に対応が出来なくなってしまいます。

20141120-1

お約束のSSD速度チェック。予想通りSSDの性能を出しきってはいないようですが、
かなり速度アップしています。
エクスペリエンスインデックスの数値も5.8から7.8に上がりました。

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
ブログ
Nedia What's up!
 HOME  ブログ

PostgreSQLストリーミングレプリケーション 第4回 チューニングでパフォーマンスは向上する?

2014/11/18 技術系 投稿者:

PostgreSQLストリーミングレプリケーション、いよいよ最終回となりました。

前回では各レプリケーション構成下でのベンチマークを測定しましたが、今回はPostgreSQLのパラメータチューニングによってどの程度パフォーマンスが上がるかを検証してみたいと思います。

postgresql.confの設定

まず、一般的な設定変更を行ってみました。

# vi /usr/local/pgsql/data/postgresql.conf
---------------------------------------------------------------------------------
max_connections = 300                 # (change requires restart)
shared_buffers = 600MB                # min 128kB
work_mem = 32MB                       # min 64kB
maintenance_work_mem = 256MB          # min 1MB
wal_buffers = 16MB                    # min 32kB, -1 sets based on shared_buffers
checkpoint_segments = 32              # in logfile segments, min 1, 16MB each
checkpoint_timeout = 10min            # range 30s-1h
checkpoint_completion_target = 0.9    # checkpoint target duration, 0.0 - 1.0
effective_cache_size = 1GB
---------------------------------------------------------------------------------

チューニング前後比較

運用上、良く使われるであろうremote_writeでパフォーマンスを計測しました。

同時接続数 before after
10 311.438433 288.125800
20 305.639230 252.362676
30 249.080966 268.283054
40 321.211022 377.644046
50 318.080888 384.685279
60 375.444728 376.620584
70 381.336274 376.829394
80 362.426925 380.413093
90 357.318007 387.246141
100 338.282760 387.697821

約104.8%のパフォーマンスアップとなりました。

I/Oスケジューラ設定変更

上記の設定内容に加え、ディスク設定を変更してみました。

今回の構成ではディスク性能がボトルネックになっていそうなのですが、少しでもパフォーマンスが出るようにI/Oスケジューラを変更します。

CentOS標準のcfqではI/Oのリクエストを均一に処理しようとします。
これをPostgreSQLで推奨されるdeadlineに変更します。

deadlineでは処理待ちの時間がかかっているI/Oリクエストを優先して処理するI/Oスケジューラです。

# cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
# echo deadline > /sys/block/sda/queue/scheduler
# cat /sys/block/sda/queue/scheduler
noop anticipatory [deadline] cfq

ちなみにSSD等ではOSが関与しないnoopにした方が良いそうです。

I/Oスケジューラ変更結果

同時接続数 cfq deadline
10 288.125800 327.992339
20 252.362676 313.992751
30 268.283054 265.219558
40 377.644046 369.047703
50 384.685279 388.308045
60 376.620584 385.296396
70 376.829394 394.342246
80 380.413093 383.741045
90 387.246141 386.482870
100 387.697821 390.683908

多少ばらつきはありますがI/Oスケジューラをdeadlineに変更するだけで、平均約103.6%のパフォーマンスアップとなることがわかりました。

なお、上記のechoコマンドでdeadlineを設定した場合、再起動するとcfqに戻ってしまいますが、grub.confに記述することで再起動後もdeadlineを使うことができます。

# vi /etc/grub.conf
-------------------------------------------------------------------------------------------------------------
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-504.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=1b533e99-0226-40c2-8d5f-c6ef251ed619 rd_NO_LUKS rd_NO_MD crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet elevator=deadline
# elevator=deadlineを追加
        initrd /initramfs-2.6.32-504.el6.x86_64.img
-------------------------------------------------------------------------------------------------------------

運用上の注意点

さて、チューニングによってもパフォーマンスが変わることがわかりましたが、このまま運用してしまうと問題が出てきました。

スレーブが参照中のデータをマスター側で削除してしまう現象が発生しスレーブの参照がキャンセルされてしまったのです。

これを防ぐために「hot_standby_feedback」パラメータを有効にします。


# vi /usr/local/pgsql/data/postgresql.conf
-------------------------------------------------------------------------
hot_standby_feedback = on             # send info from standby to prevent
                                      # query conflicts
-------------------------------------------------------------------------
# /etc/rc.d/init.d/postgres restart

まとめ

I/Oスケジューラ変更はしておいた方が良い

PostgreSQLのチューニングというと、どうしてもpostgresql.confを弄り倒すイメージがありますが、I/Oスケジューラの変更はお手軽なので是非ともやっておきたいチューニングだと思います。

場合によってはマスターとスレーブでパラメータを変更すべき

今回はマスターとスレーブで同じ設定を行いましたが実運用では性能の良いマスターと、そこそこの性能のスレーブを何台か投入するという場面も出てくるので、マスターとスレーブで違う設定を行うということも有用だと感じました。

最後に

合計4回で構成したPostgreSQLストリーミングレプリケーションいかがでしたでしょうか。

うまく活用することで、スレーブに投入した台数分のパフォーマンスアップが期待できるためPostgreSQLの負荷が多い場合には非常に有効な方法と言えると思います。

ちなみに実際にデータベースの負荷が問題になっていたサーバでは、ストリーミングレプリケーションにより参照クエリを分散することで、想像以上のパフォーマンスを発揮することができました。

今後もさまざまな機能強化が行われていくPostgreSQLを注視していきたいと思います。

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
ブログ
Nedia What's up!
 HOME  ブログ

PostgreSQLストリーミングレプリケーション 第3回 レプリケーション構成によるパフォーマンス比較

2014/11/13 技術系 投稿者:

前回までの設定でレプリケーションができるようになりました。

それでは実際にレプリケーション別にベンチマークを実行して比較してみたいと思います。

pg_benchの準備

まずベンチマークツールを準備します。PostgreSQLのベンチマークで有名なpg_benchの準備を行います。

# su - postgres
$ cd /usr/local/src/postgresql-9.3.5/contrib/pgbench/
$ make
$ make install

次にベンチマーク用のデータベースを作成し初期化します。今回はベンチマーク用に「bench_db」というデータベース作成し使用することにしました。

$ created bench_db
$ pgbench -i bench_db

ベンチマークの実施方法

ベンチマークの実施には以下のコマンドを使用しました。

$ pgbench -c 10 -t 1000 -N bench_db

同時接続数10で1接続あたり1000回の更新や参照のトランザクションを行うという内容です。

実際にコマンドを実行すると以下のような結果が得られます。

$ pgbench -c 10 -t 1000 -N bench_db
starting vacuum...end.
transaction type: Update only pgbench_accounts
scaling factor: 1
query mode: simple
number of clients: 10
number of threads: 1
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
tps = 322.875608 (including connections establishing)
tps = 323.030168 (excluding connections establishing)

10行目、11行目のtpsとして表示されているのが、1秒間あたりに実行できたトランザクション数となります。数値が大きいほど多くのトランザクションを実行できたことになります。

前者の「including connections establishing」は接続時間を含む結果であり、後者の「excluding connections establishing」は接続時間を含まない結果となっています。

今回は後者の「excluding connections establishing」の値をベンチマーク結果として使用することにしました。

ベンチマーク実行結果

同時接続数を10からmax_connections初期値の100まで上げていき、各レプリケーション構成によってどの程度パフォーマンスの違いが出るのかを計測し結果を次の表にまとめましたのでご覧ください。

synchronous_commit
on remote_write local off




10 280.261470 311.438433 351.743383 6247.446356
20 254.200879 305.639230 350.453906 6561.537709
30 258.331754 249.080966 282.679487 6590.480710
40 250.372667 321.211022 320.671861 6621.393989
50 275.564140 318.080888 350.964466 6570.056181
60 310.976342 375.444728 435.216539 6602.207118
70 282.817891 381.336274 458.184838 6588.127404
80 294.541189 362.426925 453.522946 5708.684679
90 293.994904 357.318007 440.773060 6328.789473
100 279.233850 338.282760 443.758059 6604.836590

大変です。offだけ桁が違います。

正直、目を疑う結果となりましたが、localとoffの差はマスター側にディスク書き込みをするかしないかの違いなので、このサーバではディスクI/Oがボトルネックになっていると考えられそうです。 実際使用しているディスクはSATAのハードディスクでしたのでSSD等に載せ替えるのが良いかもしれません。

上記結果をグラフ化したのがこちら。offは桁違いなので省略いたしました。

replicationgraph

スレーブ側の検索性能(参考)

次にスレーブ側の性能をpg_benchで計測してみました。

スレーブでは更新ができないため「-S」オプションにより参照だけのベンチマークを行います。

また、pg_benchを走らせる際にデータベースに対してvacuumが実行されるのですが、スレーブではvacuumもエラーになってしまうので「-n」オプションで回避しています。

$ pgbench -c 50 -S -n bench_db

各レプリケーション構成の通常時とマスターベンチマーク時に、上記コマンドをスレーブにて実行して5回の平均を取得してみました。

通常時(マスターに負荷をかけていない状態)のスレーブの参照ベンチマーク結果

synchronous_commit
on remote_write local off
1回目 7019.711349 7111.768555 7057.561471 7903.014210
2回目 7044.535554 8565.603961 8463.530646 8257.638315
3回目 7443.799315 7816.652597 7058.358508 7174.012856
4回目 7475.294153 8078.196946 7374.740040 8268.289456
5回目 8080.285719 8723.567590 8621.284226 7314.432839
平均 7412.725218 8059.157930 7715.094978 7783.477535

マスターベンチマーク実行時のスレーブの参照ベンチマーク結果

synchronous_commit
on remote_write local off
1回目 8274.994621 8195.646473 8521.952550 7877.737514
2回目 7896.523950 7063.643427 7814.087236 7732.397198
3回目 7670.123336 8536.939337 8309.927039 7727.019843
4回目 8038.972941 8493.578854 8488.820224 7447.901926
5回目 8202.907110 7849.416788 7588.404917 7835.762420
平均 8016.704392 8027.844976 8144.638393 7724.163780

実際にはマスターのベンチマーク実行時に手動でスレーブにコマンドを流しているため、検証方法に一貫性がなくあくまで参考値でしかありません。

ですがこの結果によってマスターの負荷の有無やレプリケーション構成の違いによって、スレーブの参照性能は大きく変化しないことが分かりました。

まとめ

意外にベンチマーク差が出る結果に

レプリケーション毎のベンチマークでは予想通り、ほぼ、on < remote_write < local という結果になりました。

あくまで今回の環境下での結果ですが、remote_writeはonの約1.2倍、localはonの約1.5倍、offに至っては桁違いという大きな違いが発生しましたので、レプリケーションを行う場合にはパフォーマンスを重視するのか、データの保全性を重視するのかをきちんと見極める必要がありそうです。

スレーブの参照をうまく使えれば負荷分散となり速度向上が期待できる

スレーブ側はマスター側の負荷に関わらずある一定の参照性能が発揮できることが分かりました。このためストリーミングレプリケーションでは、うまくスレーブ側に参照クエリを渡すことによって、マスター側の負荷を下げ、結果として速度を向上させることができるといえます。

次回予告

次回はPostgreSQLレプリケーション最終回、「第4回 チューニングでパフォーマンスは向上する?」をお送りいたします。

今回の検証はレプリケーション設定以外のパラメータは初期の状態ですので、次回ではこれをチューニングしてどの程度パフォーマンスが上がるのかを検証したいと思います。お楽しみに!

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
ブログ
Nedia What's up!
 HOME  ブログ

PostgreSQLストリーミングレプリケーション 第2回 インストールと初期設定

2014/11/11 技術系 投稿者:

前回ではストリーミングレプリケーションの概要についてお話しましたが、第2回ではPostgreSQLのインストールとレプリケーション初期設定について解説いたします。

プライマリ(更新・参照可能)-セカンダリ型(参照のみ)の2台構成で進めます。

用意したもの

  • サーバ2台(CentOS 6.6 64bit版をインストール済み)

以下のような構成です。

それでは早速PostgreSQLのインストールと設定を行っていきましょう。

PostgreSQLのインストール

このサーバにPostgreSQLをsourceからインストールします。
マスターとスレーブ共通です。

# cd /usr/local/src
# yum install readline-devel zlib-devel perl-ExtUtils-Embed
# wget http://ftp.postgresql.org/pub/source/v9.3.5/postgresql-9.3.5.tar.gz
# useradd postgres
# mkdir /usr/local/pgsql
# chown -R postgres:postgres /usr/local/pgsql
# tar zxf postgresql-9.3.5.tar.gz
# chown -R postgres:postgres /usr/local/src/postgresql-9.3.5
# su - postgres

$ cd /usr/local/src/postgresql-9.3.5
$ ./configure
$ make
$ make install

$ vi ~postgres/.bashrc
-----------------------------------
# PostgreSQL Config
PG=/usr/local/pgsql
PATH="$PATH":$PG/bin
export MANPATH="$MANPATH":$PG/man
export PGLIB=$PG/lib
export PGDATA=/usr/local/pgsql/data
-----------------------------------
$ source ~/.bashrc
$ initdb --encoding=UTF-8 --no-locale
$ exit

/* 起動スクリプトの設置 */
# cd /usr/local/src/postgresql-9.3.5
# cp contrib/start-scripts/linux /etc/rc.d/init.d/postgres
# chmod +x /etc/rc.d/init.d/postgres
# chkconfig postgres on

# /etc/rc.d/init.d/postgres start

PostgreSQLが起動すればこれでひとまずインストールは完了。

これをマスターとスレーブの2台分行います。

マスターのレプリケーション初期設定

続いてレプリケーションを使用するための設定を行います。

マスターのpostgresql.confを修正

# su - postgres
$ cd /usr/local/pgsql/data
$ vi postgresql.conf
---------------------------------------------
listen_addresses = 'localhost,192.168.1.201'
port = 5432
wal_level = hot_standby

/* ここでレプリケーション構成を設定しますが、ひとまず完全同期に設定 */
synchronous_commit = on

max_wal_senders = 3
synchronous_standby_names = '*'

/* ログの出力も設定 */
log_destination = 'syslog'
syslog_facility = 'LOCAL0'
syslog_ident = 'postgres'
---------------------------------------------

レプリケーション用ユーザーの作成

ユーザー名は何でも良いのですが、今回は「replicationuser」というユーザーでパスワードを「pass1234」と設定します。

$ psql
postgres=# CREATE ROLE replicationuser LOGIN REPLICATION PASSWORD 'pass1234';
CREATE ROLE
postgres=# \q

pg_hba.confを編集しアクセス設定を行う

$ cd /usr/local/pgsql/data
$ vi pg_hba.conf
-----------------------------------------------------------------------------
host    replication     replicationuser             192.168.1.0/24        md5
-----------------------------------------------------------------------------
$ exit

ちなみに「host replication replicationuser」ではなく「host all replicationuser」にしたら、後述のpg_basebackupでpg_hba.confのエラーが出てしまいました。

設定を反映

# /etc/rc.d/init.d/postgres restart

スレーブのレプリケーション初期設定

pg_basebackupによるデータコピー

PosgreSQLを停止し、レプリケーションするためにpg_basebackupというコマンドを使用して、マスターのdata領域を持ってきます。

# /etc/rc.d/init.d/postgres stop
# su - postgres
$ rm -rf /usr/local/pgsql/data
$ pg_basebackup -h 192.168.1.201 -D /usr/local/pgsql/data --xlog
$ cd /usr/local/pgsql/data
$ vi /usr/local/pgsql/data/postgresql.conf
---------------------------------------------
listen_addresses = 'localhost,192.168.1.202'
hot_standby = on
---------------------------------------------

recovery.confの設定

$ vi /usr/local/pgsql/data/recovery.conf
------------------------------------------------------------------------------------------------------------
standby_mode = 'on'

/* ここでは自分自身をapplication_nameで「slave」という名前を指定し
  先ほど作成した「replicationuser」ユーザーでマスターに接続する設定を行います。 */
primary_conninfo = 'host=192.168.1.201 port=5432 user=replicationuser password=pass1234 application_name=slave'
------------------------------------------------------------------------------------------------------------
$ exit

PostgreSQLを起動

# /etc/rc.d/init.d/postgres start

動作確認

マスター側でtest1というデータベースを作成し、スレーブに反映されるか確認してみます。

マスター側でデータベース作成

# su - postgres
$ psql -l
                             List of databases
   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges
-----------+----------+----------+---------+-------+-----------------------
 postgres  | postgres | UTF8     | C       | C     |
 template0 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 template1 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
(3 rows)

$ createdb test1
$ psql -l
                             List of databases
   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges
-----------+----------+----------+---------+-------+-----------------------
 postgres  | postgres | UTF8     | C       | C     |
 template0 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 template1 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 test1     | postgres | UTF8     | C       | C     |
(4 rows)

test1というデータベースが作成されました。

スレーブ側で反映を確認

# su - postgres
$ psql -l
                             List of databases
   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges
-----------+----------+----------+---------+-------+-----------------------
 postgres  | postgres | UTF8     | C       | C     |
 template0 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 template1 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 test1     | postgres | UTF8     | C       | C     |
(4 rows)

スレーブ側でも無事test1というデータベースが作成されていることが確認できました。

ちなみにスレーブは参照専用なので、例えばスレーブ側でtest1データベースを削除しようとしてもリードオンリーだというエラーが出て削除できません。

$ dropdb test1
dropdb: database removal failed: ERROR:  cannot execute DROP DATABASE in a read-only transaction

まとめ

というわけで、無事レプリケーション環境構築ができました。実際にちゃんと動作すると嬉しいですね。

次回は「第3回 レプリケーション構成によるパフォーマンス比較」です。

今回設定したレプリケーションがレプリケーション構成別にどのようなパフォーマンスを発揮するのかを比較したいと思います。お楽しみに!

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
ブログ
Nedia What's up!
 HOME  ブログ

PostgreSQLストリーミングレプリケーション 第1回 ストリーミングレプリケーションの4つの構成

2014/11/06 技術系 投稿者:

PostgreSQLを使ってシステムを構築していると、レスポンス速度の改善が課題になってくることがあります。

そのような場合、まずはシステム自体のクエリの見直しを行ったり、PostgreSQL自体をチューニングし改善を行いますが、それでもまだ速度が物足りない場合にはハードウェア増強を検討することになります。

ハードウェア的には「ディスクのI/O性能の不足」か、「CPUの処理能力不足」のどちらかが原因となっていることが多く、きちんとボトルネックを見極めてハードウェア交換を行うことで速度改善ができたりします。

ところが著しくアクセスが多い場合や、重い処理を複数走らせたりする場合には、それでも速度に不満を感じる場面が出てきます。

そんなときの改善策の1つとして、PostgreSQLサーバを参照更新可能なマスターと参照のみのスレーブに分けたレプリケーション構成で運用し負荷分散を行う方法があります。

PostgreSQL 9系になってからストリーミングレプリケーション機能の強化が行われ、レプリケーション導入の敷居が下がりました。

本記事ではPostgreSQL 9.3でのストリーミングレプリケーションについて解説するとともに、実際に負荷分散としてどの程度の効果があるかを検証していきたいと思います。

全4回を予定しています。

  • 第1回 ストリーミングレプリケーションの4つの構成
  • 第2回 インストールと基本設定
  • 第3回 レプリケーション構成によるパフォーマンス比較
  • 第4回 チューニングでパフォーマンスは向上する?

ストリーミングレプリケーションとは?

PostgreSQLは「WAL」を「ストリーミング」してレプリケーションを実現しているため文字通りストリーミングレプリケーションと呼ばれます。

WAL(Write Ahead Logging)とは更新などの変更があった場合に、データファイルへの書き込みを行う前に、変更点(WALレコード)をログとしてファイルへ書き出す仕組みです。ちなみにトランザクションログと言われることもあります。

WALレコードを再適用すれば同じデータを復元できるため、このWALレコードを別のサーバへ渡すことで、レプリケーションを実現しています。

PostgreSQL 9
postgresql9

ちなみにPostgreSQLでレプリケーションを行う場合、pgpool-IIというミドルウェアも有名です。

PostgreSQLのストリーミングレプリケーションはWALを転送し復元するため、厳密にマスターとスレーブの内容に差分が生じる場合がありますが、pgpool-II自身が持つレプリケーション機能ではpgpool-II自体がミドルウェアとして動作し、配下のサーバに同時に更新クエリを投げるため更新遅延が発生しない同期レプリケーションが可能です。

また、PostgreSQLにない機能を補完するため、多機能だったりしますが、一旦pgpool-IIを経由して動作するため、発生したオーバーヘッドによりクエリの性能が低下するというデメリットもあります。

pgpool-II
pgpool

4つのレプリケーション構成

PostgreSQLのストリーミングレプリケーションでは、前述のWALレコードの書き込みと応答のタイミングによって4つのレプリケーション構成が実現可能です。

実際には設定ファイル中のsynchronous_commitパラメータによって動作が変わります。

synchronous_commit値 マスターの処理 スレーブの処理 概要
on 処理完了 処理完了

マスター・スレーブ完全同期

remote_write 処理完了 メモリ書き込み処理完了 スレーブメモリ同期
local 処理完了 待たない 非同期(マスター処理のみ)
off メモリ書き込み処理完了 待たない 非同期(マスターメモリ処理のみ)

この表だけだとさすがに分り辛いので、一つずつ解説していきたいと思います。

「on」 マスター・スレーブ完全同期後応答

PostgreSQL01

スレーブのWAL同期処理が完全に終わってから応答するため、処理に一番時間がかかりますが、マスター障害時にはスレーブが最新の状態を保持できることがメリットです。

ただしマスターへ応答することが前提なため、スレーブの障害時には応答ができなくなるデメリットがあります。

「remote_write」 スレーブメモリ同期後応答

PostgreSQL02

スレーブのWAL同期がメモリ書き込み処理完了後に応答します。

「on」よりもディスクI/Oの書き込み待ちが発生しないため高速になります。

また、マスターの障害が発生した場合にでも、最新の更新を保持できます。

「on」と同様にマスターへ応答することが前提なため、スレーブの障害時には応答ができなくなるデメリットがあります。

「local」 非同期 マスター処理後応答

PostgreSQL03

マスターのWAL処理は待ちますが、スレーブの処理は待ちません。

スレーブの更新を待たないため高速ですが、マスターに障害が発生した場合には、スレーブからデータを取り出そうとしてもWAL転送が完了していない部分の更新内容を失う可能性があります。

「off」 非同期 マスターメモリ処理後応答

PostgreSQL04

マスターのWAL処理がメモリ上に書き込まれた段階で応答を返します。

マスターとスレーブが非同期のまま応答することになります。

処理を待つ時間が減るため応答速度が最も高速ですが、マスターの障害発生時にスレーブからデータを取り出そうとしても、WAL転送が完了していない部分の更新内容を失う可能性があるだけでなく、マスターからデータ復旧を行える場合でもディスク書き込みが完了していない更新内容まで失う可能性があります。

まとめ

メリット・デメリットをまとめると以下のような感じです。

synchronous_commit値 メリット デメリット
on 耐障害性がある 最も遅い
スレーブ故障時にマスターの応答ができない
remote_write Onよりも高速で、耐障害性がある スレーブ故障時にマスターの応答ができない
local 高速 更新内容を失う可能性がある
off 最も高速 更新内容を失う可能性がある

デメリットをきちんと理解したうえでリスクのあるレプリケーション構成にしてみるというものアリかもしれませんが、サーバを運用していく以上障害はつきものですので、特にマスターのディスク書き込み前に応答してしまう「off」はあまりお勧めできないように思います。

ストリーミングレプリケーションの4つの構成を理解したところで、次回は「インストールと基本設定」の予定です。お楽しみに!

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
ブログ
Nedia What's up!
 HOME  ブログ

第3回 サーバー設定ツール「Chef」 (3/3)

2014/11/04 技術系 投稿者:

3回目となる今回でChefの紹介は最後です。クックブックの紹介とまとめを行います。

クックブックの紹介

LAMP環境の構築用クックブック

yum で Apache、PHP、MySQLのパッケージをインストールするだけの単純なレシピを作ります。
(いわゆるLAMP環境です。)

lampという名前のクックブックを作成します。

$ knife cookbook create lamp

レシピを作成します。
(クックブック作成時に自動的に作成されるdefaultというレシピを使います。)

$ vi /home/chefuser01/cookbooks/lamp/recipes/default.rb

#
# Cookbook Name:: lamp
# Recipe:: default
#
# Copyright 2014, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#

## Apacheをインストールする
#  yum install -y httpd
package "httpd" do
    action :install
    end

# MySQLをインストールする
#  yum install -y mysql-server
package "mysql-server" do
    action :install
    end

# PHPと関連するモジュールをインストールする
#  yum install -y php
#  yum install -y php-mbstring
#  yum install -y php-mysql
package "php" do
     action :install
     end
package "php-mbstring" do
     action :install
     end
package "php-mysql" do
     action :install
     end

# Apacheの起動と自動起動の設定を行う
#  service httpd start
#  chkconfig on
service "httpd" do
  action [:start, :enable]
end

# MySQLの起動と自動起動の設定を行う
#  service mysqld start
#  chkconfig mysqld on
service 'mysqld' do
  action [:start, :enable]
end

# MySQLのセキュア設定を行う
script "Secure_Install" do
  interpreter 'bash'
  user "root"
  code <<-EOL
    mysqladmin -u root password "your_password"
    mysql -u root -pyour_password -e "DELETE FROM mysql.user WHERE User='';"
    mysql -u root -pyour_password -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');"
    mysql -u root -pyour_password -e "DROP DATABASE test;"
    mysql -u root -pyour_password -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';"
    mysql -u root -pyour_password -e "FLUSH PRIVILEGES;"
  EOL
end

レシピの作成が終わりましたので、Chef-Soloを実行します

$ cd /home/user01
$ sudo chef-solo -c solo.rb -j node.json

nmapコマンドで起動しているサービスを確認してみましょう。

$ nmap localhost

Starting Nmap 5.51 ( http://nmap.org ) at 2014-10-29 14:46 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00040s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
3306/tcp open  mysql

設定したパスワードでMySQLに接続が出来るか確認します


$ mysql -u root -p
your_password

以上でLANP環境のベース構築はできるはずです。

また、あらかじめ作成しておいた 各パッケージの設定ファイル httpd.conf 等を適用させることも可能です。
手順としては以下のようになります

1.httpd.conf.erb という名前の Templateを作成
2.httpd.conf.erb を元に /etc/httpd/conf/httpd.conf を作成

デフォルトの httpd.confを、/home/chefuser01/cookbooks/lamp/templates/httpd.conf.erb という名前でコピーします。

$ cp -a /etc/httpd/conf/httpd.conf /home/chefuser01/cookbooks/lamp/templates/default/httpd.conf.erb
                 
$ vi /home/chefuser01/cookbooks/lamp/templates/default/httpd.conf.erb

次に、例えば httpd.conf.erb の Servername の部分を、以下のように書き換える。

ServerName <%= node['hostname'] %>

default.rb に以下を追記。

$ vi /home/chefuser01/cookbooks/lamp/recipes/default.rb
template "/etc/httpd/conf/httpd.conf" do
  source "httpd.conf.erb"
  group "root"
  owner "root"
  mode "0644"
end

service "httpd" do
  action [:restart,]
end

以上です。

まとめ

いかがでしたでしょうか?
最後に紹介した設定ファイルの適用ができるようになれば細かい設定ができるため、より実際のサーバ構築にも利用できるはずです。

今回は”Chef-Solo 構成”のみの紹介となりますが、まったく同じ構成のサーバを数十台規模で必要になるようなケースでなければ”Chef-Solo 構成”で十分ではないかと思います。

レシピの作成にはそれなりの時間が必要です。
そのため、同一環境のサーバが4、5台程度。というケースであれば、Chefは有効ではないと言えます。
しかし4、5台であってもそれが定期的に変更があるサーバであればどうでしょうか?
定期的に変更がある環境を全て同じに保ちたい。ということであれば例え4、5台であってもChefの利用が有効なケースと言えるでしょう。

————————————————————————————————
・レシピの調整に10分 + 各サーバへの適用(5台 x Chefの適用に5分) だとして合計 35分
・各サーバ毎の作業(5台 x 作業時間10分) だとして合計 50分
————————————————————————————————

こうしてみると十分効果はあるのが分かると思います。

また、Chefの利用には同一環境の構築という部分に目を奪われがちですが、クックブックはなるべく各環境で専用の物を用意するのではなく、できるだけ汎用的に作っておいて細かい調整は各サーバ毎に行う。という使い方もそれはそれで有効な使い方です。

まずは、難しく考えずにできるところからやってみることで、Chefの有効な使い道が見えてくるかもしれませんね。

それではまた。

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
群馬データセンター
群馬の法人ITサポートサービス Wide Net[ワイドネット]
Wide Netのクラウドバックアップ
クラウド型ファイル共有サービスRushDrive
ワイドオフィス
ネディアのSDGsへの取り組み
健康経営優良法人
IT-commons(ITコモンズ)