2013年3月30日 星期六

雲端網路實務 2013/3/31

 04-KVM 魔法書網路框架

下載
$wget http://140.137.223.52:8080/kvmgrimoire.zip

解壓縮kvmgrimoire.zip
$unzip kvmgrimoire.zip

產生與指定 XML 系統架構檔
$ cd ~/kvmgrimoire
$ touch conf/mynet.xml
$ echo "conf/mynet.xml" > conf/default



建立所需的虛擬 Switch HUB編輯 mynet.xml 系統架構檔, 設定內容如下 :
 $nano conf/mynet.xml
<?xml version="1.0"?>
<network>

  <!-- 透過 name 屬性, 指定 Switch HUB 的名稱 -->
  <switch-hub name="SH100">
     <!-- 設定 Bare-Metal 主機可直接與此網段其他虛擬主機連接的 IP 位址 (可以不設定) -->
     <ip>172.16.100.1/24</ip>
     <ports>
       <!-- 此 Port 作為 Switch-Hub 裝置本身使用 -->
       <tap name="SH100-NET" mac="02:01:00:00:00:00"/>

       <!-- 這些 Port 提供給虛擬主機使用 -->
       <tap name="SH100P1" mac="02:01:00:00:00:01"/>
       <tap name="SH100P2" mac="02:01:00:00:00:02"/>

       <!-- 這些 Port 提供給路由主機使用 -->
       <tap name="SH100R1" mac="02:01:00:00:00:f0"/>
       <tap name="SH100R2" mac="02:01:00:00:00:f1"/>
     </ports>
  </switch-hub>
</network>

 XML 系統架構檔一旦設定完畢, 可執行 kvmaddsw.sh 程式, 實作所需的 Switch-HUB

$ sudo ./kvmaddsw.sh SH100
SH100SH100 建立成功
  SH100-NET 建立成功
  SH100P1 建立成功
  SH100P2 建立成功
  SH100R1 建立成功
  SH100R2 建立成功

如要刪除所建立的 Switch HUB, 執行以下程式
$ sudo ./kvmdelsw.sh SH100
SH100 刪除成功
  SH100-NET 刪除成功
  SH100P1 刪除成功
  SH100P2 刪除成功
  SH100R1 刪除成功
  SH100R2 刪除成功
 
 檢查所建立的Switch HUB
 $brctl show
 


規劃與建置所需的虛擬硬碟檔
  因 NAT 虛擬主機所面對的網路架構可能是多網段,所以它會需要虛擬硬碟, 儲存路由表資訓. 建立虛擬硬碟檔, 請在 conf/mynet.xml 加入以下定義
<network>
                 :
  <vm-disk>
    <disk type="raw" name="vmdisk/NAT100.img" size="20m"/>
    <disk type="raw" name="vmdisk/NAT101.img" size="20m"/>
  </vm-disk>
</network>
 
 根據 mynet.xml 定義檔產生所需的虛擬硬碟檔, 執行以下程式
 



 
 
規劃與建置所需的 NAT 虛擬主機
 增加實作主機 br0 網路介面, 編輯 /etc/network/interfaces 檔案, 命令如下 :
$ sudo nano /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet dhcp
  bridge_ports eth0
  bridge_stp off

[注意] /etc/network/interfaces 檔案修改後, 一定要重新開機
 
設定 NAT 虛擬主機, 請在 conf/mynet.xml 加入以下定義
  <network>
              :
              :
  <router name="RBR0.100">
     <vm name="GW100" osname="TSC" ostype="32">
       <uplink sw="br0" port="NAT100" mac="02:01:72:16:10:22">
         <!-- 設定此網路介面使用 DHCP 取得 TCP/IP 設定 -->
         <ipv4>dhcp</ipv4>
       </uplink>
       <nextlink port="SH100R2" mac="02:02:72:16:10:ff">
         <ipv4>172.16.100.254:255.255.255.0::</ipv4>
       </nextlink>
       <!-- 啟動 NAT 功能 -->
       <nat>true</nat>
       <disk name="vmdisk/NAT100.img"/>
     </vm>
  </router>
