LVS之高可用

高可用的作用

高可用性集群中的节点一般是一主一备,或者一主多备,通过备份提高整个系统可用性。搭建高可用的目的是为了防止单点故障,代主节点的调度器不能正常工作了,就由备节点的调度器顶上完成工作。

搭建步骤

在这次实验我们要用4个虚拟机,我把这4台虚拟机分别命名server1,server2,server3,server4。
首先配置主调度器server1

1.配置yum源

vim /etc/yum.repos.d/rhel-source.repo
[rhel6.5]
name=rhel6.5
baseurl=http://172.25.62.250/rhel6.5
enabled=1
gpgcheck=0

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.62.250/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.62.250/rhel6.5/HighAvailability
enabled=1
gpgcheck=0

2.在主调度器server1上用源码包安装keepalived-2.0.6

1.首先要获取包keepalived-2.0.6.tar.gz
在这里插入图片描述
解压

tar zxf keepalived-2.0.6.tar.gz 

2.安装服务需要的软件

yum install openssl-devel -y
yum install libnl libnl-devel -y
yum install gcc -y

得到libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm资源包,进行安装,如果不安装这个包,编译可能会失败。

yum install libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm -y

安装
3.进入到解压好的目录下,编译,安装

cd keepalived-2.0.6
./configure --with-init=SYSV --prefix=/usr/local/keepalived
make && make install

3将主调度器server1上编译好的keepalived,给备调度器server4发送一份

scp -r /usr/local/keepalived/ root@172.25.62.4:/usr/local/

4.赋予执行权限,添加链接

chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived 
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/

这一步在两台调度器都需要做。

5.安装调度器

yum install ipvsadm -y

两台调度器server1,server4都需要安装。

6.编辑keepalived配置文件

在主调度器server1:

 vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost			##设置发邮件的主机为本机
   }   
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #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 {
        172.25.62.100		##设置虚拟ip,通过虚拟ip进行调度
    }   
}

