lvs+keepalived+nginx

  • 环境

192.168.2.111 lvs+keepalived主
192.168.2.117 lvs+keepalived从
192.168.2.118 mysql主/nginx
192.168.2.119 mysql从/nginx
192.168.2.112 lap

在111服和117服上分别部署lvs和keepalived,其他服务已提前部署好

  • lvs部署
yum -y install kernel-devel
ln -s /usr/src/kernels/2.6.32-696.16.1.el6.i686 /usr/src/linux    注意安装的内核名称可能不同
wget -c http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
tar -zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make
make install

lvs部署完成后,不需要再执行ipvsadm命令来添加后台服务器,相关参数直接在下面的keepalived主配置文件中设置

  • keepalived部署
wget http://www.keepalived.org/software/keepalived-1.2.24.tar.gz 
tar -zxvf keepalived-1.2.24.tar.gz
cd keepalived-1.2.24
./configure
make
make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/sbin/keepalived /usr/sbin/

手动添加配置目录

mkdir -p /etc/keepalived

设置权限

chmod u+x /etc/init.d/keepalived

上述的服务也可以写成脚本来一键部署


  • 配置keepalived文件参数

111服keepalived主

! Configuration File for keepalived
global_defs {
   notification_email {
      abc@163.com
   }
   notification_email_from abc@163.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state  BACKUP
    interface  eth0
    lvs_sync_daemon_inteface eth0
    virtual_router_id 50
    priority 100
    advert_int 5
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.135 
    }
}
virtual_server 192.168.2.135 80 {
    delay_loop 6    
    lb_algo wrr
    lb_kind DR
    persistence_timeout  60
    protocol TCP
    real_server 192.168.2.118 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.2.119 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
}

上述参数中,111服的keepalived设置state为BACKUP,优先级priority设置成100,然后在117服的keepalived中,同样把state设置成BACKUP,优先级则设置为90,其他参数设置一样。

由于lvs转发方法采用DR,算法采用wrr模式,需要在后端服务器设置VIP
在用户请求转发到相应的后端服务器的过程中,会修改请求包的目的mac地址,目的ip地址不变。当后端服务器检测到该请求包的目的ip是VIP而不是自己,则会丢弃数据,所以需要在所有后端服务器上配置VIP,以避免数据包丢失。另外,后端服务器把VIP配置在lo网卡上以避免ip产生冲突。

lvs服务器和后端服务求绑定vip(临时,重启会自动消失)

VIP=192.168.2.135
ifconfig    lo:0  $VIP netmask  255.255.255.255  broadcast  $VIP
/sbin/route  add  -host  $VIP  dev  lo:0

在后端服务器抑制arp(临时,重启后会自动消失)

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

分别启动111和117的keepalived服务

modprobe ip_vs    内核加载ipvs模块(注意)
service keepalived start

浏览器访问web

这里写图片描述

查看状态
这里写图片描述
可以看到VIP和realserver的状态

手动停止118的nginx服务,浏览器一样可以正常访问,再看ipvs
这里写图片描述

由上图可知,keepalived会自动剔除有故障的nginx服务

再手动开启118的nginx服务,会自动把恢复的nginx服务加进来,完成高可用
这里写图片描述

停止111服的keepalived服务,然后查看日志/var/log/messages

这里写图片描述

此时117的keepalived进入master状态,保持高可用。

恢复111的keepalived服务,查看日志可以看到进入backup状态

即在同为BACKUP的状态下以及同时设置为nopreempt时,谁先启动keepalived,谁就是master,当master宕机且恢复后,状态一直为backup

备注:
1)在部署keepalived时,执行./configure出现错误!!! OpenSSL is not properly installed on your system. !!!,需要安装openssl

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值