skypaladin 发表于 2018-12-31 12:58:12

keepalived双主模型实现高可用ipvs的简单案例

  写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正。如有不明白的地方,愿可一起探讨。
  

  案例拓扑图
http://s3.运维网.com/wyfs02/M00/49/D4/wKiom1QbszGB6XfXAAGKPhsBCm4121.jpg
  说明:
  主机操作系统为:CentOS-6.5-x86_64
  准备工作
  安装keepalived和ipvsadm
  在IP地址为10.170.2.60和10.170.2.61两台主机上安装keepalived和ipvsadm
# yum -y install keepalived
# yum -y install ipvsadm  安装httpd
  在IP地址为10.170.2.101和10.170.2.102两台主机上安装httpd
  默认情况下,系统已经安装了httpd服务
  配置keepalived1
# cd /etc/keepalived/
# cp keepalived.conf keepalived.conf.bak  # vim keepalived.conf
! Configuration File for keepalived
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_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 15
    priority 99
    advert_int 1
    authentication {
      auth_type PASS
      auth_pass 111111
    }
    virtual_ipaddress {
      10.170.2.100
    }
}
vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 115
    priority 100
    advert_int 1
    authentication {
      auth_type PASS
      auth_pass 222222
    }
    virtual_ipaddress {
      10.170.2.200
    }
}
virtual_server 10.170.2.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.252.0
    persistence_timeout 0
    protocol TCP
    real_server 10.170.2.101 80 {
      weight 1
      HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
      }
    }
    real_server 10.170.2.102 80 {
      weight 1
      HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
      }
    }
}
virtual_server 10.170.2.200 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.252.0
    persistence_timeout 0
    protocol TCP
    real_server 10.170.2.101 80 {
      weight 1
      HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
      }
    }
    real_server 10.170.2.102 80 {
      weight 1
      HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
      }
    }
}  配置keepalived2
# cd /etc/keepalived/
# cp keepalived.conf keepalived.conf.bak# vim keepalived.conf
! Configuration File for keepalived
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_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 15
    priority 100
    advert_int 1
    authentication {
      auth_type PASS
      auth_pass 111111
    }
    virtual_ipaddress {
      10.170.2.100
    }
}
vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 115
    priority 99
    advert_int 1
    authentication {
      auth_type PASS
      auth_pass 222222
    }
    virtual_ipaddress {
      10.170.2.200
    }
}
virtual_server 10.170.2.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.252.0
    persistence_timeout 0
    protocol TCP
    real_server 10.170.2.101 80 {
      weight 1
      HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
      }
    }
    real_server 10.170.2.102 80 {
      weight 1
      HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
      }
    }
}
virtual_server 10.170.2.200 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.252.0
    persistence_timeout 0
    protocol TCP
    real_server 10.170.2.101 80 {
      weight 1
      HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
      }
    }
    real_server 10.170.2.102 80 {
      weight 1
      HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
      }
    }
}  配置web1
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# ifconfig lo:0 10.170.2.100 netmask 255.255.255.255 broadcast 10.170.2.100 up
# route add -host 10.170.2.100 dev lo:0
# ifconfig lo:1 10.170.2.200 netmask 255.255.255.255 broadcast 10.170.2.200 up
# route add -host 10.170.2.200 dev lo:1  编辑测试页面
# vim /var/www/html/index.html
内容为:www1.muluhe.com  启动httpd服务
# /etc/init.d/httpd start  配置web2
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# ifconfig lo:0 10.170.2.100 netmask 255.255.255.255 broadcast 10.170.2.100 up
# route add -host 10.170.2.100 dev lo:0
# ifconfig lo:1 10.170.2.200 netmask 255.255.255.255 broadcast 10.170.2.200 up
# route add -host 10.170.2.200 dev lo:1编辑测试页面
# vim /var/www/html/index.html
内容为:www2.muluhe.com启动httpd服务
# /etc/init.d/httpd start  启动keepalived服务并进行测试
  启动keepalived1和keepalived2两台主机的keepalived服务
# /etc/init.d/keepalived start  打开浏览器,键入10.170.2.100,并刷新几下,然后在两台keepalived主机上进行测试
  可分别得到如下结果
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP10.170.2.100:80 rr
-> 10.170.2.101:80            Route   1      0          7         
-> 10.170.2.102:80            Route   1      1          7         
TCP10.170.2.200:80 rr
-> 10.170.2.101:80            Route   1      0          0         
-> 10.170.2.102:80            Route   1      0          0# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP10.170.2.100:80 rr
-> 10.170.2.101:80            Route   1      0          0         
-> 10.170.2.102:80            Route   1      0          0         
TCP10.170.2.200:80 rr
-> 10.170.2.101:80            Route   1      0          0         
-> 10.170.2.102:80            Route   1      0          0  打开浏览器,键入10.170.2.200,并刷新几下,然后在两台keepalived主机上进行测试
  可分别得到如下结果
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP10.170.2.100:80 rr
-> 10.170.2.101:80            Route   1      0          0         
-> 10.170.2.102:80            Route   1      0          0         
TCP10.170.2.200:80 rr
-> 10.170.2.101:80            Route   1      0          0         
-> 10.170.2.102:80            Route   1      0          0# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP10.170.2.100:80 rr
-> 10.170.2.101:80            Route   1      0          0         
-> 10.170.2.102:80            Route   1      0          0         
TCP10.170.2.200:80 rr
-> 10.170.2.101:80            Route   1      0          7         
-> 10.170.2.102:80            Route   1      1          7  停止keepalived1主机的keepalived服务,打开浏览器,分别键入10.170.2.100和10.170.2.200并刷新几下,然后在两台keepalived主机上进行测试
  可分别得到如下结果
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP10.170.2.100:80 rr
-> 10.170.2.101:80            Route   1      0          5         
-> 10.170.2.102:80            Route   1      0          6         
TCP10.170.2.200:80 rr
-> 10.170.2.101:80            Route   1      0          6         
-> 10.170.2.102:80            Route   1      0          5  




页: [1]
查看完整版本: keepalived双主模型实现高可用ipvs的简单案例