云计算之5---KVM架构

实现桥接与仅主机模式,并构建叠加虚拟机的隧道虚拟通道

架构图:

img

1、选择两个虚拟机,每个虚拟机有两个仅主机模式和两个桥接模式,宿主机一安装叠加虚拟机参考以上安装方式:

img

img

yum install bridge-utils  -y # centos7.5 以上版本就自带此软件,需要进行桥接绑定使用。

配置宿主机一的桥接模式和仅主机模式

现在一般的企业都会使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多。而一般企业都会使用linux操作系统下自带的网卡绑定模式,当然现在网卡产商也会出一些针对windows操作系统网卡管理软件来做网卡绑定(windows操作系统没有网卡绑定功能 需要第三方支持),一共有其中方式,其中比较长用的是0/1/6:

网卡绑定案例,先做绑定,然后再把绑定后的网卡配置成桥接:

1、第一组配置,将ens33和ens37绑定为bond0:

(1)先创建bond0配置那文件步骤及内容如下:

[root@centos-7network-scripts]#pwd
/etc/sysconfig/network-scripts
[root@centos-7network-scripts]#cat ifcfg-bond0
BOOTPROTO=static
NAME=bond0
DEVICE=bond0
ONBOOT=yes
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100" #指定绑定类型为1及链路状态监测间隔时间
BRIDGE=br0  #桥接到br0

(2)配置br0的IP地址,将bond0绑定在br0上。

[root@centos-7network-scripts]#cat ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1

(3)配置ens33

[root@centos-7network-scripts]#cat ifcfg-ens33
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
USERCTL=no
SLAVE=yes

(4)配置ens37

[root@centos-7network-scripts]#cat ifcfg-ens37
BOOTPROTO=static
NAME=ens37
DEVICE=ens37
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
USERCTL=no
SLAVE=yes

2、将第二组仅主机模式的ens38和ens39绑定在bond1上

(1)先配置bond1的配置文件

[root@centos-7network-scripts]#cat ifcfg-bond1
BOOTPROTO=static
NAME=bond1
DEVICE=bond1
ONBOOT=yes
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100"
BRIDGE=br1

(2)配置br1的IP地址,并将bond1绑定在br1上

[root@centos-7network-scripts]#cat ifcfg-br1
TYPE=Bridge
BOOTPROTO=static
NAME=br1
DEVICE=br1
ONBOOT=yes
IPADDR=10.20.200.100
NETMASK=255.255.255.0

(3)将ens38绑定在bond1上

[root@centos-7network-scripts]#cat ifcfg-ens38
BOOTPROTO=static
NAME=ens38
DEVICE=ens38
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond1
USERCTL=no
SLAVE=yes

(4)将ens39绑定在bond1上

[root@centos-7network-scripts]#cat ifcfg-ens39
BOOTPROTO=static
NAME=ens39
DEVICE=ens39
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond1
USERCTL=no
SLAVE=yes

(5)修改完配置文件之后先将NetworkManager网卡关闭,否则会存在无法远程连接的风险。

[root@rs1~]#systemctl  stop  NetworkManager
[root@rs1~]#systemctl disable  NetworkManager

3、在vm1虚拟机上配置

(1)将vm1虚拟机的网卡设置为桥接的br0上,(vm1虚拟机安装过程见上面)

virt-manager工具打开远程连接进行设置,选择到br0桥接,并点击右下角的apply应用。

img

img

(2)在内网添加一个网络设备,然后将此网络设备绑定在br1(仅主机模式)模式下,并选择virtio模式(半虚拟化)

img

img

(3)配置eth0的IP地址,将其配置为外网地址

[root@localhost network-scripts]# cat ifcfg-eth0
BOOTPROTO=static
DEVICE="eth0"
ONBOOT="yes"
IPADDR=192.168.1.200
PREFIX=24
GATEWAY=192.168.1.1
DNS1=192.168.1.1

配置eth1的IP地址,配置为内网地址

[root@localhost network-scripts]# cat ifcfg-eth1
BOOTPROTO=static
DEVICE="eth1"
ONBOOT="yes"
IPADDR=10.20.200.200
PREFIX=24

安装完成之后需要安装连接网络的包

yum install net-tools  -y

