Hatena::ブログ(Diary)

ネットワークエンジニアがインフラエンジニアへなるため軌跡

2018-11-23 AmazonLinuxのEBSをLVM化してみた話

この記事は意外にやられてる方多いと思うので、すっとばして頂いても平気です。

今回の要件としては

    • AmazonLinuxを使って欲しい
    • ある事情から特定箇所をパーティション分けしないといけない
    • コストは抑えたい(EBSの数は増やしたくないってことらしい)

ということでした。
そこで、一番初めに浮かんだのはLVM化。
実験で色々やってみたけどうまくいったものだけをこちらに記載しておきます。

まず、実施で使ったものを紹介

  • AmazonLinuxAMI208.03.0(HVM
  • t2.nano(1vCPU・0.5GiBMem)
  • EBS
    • /dev/xvda 8GiB(ルートボリューム)
    • /dev/sdb 30GiB(今回LVM化するディスク)

まずは起動
マネジメントコンソールからでもawscliでもなんでもOKです。

SSHで接続を実施後、rootへ変更してからが本番です!

  • ディスク状態の確認

設定した「追加」EBSの状態を確認

# df -kh
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        231M   64K  231M   1% /dev
tmpfs           241M     0  241M   0% /dev/shm
/dev/xvda1      7.8G  1.1G  6.7G  14% /

マウントされていない。

# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
xvdb    202:16   0  30G  0 disk

どうやら、xvdbが追加したものらしい

  • LVMの作成と追加

今回、LVMでパーティションを切りたかったのは

/var
/var/log
/home
/swap

Swapに関しては領域の作り方間違えてるかもですが、何度かやった時に動いたのがこれでした。

では作っていきましょう。

fdiskコマンドを使ってLVM領域をまずは作成します。

# fdisk /dev/xvdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x79db1f10.
Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-62914559, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559):
Using default value 62914559
Partition 1 of type Linux and of size 30 GiB is set

セクターはデフォルトのママなのでエンターでOK
そして、LVM化へ

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT
1e  Hidden W95 FAT1 80  Old Minix
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

これで、LVMディスクが出来上がりました。
次に、pvやlvを作成していきます

  • PV・VG・LVの作成

PVの作成

# pvcreate /dev/xvdb1
  Physical volume "/dev/xvdb1" successfully created.
# pvdisplay
  "/dev/sdb1" is a new physical volume of "30.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name
  PV Size               30.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               SjcJ1d-SKZ7-WGII-V2RR-1rGI-JEP0-t67bh6

VG(ボリュームグループ)の作成
ボリュームグループの名前はvg-allとします。

# vgcreate vg-all /dev/xvdb1
  Volume group "vg-all" successfully created
# vgdisplay
  --- Volume group ---
  VG Name               vg-all
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               30.00 GiB
  PE Size               4.00 MiB
  Total PE              7679
  Alloc PE / Size       0 / 0
  Free  PE / Size       7679 / 30.00 GiB
  VG UUID               gS3ekC-gM5Y-3FPq-2Ytc-hjmH-zUo4-NVSJE3

LVの作成
今回は以下で構成します。

Home->10GiB
var->5GiB
log->5GiB
swap->4.9GiB
<||
では作っていきましょう
>||
# lvcreate -n lv-home --size 10GiB vg-all
  Logical volume "lv-home" created
# lvcreate -n lv-var --size 5GiB vg-all
  Logical volume "lv-var" created.
# lvcreate -n lv-log --size 5GiB vg-all
  Logical volume "lv-log" created.
# lvcreate -n lv-swap --size 4.9GiB vg-all
  Rounding up size to full physical extent 4.90 GiB
  Logical volume "lv-swap" created.

パーティションをフォーマット・ラベル作成
フォーマット

# mkfs -t ext4 /dev/vg-all/lv-home
mke2fs 1.43.5 (04-Aug-2017)
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: 4e7d8c75-3a7f-416e-a0dc-0a92b433f9cb
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

# mkfs -t ext4 /dev/vg-all/lv-var
mke2fs 1.43.5 (04-Aug-2017)
Creating filesystem with 1310720 4k blocks and 327680 inodes
Filesystem UUID: 731aa7e0-829f-47aa-973b-feb9990b1a29
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

# mkfs -t ext4 /dev/vg-all/lv-log
mke2fs 1.43.5 (04-Aug-2017)
Creating filesystem with 1310720 4k blocks and 327680 inodes
Filesystem UUID: a45dd8f6-a9b3-4937-b9ed-7183abf23ce1
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

