読者です 読者をやめる 読者になる 読者になる

CA MOBILE エンジニアブログ

株式会社シーエー・モバイルのエンジニアブログです

CumulusLinux導入~Vol1.L2SW~

はてなブログでは初投稿になります、、、ので改めて自己紹介を。

わたくし、シーエー・モバイル基盤(インフラ)部門で主にネットワーク周りと時々マネジメントに勤しんでますpi★shiと申します。

弊社のインフラシステムグループは要件定義・設計構築から保守運用・キッティング等までひと通り自前で行っています。(ほぼオンプレミス環境)

マネージャーとしてはメンバーの更なるスキル底上げと自己の可動域を増やしていくと共に、従来の手法に囚われない柔軟な基盤環境の構築を推し進めております。

今回は"ネットワーク仮想化"の取り組みについて記載したいと思います。

巷ではすでにSDN/NFV周りの技術が出回ってきておりますが、今回はホワイトボックススイッチでの仮想化について検証してみました。

その上に載せるOSとしてLinuxベースのCumulusLinuxというソフトウェアを利用します。

中身はDebianです。devパッケージも使えます。現時点ではサーバベースのソフトウェア(httpdとか)はあまりパッケージとして入ってませんが、ソースからビルドしたらApacheだってMySQLだって起動しちゃいます。

●導入環境


社内開発環境でOSが仮想化されているサーバインスタンス群のエッジスイッチをホワイトボックススイッチ+CumulusLinuxにリプレースしました。

f:id:cam-engineer:20150901153338j:plain

 

●インストール


CumulusLinuxはONIEというブートローダでダウンロード/インストールします。
ONIE=Open Network Install Environment

ローカルにWebサーバ立ててドキュメントルートにCumulusLinuxのbinファイル設置。

# ONIE:onie-nos-install http://[webサーバのIP]/CumulusLinux-2.5.X-powerpc.bin 

 

●初期設定


ホワイトボックススイッチにシリアルコンソールで接続するときはbaud rateを”115200”に合わせないと文字化けします。

本家サイトにも注意書きされてます。
”Typically, switches will ship from the manufacturer with a mating DB9 serial cable. Switches with ONIE are always set to a 115200 baud rate.”

・初期ID/PWはコチラ
 ID:cumulus
 PW:CumulusLinux!

・Cumulus用ユーザー追加+sudo権限追加

$ sudo usermod -m camcum
$ sudo passwd XXXX #PW設定
$ sudo usermod -a -G sudo camcum


デフォルトでrootユーザーも存在してるので以降はrootユーザーで作業。

$ sudo su -
#

 

●管理ポート設定&IP固定化


CumulusLinuxはDebianなのでDHCPがデフォルト。固定する場合は/etc/network/interfases ファイルを修正。管理ポートはeth0になります。

# vi /etc/network/interfases
~~~
# The loopback network interface
auto lo
iface lo inet loopback

#The primary network interface
auto eth0
iface eth0
  address X.X.X.X/24
  gateway X.X.X.X
~~~

# ifdown eth0
# ifup eth0

 

●時刻設定

# cat /etc/timezone
Etc/UTC

# dpkg-reconfigure tzdata
⇒6. Asia 75. Tokyo を設定
 
# cat /etc/timezone
Asia/Tokyo

 

●アップデート

# apt-get -y update
# apt-get -y upgrade


※Cumulusのデフォルトレポジトリにはaptitudeはないらしい。。

 

●ライセンス投入


ライセンス入れないとCumulusのキモであるネットワークコマンド"switchd"が動きません。ちなみにライセンスに制限はなく1つのライセンスを複数のスイッチで動かそうと思えば動かせます。本番運用の際は1台につき1ライセンスです、、よね。

事前に入手したライセンスをtxtにしてhomeディレクトリ配下に設置して読み込み

# cl-license -i /home/cumulus/my_license_file.txt

ライセンス確認

# cl-license
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