3、安装vm2虚拟机

1、配置vm2之前先要安装vm2虚拟机系统,将安装好的vm1虚拟机关闭,然后将安装好的vm1虚拟机镜像复制一份,再开始安装,在安装界面只需要强制关机,然后重新启动,此时镜像就会进行引导,将系统自动安装上。

[root@centos-7images]#cp CentOS-7-x86_64.qcow2  CentOS.qcow2

开始安装系统,只需要将系统名称修改一下,磁盘路径修改一下即可。

virt-install --virt-type kvm \
--name linux777 \   修改系统名称
--memory 1024 \
--vcpus=2 \
--autostart \
--cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1908.iso \
--disk path=/var/lib/libvirt/images/CentOS.qcow2 \  磁盘路径修改一下即可
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0  \
--noautoconsole

然后用virt-manager命令打开界面,强制关机,重启之后就会自动安装上系统。

img

安装完成之后需要安装连接网络的包

yum install net-tools  -y

4、在vm2虚拟机上配置(作为内网后端服务,外网无法直接访问,保证安全性)

1、开始配置vm2的网卡及IP地址,先将网卡改为桥接模式,为了安装httpd服务

img

2、配置IP地址,先改为自动获取,可以连接外网,安装httpd服务

[root@localhost network-scripts]# cat ifcfg-eth0
BOOTPROTO=dhcp
DEVICE="eth0"
ONBOOT="yes"
#IPADDR=10.20.200.201
#PREFIX=24

3、然后启动vm2虚拟机,安装httpd服务,创建一个显示页面

[root@centos-7~]#yum install httpd  -y
[root@centos-7~]#echo 10.20.200.201 > /var/www/html/index.html
[root@centos-7~]#systemctl start httpd

4、配置完httpd服务之后再将IP地址改为静态内网IP地址,并将网卡绑定在br1上,设置为仅主机模式。

img

[root@localhost network-scripts]# cat ifcfg-eth0
BOOTPROTO=none
DEVICE="eth0"
ONBOOT="yes"
IPADDR=10.20.200.201
PREFIX=24

img

配置宿主机二的桥接模式和仅主机模式

1、第一组配置,将ens33和ens37绑定为bond0:

只需要将宿主机一的bond0/1、br0/1、ens33/37/38/39配置文件都复制到本主机一份,只需要修改br0和br1的IP地址即可。

[root@centos-7network-scripts]#scp ifcfg-ens* ifcfg-b* 192.168.1.201:/etc/sysconfig/network-scripts/

(1)先创建bond0配置那文件步骤及内容如下:

[root@centos-7network-scripts]#pwd
/etc/sysconfig/network-scripts
[root@centos-7network-scripts]#cat ifcfg-bond0
BOOTPROTO=static
NAME=bond0
DEVICE=bond0
ONBOOT=yes
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100" #指定绑定类型为1及链路状态监测间隔时间
BRIDGE=br0  #桥接到br0

(2)配置br0的IP地址,将bond0绑定在br0上。

[root@centos-7network-scripts]#cat ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.1.101
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1

(3)配置ens33

[root@centos-7network-scripts]#cat ifcfg-ens33
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
USERCTL=no
SLAVE=yes

(4)配置ens37

[root@centos-7network-scripts]#cat ifcfg-ens37
BOOTPROTO=static
NAME=ens37
DEVICE=ens37
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
USERCTL=no
SLAVE=yes

2、将第二组仅主机模式的ens38和ens39绑定在bond1上

(1)先配置bond1的配置文件

[root@centos-7network-scripts]#cat ifcfg-bond1
BOOTPROTO=static
NAME=bond1
DEVICE=bond1
ONBOOT=yes
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100"
BRIDGE=br1

(2)配置br1的IP地址,并将bond1绑定在br1上

[root@centos-7network-scripts]#cat ifcfg-br1
TYPE=Bridge
BOOTPROTO=static
NAME=br1
DEVICE=br1
ONBOOT=yes
IPADDR=10.20.200.101
NETMASK=255.255.255.0

(3)将ens38绑定在bond1上

[root@centos-7network-scripts]#cat ifcfg-ens38
BOOTPROTO=static
NAME=ens38
DEVICE=ens38
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond1
USERCTL=no
SLAVE=yes

