KVM實現haproxy+keepalived高可用調度分離小架構

KVM實現haproxy+keepalived高可用調度分離小架構

1.環境準備

宿主機:host1 192.168.10.116
                                    host2 192.168.10.111
客戶虛擬機:guest-host1 23.23.23.101  httpd  #充當後端服務器
                                        guest-host2 23.23.23.102  httpd  #充當後端服務器
                                        guest-host3 23.23.23.107  192.168.10.200  haproxy+keepalived  #前端調度及高可用
                                        guest-host4 23.23.23.108  192.168.10.201  haproxy+keepalived  #前端調度及高可用
宿主機host1網橋:br0 23.23.23.200  #內網
                                                         br1 192.168.10.116  #外網
宿主機host2網橋:br0 23.23.23.201 #內網
                                                         br1 192.168.10.111  #外網

2.網絡環境搭建,以宿主機host1爲例

1)將eth0和eth1網卡綁定到bond0上

[root@centos7 network-scripts]#vim ifcfg-bond0
OOTPROTO=static
NAME=bond0
DEVICE=bond0
ONBOOT=yes
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100"  #每間隔100毫秒心跳檢測
BRIDGE=br0  #綁定的內網網橋br0上

2)將eth2和eth3網卡綁定到bond1上

root@centos7 network-scripts]#vim ifcfg-bond1
OOTPROTO=static
NAME=bond1
DEVICE=bond1
ONBOOT=yes
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100"  #每間隔100毫秒心跳檢測
BRIDGE=br1  #綁定的內網網橋br1上

3)分別配置eth0和eth1網卡指向bond0上

[root@centos7 network-scripts]#vim ifcfg-eth0
OOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
USERCTL=no
SLAVE=yes

[root@centos7 network-scripts]#vim ifcfg-eth1
OOTPROTO=static
NAME=eth1
DEVICE=eth1
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
USERCTL=no
SLAVE=yes

4)分別配置eth2和eth3網卡指向bond0上

[root@centos7 network-scripts]#vim ifcfg-eth2
OOTPROTO=static
NAME=eth2
DEVICE=eth2
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond1
USERCTL=no
SLAVE=yes

[root@centos7 network-scripts]#vim ifcfg-eth3
OOTPROTO=static
NAME=eth3
DEVICE=eth3
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond1
USERCTL=no
SLAVE=yes

5)分別配置網橋br0和br1

[root@centos7 network-scripts]#vim ifcfg-br0
TYPE=Bridge  #指明橋接網卡
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=23.23.23.200    #橋接網卡地址
NETMASK=255.255.0.0

[root@centos7 network-scripts]#vim ifcfg-br1
TYPE=Bridge
BOOTPROTO=none
NAME=br1
DEVICE=br1
ONBOOT=yes
IPADDR=192.168.10.116
NETMASK=255.255.255.0
GATEWAY=192.168.10.1

6)重啓網絡使網卡生效

[root@centos7 network-scripts]#systemctl restart network
[root@centos7 network-scripts]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
             valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
             valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
        link/ether 00:0c:29:16:56:39 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
        link/ether 00:0c:29:16:56:39 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond1 state UP group default qlen 1000
        link/ether 00:0c:29:16:56:4d brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond1 state UP group default qlen 1000
        link/ether 00:0c:29:16:56:4d brd ff:ff:ff:ff:ff:ff
6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default qlen 1000
        link/ether 00:0c:29:16:56:39 brd ff:ff:ff:ff:ff:ff
        inet6 fe80::20c:29ff:fe16:5639/64 scope link 
             valid_lft forever preferred_lft forever
7: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br1 state UP group default qlen 1000
        link/ether 00:0c:29:16:56:4d brd ff:ff:ff:ff:ff:ff
        inet6 fe80::20c:29ff:fe16:564d/64 scope link