num_licenses=1g
expires=XXXX #2016-XX-XX
email=XXX@camobile.com
lic_id=XXXX
NFR=0
need_eula=0
account_name=C.A. Mobile
-----BEGIN PGP SIGNATURE-----
XXXXX
XXXXX
XXXXX
XXXXX
-----END PGP SIGNATURE-----

 

●swtich設定


単純にL2SWとして動作するように設定しました。こんなイメージ。

f:id:cam-engineer:20150903114454j:plain

まず仮想ポート(swp)の設定を実施し、認識させてあげます。

・Uplinkport設定
上位側のアップリンクポートを2ポートアサインしてLAG(Link AGggregation)設定実施。

# vi /etc/network/interfases
~~~
auto swp47
iface swp47

auto swp48
iface swp48

auto bond0
iface bond0
 bond-slaves swp47 swp48
 bond-mode 802.3ad
 bond-miimon 100    #リンク監視間隔(ms)デフォルト0
 bond-min-links 1    #LAGポートの必要最低限ポート数。デフォルト0
~~~

※上位側のネットワーク機器も同様にLAG設定してあげること。

設定値の反映を確認

# ifquery --check -a

⇒ステータスが[pass]ならOK

interface読み込み

# ifreload -a

ステータス確認# cat /proc/net/bonding/bond0

# cat /proc/net/bonding/bond0
~~~
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
~略~
Slave Interface: swp48
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
 ~略~
Slave Interface: swp47
MII Status: up
Speed: 1000 Mbps
Duplex: full
 ~略~
 
~~~

Ethernet設定
サーバ接続用ポートとして4ポートをアサインします。VLAN10、20、30を作成し、swp1~3をそれぞれUntagged、swp4をtaggedにそれぞれ設定。

# vi /etc/network/interfases
下記追記
~~~
auto swp1
iface swp1

auto swp2
iface swp2

auto swp3
iface swp3

auto swp4
iface swp4

auto vlan10
iface vlan10
 bridge-ports swp1 swp4.10

auto vlan20
iface vlan20
 bridge-ports swp2 swp4.20

auto vlan30
iface vlan30
 bridge-ports swp3 swp4.20
~~~

 # ifquery --check -a #反映確認

# ifquery --check -a #反映確認
# ifreload -a    #interface読み込み

ステータス確認

# brctl show
bridge name     bridge id               STP enabled     interfaces
vlan10          XXX               yes             swp1
                                                        swp4.10
vlan20          XXX               yes             swp2
                                                        swp4.20
vlan30          XXX               yes             swp3
                                                        swp4.30

# mstpctl showport vlan10
*  swp1  8.001 down 8.000.74:E6:E2:F6:6A:81 8.000.74:E6:E2:F6:6A:81 0.000 Disa
*  swp4.10 8.002 down 8.000.74:E6:E2:F6:6A:81 8.000.74:E6:E2:F6:6A:81 0.000 Disa

# mstpctl showport vlan20
*  swp2  8.001 down 8.000.74:E6:E2:F6:6A:82 8.000.74:E6:E2:F6:6A:82 0.000 Disa
*  swp4.20 8.002 down 8.000.74:E6:E2:F6:6A:82 8.000.74:E6:E2:F6:6A:82 0.000 Disa

# mstpctl showport vlan30
*  swp3  8.001 down 8.000.74:E6:E2:F6:6A:83 8.000.74:E6:E2:F6:6A:83 0.000 Disa
*  swp4.30 8.002 down 8.000.74:E6:E2:F6:6A:83 8.000.74:E6:E2:F6:6A:83 0.000 Disa
 
# mstpctl showbridge

vlan10 CIST info
  enabled         yes
  bridge id       XXXX

~略~
vlan20 CIST info
  enabled         yes
  bridge id       XXXX

~略~

vlan30 CIST info
  enabled         yes
  bridge id       XXXX

~略~

これで最低限の機能をもったL2SWとして動作します。

次回はルータとしての利用(OSPF/BGP)や自動構成ツール(Ansible)との連携など記載していければと思います。