目錄¶
@[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上跟在原系統的終端是一樣的
修改系統鏡像源¶
爲了加快下載資源的速度,筆者把下載資源的地址改成阿里巴巴的鏡像源,操作如下:
- 首先備份原來的CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
- 安裝wget命令,命令如下:
yum -y install wget
- 下載鏡像源,命令如下:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
- 最後生成緩存,命令如下:
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,注意筆者修改了DEVICE和TYPE,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
開放其他端口也是同樣的操作。
參考資料¶
- https://opsx.alibaba.com/mirror