# mkfs -t ext4 /dev/vg-all/lv-swap
mke2fs 1.43.5 (04-Aug-2017)
Creating filesystem with 1285120 4k blocks and 321280 inodes
Filesystem UUID: 8d251aaf-e21d-478e-bae5-c2a021b734f1
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

ラベルは以下で設定

lv-home -> /home
lv-var -> /var
lv-log -> /var/log
lv-swap -> /swap

# e2label /dev/vg-all/lv-home /home
# e2label /dev/vg-all/lv-var /var
# e2label /dev/vg-all/lv-log /var/log
# e2label /dev/vg-all/lv-swap /swap

  • 既存データのコピー

LVMディスクに入れ替えを行うパーティションのデータをコピーする必要があるため
マウントポイント作成し、一度マウントを行う
マウントポイント作成

# mkdir /swap
# mkdir /mnt/home
# mkdir /mnt/var
# mkdir /mnt/log

マウント実施

# mount /dev/vg-all/lv-home /mnt/home
# mount /dev/vg-all/lv-var /mnt/var
# mount /dev/vg-all/lv-log /mnt/log
# mount /dev/vg-all/lv-swap /swap
# df -kh
Filesystem                    Size  Used Avail Use% Mounted on
devtmpfs                      231M   84K  231M   1% /dev
tmpfs                         241M     0  241M   0% /dev/shm
/dev/xvda1                    7.8G  1.1G  6.7G  14% /
/dev/mapper/vg--all-lv--home  9.8G   37M  9.3G   1% /mnt/home
/dev/mapper/vg--all-lv--var   4.9G   20M  4.6G   1% /mnt/var
/dev/mapper/vg--all-lv--log   4.9G   20M  4.6G   1% /mnt/log
/dev/mapper/vg--all-lv--swap  4.8G   20M  4.5G   1% /swap

ゴミデータを削除
linux - lost+found ディレクトリは削除して問題ない? - スタック・オーバーフロー
このあたりを参照すると今回は新規ディスクなので削除していいらしいので削除

# cd /mnt/home/
# ls -la
total 24
drwxr-xr-x 3 root root  4096 Nov 23 09:35 .
drwxr-xr-x 5 root root  4096 Nov 23 09:41 ..
drwx------ 2 root root 16384 Nov 23 09:35 lost+found
# rm -rf lost+found
# ls -la
total 8
drwxr-xr-x 2 root root 4096 Nov 23 09:47 .
drwxr-xr-x 5 root root 4096 Nov 23 09:41 ..
# cd /mnt/var/
# ls -la
total 24
drwxr-xr-x 3 root root  4096 Nov 23 09:35 .
drwxr-xr-x 5 root root  4096 Nov 23 09:41 ..
drwx------ 2 root root 16384 Nov 23 09:35 lost+found
# rm -rf lost+found
# ls -la
total 8
drwxr-xr-x 2 root root 4096 Nov 23 09:47 .
drwxr-xr-x 5 root root 4096 Nov 23 09:41 ..
# cd /mnt/log/
# ls -la
total 24
drwxr-xr-x 3 root root  4096 Nov 23 09:35 .
drwxr-xr-x 5 root root  4096 Nov 23 09:41 ..
drwx------ 2 root root 16384 Nov 23 09:35 lost+found
# rm -rf lost+found
# ls -la
total 8
drwxr-xr-x 2 root root 4096 Nov 23 09:47 .
drwxr-xr-x 5 root root 4096 Nov 23 09:41 ..
# cd /swap/
# ls -la
total 24
drwxr-xr-x 3 root root  4096 Nov 23 09:35 .
drwxr-xr-x 5 root root  4096 Nov 23 09:41 ..
drwx------ 2 root root 16384 Nov 23 09:35 lost+found
# rm -rf lost+found
# ls -la
total 8
drwxr-xr-x 2 root root 4096 Nov 23 09:47 .
drwxr-xr-x 5 root root 4096 Nov 23 09:41 ..
# cd /root

Swap作成
swap用のパーティションswap用として作成してるのでswapファイルを作成
今回swapの容量は4GiBとして設定する

# dd if=/dev/zero of=/swap/swapfile bs=1MB count="4096"

4096+0 records in
4096+0 records out
4096000000 bytes (4.1 GB) copied, 61.8299 s, 66.2 MB/s