</network>
根據 mynet.xml 定義檔啟動所需的 NAT 虛擬主機, 執行以下程式
$ sudo ./kvmrouter.sh RBR0.100
 
 
 

 
 
 
 $ cd ~/kvmgrimoire 
$ sudo ./kvmaddsw.sh SH100
$ sudo ./kvmaddsw.sh SH200
$ sudo ./kvmrouter.sh RBR0.100
$ sudo ./kvmrouter.sh R100.200
$ sudo ./kvmclient.sh SH100 
$ sudo ./kvmclient.sh SH200 
 ----------------------------------------------------
 
 
 
 建置 iLab 雲中虛擬平台
 
1. 下載網址
$ cd 
$ wget http://www.tobala.net/download/iLab.zip

2. 將 iLab 雲中虛擬系統平台, 解壓縮至家目錄
$ unzip iLab.zip
   
 建立 iLab 雲中虛擬教學模組
進入 iLab 目錄
$ cd iLab

 批次快速建立
$ sudo ./labcmd.sh create -f Lab101
 
 啟動 Lab101 虛擬教學模組
$ sudo ./labcmd.sh start Lab101
 
 
 
檢視 Lab101 狀態
$ sudo ./labcmd.sh list
Lab101:
 GW100 執行中
 R660 執行中
 R88 執行中
 TC660 關機
 TC88 關機

啟動單一虛擬電腦
$ sudo ./labcmd.sh start Lab101 TC88
啟動 Lab101 單一虛擬電腦
-----------------------------
TC88 啟動中 .... 成功

登入 TC88 - 視窗模式
$ sudo virt-viewer TC88

登入 R88 - Console 模式
$ sudo virsh console R88
 



-------------------------------------------------------------------
 安裝 Neatx Server (Linux遠端桌面,取代VNC)
$ sudo add-apt-repository ppa:nathan-renniewaldock/ppa && sudo add-apt-repository ppa:freenx-team
$ sudo apt-get update
$ sudo apt-get install neatx-server 
 



 
 
 
 
 
 
可參考
http://linuxkvm.blogspot.tw/2011/07/linux-kvm-linux.html
-------------------------------------------------------------- 
 02-製作 iLab 虛擬教學模組

 在 iLab 目錄中, 產生 Lab168 虛擬教學模組目錄
$ cd ~/iLab
$ mkdir Lab168
$ cd Lab168
 
 產生 Vyatta 虛擬電腦
1. 產生虛擬硬碟
$ kvm-img create -f qcow2 vyatta254.qcow2 1G
Formatting 'vyatta254.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536

2. 開始安裝
$ virt-install -r 512 -n vyatta254 --disk path=./vyatta254.qcow2,format=qcow2 
--noreboot --cdrom ~/vyatta-livecd_VC6.5R1_amd64.iso 
啟動
$ kvm -m 1024 -cdrom vyatta-livecd_VC6.5R1_amd64.iso vyatta254.qcow2 

3. 登入畫面, 輸入 vyatta/vyatta
4. 輸入 install system 命令, 開始將 Vyatta 系統安裝至硬碟
$ install system
The wizard is opened and you are going to through installation process:
Would you like to continue? (Yes/No) [YES]: Enter
Partition (Auto/Union/Parted/Skip) [Auto]: Enter
Install the image on? [sda]: Enter
This will destroy all data on /dev/sda.
Continue? (Yes/No) [No]: Yes
How big of root partition should I create? (1000MB – 1074MB) [1074]MB: Enter
I found the following configuration files
/opt/vyatta/etc/config/config.boot

Which one should I copy to sda? [/opt/vyatta/etc/config/config.boot] Enter
Enter password for administrator account
Enter vyatta password: student
Retype vyatta password: student
Which drive should GRUB modify the boot partition on? [sda]: Enter
Done! 
 
在 Lab168 目錄產生 vyatta254.xml 設定檔
$ virsh dumpxml vyatta254 > vyatta254.xml
  
移除 vyatta254 虛擬電腦
$ virsh undefine vyatta254
區域 vyatta254 已經取消定義