virtual_server 172.25.62.100 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 172.25.62.2 80 {		##真实服务器1
        TCP_CHECK {
            weight 1
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

    real_server 172.25.62.3 80 {		##真实服务器2
        TCP_CHECK {
            weight 1
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

在备调度器也写入一样的内容,只不过, state MASTER改为state BACKUP, priority 100 改为 priority 50就可以了。

7.给服务器server2,server3添加ip,ip和上面的虚拟ip一样

ip addr add 172.25.62.100/32 dev eth0

8.将ldirectord停止,设置开机不自启

/etc/init.d/ldirectord stop
chkconfig ldirectord off

9.开启服务

/etc/init.d/keepalived start

注意这里在server1和server4两台调度器都要开启。
这样服务就基本搭建完成了。

测试

在主调度器server1

/etc/init.d/keepalived stop

关闭服务后依然能正常进行调度

在这里插入图片描述
这就表明备调度器server4执行调度功能成功。

<think>我们之前讨论了LVS的基本配置,特别是NAT模式的配置步骤。现在用户的问题是“如何使用LVS实现高可用性”,并提供了站内引用,这些引用主要涉及Keepalived与LVS的结合使用来实现高可用集群。 根据引用内容,我们可以总结出: 1. LVS本身是一个负载均衡器,但单个LVS节点存在单点故障风险,因此需要高可用方案。 2. 通常使用Keepalived来实现LVS高可用,通过VRRP协议实现主备切换。 3. 配置包括主LVS和备LVS,两者通过Keepalived同步状态,当主节点故障时,备节点接管VIP。 因此,回答应围绕“Keepalived+LVS”的高可用集群配置展开。 步骤规划: 1. 环境准备:至少两台LVS节点(主备),多台真实服务器(RS),一个虚拟IP(VIP)。 2. 安装必要的软件:在两台LVS节点上安装ipvsadm和keepalived。 3. 配置Keepalived:主备节点配置VRRP实例和LVS规则。 4. 配置真实服务器(RS):通常需要配置VIP到回环接口(DR模式)或设置网关(NAT模式)。 5. 测试高可用性:模拟主LVS故障,观察备节点是否接管VIP。 由于用户之前提到NAT模式,但引用中更多是DR模式(因为DR模式性能更好,更常用),这里以DR模式为例(因为引用[4]中明确写了lb_kind DR),同时也会提到与NAT模式配置的不同点。 注意:引用[4]提供了一个完整的keepalived配置文件示例,我们可以参考它。 具体步骤: ### 一、环境准备 - 两台LVS节点:LVS-Master(主)和LVS-Backup(备),每台节点至少两个网络接口(或者一个接口但配置多个IP)。 - 多台真实服务器(RS):例如两台Web服务器。 - 虚拟IP(VIP):192.168.229.100(供客户端访问)。 - 真实服务器IP:192.168.19.21, 192.168.19.22(引用[4]中的例子)。 ### 二、安装软件(LVS节点) 在两台LVS节点上执行: ```bash yum install ipvsadm keepalived -y systemctl enable keepalived ``` ### 三、配置Keepalived #### 主节点(LVS-Master)配置:/etc/keepalived/keepalived.conf ```bash global_defs { router_id Director1 # 标识,每个节点不同 } vrrp_instance VI_1 { state MASTER # 主节点为MASTER,备节点为BACKUP interface ens33 # 指定VRRP绑定的网络接口(根据实际网卡名) virtual_router_id 51 # 虚拟路由ID,主备必须一致 priority 150 # 优先级(主节点高于备节点,比如备节点设为100) advert_int 1 # 检查间隔,秒 authentication { auth_type PASS auth_pass 1111 # 密码,主备一致 } virtual_ipaddress { 192.168.229.100/24 dev ens33 # VIP,绑定到指定接口 } } # 配置LVS虚拟服务 virtual_server 192.168.229.100 80 { # VIP和端口 delay_loop 3 # 服务轮询时间间隔 lb_algo rr # 调度算法,轮询 lb_kind DR # 直接路由模式 protocol TCP # 协议 # 真实服务器1 real_server 192.168.19.21 80 { weight 1 # 权重 TCP_CHECK { # TCP健康检查 connect_timeout 3 # 连接超时时间 nb_get_retry 3 # 重试次数 delay_before_retry 3 # 重试间隔 } } # 真实服务器2 real_server 192.168.19.22 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } ``` #### 备节点(LVS-Backup)配置 与主节点类似,但修改: ```bash global_defs { router_id Director2 # 改为不同的标识 } vrrp_instance VI_1 { state BACKUP # 状态改为BACKUP priority 100 # 优先级低于主节点 # 其他与主节点一致(interface, virtual_router_id, authentication, virtual_ipaddress) } # LVS配置部分与主节点完全相同(复制即可) ``` 配置完成后,启动Keepalived服务: ```bash systemctl start keepalived ``` ### 四、真实服务器(RS)配置(DR模式) 在每台真实服务器上执行: 1. 配置VIP到回环接口的别名,并设置ARP抑制: ```bash # 创建回环接口的别名配置 echo 'net.ipv4.conf.all.arp_ignore = 1' >> /etc/sysctl.conf echo 'net.ipv4.conf.all.arp_announce = 2' >> /etc/sysctl.conf echo 'net.ipv4.conf.lo.arp_ignore = 1' >> /etc/sysctl.conf echo 'net.ipv4.conf.lo.arp_announce = 2' >> /etc/sysctl.conf sysctl -p # 添加VIP到lo:0 ip addr add 192.168.229.100/32 dev lo ``` 2. 确保RS上的服务(如Web服务)正常运行。 ### 五、测试高可用性 1. 客户端访问VIP(192.168.229.100),应能正常访问后端服务。 2. 查看主LVS节点的连接情况:`ipvsadm -Ln`。 3. 模拟主节点故障:关闭主节点的keepalived服务(或关机)。 4. 观察备节点是否接管VIP(使用`ip addr show`查看备节点是否绑定VIP)。 5. 客户端再次访问VIP,服务应不受影响。 ### 六、注意事项 1. 确保主备LVS节点的防火墙允许VRRP协议通信(协议号112)和健康检查的通信。 2. 如果使用NAT模式,配置步骤中LVS节点的lb_kind应改为NAT,并且RS的网关需要指向LVS节点的DIP(内网IP)。同时,Keepalived的配置中需要添加端口映射规则(因为NAT模式需要修改端口,但通常不需要特别配置,因为virtual_server已经指定了端口)。 ### 相关问题 1. LVS的DR模式与NAT模式在高可用配置上有何不同? 2. Keepalived如何实现LVS节点的故障转移? 3. 如何配置LVS的健康检查以确保后端服务器的可用性? 4. LVS高可用集群中,如何避免脑裂问题?</think>### LVS 高可用性配置步骤详解 LVS 本身是负载均衡器,需结合 **Keepalived** 实现高可用(HA)。核心原理是通过 VRRP 协议实现主备切换,当主 LVS 故障时,备节点自动接管 VIP 和服务。以下是 DR 模式的高可用配置流程(以双节点为例): --- ### **一、环境准备** | 角色 | IP 地址 | 说明 | |---------------|-----------------|--------------------------| | 客户端 | 任意 | 访问 VIP | | LVS-Master | 192.168.1.10 | 主节点(初始激活 VIP) | | LVS-Backup | 192.168.1.11 | 备节点(监听状态) | | VIP | 192.168.1.100 | 虚拟 IP(对外服务地址) | | RS1 | 192.168.1.20 | 真实服务器 1 | | RS2 | 192.168.1.21 | 真实服务器 2 | --- ### **二、配置步骤** #### **1. 安装软件(两台 LVS 节点)** ```bash # 安装 LVS 管理工具和 Keepalived yum install ipvsadm keepalived -y systemctl enable keepalived ``` #### **2. 主节点配置(LVS-Master)** 编辑 `/etc/keepalived/keepalived.conf`: ```bash global_defs { router_id LVS_MASTER # 唯一标识,备节点改为 LVS_BACKUP } vrrp_instance VI_1 { state MASTER # 主节点身份 interface eth0 # 绑定 VIP 的网卡 virtual_router_id 51 # 主备一致(1-255) priority 150 # 主节点优先级需高于备节点 advert_int 1 # 心跳间隔(秒) authentication { auth_type PASS auth_pass 1111 # 主备密码一致 } virtual_ipaddress { 192.168.1.100/24 # VIP } } virtual_server 192.168.1.100 80 { # LVS 服务配置 delay_loop 3 lb_algo rr # 轮询算法 lb_kind DR # DR 模式 protocol TCP real_server 192.168.1.20 80 { # RS1 weight 1 TCP_CHECK { connect_timeout 3 # 健康检查超时时间 } } real_server 192.168.1.21 80 { # RS2 weight 1 TCP_CHECK { connect_timeout 3 } } } ``` #### **3. 备节点配置(LVS-Backup)** 复制主节点配置并修改关键参数: ```bash scp root@192.168.1.10:/etc/keepalived/keepalived.conf /etc/keepalived/ # 复制配置文件 ``` 修改备节点配置: ```bash global_defs { router_id LVS_BACKUP # 修改标识 } vrrp_instance VI_1 { state BACKUP # 改为备节点 priority 100 # 优先级低于主节点 # 其他参数与主节点一致 } ``` #### **4. 真实服务器(RS)配置** 在每台 RS 上执行: ```bash # 配置 ARP 抑制(避免 VIP 冲突) echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf sysctl -p # 绑定 VIP 到本地回环接口 ip addr add 192.168.1.100/32 dev lo ``` #### **5. 启动服务** ```bash # 主备节点启动 Keepalived systemctl start keepalived # 查看 VIP 绑定状态(主节点应有 VIP) ip addr show eth0 | grep 192.168.1.100 ``` --- ### **三、高可用验证** 1. **正常访问测试** ```bash curl http://192.168.1.100 # 应轮询返回 RS 内容 ``` 2. **主节点故障模拟** ```bash # 在主节点停止 Keepalived systemctl stop keepalived ``` - **预期现象**: - 备节点 10 秒内接管 VIP(查看 `ip addr`) - 客户端访问 VIP 无中断 3. **主节点恢复测试** ```bash systemctl start keepalived # 主节点恢复服务 ``` - **预期现象**:VIP 自动切回主节点 --- ### **四、关键机制说明** 1. **VRRP 协议** - 主节点定期发送心跳包,备节点监听。 - 心跳超时后,备节点升级为主节点并接管 VIP[^2][^4]。 2. **健康检查** - LVS 通过 `TCP_CHECK` 检测 RS 状态,自动剔除故障节点[^4]。 3. **脑裂预防** - 优先级机制:主节点优先级 > 备节点。 - 认证密码:主备需配置相同密码[^2][^4]。 --- ### **相关问题** 1. DR 模式中如何避免 VIP 的 ARP 冲突? 2. Keepalived 如何实现毫秒级故障切换? 3. LVS 集群如何扩展为多主多备架构? 4. 如何监控 LVS 高可用集群的状态? > 配置要点:主备节点 `virtual_router_id` 必须一致;优先级主 > 备;健康检查参数需匹配业务响应时间[^2][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值