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)启动宿主机之前必选勾选上虚拟化功能
2)根据机器自身条件分配的内存和磁盘空间越大越好,为跑多个虚拟机做准备![]
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镜像文件
9)上传成功
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远程连接进行控制
方法二:使用命令virt-manager进入控制模拟图形窗口进行安装
[root@centos7 ~]# virt-manager
设置内核参数net.ifnames=0 biosdevname=0 来统一网卡命名eth*
安装成功重启
点击虚拟机详情
查看已安装的虚拟机即运行状态
11)也可以在virt-manager管理端直接创建新的虚拟机
选择创建新的虚拟机
选择本地安装
选择镜像文件路径
配置虚拟机的运行内存和CPU数量
点击选择定制存储磁盘,也可以选择创建一个新的镜像磁盘
选择事先用命令qemu-install新创建的磁盘镜像文件centos7-bak.raw
配置好网卡,点击确认安装完成虚拟机的安装
12)还可以选择克隆一个虚拟机
鼠标右键选择clone
点击clone进行克隆安装
查看克隆后的虚拟机
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查看更改此虚拟机的硬件配置
选择连接到本地内网桥接网卡br0,网卡设备模式为virtio半虚拟化模式
在配置网卡eth0绑定静态Ip
网卡配置好后重启网络,查看geust-host1的ip地址是否生效
定义后端服务httpd的页面访问
[root@centos7 ~]# echo 23.23.23.101 > /var/www/html/index.html
2)centos7-only-clone虚拟机作为geust-host3前端调度服务并配置网络IP
将其中一个网卡连接到内网网桥br0
另一个网卡连接到外网网桥br1
配置好haproxy和keepcalived等配置文件实现高可用调度
绑定一个虚拟VIP 192.168.10.230
5.两台宿主机搭建完成之后再进行浏览访问测试实现高可用调度
第一次访问
第二次访问
转载于:https://blog.51cto.com/14234542/2410959