阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

搭建LVS+Keepalived负载均衡集群

415次阅读
没有评论

共计 6087 个字符,预计需要花费 16 分钟才能阅读完成。

学习了 LVS+Keepalived 负载均衡的搭建,网上的教程很多,但是动起手来遇到不少问题。

现在把自己的搭建过程以及遇到的一些问题给分享下。

硬件环境:

Macbook 8G 内存,250G SSD,双核

软件环境:

由于资源有限,搭建了 4 个虚拟机。

虚拟机

[root@rs-1 work]# uname -a

Linux rs-1 2.6.18-238.el5 #1 SMP Thu Jan 13 15:51:15 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

[root@rs-1 work]# cat /etc/RedHat-release

CentOS release 5.6 (Final)

4 个虚拟机的 ip 地址分配如下:

Master DR: {ip: 172.16.3.89 hostname: lvs-backup}

Slave DR: {ip:172.16.3.90 hostname:lvs}

Real Server1: {ip: 172.16.3.91 hostname: rs-1}

Real Server2: {ip:172.16.3.92 hostname: rs-2}

VIP: 172.16.3.199

1. 在 Master DR 和 Slave DR 分别安装 ipvsadm(1.24), keepalived(1.2.12)

安装 ipvsadm

检查系统是否安装了 IPVS 模块, 下图显示系统已经支持 ipvs 模块的。

[root@lvs ~]# modprobe -l | grep ipvs

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_dh.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_ftp.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_lblc.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_lc.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_nq.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_rr.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_sed.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_sh.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_wlc.ko

/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_wrr.ko

做个软连接

[vagrant@lvs src]$ sudo ln -s /usr/src/kernels/2.6.18-238.el5-x86_64/ /usr/src/linux

编译

[vagrant@lvs ipvsadm-1.24]$ make

安装

[vagrant@lvs ipvsadm-1.24]$ sudo make install

检测是否安装成功

[root@lvs ~]# ipvsadm -v

ipvsadm v1.24 2005/12/10 (compiled with getopt_long and IPVS v1.2.1)
能打印出版本号说明已经安装成功了!!!!

安装 keepalived

configure

[vagrant@lvs keepalived-1.2.12]$./configure –sysconf=/etc –with-kernel-dir=/usr/src/kernels/2.6.18-238.el5-x86_64/

编译

[vagrant@lvs keepalived-1.2.12]$ make

安装

[vagrant@lvs keepalived-1.2.12]$ sudo make install

做个软连接

[vagrant@lvs keepalived-1.2.12]$ sudo ln -s /usr/local/sbin/keepalived /sbin/

检测是否安装成功

[root@lvs ~]# keepalived -v

Keepalived v1.2.12 (05/06,2014)
能打印出版本号,说明安装已经成功了!!

同理在 lvs-backup 上安装 keepalived

检测是否安装成功

[root@lvsbackup~]# keepalived -v

Keepalived v1.2.12 (05/06,2014)

配置 keepalived

! Configuration File for keepalived

#global_defs {

#  notification_email {

        #设置报警邮件地址, 可以设置多个, 每行 1 个,

        #需开启邮件报警及本机的 Sendmail 服务。

#  }

  #notification_email_from Alexandre.Cassen@firewall.loc

  #smtp_server 192.168.199.1  #设置 SMTP Server 地址;

  #smtp_connect_timeout 30

  #router_id LVS_DEVEL

#}

          ########VRRP Instance########

vrrp_instance VI_1 {

    state MASTER    #指定 Keepalived 的角色,MASTER 为主机服务器,BACKUP 为备用服务器

    interface eth1  #BACKUP 为备用服务器

    virtual_router_id 51

    priority 100    #定义优先级,数字越大,优先级越高,主 DR 必须大于备用 DR。

    advert_int 1

    authentication {

        auth_type PASS  #设置验证类型,主要有 PASS 和 AH 两种

        auth_pass 1111  #设置验证密码

    }

    virtual_ipaddress {

        172.16.3.199  #设置主 DR 的虚拟 IP 地址 (virtual IP), 可多设,但必须每行 1 个

    }

}

          ########Virtual Server########

