New Relic InfrastructureでOpenStackのインフラを監視する(その2)


今回のゴール

OpenStack上で仮想資源を作った際に、New Relic Infrastructreではどんな風に見えるのか?を見ていきます。今回は物理と仮想ネットワークを中心に確認してみます。

前提

cloud imageのアップロード

OpenStack上にcloud imageをアップロードしておきます。何でもいいのですが今回はUbuntu14を使います。

[root@honoka ~]# glance image-list
+--------------------------------------+-------------+
| ID                                   | Name        |
+--------------------------------------+-------------+
| b77d7a67-a68f-42fe-af7f-b5ceec6fc126 | cirros      |
| be54e3ba-9f3f-4d37-9a22-e5dc689e795f | Ubuntu14.4  |
| 2e47061d-8e32-4be6-99ac-9dc23e5071fd | Ubuntu16.04 |
+--------------------------------------+-------------+
[root@honoka ~]#

インターフェース情報

前回(その1)の最後の状態から始めます。

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP qlen 1000
    link/ether 00:0c:29:3c:92:39 brd ff:ff:ff:ff:ff:ff
    inet {サーバのIP} brd {ブロードキャストアドレス} scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe3c:9239/64 scope link
       valid_lft forever preferred_lft forever
3: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
    link/ether 92:c4:e8:c3:05:97 brd ff:ff:ff:ff:ff:ff
4: br-tun: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
    link/ether 12:0c:03:90:fb:43 brd ff:ff:ff:ff:ff:ff
5: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether 00:0c:29:3c:92:39 brd ff:ff:ff:ff:ff:ff
    inet {サーバのIP} brd {ブロードキャストアドレス} scope global br-ex
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe3c:9239/64 scope link
       valid_lft forever preferred_lft forever
6: br-int: <BROADCAST,MULTICAST> mtu 1450 qdisc noop state DOWN
    link/ether ca:9b:55:3f:de:4e brd ff:ff:ff:ff:ff:ff
#

ovs-vsctl show で仮想マシンとハイパーバイザー外部と通信できるよう、ens160がbr-exに割あたっていることを確認しておきます。

前準備

OpenStack上にcloud imageをアップロードしておきます。何でもいいのですが今回はUbuntu14を使います。

# source admin-openrc
# glance image-list
+--------------------------------------+-------------+
| ID                                   | Name        |
+--------------------------------------+-------------+
| b77d7a67-a68f-42fe-af7f-b5ceec6fc126 | cirros      |
| be54e3ba-9f3f-4d37-9a22-e5dc689e795f | Ubuntu14.4  |
| 2e47061d-8e32-4be6-99ac-9dc23e5071fd | Ubuntu16.04 |
+--------------------------------------+-------------+
#

仮想資源作成

仮想ネットワークの作成はコマンドで行いました。外部ネットワークと内部ネットワークの接続確認がしやすいからです。こちらを参考にさせて頂きました。
RDO Neutron ネットワークの設定

ルータの作成

# neutron router-create router1

仮想ネットワークの作成

外部ネットワークはadminテナントに所属し、プライベートネットワークはservicesに所属させることにします。

# openstack project list
+----------------------------------+----------+
| ID                               | Name     |
+----------------------------------+----------+
| a9621341aecb44e49110c456b75045b8 | admin    |
| b39b2ab8bdec41bfa1062d29b21357b6 | services |
+----------------------------------+----------+
#
# neutron net-create public --router:external --tenant-id a9621341aecb44e49110c456b75045b8
# neutron net-create demo-net --shared --tenant-id 30f2cc33d5f8405895e5558b077a86c6
#

ネットワークサブネットの登録

# neutron subnet-create --name public_subnet --enable_dhcp=False \
--allocation-pool=start=172.16.0.115,end=172.16.0.119 --gateway=172.16.0.253 public 172.16.0.0/24

# neutron subnet-create --name demo-net_subnet --enable_dhcp=True \
--allocation-pool=start=192.168.1.100,end=192.168.1.254 --gateway=192.168.1.1 \
--dns-nameserver 8.8.8.8 demo-net 192.168.1.0/24