(4)将ens39绑定在bond1上

[root@centos-7network-scripts]#cat ifcfg-ens39
BOOTPROTO=static
NAME=ens39
DEVICE=ens39
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond1
USERCTL=no
SLAVE=yes

(5)修改完配置文件之后先将NetworkManager网卡关闭,否则会存在无法远程连接到主机的风险。

[root@rs1~]#systemctl  stop  NetworkManager
[root@rs1~]#systemctl disable  NetworkManager

(6)配置完IP地址之后在宿主机二上ping宿主机一仅主机模式的IP地址,如果能ping通,则网卡绑定搭建完成。

img

4、开始在宿主机二上安装vm3虚拟机

1、安装前先安装工具包

yum install qemu-kvm qemu-kvm-tools libvirt virt-manager  virt-install -y

2、启动libvirtd服务,并设置为开机启动

[root@rs1src]#systemctl start libvirtd
[root@rs1src]#systemctl enable libvirtd

3、在将宿主机一的镜像文件复制到宿主机二上,并开始安装虚拟机:

scp /usr/local/src/CentOS-7-x86_64-Minimal-1908.iso 192.168.1.201:/usr/local/src/

开始安装系统:

virt-install --virt-type kvm \
--name linux77 \
--memory 1024 \
--vcpus=2 \
--autostart \
--cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1908.iso \
--disk path=/var/lib/libvirt/images/CentOS-7-x86_64.qcow2 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0  \
--noautoconsole

4、在图形界面上执行命令,进行安装linux叠加虚拟机系统

[root@rs1src]#yum groupinstall "GNOME Desktop"  -y
[root@rs1src]#virt-manager

5、安装完系统之后,设置网卡类型,一个绑定在br0(桥接模式),一个选择br1(仅主机模式),并都选择virtio(半虚拟化模式)

img

5、在vm3虚拟机配置

1、virt-manager工具打开远程连接进行设置,选择到br0桥接,并点击右下角的apply应用。

img

img

2、在内网添加一个网络设备,然后将此网络设备绑定在br1模式下,并选择virtio模式(半虚拟化)

img

img

3、配置eth0的IP地址,将其配置为外网地址

[root@localhost network-scripts]# cat ifcfg-eth0
BOOTPROTO=static
DEVICE="eth0"
ONBOOT="yes"
IPADDR=192.168.1.202
PREFIX=24
GATEWAY=192.168.1.1
DNS1=192.168.1.1

 配置eth1的IP地址,配置为内网地址(仅主机模式)

[root@localhost network-scripts]# cat ifcfg-eth1
BOOTPROTO=static
DEVICE="eth1"
ONBOOT="yes"
IPADDR=10.20.200.202
PREFIX=24

设置完网卡,并配置完IP地址之后,安装net-tools网络包

[root@localhost network-scripts]# yum install net-tools -y

6、安装vm4虚拟机

将安装好的vm3虚拟镜像关机,然后将安装好的叠加虚拟机镜像复制一份,再开始安装,在安装界面只需要强制关机,然后重新启动就会将系统自动安装上。

cp CentOS-7-x86_64.qcow2 CentOS.qcow2

开始安装系统,只需要将系统名称修改一下,磁盘路径修改一下即可。

virt-install --virt-type kvm \
--name linux37 \   修改系统名称
--memory 1024 \
--vcpus=2 \
--autostart \
--cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1908.iso \
--disk path=/var/lib/libvirt/images/CentOS.qcow2 \  磁盘路径修改一下即可
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0  \
--noautoconsole

然后用virt-manager命令打开界面,强制关机,重启之后就会自动安装上系统。

img

7、在vm4虚拟机上配置(作为内网后端服务,外网无法直接访问,保证安全性)

1、开始配置vm4的网卡及IP地址,先将网卡改为桥接模式,为了安装httpd服务

img

2、配置IP地址,先改为自动获取,可以连接外网,安装httpd服务

[root@localhost network-scripts]# cat ifcfg-eth0
BOOTPROTO=dhcp
DEVICE="eth0"
ONBOOT="yes"
#IPADDR=10.20.200.203
#PREFIX=24

3、然后启动vm2虚拟机,安装httpd服务,创建一个显示页面