修改 vyatta254 虛擬電腦設定檔
$ nano vyatta254.xml

<domain type='kvm'>
  <name>vyatta254</name>                                                    # 設虛擬主機名稱, 要確定具有唯一性
  <!--uuid>88c793a6-7d32-28e0-1bbf-7f42be1d475d</uuid-->            # 刪除這行, 建立虛擬主機時, 會重新產生
  <memory>524288</memory>
  <currentMemory>524288</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-1.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='-vmdk-vyatta254.qcow2'/>                             #  利用 "-vmdk-" 置換字串, 給予虛擬硬碟檔正確完整目錄
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <disk type='block' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>    
    </controller>
    <interface type='network'>                                                                 # 將 type='user' 改成 type='network'
      <mac address='52:54:00:b4:05:c6'/>                                           # 修改 MAC 位址, 要確定具有唯一性
      <!--address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/-->    # 請移除此行
      <source network='default'/>                                                         # 加入這一行, 虛擬網路名稱要一致 (注意大小寫)
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes'/>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </memballoon>
  </devices>
</domain>
 
編輯 Lab168 虛擬教學模組設定檔 - Lab.xml
$ nano Lab.xml 
<KVMLab>
  <name>Lab168</name>
  <description>Networking 168 : Vyatta Network</description>

  <!--      Lab 運作資訊  -->
  <task>
    <job>VM Description</job>

    <!-- Lab 網路架構圖 -->
    <map>Lab168.png</map>
  </task>

  <!--       指定虛擬硬碟檔的存放目錄, "-user-" 代表登入的帳號名稱  -->
  <store>/home/-user-/myLab/</store>

  <!--       Lab 啟動設定   -->
  <labup>
    <!-- 
      Lab 啟動前需先關閉以下虛擬主機 

        S : 代表使用 "virsh shutdown" 關機
        D : 代表使用 "virsh destroy" 關機
    -->
    <shutdown>
    </shutdown> 
  </labup>

  <!--    Lab 所需網路設備      X:SH      |      H : 代表 Switch HUB  -->
  <network>
  </network>

  <!--    Lab 所需虛擬主機
      xx:vm:IP(MAC),IP(MAC):Port
      ||
      ||*** S :代表 shutdown, D :代表 destroy
      | 
      |**** U :代表啟動 VM, D :代表不啟動 VM
  -->
  <vm>
    US:vyatta254:192.168.122.xx(ff),192.168.100.254(5):
  </vm>

</KVMLab>
 
產生 Lab168 虛擬教學模組
$ cd ~/iLab
$ sudo ./labcmd.sh create -f Lab168

=> 開始建立 Lab168/ 虛擬網路 (Virtual Network)
=> 開始建立 Lab168/ 虛擬電腦 (Virtual Machine)

複製 vyatta254.qcow2 檔案 ... 成功
建立 vyatta254 虛擬電腦完成
 
啟動 Lab168 虛擬教學模組
$ sudo ./labcmd.sh start Lab168

啟動 Lab168 所有虛擬電腦
-----------------------------
vyatta254 啟動中 .... 成功

登入 vyatta254 虛擬電腦
$ sudo virsh console vyatta254
Connected to domain vyatta254
Escape character is ^]

Welcome to Vyatta - vyatta ttyS0

vyatta login: vyatta
Password: 

按 "ctrl + ]" 脫離 vyatta254 的 Console 模式

停止 Lab168 虛擬教學模組
$ sudo ./labcmd.sh stop Lab168

關閉 Lab168 所有虛擬電腦
-----------------------------
vyatta254 已關機

移除 Lab168 虛擬教學模組
$ sudo ./labcmd.sh delete -f Lab168

=> 開始刪除 Lab168/ 虛擬網路 (Virtual Network)

=> 開始刪除 Lab168/ 虛擬電腦 (Virtual Machine)

刪除 vyatta254 虛擬電腦成功
刪除 vyatta254.qcow2 虛擬電腦硬碟檔成功
 
 
 

(TOP)Temp for soulin only

123