さくらのクラウドにDHCPサーバ構築してパフォーマンス測定してみた
さくらインターネットから「さくらのクラウド」の2万円分無料クーポンをいただきました。ありがとうございます。
「さくらのクラウドでDHCPサーバ運用すれば、自前でサーバ持ってなくていいよな。サーバ買い替えなくてもいいし。VPN張って、DHCPリレー先(helper address)をさくらのクラウドにすればいいよね。とりあえず、さくらのクラウド内でパフォーマンスを測定してみよう。」ってことでやってみた。
さくらのクラウドに2台の仮想サーバを作成する。スイッチ(dhcp-sw)経由で2台を接続する。1台をDHCPサーバ(dhcp01)、もう1台をパフォーマンス測定サーバ(dhcperf)とする。構成図は、以下の通り。
パフォーマンス測定に使用したツールは、nominum社提供のdhcperfというやつ。
Measurement Tools - Nominum
用意したもの
- サーバ x 2台
- ネットワーク
- スイッチ(ルータ いいえ) x 1台
DHCPサーバの準備
1. インタフェースの設定
[root@dhcp01 ~]# nmcli add type eth ifname eth1 con-name eth1 Connection 'eth1' (f1fdbd45-0160-471c-9357-ff302598d36f) successfully added. [root@dhcp01 ~]# nmcli c mod eth1 ipv4.method manual ipv4.addresses "10.0.0.1/16 10.0.255.254" [root@dhcp01 ~]# # nmcli c down eth1 Error: 'eth1' is not an active connection. [root@dhcp01 ~]# # nmcli c up eth1 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2) [root@dhcp01 tmp]# ip addr show eth1 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 9c:a3:ba:30:44:16 brd ff:ff:ff:ff:ff:ff inet 10.0.0.1/16 brd 10.0.255.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::9ea3:baff:fe30:4416/64 scope link valid_lft forever preferred_lft forever
2. dhcpのインストール
[root@dhcp01 ~]# yum install dhcp <snip> Installed: dhcp.x86_64 12:4.2.5-27.el7.centos.2 Complete!
3. dhcpd.confの設定
[root@dhcp01 ~]# vi /etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # authoritative; ddns-update-style none; subnet 10.0.0.0 netmask 255.255.0.0 { default-lease-time 600; max-lease-time 7200; range 10.0.0.10 10.0.255.253; option routers 10.0.255.254; ddns-updates off; } #NIC subnet 133.242.*.0 netmask 255.255.255.0 { not authoritative; }
4. dhcpのリースファイル作成
[root@dhcp01 ~]# touch /var/tmp/dhcpd.leases
5. dhcpdのコンフィグファイルのテスト
[root@dhcp01 ~]# dhcpd -t -cf /etc/dhcp/dhcpd.conf -lf /var/tmp/dhcpd.leases
コンフィグにerrorがあると、以下のような感じです。
/etc/dhcp/dhcpd.conf line 27: expecting a declaration }; ^ Configuration file errors encountered -- exiting <snip>
6. dhcpdの起動
[root@dhcp01 ~]# dhcpd -cf /etc/dhcp/dhcpd.conf -lf /var/tmp/dhcpd.leases Internet Systems Consortium DHCP Server 4.2.5 Copyright 2004-2013 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file Wrote 0 leases to leases file. Listening on LPF/eth1/9c:a3:ba:30:44:16/10.0.0.0/16 Sending on LPF/eth1/9c:a3:ba:30:44:16/10.0.0.0/16 Listening on LPF/eth0/9c:a3:ba:30:ee:51/133.242.*.*/24 Sending on LPF/eth0/9c:a3:ba:30:ee:51/133.242.*.*/24 Sending on Socket/fallback/fallback-net
7. dhcpdの起動を確認
[root@dhcp01 ~]# ps axww | grep dhcp[d] 5550 ? Ss 0:00 dhcpd -cf /etc/dhcp/dhcpd.conf -lf /var/tmp/dhcpd.leases
8. ログを眺める
[root@dhcp01 ~]# tailf /var/log/messages Jan 22 15:32:50 dhcp01 dhcpd: Internet Systems Consortium DHCP Server 4.2.5
dhcperfの準備
1. インタフェースの設定
[root@dhcp01 ~]# nmcli add type eth ifname eth1 con-name eth1 Connection 'eth1' (862f4a5e-e055-430e-94b5-8e5b9c2c9209) successfully added. [root@dhcp01 ~]# nmcli c mod eth1 ipv4.method manual ipv4.addresses "10.0.0.2/16 10.0.255.254" [root@dhcp01 ~]# # nmcli c down eth1 Error: 'eth1' is not an active connection. [root@dhcp01 ~]# # nmcli c up eth1 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2) [root@dhcpperf ~]# ip addr show eth1 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 9c:a3:ba:30:ef:89 brd ff:ff:ff:ff:ff:ff inet 10.0.0.2/16 brd 10.0.255.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::9ea3:baff:fe30:ef89/64 scope link valid_lft forever preferred_lft forever
2. wgetのインストール
wgetインストール済みであれば、skip
[root@dhcpperf ~]# yum install wget <snip> Complete!
3. dhcperfのパッケージをダウンロード
[root@dhcpperf ~]# wget ftp://ftp.nominum.com/pub/nominum/dhcperf/1.0.1.0/dhcperf-1.0.1.0-1-rhel-4-i386.tar.gz
4. dhcperfのインストール
[root@dhcpperf ~]# tar xzf dhcperf-1.0.1.0-1-rhel-4-i386.tar.gz [root@dhcpperf ~]# rpm -ivh ./dhcperf-1.0.1.0-1/dhcperf-1.0.1.0-1.i386.rpm
5. dhcperfのテスト
[root@dhcpperf ~]# /usr/local/nom/bin/dhcperf --server 10.0.0.1 --one-discover Sending DHCPDISCOVER. Received DHCPOFFER of 10.0.128.106. Sending DHCPREQUEST for 10.0.128.106. Received DHCPACK of 10.0.128.106. Acquired address: 10.0.128.106
6. dhcperfでパフォーマンス測定
DISCOVER - OFFER - REQUEST - ACK - RELEASE の測定
[root@dhcpperf ~]# /usr/local/nom/bin/dhcperf --server 10.0.0.1 --discover --test-duration 30 Beginning DHCPDISCOVER load test. Initial probe complete: High-water mark is 61 clients/second. Preparing for next test run. Beginning test run: 30 clients/second for 30 seconds. Succeeded: 0/900 clients failed. Preparing for next test run. Beginning test run: 45 clients/second for 30 seconds. Stopping run after 6 seconds; 2/109 clients failed. Preparing for next test run. Beginning test run: 37 clients/second for 30 seconds. Stopping run after 16 seconds; 2/542 clients failed. Preparing for next test run. Beginning test run: 33 clients/second for 30 seconds. Succeeded: 0/990 clients failed. Preparing for next test run. Beginning test run: 35 clients/second for 30 seconds. Succeeded: 0/1050 clients failed. Preparing for next test run. Beginning test run: 36 clients/second for 30 seconds. Stopping run after 15 seconds; 2/430 clients failed. 35 five-way handshakes per second.
7. dhcperfでパフォーマンス測定
REQUEST - ACK の測定
[root@dhcpperf ~]# /usr/local/nom/bin/dhcperf --server 10.0.0.1 --renew --test-d uration 30 Creating 20000 clients for renew test. 20000 clients available Beginning DHCPRENEW load test. Initial probe complete: High-water mark is 209 clients/second. Preparing for next test run. Beginning test run: 104 clients/second for 30 seconds. Stopping run after 11 seconds; 4/935 clients failed. Preparing for next test run. Beginning test run: 52 clients/second for 30 seconds. Succeeded: 0/1560 clients failed. Preparing for next test run. Beginning test run: 78 clients/second for 30 seconds. Stopping run after 23 seconds; 3/1776 clients failed. Preparing for next test run. Beginning test run: 65 clients/second for 30 seconds. Succeeded: 0/1950 clients failed. Preparing for next test run. Beginning test run: 71 clients/second for 30 seconds. Succeeded: 0/2130 clients failed. Preparing for next test run. Beginning test run: 74 clients/second for 30 seconds. Succeeded: 0/2220 clients failed. Preparing for next test run. Beginning test run: 76 clients/second for 30 seconds. Succeeded: 0/2280 clients failed. 76 DHCPRENEW transactions per second.
それぞれのテストを6回実施した結果。
テスト種別 | 1目 | 2回目 | 3回目 | 4回目 | 5回目 | 6回目 | 平均 |
---|---|---|---|---|---|---|---|
RENEW[回/秒] | 76 | 74 | 94 | 71 | 92 | 59 | 77.6 |
DISCOVER[回/秒] | 35 | 30 | 32 | 32 | 28 | 31 | 31.3 |
※RENEWは、REQUEST-ACKで1回。DISCOVERは、DISCOVER-OFFER-REQUEST-ACK-RELEASEで1回。
VPN張ってなかったり, DHCPに設定しているサブネット1つだったりと実際の利用を想定した環境と全然違って、このデータ意味あるのかという感も否めませんが。今後、下記を参考にVyOSでVPN張ってテストしてみたい。
サイト間VPN設定 | さくらのクラウドニュース
dhcperfがインストールに失敗した時の対処例
[root@dhcpperf ~]# rpm -ivh ./dhcperf-1.0.1.0-1/dhcperf-1.0.1.0-1.i386.rpm error: Failed dependencies: libc.so.6 is needed by dhcperf-1.0.1.0-1.i386 libc.so.6(GLIBC_2.0) is needed by dhcperf-1.0.1.0-1.i386 libc.so.6(GLIBC_2.1) is needed by dhcperf-1.0.1.0-1.i386 libc.so.6(GLIBC_2.1.3) is needed by dhcperf-1.0.1.0-1.i386 libc.so.6(GLIBC_2.2) is needed by dhcperf-1.0.1.0-1.i386 libc.so.6(GLIBC_2.3) is needed by dhcperf-1.0.1.0-1.i386 libm.so.6 is needed by dhcperf-1.0.1.0-1.i386 libresolv.so.2 is needed by dhcperf-1.0.1.0-1.i386 [root@dhcpperf ~]# yum install glibc* <snip> Complete! [root@dhcpperf ~]# yum install glibc*i686 <snip> Complete!