Centos 7.x 设置Lvs+ Keepalived

 

【实验环境】

  • Centos 7.2
  • Nginx 

以下为本次试验所使用的地址:

  • VIP:192.168.136.100
  • LVS-1:192.168.136.170
  • LVS-2:192.168.136.166

【安装】

在两个节点上安装lvs、keepalived(提前已经安装好nginx)

yum install ipvsadm keepalived -y

设置配置脚本

vim ipvsadm.sh

复制代码
#!/bin/bash

vip=192.168.136.100
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
复制代码

执行脚本(在两台lvs主机上执行脚本)

sh ipvsadm.sh

查看是否设置成功

复制代码
[root@localhost /]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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
    inet 192.168.136.100/32 brd 192.168.136.100 scope global lo:0
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
复制代码

【设置Keepalived】

主节点(Master),清空文件内容

vim /etc/keepalived/keepalived.conf  

复制代码
global_defs{
  router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.136.100
    }
}

virtual_server 192.168.136.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.136.170 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.136.166 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}
复制代码

从节点(Backup),清空文件内容

vim /etc/keepalived/keepalived.conf  

复制代码
global_defs{
  router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.136.100
    }
}

virtual_server 192.168.136.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.136.170 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.136.166 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}
复制代码

主节点和从节点的区别

复制代码
主节点:MASTER
从节点:BACKUP
state MASTER -> state BACKUP

主节点优先级:100
从节点优先级:99
priority 100 -> priority 90

另外:注意interface ens33,其中ens33是网卡名称,根据自己主机情况进行修改
复制代码

开启路由转发

复制代码
一次性开启:
echo "1">/proc/sys/net/ipv4/ip_forward

永久性开启:
vim /etc/sysctl.conf
#添加
net.ipv4.ip_forward=1
退出保存

#配置生效
sysctl -p
复制代码

启动Keepalived(先主后从顺序开启)

systemctl start keepalived.service

查看是否开启成功

[root@localhost /]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.136.100:80 rr
  -> 192.168.136.166:80           Route   1      0          0         
  -> 192.168.136.170:80           Route   1      0          0      

打开浏览器输入VIP地址查看,是否成功,如果访问成功尝试断开其中某台,看是否会自动切换另外一台服务器进行访问。

 

posted @   Old·Artist  阅读(398)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示