ゲートウェイの設定

neutron router-gateway-set router1 public

外部ネットワークと内部ネットワークの接続

# neutron router-interface-add router1 subnet=demo-net_subnet

仮想ルータが作られたことを確認

# ip netns
qrouter-f3e74f75-0fb6-4797-acdb-b553f7c874e6
qdhcp-d137a5f0-171c-481e-9761-81b12bf71b09
#
# ip netns exec `ip netns|grep qrouter` ip r
default via 172.16.0.253 dev qg-38c8b13d-d4
172.16.0.0/24 dev qg-38c8b13d-d4  proto kernel  scope link  src 172.16.0.117
192.168.1.0/24 dev qr-db18e68a-8a  proto kernel  scope link  src 192.168.1.1
# ip netns exec `ip netns|grep qrouter`  ping -c 3 -I qg-38c8b13d-d4 172.16.0.117
# ip netns exec `ip netns|grep qrouter`  ping -c 3 -I qr-db18e68a-8a 192.168.1.1
# ip netns exec `ip netns|grep qrouter`  ping -c 3 -I qg-38c8b13d-d4 8.8.8.8

インスタンス起動

仮想マシンの作成はHorizonから行いました。Ubuntu14をsmallで起動。鍵をopenstack.pemとして取得します。
Floating IPを172.16.0.118として割り当てました。

仮想マシンへのログインと外部通信ができることを確認

仮想マシンへのアクセスには鍵が必要です。openstack.pemの権限設定も必要です。

# ssh -i openstack.pem [email protected]
ubuntu@ubuntu14:~$
ubuntu@ubuntu14:~$
ubuntu@ubuntu14:~$ sudo apt-get update

仮想資源作成後

最初と比較して仮想ネットワーク資源が加わったことが確認できます。

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP qlen 1000
    link/ether 00:0c:29:3c:92:39 brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.120/24 brd 172.16.0.255 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe3c:9239/64 scope link
       valid_lft forever preferred_lft forever
3: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
    link/ether 92:c4:e8:c3:05:97 brd ff:ff:ff:ff:ff:ff
4: br-tun: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
    link/ether 12:0c:03:90:fb:43 brd ff:ff:ff:ff:ff:ff
5: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether 00:0c:29:3c:92:39 brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.120/24 brd 172.16.0.255 scope global br-ex
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe3c:9239/64 scope link
       valid_lft forever preferred_lft forever
6: br-int: <BROADCAST,MULTICAST> mtu 1450 qdisc noop state DOWN
    link/ether ca:9b:55:3f:de:4e brd ff:ff:ff:ff:ff:ff
22: qbr4cd007cd-86: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP
    link/ether e6:d7:db:a5:3b:45 brd ff:ff:ff:ff:ff:ff
23: qvo4cd007cd-86@qvb4cd007cd-86: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast master ovs-system state UP qlen 1000
    link/ether de:dc:ec:6f:f7:5d brd ff:ff:ff:ff:ff:ff
    inet6 fe80::dcdc:ecff:fe6f:f75d/64 scope link
       valid_lft forever preferred_lft forever
24: qvb4cd007cd-86@qvo4cd007cd-86: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast master qbr4cd007cd-86 state UP qlen 1000
    link/ether e6:d7:db:a5:3b:45 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::e4d7:dbff:fea5:3b45/64 scope link
       valid_lft forever preferred_lft forever
25: tap4cd007cd-86: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast master qbr4cd007cd-86 state UNKNOWN qlen 500
    link/ether fe:16:3e:48:06:a0 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc16:3eff:fe48:6a0/64 scope link
       valid_lft forever preferred_lft forever
#

Infrastructureでの見え方

物理基盤側からみたネットワークが表示されることがわかります。仮想マシンから外部にpingを打ち続けるとOVSのインターーフェースなどに通信が流れている状態が確認されました。さすがにOpenStack上のネットワーク名で表示されるわけではありませんが、負荷順にグラフが表示されますので障害の可視化・早期特定に貢献しそうです。

今回は以上です。