8: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 00:0c:29:16:56:39 brd ff:ff:ff:ff:ff:ff
        inet 23.23.23.200/16 brd 23.23.255.255 scope global br0
             valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fe16:5639/64 scope link 
             valid_lft forever preferred_lft forever
9: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 00:0c:29:16:56:4d brd ff:ff:ff:ff:ff:ff
        inet 192.168.10.116/24 brd 192.168.10.255 scope global br1
             valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fe16:564d/64 scope link 
             valid_lft forever preferred_lft forever

7)在以相同的網絡搭建方式搭建宿主機host2,此處省略

3.分別在宿主機host1和宿主host2上搭建KVM虛擬化環境,並創建虛擬機,以host1爲例

1)啓動宿主機之前必選勾選上虛擬化功能

KVM實現haproxy+keepalived高可用調度分離小架構

2)根據機器自身條件分配的內存和磁盤空間越大越好,爲跑多個虛擬機做準備![]

KVM實現haproxy+keepalived高可用調度分離小架構

3)查看cpu是否支持虛擬化等指令集功能,如vmx

[root@centos7 network-scripts]#cat /proc/cpuinfo
……
……
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm tpr_shadow vnmi ept vpid tsc_adjust arat
……
……

4)KVM虛擬化模塊是內置在linux的內核中的,所以無需下載此模塊包,只需安裝KVM相關的命令包

 [root@centos7 ~]# yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install -y                        
                                                         qemu-kvm qemu-kvm-tools     #模擬輕量級IO設備,如鼠標、鍵盤等 
                                                         libvirt       #啓動虛擬機的管理主程序
                                                         virt-manager        #web界面的管理程序,建立遠程連接
                                                         virt-install         #一組命令,利用virt-install安裝虛擬機

5)啓動虛擬機的管理主程序 libvirtd

[root@centos7 ~]# systemctl  start   libvirtd
[root@centos7 ~]# systemctl  enable  libvirtd

6)本地主機虛擬化網卡,可以訪問外部網絡,外部網絡不可以訪問此虛擬網卡,是NAT模式

 [root@centos7 ~]# ifconfig  virbr0
 flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500        inet 192.168.122.1  netmask 
255.255.255.0  broadcast 192.168.122.255        ether 52:54:00:89:c5:75  txqueuelen 1000  
……
 #virbr0:當啓動libvirted會生成的內置虛擬網卡,相當於一個內置路由器.

7)創建虛擬機磁盤鏡像文件

 [root@centos7 ~]# qemu-img create -f raw /var/lib/libvirt/images/centos-only.raw 5G
                     #磁盤格式爲raw,存放的路徑爲默認路徑,磁盤名稱爲centos-only.raw 大小爲5G的磁盤

8)xshell遠程連接上傳centos鏡像文件

KVM實現haproxy+keepalived高可用調度分離小架構

9)上傳成功

KVM實現haproxy+keepalived高可用調度分離小架構

10)安裝虛擬機

 [root@centos7 ~]# virt-install  --virt-type kvm --name centos7-only  --memory 600 --vcpus 2 
--cdrom=/data/centos-iso/CentOS-7-x86_64-Minimal-1511.iso --disk path=/var/lib/libvirt/images/centos.raw 
--network network=default  --graphics  vnc,listen=0.0.0.0 --noautoconsole
選項說明:
--virt-type #指定虛擬化類型
--name # 命名虛擬機的名稱
 --memory #虛擬機運行內存大小
--vcpus #虛擬機cpu個數
-cdrom #指定鏡像文件路徑
--disk path 指定磁盤文件路徑
--network network=default #指定網絡類型爲默認模式,默認是NAT模式
--graphics  vnc,listen=0.0.0.0 開啓圖形化,支持遠程連接VNC,以及監聽所有端口
--noautoconsole  開機不自動連接控制檯

11)剛開始安裝時迅速連接虛擬機的控制界面進行手動安裝,有兩種方法