[root@centos-7~]#yum install httpd  -y
[root@centos-7~]#echo 10.20.200.201 > /var/www/html/index.html
[root@centos-7~]#systemctl start httpd

配置完成之后需要安装连接网络的包

yum install net-tools  -y

4、配置完httpd服务之后再将IP地址改为静态内网IP地址,并将网卡绑定在br1上,使用仅主机模式,配置完成ip地址重启network 。

img

[root@localhost network-scripts]# cat ifcfg-eth0
BOOTPROTO=none
DEVICE="eth0"
ONBOOT="yes"
IPADDR=10.20.200.203
PREFIX=24

注意:此时所有的基本架构搭建完,下来我们在vm1和vm3上安装haproxy和keepalived,来实现高可用和调度到后端内网服务器上。

8、在vm1上安装Haproxy和keepalived,并配置

1、安装haproxy和keepalived包

yum install haproxy keepalived -y

2、开始配置keepalived文件,设置为主节点:vi /etc/keepalived/keepalived.conf

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_iptables
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.248 dev eth0 label eth0:0   绑定vip地址
    }
}

3、配置haproxy文件:vi /etc/haproxy/haproxy.cfg

global
    log         127.0.0.1 local2
 
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
 
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
 
listen web
   bind 192.168.1.248:80  绑定vip地址
   server 10.20.200.201 10.20.200.201:80 check  监听后端的vm2虚拟机
   server 10.20.200.203 10.20.200.203:80 check   监听后端的vm4虚拟机

4、配置路由转发功能

[root@localhost network-scripts]# vi  /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1
[root@localhost network-scripts]# sysctl -p  让路由转发参数生效
net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1

配置完成后启动haproxy和keepalived服务,并查看监听端口是否打开

systemctl start haproxy keepalived

img

9、在vm3上安装haproxy和keepalived包,并配置

1、安装haproxy和keepalived包

yum install haproxy keepalived -y

2、将vm1虚拟机的keepalived配置文件复制过来,然后修改优先级,改为BACKUP即可。

scp /etc/keepalived/keepalived.conf  192.168.1.202:/etc/keepalived/

修改haproxy配置文件

[root@localhost network-scripts]# vi /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_iptables
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_instance VI_1 {
    state BACKUP   从节点
    interface eth0
    virtual_router_id 51
    priority 80  优先级改为80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.248 dev eth0 label eth0:0
    }
}

3、将vm1上的haproxy配置文件复制过来即可。

scp /etc/haproxy/haproxy.cfg 192.168.1.202:/etc/haproxy/

查看haproxy配置文件:vi /etc/haproxy/haproxy.cfg

global
    log         127.0.0.1 local2
 
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
 
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
 
listen web
   bind 192.168.1.248:80  绑定vip地址
   server 10.20.200.201 10.20.200.201:80 check  监听后端的vm2虚拟机
   server 10.20.200.203 10.20.200.203:80 check   监听后端的vm4虚拟机

配置完成后启动haproxy和keepalived服务,并查看监听端口是否打开

systemctl start haproxy keepalived

img

4、配置路由转发功能

[root@localhost network-scripts]# vi  /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1
[root@localhost network-scripts]# sysctl -p  让路由转发参数生效
net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1

测试效果

1、此时vm1和vm3主机的haproxy和keepalived服务都启动;

外部只能通过访问VIP地址才能调度到后端仅主机模式的vm2机器上,外部无法直接访问内部IP地址的网络,提高企业网络安全。

img

2、将vm1的keepalived及后端vm2的httpd服务宕机,此时就会访问到vm4主机的web网站上,起到了备用及高可用效果。

[root@localhost network-scripts]# systemctl stop keepalived
[root@localhost network-scripts]# systemctl stop httpd

img

如果vm2和vm4想要上外网,只需要再绑定一个桥接网卡,即可,仅主机模式只让其提供覆盖物即可,到此,双网卡绑定桥接模式和仅主机模式已搭建完成。

如果我们只需要在宿主机绑定一个网卡时,只需要将一个网卡绑定在br0上做桥接即可。

posted @ 2021-06-05 11:22  原因与结果  阅读(238)  评论(0编辑  收藏  举报