mac环境下搭建nat模式的虚拟环境

  1. 使用virtualbox,虚拟出4台linux7的环境,用于lvs环境的搭建

    防止在切换公司/家网络时,ip地址发生变化,故采用nat模式,ip设计在192.168.100.* 段
    ip地址:

node01: 192.168.100.101 (作为lvs master)
node02: 192.168.100.102 (rip server1)
node03: 192.168.100.103 (rip server2)
node04: 192.168.100.104 (作为lvs backup)

vip地址:192.168.100.100

  1. virtubox 自定义nat网络

    【工具】- 【全局设定】-【网络】

image.png
设置为192.168.100.*段
image.png

  1. 虚拟出的四台linux机器,网络选用NAT网络,选择自己预设的192.168.100.0网络即可

image.png

  1. 各虚拟机启动后,根据自己规划的ip地址,设置成静态ip

vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
enp0s3 是自己的网络名词,大部分为eth0

修改内容:
第4行注释掉,添加第5行,ip获取方式改为静态static
添加第18-20行

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
#BOOTPROTO="dhcp"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="8d933152-bd24-46ef-880b-6de71d0c1c24"
DEVICE="enp0s3"
ONBOOT="yes"

IPADDR=192.168.100.101
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
  1. 检查是否可访问外网

ping www.baidu.com,发现不通时,需要添加dns解析地址
vim /etc/resolv.conf

添加 第二行 nameserver

# Generated by NetworkManager
nameserver 8.8.8.8

keepalived 安装启动

lvs已编译在了linux内核中,模块叫做ipvs, keepalived 是一个可简化lvs搭建并提供高可用的程序,ipvsadm是提供给用户查看ipvs访问记录的命令工具
  1. node01和node02 安装

yum install keepalived ipvsadm -y

  1. 配置node01的keepalived.conf文件

cd  /etc/keepalived/
 cp keepalived.conf keepalived.conf.bak (先备份)
 vim keepalived.conf
node01 设为主 ,node04 设为备
node01 第2行 为MASTER,node04 第二行为BACKUP
node01 第5行,权重设置的高于node04, node04可设为50
第12行设置vip地址:192.168.100.100
第24-48行为rip的检测配置
第25行权重设置
第26行HTTP_GET 代表是服务为80端口,使用get请求,若是https则为 SSL_GET
注意:由于lvs环境在同一局域网内,第4行的 virtual_router_id 的数值要设置成一样的

vrrp_instance VI_1 {
    state MASTER
    interface enp0s3
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.100.100/24 dev enp0s3 label enp0s3:3
    }
}

virtual_server 192.168.100.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP

    real_server 192.168.100.102 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.100.103 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
  1. node02和node03 配置隐藏的vip

ifconfig lo:3 192.168.100.100 netmask 255.255.255.255

  1. node02和node03 使用nginx 模拟应用服务,启动80端口
  2. 关闭防火墙

    centos6是service iptables stop && chkconfig iptables off
    centos7是
    systemctl status firewalld.service 查看防火墙状态
    systemctl stop firewalld.service 停止运行状态
    systemctl disable firewalld.service 禁止防火墙服务器

  3. 启动keepalived

    service keepalived start

验证lvs

  1. 启动node01 查看ifconfig 设置自动配置好了vip地址
  2. ipvsadm -ln 查看是否已关联rip
  3. 访问vip地址后,查看ipvsadm -lnc 查看是否有访问记录

小结

搭建过程中主要遇到如下几个问题

  1. mac 环境下nat网络的搭建
  2. 虚拟机无法访问外网时,以为是nat环境有问题,来回折腾,最后才定位到/etc/resolv.conf问题
  3. nat环境访问通过宿主机访问到虚拟机的vip地址,无法测试,最后通过又虚拟出一台node05,通过curl 测试验证的
  4. vip搭建完成后,在尝试过程中,修改过virtual_router_id参数,node01和node02改成了不一致的数字,导致主负载机启动后,备负载机启动,仍能看到vip地址,正常情况,vip只能存在于一台负载机
  5. 测试vip自动切主时,可停掉网卡模拟,ifconfig enp0s3 down,注意,停掉的不是vip的虚拟网卡