目錄

@[toc]

前言

最近在學習在centOS上搭建一個雲服務平臺,所以寫下該文章當做筆者的學習筆記,提供給大家一起學習。雖然我們沒有辦法實現像百度雲、騰訊雲、阿里雲那麼強大的雲服務平臺,但是可以學習它們這些思維,做一個簡單的雲平臺給自己的團隊或公司使用。

創建主機

我們的雲服務器平臺的結構是這樣的:

這個平臺是在一個主機,然後在主機中創建多個虛擬機給用戶使用,所以我們首先要有一個主機。這個主機理論上是真正的物理機,同時有着非常多的物理資源,比如內存,磁盤,CPU等等。爲了學習,我們在VMware中創建一個機器當做我們的主機,使用的系統是CentOS6.5。我們先要下載這個鏡像,筆者使用的鏡像是CentOS-6.5-x86_64-minimal.iso這個鏡像,其下載地址是:http://vault.centos.org/6.5/isos/x86_64/CentOS-6.5-x86_64-minimal.iso 。

我們在VMware創建一個新的虛擬機,操作如小:

然後選擇經典模型開始創建:

接下來是選擇第三個的稍後安裝操作系統:

選擇的系統類型是Linux,具體的是CentOS 64位:

然後是創建虛擬機的名字和磁盤所在的位置:

這一步是硬件選擇,不要急着下一步,我們要對硬件做一些處理:

我們儘可能選擇大的內存,和CPU的個數,但是也不能超過本身物理機的值。默認的網絡是NAT的,不用修改:

最後是選擇鏡像,就是選擇剛纔我們下載的CentOS-6.5-x86_64-minimal.iso鏡像:

關閉之後就回到了這個,直接完成就可以了。

完成之後就可以啓動虛擬機了。

啓動之後,選擇第一個開始安裝鏡像。順便說一下,解鎖鼠標的Ctrl+Alt。

這裏選擇跳過:

然後直接一步就可以了:

這裏選系統的語言,比如筆者選擇的是中文:

這樣選擇的是鍵盤的佈局,我們的鍵盤基本上都是一樣的佈局方式,所以直接默認就可以了:

這裏也是直接默認:

忽略所有數據,應該我們的虛擬磁盤本身就沒有數據:

這裏是修改主機名的,筆者就使用默認的主機名:

這樣是選擇時區:

然後是創建系統密碼,長度不少於6

最後選擇使用所有空間,開始寫入數據:

等待安裝,一段時間後就可以安裝成功了:

配置主機網絡

安裝完成之後,還不能連接網絡,所以我們要配置網絡,首先我要先看看虛擬機的網段:

在這裏可以看到VMnet8的網段爲:192.168.204.0

然後在系統的終端輸入以下命令,編輯網絡配置:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改內容如下,修改ONBOOT=yes,BOOTPROTO=static,增加IP地址、子網掩碼、網關地址、DNS1:

最後重啓一下網絡:

service network restart

最後可以使用ping測試網絡是否正常:

ping www.baidu.com

安裝環境

使用Xshell

爲了方便操作,筆者使用Xshell連接CentOS,可以直接在Xshell上操作CentOS,操作如下:

  • 下載Xshell,地址爲:https://www.netsarang.com/download/down_form.html?code=622&downloadType=0&licenseType=1
  • 啓動 Xshell 創建新連接,如下:

  • 輸入賬號和密碼就可以連接成功了,在Xshell上跟在原系統的終端是一樣的

修改系統鏡像源

爲了加快下載資源的速度,筆者把下載資源的地址改成阿里巴巴的鏡像源,操作如下:

  1. 首先備份原來的CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  1. 安裝wget命令,命令如下:
yum -y install wget
  1. 下載鏡像源,命令如下:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
  1. 最後生成緩存,命令如下:
yum makecache

開始安裝環境

安裝依賴環境,只需要一條命令,命令入下:

yum -y install qemu-kvm  virt-manager libvirt libvirt-python python-virtinst bridge-utils

安裝完成之後,需求啓動一個服務方便之後的安裝虛擬機:

service libvirtd restart

然後關閉防火牆,方便之後連接虛擬機,命令如下:

service iptables stop

創建一個文件夾用來保存虛擬機的鏡像和虛擬磁盤的,命令如下:

mkdir /kvmtest

安裝一個上傳下載的工具,用於上傳CentOS鏡像,安裝命令如下:

yum -y install lrzsz

然後使用命令rz把CentOS鏡像上傳到/kvmtest,命令如下:

cd /kvmtest
rz

安裝虛擬機

現在安裝虛擬機是在CentOS系統上安裝的虛擬機,這個纔是真正的雲服務器。

  • 創建虛擬磁盤,命令如下:
qemu-img create -f qcow2 /kvmtest/centos-6.5.qcow2  10G
  • 然後就可以創建虛擬機,第一行是指定虛擬機的名稱和內存大小;第二行是指定CPU個數;第三行是指定系統鏡像;第四行是指定虛擬磁盤的位置,也就是上一步創建的虛擬磁盤。
virt-install --virt-type kvm --name centos-6.5 --ram 1024 \
--vcpus 1 \
--cdrom=/kvmtest/CentOS-6.5-x86_64-minimal.iso \
--disk /kvmtest/centos-6.5.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6
  • 最後使用vnc完成安裝,當執行上面的命令之後,我們需要下載一個vnc,官網下載鏈接爲:https://www.realvnc.com/en/connect/download/vnc/ ,也可以百度搜索vnc-4_1_3-x86_win32_viewer下載,然後打開軟件開始連接。IP地址是主機的地址,端口是5900,如果還有更多的虛擬機,端口就自加1,如:5901。如果連接不成功,而虛擬機有啓動了,那可能是防火牆沒關閉,需要關閉防火牆。

  • 連接虛擬機之後,就可安裝了,安裝過程跟一開始安裝主機的過程一樣,這裏集不重複介紹了。順便提一下,這個軟件只能在因爲輸入法下輸入。

安裝完成之後,還要重新啓動,啓動命令如下:

virsh start centos-6.5

既然說到virsh命令,那就說說virsh命令的使用:

virsh list --all             # 顯示本地活動虛擬機
virsh start <虛擬機名稱>      # 啓動名字爲ubuntu的非活動虛擬機
virsh create <虛擬機名稱.xml> # 創建虛擬機(創建後,虛擬機立即啓動)
virsh resume <虛擬機名稱>     # 啓動暫停的虛擬機
virsh shutdown <虛擬機名稱>   # 正常關閉虛擬機
virsh destroy <虛擬機名稱>    # 強制關閉虛擬機
virsh dominfo <虛擬機名稱>    # 顯示虛擬機的基本信息
virsh dumpxml <虛擬機名稱>    # 顯示虛擬機的當前配置文件
virsh setmem <虛擬機名稱> 51200 # 給不活動虛擬機設置內存大小
virsh setvcpus <虛擬機名稱> 4 # 給不活動虛擬機設置cpu個數
virsh edit <虛擬機名稱>       # 編輯配置文件(一般用在剛定義完VM)

配置虛擬機網絡

同樣使用vi編輯網絡配置文件:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

然後刪除物理地址和UUID,並修改ONBOOT=yes,修改後如下:

最後重啓一下網絡,命令如下:

service network restart

測試網絡是否可以正常使用,使用ping測試:

ping www.baidu.com

到這裏就完成了虛擬機的安裝,我們可以使用vnc連接我們的虛擬機,使用我們的虛擬機。

在介紹virsh命令的時候,有介紹到使用shutdown在主機上關閉虛擬機,但是並不能直接使用,還需要在虛擬機中安裝acpid,並啓動acpid,同時還添加到開機服務中。命令如下:

yum install acpid
service acpid start
chkconfig acpid on

這樣就可以在主機上使用shutdown關閉虛擬機了。

克隆虛擬機

如果需要多個虛擬機,但有想一個一個安裝,可以複製之前文件,然後做適當的修改就可以快速創建一個新的虛擬機了。

  • 複雜虛擬磁盤,在/kvmtest/下我們有創建一個虛擬磁盤centos-6.5.qcow2,我們可以複製這個文件並改名,命令如下:
cp centos-6.5.qcow2 centos-6.5-2.qcow2
  • 然後進入到/etc/libvirt/qemu目錄下,複製centos-6.5.xml並改名,命令如下:
cp centos-6.5.xml centos-6.5-2.xml
  • 然後修改centos-6.5-2.xml中的內容,修改名稱跟之前的複製文件命名一樣,然後刪除uuid。修改虛擬磁盤的位置,指定上面複製的虛擬磁盤。刪除虛擬機物理地址。如下:


  • 最後創建虛擬機,命令如下:

