LinuxユーザーがイジるはじめてのAzure

LinuxユーザーがAzureを使いこなせるように応援するブログです

Microsoft Azure CentOS7.2の実態

これまでMicrosoft Azureの利用方法や仮想マシンの作成、ディスク増設、ロードバランサの作成などを中心に記事化してきました。

 

本記事ではもう少しOSの中身に触れていこうと思います。

 

Microsoft Azureが提供するCentOSにはどういったバージョンが用意されており、中身がどうなっているかの実態についてメスを入れたいと思います。作成してログインして初めて知った、というクラウドサービスも多いと思いますので、利用する前に少しでも参考になればと思います。

 

では最初にMicrosoft Azureが提供しているCentOSについて。

 

f:id:akazure:20160620145909j:plain

 

CentOSだけで見てもラインナップが多いな、という感触ですが、いわゆる仮想アプライアンスっぽいものを除くとCentOS-based *.*なるものが一般標準的なCentOSに見えます。CentOSRHELディストリビューション互換のOSですので、RHELをご利用されているLinuxユーザーであれば親しみやすいバージョン表記と言えます。

Linuxユーザーが利用しているCentOSの多くは、centos.orgにあるISOイメージから展開したものだと思いますので、それに適合するものを選択しましょう。

 

CentOS-based 6.5

CentOS-based 6.6

CentOS-based 6.7

CentOS-based 7.0

CentOS-based 7.1

CentOS-based 7.2

 

CentOS5.xはないですが、6.xから最新の7.2までカバーされていることがわかります。

実はもう1つ気になる要素があります。公開元がOpenLogicとなっています。centos.orgではない点が長く利用されている人から見ると気持ち悪く見えるかもしれません。

 

OpenLogic(米)は各種オープンソース技術の商用サービスを提供しています。centos.orgのISOとの違いは中身を見るとわかりますが、waagentと呼ばれる Azureが管理するために必要なエージェントとwaagentがリポジトリに登録されている点だけですので、今まで慣れ親しんだCentOSと基本的なディストリビューションに変わりはありません。

 

では、早速最新版であるCentOS7.2の中身を覗いてみましょう。

今回作成したのはA2サイズのCentOS7.2です。

 

まずはCPUから。

 

 [root@startuptest ~]# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 63
model name      : Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
stepping        : 2
microcode       : 0xffffffff
cpu MHz         : 2397.183
cache size      : 30720 KB

・以下省略

 

 

XeonのE5-2673 v3 2.4GHzが使われているようですね。いいの使ってますね。

 

次にメモリ。

 

[root@startuptest ~]# cat /proc/meminfo
MemTotal:        3523796 kB
MemFree:         2916784 kB
MemAvailable:    3102256 kB

・以下省略

 

 

3.36GBほど搭載されています。

 

次はディスク。

 

[root@startuptest ~]# df -k
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       31440900 1327716  30113184   5% /
devtmpfs         1751956       0   1751956   0% /dev
tmpfs            1761896       0   1761896   0% /dev/shm
tmpfs            1761896    8480   1753416   1% /run
tmpfs            1761896       0   1761896   0% /sys/fs/cgroup
/dev/sdb1      139203080   61468 132047444   1% /mnt/resource
tmpfs             352380       0    352380   0% /run/user/1000
tmpfs             352380       0    352380   0% /run/user/0
[root@startuptest ~]#

 

 

これは以前の記事でも触れましたね。ローカルディスクとして利用できる容量は約30GBほどです。/mnt/resourceはテンポラリ用途で使う、でしたね。

 

もっといろいろ見ていきましょう。

 

hostsの初期設定。

[root@startuptest ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@startuptest ~]#

 

localhost localhost.localdomainはループバックアドレスに対するお約束です。

localhost4、localhost6、これはIPv6IPv4が混在する環境で明示的にIPv4ループバックアドレスを指し示さなければならない場合にreservedされているホスト名ですね。

まぁ、特に意識する必要はなくIPaddress hostnameと今後追記していけばよさそうです。

 

次はネットワーク設定

 

 