方法一:使用VNC遠程連接進行控制
KVM實現haproxy+keepalived高可用調度分離小架構
方法二:使用命令virt-manager進入控制模擬圖形窗口進行安裝
[root@centos7 ~]# virt-manager
設置內核參數net.ifnames=0 biosdevname=0 來統一網卡命名eth*
KVM實現haproxy+keepalived高可用調度分離小架構
安裝成功重啓
KVM實現haproxy+keepalived高可用調度分離小架構
點擊虛擬機詳情
KVM實現haproxy+keepalived高可用調度分離小架構
查看已安裝的虛擬機即運行狀態
KVM實現haproxy+keepalived高可用調度分離小架構

11)也可以在virt-manager管理端直接創建新的虛擬機

選擇創建新的虛擬機
KVM實現haproxy+keepalived高可用調度分離小架構
選擇本地安裝
KVM實現haproxy+keepalived高可用調度分離小架構
選擇鏡像文件路徑
KVM實現haproxy+keepalived高可用調度分離小架構
配置虛擬機的運行內存和CPU數量
KVM實現haproxy+keepalived高可用調度分離小架構
點擊選擇定製存儲磁盤,也可以選擇創建一個新的鏡像磁盤
KVM實現haproxy+keepalived高可用調度分離小架構
選擇事先用命令qemu-install新創建的磁盤鏡像文件centos7-bak.raw
KVM實現haproxy+keepalived高可用調度分離小架構
配置好網卡,點擊確認安裝完成虛擬機的安裝
KVM實現haproxy+keepalived高可用調度分離小架構
12)還可以選擇克隆一個虛擬機
鼠標右鍵選擇clone
KVM實現haproxy+keepalived高可用調度分離小架構
點擊clone進行克隆安裝
KVM實現haproxy+keepalived高可用調度分離小架構
查看克隆後的虛擬機
KVM實現haproxy+keepalived高可用調度分離小架構

4.分別在宿主機host1和宿主host2上配置後端虛擬機httpd服務和前端虛擬機調度服務的網絡IP,以host1爲例
啓動虛擬機兩種方式:
方式一:安裝電源管理包實現命令行啓動或關閉虛擬機
yum install acip -y #安裝電源管理包
virsh list --all #顯示所有已創建的虛擬機並顯示運行的狀態
virsh start cento7-only #開啓指定的虛擬機
virsh shutdown cento7-only #關閉指定的虛擬機
方式二:直接使用virt-manager在圖形模擬界面操作虛擬機

1)centos7-only虛擬機作爲geust-host1後端httpd服務並配置網絡IP
選擇Detail查看更改此虛擬機的硬件配置
KVM實現haproxy+keepalived高可用調度分離小架構
選擇連接到本地內網橋接網卡br0,網卡設備模式爲virtio半虛擬化模式
KVM實現haproxy+keepalived高可用調度分離小架構
在配置網卡eth0綁定靜態Ip
KVM實現haproxy+keepalived高可用調度分離小架構
KVM實現haproxy+keepalived高可用調度分離小架構
網卡配置好後重啓網絡,查看geust-host1的ip地址是否生效
KVM實現haproxy+keepalived高可用調度分離小架構
定義後端服務httpd的頁面訪問

[root@centos7 ~]# echo 23.23.23.101 > /var/www/html/index.html

2)centos7-only-clone虛擬機作爲geust-host3前端調度服務並配置網絡IP

將其中一個網卡連接到內網網橋br0
KVM實現haproxy+keepalived高可用調度分離小架構
另一個網卡連接到外網網橋br1
KVM實現haproxy+keepalived高可用調度分離小架構

配置好haproxy和keepcalived等配置文件實現高可用調度
綁定一個虛擬VIP 192.168.10.230

5.兩臺宿主機搭建完成之後再進行瀏覽訪問測試實現高可用調度

第一次訪問
KVM實現haproxy+keepalived高可用調度分離小架構
第二次訪問
KVM實現haproxy+keepalived高可用調度分離小架構

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章