# chmod 600 /swap/swapfile
# mkswap /swap/swapfile
Setting up swapspace version 1, size = 3999996 KiB
no label, UUID=85dba3d9-c56e-4cbe-9932-6b1e60ac193a
# swapon /swap/swapfile
# free -m
             total       used       free     shared    buffers     cached
Mem:           481        468         13          0          9        383
-/+ buffers/cache:         75        405

有効化が確認できたら一旦マウントは解除しておく
コマンドは以下

swapoff /swap/swapfile
free -m

既存データのコピー
これでコピーのやり方を間違えると再起動時に起動できなくなることが確認できている
”/”だけだったり"/*”にしてなかったりするとうまく起動してこなかった。

# cp -rp /var/* /mnt/var/
# cp -rp /var/log/* /mnt/log/
# cp -rp /home/* /mnt/home/
# ls -la /home/ec2-user/
total 24
drwx------ 3 ec2-user ec2-user 4096 Nov 23 09:03 .
drwxr-xr-x 3 root     root     4096 Nov 23 09:03 ..
-rw-r--r-- 1 ec2-user ec2-user   18 Aug 30  2017 .bash_logout
-rw-r--r-- 1 ec2-user ec2-user  193 Aug 30  2017 .bash_profile
-rw-r--r-- 1 ec2-user ec2-user  124 Aug 30  2017 .bashrc
drwx------ 2 ec2-user ec2-user 4096 Nov 23 09:03 .ssh
# ls -la /mnt/home/ec2-user/.ssh/
total 12
drwx------ 2 ec2-user ec2-user 4096 Nov 23 09:03 .
drwx------ 3 ec2-user ec2-user 4096 Nov 23 09:03 ..
-rw------- 1 ec2-user ec2-user  395 Nov 23 09:03 authorized_keys

ここで、必ずec2-userの鍵ファイルがちゃんとあり、権限設定も正しいこと(不安な人は中身も)確認しておく。

  • アンマウントと一時マウントポイント削除
# umount /mnt/log
# umount /mnt/var
# umount /mnt/home
# umount /swap
# df -kh
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        231M   84K  231M   1% /dev
tmpfs           241M     0  241M   0% /dev/shm
/dev/xvda1      7.8G  1.1G  6.7G  14% /
# rm -rf /mnt/log
# rm -rf /mnt/var
# rm -rf /mnt/home
# ls -la /mnt/
total 8
drwxr-xr-x  2 root root 4096 Nov 23 10:00 .
dr-xr-xr-x 26 root root 4096 Nov 23 09:41 ..

  • fatabとrc.localへの追記

マウントポイントの変更とrc.localへ追記を行って
・起動時にLVMがマウントされること
再起動後、swapが作られていること
を確認する。

fstabの変更

cp -rp /etc/fstab /root/fstab.org
vi /etc/fstab

1行目をコピーして
2〜5行目に追記を行う

LABEL=/home     /home           ext4    defaults,noatime  1   1
LABEL=/var     /var           ext4    defaults,noatime  1   1
LABEL=/var/log     /var/log           ext4    defaults,noatime  1   1
LABEL=/swap     /swap           ext4    defaults,noatime  1   1

diffするとこんな感じ

# diff /etc/fstab /root/fstab.org
3,6d2
< LABEL=/home     /home           ext4    defaults,noatime  1   1
< LABEL=/var     /var           ext4    defaults,noatime  1   1
< LABEL=/var/log     /var/log           ext4    defaults,noatime  1   1
< LABEL=/swap     /swap           ext4    defaults,noatime  1   1

マウントの確認を行う

# mount -a
# df -kh
# df -kh
Filesystem                    Size  Used Avail Use% Mounted on
devtmpfs                      231M   84K  231M   1% /dev
tmpfs                         241M     0  241M   0% /dev/shm
/dev/xvda1                    7.8G  1.1G  6.7G  14% /
/dev/mapper/vg--all-lv--home  9.8G   37M  9.3G   1% /home
/dev/mapper/vg--all-lv--var   4.9G   72M  4.6G   2% /var
/dev/mapper/vg--all-lv--log   4.9G   21M  4.6G   1% /var/log
/dev/mapper/vg--all-lv--swap  4.8G  3.9G  685M  86% /swap

正しくマウントされている。

この状態で別ターミナルSSHアクセスができることも確認しておくとなお良い

$ ssh 52.69.244.157 -l ec2-user -i ******
Enter passphrase for key '******':
Last login: Fri Nov 23 09:06:44 2018 from ******

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/

