New Relic InfrastructureでOpenStackのインフラを監視する（その２）

# 今回のゴール
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 ~]#
```
## インターフェース情報
前回（その１）の最後の状態から始めます。

```
# 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 ネットワークの設定](https://github.com/ytooyama/rdo-kilo/blob/master/2-RDO-QuickStart-Networking.md)

## ルータの作成

```
# 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 ubuntu@172.16.0.118
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上のネットワーク名で表示されるわけではありませんが、負荷順にグラフが表示されますので障害の可視化・早期特定に貢献しそうです。

![09.jpg](https://qiita-image-store.s3.amazonaws.com/0/150932/796f6088-0087-6072-f705-d1bafa4300b0.jpeg)

今回は以上です。