write ahead log

ロールフォワード用

CentOS7にKVMをインストールして仮想ネットワークを構築する

小さい企業や自宅での簡易サーバを立てたりしている場合、仮想化は本当に便利だ. ネットで安い仮想化機構を備えたCPU入りのPCを買えば、開発環境や運用環境を何台も構築できる.

そんなわけで会社で使うための調査としてKVMをインストールした.

NICは3枚.仮想マシンはホスト込みで4台で構築する.(予定)

また、ホストにはGUI環境を導入した. (KVMマネージャが便利なので)

ハマっちゃうのでSELinuxはとりあえず無効で.

SELinux無効化

# getenforce ← SELinux状態確認
Enforcing ← SELinux有効

# setenforce 0 ← SELinux無効化

# getenforce ← SELinux状態確認
Permissive ← SELinux無効

# vi /etc/sysconfig/selinux ← SELinux設定ファイル編集
SELINUX=enforcing
↓
SELINUX=disabled ← システム起動時にSELinuxを無効化

KVMインストール

$ sudo yum -y install qemu-kvm libvirt virt-install bridge-utils virt-manager

モジュールが入ってるか確認

lsmod | grep kvm
kvm_intel       138567  0
kvm             441119  1 kvm_intel

ユーザへのグループの追加(ここではkvmuser)

# sudo usermod -a -G libvirt kvmuser

libvirtの設定 /etc/libvirt/libvirtd.confを開き、書き換え前の下記行を見つけ、すべてコメントを外してください。 (変更前)

#unix_sock_group = "libvirt"
#unix_sock_ro_perms = "0777"
#unix_sock_rw_perms = "0770"
#auth_unix_rw = "none"
#auth_unix_ro = "none"

実行

$ sudo systemctl start libvirtd

起動時のスタートアップに登録

$ sudo systemctl enable libvirtd

ネットワーク設定

現状のデバイス状況の把握

[kvmuser@localhost ~]$ nmcli dev
デバイス    タイプ    状態      接続
virbr0      bridge    接続済み  virbr0
enp3s0      ethernet  接続済み  enp3s0
virbr0-nic  tap       接続済み  virbr0-nic
enp0s20u2   ethernet  利用不可  --
enp2s0      ethernet  利用不可  --
lo          loopback  管理無し  --
[kvmuser@localhost ~]$ nmcli con
名前        UUID                                  タイプ          デバイス
enp3s0      7ae41de2-5fb0-40c1-8953-c3c1c2364812  802-3-ethernet  enp3s0
virbr0-nic  a7440c90-0983-487c-b83f-0dcce190808f  generic         virbr0-nic
virbr0      5ebb680a-98f1-4a0c-acd5-b6775a1f705a  bridge          virbr0
有線接続 1  f05233b4-9893-4a89-9460-931e55391bd4  802-3-ethernet  --

利用中のデバイスコネクションを一度削除する

[kvmuser@localhost ~]# nmcli con delete enp3s0

仮想ブリッジを作成

[kvmuser@localhost ~]# nmcli c add type bridge autoconnect yes con-name br0 ifname br0

仮想ブリッジのスパニングツリー設定を解除

[kvmuser@localhost ~]# nmcli c modify br0 bridge.stp no

仮想ブリッジにIPを設定

[kvmuser@localhost ~]# nmcli c modify br0 ipv4.method manual ipv4.addresses "【仮想ブリッジのIP】/【ネットマスク】(192.168.20.xx/24とか)" ipv4.dns 【DNSのIP】ipv4.gateway 【デフォルトゲートウェイのIP】

作成した仮想ブリッジのSlaveとして仮想のインターフェースコネクションを作る

[kvmuser@localhost ~]# nmcli c add type bridge-slave autoconnect yes con-name enp3s- ifname enp3s0 master br0

br1向けの仮想ブリッジとアダプタも同様に作成

[kvmuser@localhost ~]# nmcli c add type bridge autoconnect yes con-name br1 ifname br1
[kvmuser@localhost ~]# nmcli c modify br1 bridge.stp no
[kvmuser@localhost ~]# nmcli c modify br1 ipv4.method manual ipv4.addresses "【仮想ブリッジのIP】/【ネットマスク】" ipv4.dns 【DNSのIP】 ipv4.gateway 【デフォルトゲートウェイのIP】
[kvmuser@localhost ~]# nmcli c add type bridge-slave autoconnect yes con-name enp2s- ifname enp2s0 master br1

br2向けの仮想ブリッジとアダプタも同様に作成

[kvmuser@localhost ~]# nmcli c add type bridge autoconnect yes con-name br2 ifname br2
[kvmuser@localhost ~]# nmcli c modify br2 bridge.stp no
[kvmuser@localhost ~]# nmcli c modify br2 ipv4.method manual ipv4.addresses "【仮想ブリッジのIP】/【ネットマスク】" ipv4.dns 【DNSのIP】 ipv4.gateway ipv4.gateway 【デフォルトゲートウェイのIP】
[kvmuser@localhost ~]# nmcli c add type bridge-slave autoconnect yes con-name enp0s- ifname enp0s20u2 master br2

仮想ブリッジを追加したのでファイヤーウォール設定をやり直す(繋がらなかったからやったけど、他が原因だったかも)

$ firewall-cmd --permanent --zone=public --add-service=vnc-server
$ firewall-cmd --reload
$ firewall-cmd --list-all

とりあえず上記まででネットワークはうまく行った.

あとはインストールした各仮想マシン毎に、仮想マシンマネージャから上記で設定したブリッジをNICとして選択してやればよい.

ホストは設定した仮想ブリッジ経由で繋がるっぽい.

仮想マシンのインストール方法などは別記事で書く.