こんな感じ。

rc.localの最下行に以下を追記して保存する。

swapon /swap/swapfile

swap有効化の確認は

# sh /etc/rc.local
# free -m
             total       used       free     shared    buffers     cached
Mem:           481        180        300          0          9        110
-/+ buffers/cache:         60        421
Swap:         3906          0       3906

念のため再起動swapが有効になることを確認する。

# swapoff /swap/swapfile
# free -m
# umount -a
umount: /: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
umount: /dev: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
# df -kh
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        231M   84K  231M   1% /dev
/dev/xvda1      7.8G  1.1G  6.7G  14% /
# reboot

再起動してきたら最終確認を行って通常セットアップを行っていく

# lsblk
NAME                 MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda                 202:0    0    8G  0 disk
└─xvda1              202:1    0    8G  0 part /
xvdb                 202:16   0   30G  0 disk
└─xvdb1              202:17   0   30G  0 part
  ├─vg--all-lv--var  253:1    0    5G  0 lvm  /var
  ├─vg--all-lv--log  253:2    0    5G  0 lvm  /var/log
  ├─vg--all-lv--home 253:0    0   10G  0 lvm  /home
  └─vg--all-lv--swap 253:3    0  4.9G  0 lvm  /swap
# df -kh
Filesystem                    Size  Used Avail Use% Mounted on
devtmpfs                      231M   84K  231M   1% /dev
tmpfs                         241M     0  241M   0% /dev/shm
/dev/xvda1                    7.8G  1.1G  6.7G  14% /
/dev/mapper/vg--all-lv--home  9.8G   37M  9.3G   1% /home
/dev/mapper/vg--all-lv--var   4.9G   72M  4.6G   2% /var
/dev/mapper/vg--all-lv--log   4.9G   21M  4.6G   1% /var/log
/dev/mapper/vg--all-lv--swap  4.8G  3.9G  685M  86% /swap
# free -m
             total       used       free     shared    buffers     cached
Mem:           481        188        293          0          8        116
-/+ buffers/cache:         62        418
Swap:         3906          0       3906

お疲れ様でした!

2018-05-28

CentOS6.9から7へアップデートした結果報告とナレッジ

実際のところですが・・・Kernelは無事にアップデートされました。

しかしながら・・・いくつか問題がやはりありました。

そのいち
apacheは動くのにNagiosが動いてない。
よくよく見ると「el6」のrpmとなってました。。

それ以外にも
pythonの2.6が動かなかったり
pythonの3.5がなくなってたり
となってました。

が・・・問題が合ったのは、
rrd-tools
何に使ってるの?とか言われそうですがうちのサーバmuninのグラフ描画個別化してたの忘れてた。
と言った状態にになってしまいました。
ググって、検索してそのあたりのrpm等とrrd-toolの方で色々と直してっと。。


そして一番の問題が
greprpmファイルがそもそもで6のまま!しかも、依存関係でel7関係が既に入ってました。。

ですが、上げる方法としては以下です。

まずVoultとかそのへんの標準CentOS7のレポジトリからwgetなり何なりでgreprpmを引っ張る
rpmの--forceオプションをつけて強制アップデート

これだけです。

ではでは。

2018-05-25

今更ながらCentOS6.9 をCentOS7へ上げてみる

迫られなければ基本的には実験機はアップグレードはできるだけしないけど、設定検証とかをいつまでも6系だけでやってるわけにもいかず・・・
かといって、現行環境の2箇所を同時にアップデートするわけにもいかない・・・
ということで片方をCentOS7へ上げることを決意して上げました。
その備忘録です。

とはいえ、スペックを書かないってわけにはイカないと思いますので以下が私の検証兼ねてる環境となります。
<検証メインの機体>
DELLOptiplex
CPUIntel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
メモリ:4GB
Swap:8GB

<サブ検証マシン>
さくらVPS CentOS6.9 2GBモデル Type-HDD

今回上げるのはメインの方。
なぜならサブのVPSはメールサーバ兼ねてる関係で止める時間を短くしたかったから。

参考にしたのはこの辺
https://qiita.com/toshiro3/items/0422280e3ea336c8415e
http://mimumimu.net/blog/2014/07/14/centos-%E3%82%92-6-%E3%81%8B%E3%82%89-7-%E3%81%AB%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F%E3%80%82/
http://a-records.info/2017/08/12/56/
http://blog.sgrastar.org/
http://a-records.info/2017/08/12/56/

