一、前期準備
二、安裝虛擬化基礎環境 以Ubuntu為例,安裝KVM及libvirt工具包(包含虛擬化管理工具):
sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
啟動libvirtd服務并設置開機自啟:
sudo systemctl start libvirtd
sudo systemctl enable libvirtd
將當前用戶加入kvm組(避免每次操作需sudo):
sudo usermod -aG kvm $USER
newgrp kvm # 刷新組權限
配置網絡橋接(實現虛擬機與物理網絡互通,可選NAT/橋接模式,橋接更適合集群通信):
sudo brctl addbr kvm_bridge # 創建橋接接口
sudo brctl addif kvm_bridge eth0 # 將物理網卡加入橋接
sudo ifconfig kvm_bridge up # 啟用橋接接口
可使用virt-manager圖形工具或virsh命令行創建虛擬機(建議預分配足夠CPU、內存及磁盤空間,如2核4G、50GB磁盤)。
三、創建Linux虛擬機節點
virt-install命令快速創建,示例如下:sudo virt-install \
--name node1 \
--ram 4096 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/node1.qcow2,size=50 \
--os-type linux \
--os-variant ubuntu22.04 \
--network bridge=kvm_bridge \
--graphics spice \
--cdrom /path/to/ubuntu-22.04.iso
重復上述步驟創建多個節點(建議≥3臺,滿足集群 quorum 要求)。
四、配置集群通信與同步
ssh-keygen -t rsa # 生成密鑰(默認路徑~/.ssh/id_rsa)
ssh-copy-id node1 # 復制密鑰至node1(依次執行node2、node3...)
測試免密登錄:ssh node1,無需輸入密碼即為成功。
2. 共享存儲配置(高可用必需):
sudo apt install -y targetcli-fb
sudo targetcli
/> backstores/block create name=shared_storage dev=/dev/sdb # 創建塊存儲
/> iscsi/ create iqn.2023-08.example.com:storage # 創建iSCSI目標
/> iscsi/iqn.2023-08.example.com:storage/tpg1/luns create /backstores/block/shared_storage # 關聯存儲與目標
/> iscsi/iqn.2023-08.example.com:storage/tpg1/acls create iqn.2023-08.example.com:node1 # 授權節點1訪問
/> iscsi/iqn.2023-08.example.com:storage/tpg1/acls create iqn.2023-08.example.com:node2 # 授權節點2訪問
/> saveconfig # 保存配置
/> exit
在節點上安裝open-iscsi并連接目標:sudo apt install -y open-iscsi
sudo iscsiadm -m discovery -t st -p <存儲服務器IP> # 發現目標
sudo iscsiadm -m node -T iqn.2023-08.example.com:storage -l # 登錄目標
sudo modprobe drbd # 加載內核模塊
sudo vim /etc/drbd.d/r0.res # 創建資源文件
資源文件內容:resource r0 {
protocol C;
on node1 {
device /dev/drbd0;
disk /dev/sdb;
address 192.168.1.101:7788;
meta-disk internal;
}
on node2 {
device /dev/drbd0;
disk /dev/sdb;
address 192.168.1.102:7788;
meta-disk internal;
}
}
初始化并啟動DRBD:sudo drbdadm create-md r0
sudo drbdadm up r0
在節點1上設置主節點:sudo drbdadm primary --force r0
格式化并掛載共享存儲(僅在主節點操作):sudo mkfs.ext4 /dev/drbd0
sudo mkdir /mnt/shared
sudo mount /dev/drbd0 /mnt/shared
```。
五、部署集群管理工具(以Pacemaker+Corosync為例)
sudo apt install -y corosync pacemaker pcs fence-agents
sudo passwd hacluster # 設置密碼
sudo pcs cluster auth node1 node2 node3 -u hacluster -p yourpassword # 認證節點
sudo pcs cluster setup --name ha_cluster node1 node2 node3 # 創建集群
sudo pcs cluster start --all # 啟動所有節點集群服務
sudo pcs cluster enable --all # 設置開機自啟
sudo pcs property set stonith-enabled false # 生產環境需配置stonith(如虛擬機強制關機)
sudo pcs property set no-quorum-policy ignore # 忽略quorum,避免節點故障時集群停止
```。
**六、配置虛擬機資源(高可用核心)**
將虛擬機作為集群資源管理,實現故障自動遷移:
1. **導出虛擬機配置**:將虛擬機XML定義文件復制到共享存儲(所有節點可訪問):
```bash
sudo virsh dumpxml vm1 > /mnt/shared/vm1.xml # 導出vm1配置
sudo pcs resource create vm1 ocf:heartbeat:VirtualDomain \
config=/mnt/shared/vm1.xml \
hypervisor="qemu:///system" \
migration_transport=ssh \
op monitor interval=30s \ # 每30秒檢查一次資源狀態
op start timeout=120s \ # 啟動超時120秒
op stop timeout=120s # 停止超時120秒
sudo pcs constraint location vm1 prefers node1=100 node2=50
sudo pcs cluster stop node1
sudo pcs status # 檢查虛擬機狀態(應在node2上運行)
```。
**七、測試與優化**
1. **功能測試**:模擬節點故障(如關閉物理服務器),驗證虛擬機是否自動遷移、服務是否恢復;測試共享存儲讀寫(如node1寫入文件,node2能否讀?。?。
2. **性能優化**:
- **網絡優化**:使用bonding綁定多網卡(如active-backup模式),提高網絡冗余;為KVM創建橋接接口,減少網絡延遲。
- **存儲優化**:使用SSD作為共享存儲介質,提高IO性能;調整DRBD同步策略(如`syncer rate`),平衡同步速度與帶寬占用。
- **虛擬機優化**:為虛擬機分配足夠CPU核心(避免單核瓶頸)、內存(預留10%以上緩沖),使用virtio驅動(提升磁盤/網絡性能)。