LVS + Keepalived 实现高可用负载集群

环境描述:

操作系统  RedHat 6.4 x64 minimal 安装

LVS_master 192.168.0.220   LVS_backup 192.168.0.221   LVS_vip 192.168.0.222
WEB_223     192.168.0.223   WEB_224     192.168.0.224   GATEWAY 192.168.0.1

一、配置 LVS_master 主机

1、下载软件包

Ipvsadm        http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz 
Keepalived    http://www.keepalived.org/software/keepalived-1.2.10.tar.gz

2、安装服务依赖包

[root@LVS_master ~]# yum install -y gcc gcc-c++ makepcre pcre-devel kernel-devel openssl-devel libnl-devel popt-devel popt-static

3、编译安装软件

安装 ipvsadm
[root@LVS_master ~]# cd /usr/local/src/
[root@LVS_master src]# tar zxf ipvsadm-1.26.tar.gz
[root@LVS_master src]# cd ipvsadm-1.26
[root@LVS_master ipvsadm-1.26]# make && make install

安装 keepalived
[root@LVS_master ~]# cd /usr/local/src/
[root@LVS_master src]# tar zxf keepalived-1.2.10.tar.gz
[root@LVS_master src]# cd keepalived-1.2.10
[root@LVS_master keepalived-1.2.10]# ./configure --prefix=/usr/local/keepalived
[root@LVS_master keepalived-1.2.10]# make && make install

4、将 keepalived 配置为系统服务 方便管理

[root@LVS_master ~]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[root@LVS_master ~]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@LVS_master ~]# mkdir /etc/keepalived
[root@LVS_master ~]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[root@LVS_master ~]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

5、编辑 keepalived 主配置文件 keepalived.conf

[root@LVS_master ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
     888@163.com                                                                 
## 故障接收联系人
   }
   notification_email_from 888@163.com                               ## 故障发送人
   smtp_server smtp.163.com                                                ## 发送邮件地址
   smtp_connect_timeout 30              
   router_id LVS_MASTER                                                      ## 在备机上要改为 LVS_BACKUP
}
vrrp_instance VI_1 {                                                                ## VIP 配置
    state MASTER                                                                      ## 备机上改为 BACKUP
    interface eth0  
    virtual_router_id 51                                                            ## 虚拟路由标识 主从一至
    priority 100                                                                           ## 备机改为90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass abcd                                                              ## 主从认证密码必须保持一至
    }
    virtual_ipaddress {
        192.168.0.222                                                                 ## 虚拟IP 如有多个换行接着写
    }
}
virtual_server 192.168.0.222 80 {                                        ## 基于web的虚拟IP
    delay_loop 6                                                                        ## 检查真实服务器时间 s
    lb_algo rr                                                                              ## 调度算法 rr 轮训
    lb_kind DR                                                                           ## LVS 负载均衡模式为DR
    nat_mask 255.255.255.0 
    persistence_timeout 50                                                     ## 同IP 50秒内重复连接会分配到同一台真实机
    protocol TCP                                                                        ## 使用 TCP 协议检查 realserver 状态

    real_server 192.168.0.223 80 {                                        ## 第一台真实web服务器
        weight 1                                                                           ## 节点权重值
            TCP_CHECK {                                                           ## 健康检查方式
            connect_timeout 3                                                    ## 连接超时
            nb_get_retry 3                                                            ## 重试次数
            delay_before_retry 3                                                 ## 重试间隔
        }
}
    real_server 192.168.0.224 80 {                                    ## 第二台真实web服务器
        weight 1
            TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
}

6、启动 keepalived 服务并设置防火墙

[root@LVS_master ~]# service keepalived start
[root@LVS_master ~]# chkconfig --add keepalived
[root@LVS_master ~]# chkconfig --level 35 keepalived on
[root@LVS_master ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@LVS_master ~]# service iptables save
[root@LVS_master ~]# service iptables reload

7、使用 ip addr 可以看到现在VIP绑定在了LVS_master 的 eth0 网卡上

[root@LVS_master ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:13:e9:66 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.220/24 brd 192.168.0.255 scope global eth0
    inet 192.168.0.222/32 scope global eth0
    inet6 fe80::20c:29ff:fe13:e966/64 scope link
       valid_lft forever preferred_lft forever

二、配置 LVS_backup 主机

##  backup 上的操作步骤跟 master 上基本一样,需要更改的地方为真实IP 、主机名和 keepalived.conf  这个文件的这三个值 router_id、state、priority

三、在两台WEB真实服务器上编写启动脚本

[root@WEB_223 ~]# vim /etc/init.d/realserver.sh
VIP=192.168.0.222
. /etc/init.d/functions
case "$1" in
start)
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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
echo "LVS RealServer Start OK"
;;
stop)
/sbin/ifconfig lo:0 down
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 "LVS RealServer Stoped OK"
;;
*)
echo "Usage: $0 (start|stop)"
exit 1
esac

稍微处理一下别的东西
[root@WEB_223 ~]# chmod +x /etc/init.d/realserver.sh
[root@WEB_223 ~]# /etc/init.d/realserver.sh start
LVS RealServer Start OK
[root@WEB_223 ~]# echo "/etc/init.d/realserver.sh start" >> /etc/rc.local
[root@WEB_223 ~]# yum -y install httpd
[root@WEB_223 ~]# echo "welcome to WEB1" > /var/www/html/index.heml     ## 第二台WEB 改为WEB2
[root@WEB_223 ~]# service httpd start
[root@WEB_223 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@WEB_223 ~]# service iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定]
[root@WEB_223 ~]# service iptables reload

四、测试

访问 http://192.168.0.222  他会循环显示 WEB1 WEB2 切断主空机或者备控机访问不会断
可以通过命令显示负载状态

[root@LVS_master ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.222:80 rr
  -> 192.168.0.223:80             Route   1      0          9
  -> 192.168.0.224:80             Route   1      0          10

但是咱们这里的话,你刷新页面他是不会轮询的   、哈哈,
因为一个参数 persistence_timeout 50      ## 同IP 50秒内重复连接会分配到同一台真实机  对就是他! 注释掉就可以轮询了,改这个值是不生效的,也不知道为什么 !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值