[root@startuptest ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.4  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::20d:3aff:fe50:65cc  prefixlen 64  scopeid 0x20<link>
        ether 00:0d:3a:50:65:cc  txqueuelen 1000  (Ethernet)
        RX packets 41562  bytes 57325350 (54.6 MiB)
        RX errors 0  dropped 51  overruns 0  frame 0
        TX packets 8697  bytes 2911582 (2.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 193  bytes 33850 (33.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 193  bytes 33850 (33.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

 ここで???っと思われた方もいると思います。eth0のNICに割り振られているアドレスは192.18.0.0/24で切ったsubnet内のアドレス(192.168.0.4)です。イメージしていたのはeth0がAzureポータルで設定した静的なグローバルアドレス、eth1が192.168.0.4かと思わたのではないでしょうか。そうなんです、Azureではグローバルアドレスは別に管理されている、ということがわかります。これ結構、しっかりしているなぁと思う個所で、OSのネットワーク操作に慣れている方だと簡単にOS内でIPaddressを変更することだってできてしまいます。

パブリッククラウドで管理されているアドレスの多くはDHCPサーバーから取得する方式(Azureもそう)をとるため、既に誰かに払い出されているグローバルアドレスを任意にOS側で書き換える行為ができないように設計されている、ということがわかります。

 

次はeth0の設定をもう少し。

[root@startuptest network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DHCP_HOSTNAME=startuptest
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
TYPE=Ethernet
USERCTL=no
PEERDNS=yes
IPV6INIT=no
NM_CONTROLLED=no
[root@startuptest network-scripts]# 

 

BOOTPROTOにdhcpとありますね。ps -efで見ると/sbin/dhclientのプロセスが起動していることもわかります。

 

DNS

[root@startuptest etc]# cat resolv.conf
; generated by /usr/sbin/dhclient-script
search dkmaz4wqi3oebdscr1r11xwogc.lx.internal.cloudapp.net
nameserver 168.63.129.16
[root@startuptest etc]# 

 

どこだこれ、というnameserverが記載されていますが、whois情報で調べるとMicrosoft Corpと出ますので、マイクロソフトが管理しているネームサーバーが初期設定で登録されていることがわかります。nslookupで外部ドメインを検索するとIPアドレスが表示され正しく正引きできていることがわかります。

 

念のためnsswitch.confも。

[root@startuptest etc]# grep "^hosts" /etc/nsswitch.conf
hosts:      files dns
[root@startuptest etc]#

filesの次にdnsとなってますね。ですので/etc/hostsを最初に名前解決として探しにいき、なければ/etc/resolv.confに記載したネームサーバーを上から順に聞きに行く、という経路になってます。

 

次は時刻。

[root@startuptest etc]# date
Thu Jun 23 06:57:16 UTC 2016
[root@startuptest etc]# 

 

ただいま6月23日15:57 JST。。。。泣きそうです。

東日本リージョンで作成したのにー、とか野暮なことは言わず、サクッと以下のコマンドでタイムゾーンを変更して現在時刻にしましょう。

timedatectl set-timezone Asia/Tokyo

 

次はuptimeとsar。

 

[root@startuptest etc]# uptime
 16:01:37 up  1:14,  1 user,  load average: 0.02, 0.02, 0.05
[root@startuptest etc]#
[root@startuptest etc]# sar
Linux 3.10.0-327.18.2.el7.x86_64 (localhost.localdomain)        06/23/2016      _x86_64_        (2 CPU)

02:48:04 PM       LINUX RESTART

02:50:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
03:00:01 PM     all      2.58      0.00      0.40      2.64      0.00     94.37
03:10:01 PM     all      0.34      0.00      0.08      1.54      0.00     98.04
03:20:01 PM     all      0.31      0.00      0.06      1.59      0.00     98.04
03:30:01 PM     all      0.31      0.40      1.12      3.34      0.00     94.83
03:40:01 PM     all      0.32      0.00      0.07      1.02      0.00     98.59
03:50:01 PM     all      0.35      0.00      0.10      0.03      0.00     99.52
04:00:01 PM     all      0.31      0.00      0.08      0.03      0.00     99.58
Average:        all      0.64      0.06      0.27      1.45      0.00     97.58
[root@startuptest etc]#

 

uptimeはともかくsarが標準で効く(sysstatが入っている)のは少し驚きです。

ちなみにtopコマンドも利用できますね。

top - 16:04:35 up  1:17,  1 user,  load average: 0.12, 0.04, 0.05
Tasks: 235 total,   2 running, 233 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.6 sy,  0.0 ni, 99.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3523796 total,  2806272 free,   214012 used,   503512 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  3057176 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
29421 root      20   0  157804   2316   1536 R   1.3  0.1   0:00.06 top
    1 root      20   0  126472   7284   2632 S   0.0  0.2   0:05.09 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.13 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.10 migration/0
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh

 

次はiptables

[root@startuptest ~]# systemctl status iptables
iptables.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)
[root@startuptest ~]#

 

はう!っと雄たけびを上げそうになりましたが、CentOS7からiptablesではなくfirewalldを使うようになります。といってもfirewalldはiptablesをラップしたもののようですので、実態はiptablesですが、今ままで慣れ親しんだ小難しいルール設定をぶち込むことができなくなります。iptablesとfirewalldは併用できないので、どうしてもiptablesを使いたい場合はyum install iptables.serviceから個別でインストールし、firewalldをsystemctlでdisableする必要がありそうです。

 

さて、だいぶ記事が長くなってきたので本記事はこの辺で一旦終わり、続きは次の記事でアプリケーションよりの情報を見てみましょう。