virtual_server 172.16.3.199 80 {#注意 IP 地址与端口号之间用空格隔开

    delay_loop 6        #设置健康检查时间,单位是秒

    lb_algo rr          #设置负载调度算法,默认为 rr, 即轮询算法, 最优秀是 wlc 算法

    lb_kind DR          #设置 LVS 实现 LB 机制,有 NAT、TUNN 和 DR 三个模式可选

    nat_mask 255.255.255.0

    #persistence_timeout 50  #会话保持时间,单位为秒

    protocol TCP        #指定转发协议类型,有 TCP 和 UDP 两种

    real_server 172.16.3.92 80 {

        weight 50          #配置节点权值,数字越大权值越高

        TCP_CHECK {

            connect_timeout 3    #表示 3 秒无响应,则超时

            nb_get_retry 3        #表示重试次数

            delay_before_retry 3  #表示重试间隔

        }

    }

    real_server 172.16.3.91 80 {#配置服务器节点,即 Real Server2 的 public IP

        weight 50          #配置节点权值,数字越大权值越高

        TCP_CHECK {

            connect_timeout 3      #表示 3 秒无响应,则超时

            nb_get_retry 3          #表示重试次数

            delay_before_retry 3    #表示重试间隔

        }

    }

Slave DR 的配置和 Master DR 的配置基本一样,只有 2 个不同点:
MASTER 改为 BACKUP,priority 100 改为 priority 80

这边说下 persistence_timeout 选项,意思就是在这个一定时间内会讲来自同一用户(根据 ip 来判断的)route 到同一个 real
server。我这边给注释掉了。具体根据业务需求,长连接的话最好是配置上,配置值最好跟 lvs 的配置的 timeout 一致。

启动 keepalived

编写 start.sh(stop.sh,restart.sh)脚本方便启动

#!/bin/sh

/etc/init.d/keepalived start                                                                                                                                                                     

执行脚本

[root@lvs work]# ./start.sh

Starting keepalived:                                      [OK]

编写检测脚本 watch.sh

#!/bin/sh

watch ‘ipvsadm -l -n’

启动检测

[root@lvs work]# ./watch.sh

Every 2.0s: ipvsadm -l -n                                                                                                                          Tue May  6 12:49:52 2014

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port          Forward Weight ActiveConn InActConn

TCP  172.16.3.199:80 rr persistent 50

  -> 172.16.3.91:80              Route  50    0          0

  -> 172.16.3.92:80              Route  50    0          0

可以看到已经检测到 172.16.3.91, 172.16.3.92 两台服务器。
在 Slave DR 上做同样配置和脚本。

2. 在 Real Server1 和 Real Server2 安装 nginx

安装 nginx 过程省略。

安装完 nginx 之后,需要启动 nginx。

配置 realserver.sh 脚本

#!/bin/bash

SNS_VIP=172.16.3.199

/etc/rc.d/init.d/functions

case “$1” in

start)

      ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

      /sbin/route add -host $SNS_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

      echo “RealServer Start OK”

      ;;

stop)

      ifconfig lo:0 down

      route del $SNS_VIP >/dev/null 2>&1

      echo “0” >/proc/sys/net/ipv4/conf/lo/arp_ignore

      echo “0” >/proc/sys/net/ipv4/conf/lo/arp_announce

      echo “0” >/proc/sys/net/ipv4/conf/all/arp_ignore

      echo “0” >/proc/sys/net/ipv4/conf/all/arp_announce

      echo “RealServer Stoped”

      ;;

*)

      echo “Usage: $0 {start|stop}”

      exit 1

esac

~     

启动脚本

[root@rs-1 work]# ./realserver.sh start

RealServer Start

执行 ifconfig,可以看到做往常多了一段下图红框内的内容。

测试

在 Slave DR 上测试

[vagrant@centos-5 conf]$ for((i=0;i<100;i++));do curl 172.16.3.199;done;

或者用 webbench 模拟并发请求

[vagrant@centos-5 conf]$ webbench -c 10 -t 10 http://172.16.3.199/

在 Master DR 上执行 watch.sh

Every 2.0s: ipvsadm -l -n                                                                                                                          Wed May  7 11:45:27 2014

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port          Forward Weight ActiveConn InActConn

TCP  172.16.3.199:80 rr

  -> 172.16.3.91:80              Route  50    0          1763

  -> 172.16.3.92:80              Route  50    0          1762

整个配置过程,记得关闭所有虚拟机的防火墙,这点很重要!!!

[root@lvs work]# service iptables stop

如下命令可查询是否已经关闭防火墙

[root@lvs work]# chkconfig –list | grep iptables

iptables      0:off1:off2:off3:off4:off5:off6:off

CentOS 7 下 Keepalived + HAProxy 搭建配置详解  http://www.linuxidc.com/Linux/2017-03/141593.htm

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-03/141648.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6087字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19356
评论数
4
阅读量
8321409
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...