でも上記でも正常にはアップデートは出来ませんでした。
まぁ、まずはブログに習って

CentOSのバージョン確認

cat /etc/redhat-release

検証の関係もあって、6.9までアップデートされてるのでこれだととあるものがバージョンが新しすぎて更新できないっていう情報があるのでまずは以下へダウングレード
手順は以下の通り
1.カーネルとかを最新化

yum update
reboot

2.レポジトリ追加アップデートインストールの追加

vim /etc/yum.repos.d/upgradetool.repo

中身に以下を追記して保存

[upg]
name=CentOS-$releasever - Upgrade Tool
baseurl=http://dev.centos.org/centos/6/upg/x86_64/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


その後以下を実行

yum install redhat-upgrade-tool preupgrade-assistant-contents
rpm -Uhv --oldpackage http://dev.centos.org/centos/6/upg/x86_64/Packages/openscap-1.0.8-1.0.1.el6.centos.x86_64.rpm
preupg -s CentOS6_7


ここまでで、アップグレードの準備が出来ます。
なお、一番最後のコマンドを実行後

preupg -s CentOS6_7
Preupg tool doesn't do the actual upgrade.
Please ensure you have backed up your system and/or data in the event of a failed upgrade
that would require a full re-install of the system from installation media.
Do you want to continue? y/n
y
Gathering logs used by preupgrade assistant:
All installed packages : 01/11 ...finished (time 00:01s)
All changed files : 02/11 ...finished (time 05:39s)
Changed config files : 03/11 ...finished (time 00:00s)
All users : 04/11 ...finished (time 00:00s)
All groups : 05/11 ...finished (time 00:00s)
Service statuses : 06/11 ...finished (time 00:00s)
All installed files : 07/11 ...finished (time 00:04s)
All local files : 08/11 ...finished (time 14:04s)
All executable files : 09/11 ...finished (time 12:35s)
RedHat signed packages : 10/11 ...finished (time 00:00s)

こんな感じでいっぱい待たされます。
あと、レポートで修正とか必要って出てくる場合があるからそれは都度ご自身で調べて対応してください。

で次に本当のアップグレードなんですが他のブログさんと多分私はやり方がかなり違うと思います。
レポジトリデータが無いとかファイルがダウンロードできない
とかは参照にさせてもらったブログさんを参考にしていただければと。

でこのコマンドが肝心で
・公式外のレポジトリを常時有効化してる。(Remiとかね)
アップグレードコマンドにおいてレポジトリ名を入れる必要がある
・Cent6系のレポジトリとか無効化したほうが良い
という結果を元に叩いた(というか成功した)コマンドは以下の通り

redhat-upgrade-tool-cli --disablerepo=* --enablerepo=base,updates,extras --network 7 --cleanup-post --instrepo=http://vault.centos.org/centos/7.2.1511/os/x86_64/ --addrepo=C7.2-base=http://ftp.tsukuba.wide.ad.jp/Linux/centos/7/os/x86_64/


そんなわけで容量不足でアップデート止まっちゃったので、今再アップデート中。。

2017-04-20

AWSでコールドスタンバイの自動処理をしてみる

気がつけば1年近く更新してませんでした。

今回は、AWSのお話です。
あるお客さんの希望として
「冗長構成は要らない、でも、”出来得る限りコストを抑えて”止まらないサービスを提供して欲しい」
と言われました。
このお客様の悩みは、コールセンターや土日・夜中でも普通に電話をしてくること・・・・。そうなんです。私ら休めない。
そこで、同僚・上司その他みなさんと一緒に話をして
「どうせAWSにするなら冗長じゃないけど、楽するためにコールドスタンバイ方式にした方がいいんじゃないか」
と言われて検証をした記録です。

なぜこんな形にしたのか?AutoScaringで良いじゃないか?
という話もあると思いますが、客に拒否られました。
「サービス的にロードバランサーを入れる必要ないでしょ」って
いや、たしかにそうですけど!!

ということで、やってみました。コールドスタンバイによる自動起動

参考にしたのはこちらのURL

https://geeknavi.net/aws/ec2%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%82%92%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%A7%E8%87%AA%E5%8B%95%E8%B5%B7%E5%8B%95%E3%83%BB%E8%87%AA%E5%8B%95

http://dev.classmethod.jp/cloud/aws/ec2_start_and_stop_from_aws-lambda/