virsh create centos-6.5-2.xml

這樣就已經創建一個虛擬機了,使用命令virsh list --all查看:

不過還不能正常連接網絡,還要刪除一個文件並重啓網絡服務:

rm -rf /etc/udev/rules.d/70-persistent-net.rules
service network restart

這樣就完整克隆了一個虛擬機了。

網絡橋接

我們在使用虛擬機的時候,是使用vnc連接主機IP地址加端口號,通過主機來映射到虛擬機的。這是很不合理的,比如現在的騰訊雲等的雲服務器都是直接連接服務器的IP地址的,所以我們要對虛擬機的網絡進行處理,使得它可以在外界直接訪問。因爲虛擬機現在是通過路由轉換的,所以外界是不能夠直接訪問到虛擬機的,我們要把它的網絡修改成橋接的方式,這才能在外界直接訪問和連接這個虛擬機。

修改主機網絡配置

進入到該目錄下,準備對網絡文件進行配置:

cd /etc/sysconfig/network-scripts/

然後複製原來的網絡配置文件,方便之後的修改:

cp ifcfg-eth0 ifcfg-br100

然後編輯原來的網絡配置文件vi ifcfg-eth0,修改如下,註銷無用的配置,注意添加了BRIDGE和修改了BOOTPROTO=none

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
# NM_CONTROLLED=yes
BOOTPROTO=none
BRIDGE=br100
# IPADDR=192.168.171.127
# NETNASK=255.255.255.0
# GATEWAY=192.168.171.2
# DNS1=192.168.171.2

然後編輯原來的網絡配置文件vi ifcfg-br100,注意筆者修改了DEVICETYPE,IP地址還是原來的IP地址,不用修改:

DEVICE=br100
TYPE=Bridge
ONBOOT=yes
# NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.171.127
NETNASK=255.255.255.0
GATEWAY=192.168.171.2
DNS1=192.168.171.2

然後重啓網絡服務,命令如下:

service network restart

最後可以使用命令ifconfig查看網絡是否配置成功。

修改虛擬機網絡配置

在主機上編輯虛擬機的配置文件,主要是修改網絡配置,在虛擬機關閉後操作。命令如下:

virsh edit centos-6.5

主要是修改以下這些配置文件,其中修改type='bridge',然後刪除mac地址,這裏爲了方便讀者觀察,顯示在這裏,實際是刪除的了,每次重啓虛擬機都會自動生成的。最後修改<source bridge='br100'/>,修改後如下:

    <interface type='bridge'>
      <mac address='52:54:00:27:5a:65'/>
      <source bridge='br100'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

修改完成之後,啓動虛擬機,命令如下:

virsh start centos-6.5

然後關閉防火牆,因爲接下來還要使用vnc來連接虛擬機,關閉防火牆命令如下:

service iptables stop

之後使用vnc連接虛擬機,主要主機的IP地址和端口號。連接之後,刪除虛擬機的網絡規則,命令如下:

rm -rf /etc/udev/rules.d/70-persistent-net.rules

刪除這個文件之後,可以重啓一下虛擬機,使用命令init 6進行重啓。

重啓虛擬機之後,使用ifconfig查看網絡是否配置成功,然後使用ping命令嘗試ping外網,如:

ping www.baidu.com

如果訪問外網正常,那使用Xshell連接我們所創建的虛擬機,如何成功連接,那就達到我們的需求了,真正創建一個雲服務器了。

多個雲服務器到底有什麼用呢,在下一篇文章《在CentOS上使用Nginx和Tomcat搭建高可用高併發網站》介紹如何使用多個機器搭建一個高可用高併發的網站服務器,這種情況下就需要多個服務器了,這種情況下就可以使用雲服務平臺了。

注意

這裏要說一下的是,我們爲了方便外界可以訪問到服務器的端口,我們把防火牆關閉了,但是這種是非常不安全的。所以我們可以單獨開放某一端口,比如我們要開放MySQL數據庫的3306端口號,操作如下:

編輯防火牆配置文件:

vim /etc/sysconfig/iptables

添加以下信息:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

如下圖所示:

保存退出,最後重啓防火牆:

service iptables restart

開放其他端口也是同樣的操作。

參考資料

  1. https://opsx.alibaba.com/mirror
小夜