使うのは以下のサービス
EC2・・・・・2台(Active機とCold機)かつ、このインスタンスにはそれぞれ、EIPを振っておくこと
Route53・・・Active機のレコードヘルスチェックをしておくこと。
Lamdba/CloudWatch/SNS
のみです。

さてでは流れをはじめに説明していきます。

Route53→(HealthCheck)→ActveEC2の特定URI
尚、HealthCheckによりFailOverで自動でコールド機のレコードに切り替え

HealthCheckはCloudWatchで監視を実施しSNSに通知するように設定します。

SNSはLamdba及びEmailへ通知するようにします。
Lamdba→EC2のコールド機起動

という具合になっていきます。

さて、では問題の起動手順。
結構大変ですよ?

まずはIAMをつくります。
これは、LambdaがEC2の起動権限・VPCへのアクセス権限が必要になるからです。
その上で以下の作業を進めていきます。

1.EC2インスタンスを起動・設定
皆様ご存知だと思いますのでここは割愛。

2.Route53にレコードを登録する。
まずはアクティグ機のレコードを登録します。
順番的には、アクティブ登録→ヘルスチェック追加→アクティブ機のレコードをPrimaryRecordで且つHeakthチェックを有効にする→セカンダリーレコードをセカンダリーとして追加
します。

3.CloudWatchを設定。
2で設定しているHealthチェックCloudWatchのMetricsとして登録し、設定します。
この時検知状態でEmailの通知とSNSの通知をしておくと便利です。

4.SNSの設定を追加。
SNSの設定を追加し、Lambdaへ連携できるようにします。

5.Lambdaの設定を導入。
トリガーSNSテンプレートはブランク
そして以下のコードを記載

const INSTANCE_ID = 'コールド機のインスタンスID';

var AWS = require('aws-sdk');
AWS.config.region = 'コールド機があるリージョン';

function ec2Start(cb){
var ec2 = new AWS.EC2();
var params = {
InstanceIds: [
INSTANCE_ID
]
};

ec2.startInstances(params, function(err, data) {
if (!!err) {
console.log(err, err.stack);
} else {
console.log(data);
cb();
}
});
}
exports.handler = function(event, context) {
console.log('start');
ec2Start(function() {
context.done(null, 'Started Instance');
});
};

そして登録。
6.テスト
アクティブ機のヘルスチェックで実行してる(はずの)プロセスを強制的に落とします。
うまくいってればEmail通知とSNSによるコールド機の起動されるはずです。

このコールドスタンバイのメリット・デメリット
メリット:
・ELBがなくてもできる。
・OutboundのEIPさえ紐付ければ、ある程度は対処できる。
・ELB+AutoScaringに比べればコストは抑えられる。

デメリット:
・少なからず、DTが発生する
・アクティブ機に関しては、起動したままとなってしまう(Lambdaなどの改良で停止可能かも)
・コールド機(停止状態)のため少しコストがかかる。
・負荷対策としては使えない。(CPUMetricsで応用したら同時起動できるかも)

2016-08-18

SSHのコンフィグファイル

こんにちは。
多分今回は誰もが1回は経験してるであろう記事です。

SSHのconfigファイル
について。
実はですね。ちょっとあることからコンフィグファイルを書く事になりました。

設置をするのは、ホームディレクトリの.sshのしたです

自分が記述したのは以下
※\tはタブです。このブログの使い方よくわかってないので・・・・ごめんなさい。

ServerAliveInterval 120

Host\t"任意のホスト名1"
\tHostName\t接続先ホスト名またはIPアドレス
\tPort\t"SSH接続するポート"
\tUser\t"接続するユーザー名"
\tIdentityFile\t"秘密鍵DIRと鍵名"

Host\t"任意のホスト名2"
\tHostName\t接続先ホスト名またはIPアドレス
\tPort\t"SSH接続するポート"
\tUser\t"接続するユーザー名"
\tIdentityFile\t"秘密鍵DIRと鍵名"
\tProxyCommand\tssh -W %h:%p "任意のホスト名1"


さて、じゃあこれで何ができるのか。

1行目のServerAlive〜は、タイムアウト制限を乗り越えるための手段です。
なので、おまじないみたいなもの。


さて、今度はホスト名を2つ書いてます。
ここで読者の方に質問です。
踏み台経由でないと入れないサーバーログインしたことはありますか?

さて、ここでは実際は同じことをConfigに書いて行っているだけです。

1つ目のホストを経由し、2つ目のホストに接続。

ポートフォワードよりよっぽど楽ですね。

こんなつまらないことでした笑