linux学习之使用keepalived结合lvs搭建高可用负载均衡集群

环境如下:

192.168.2.199 vm1.example.com HA主服务器
192.168.2.202 vm2.example.com HA备服务器
192.168.2.205 vm3.example.com 
192.168.2.175 vm4.example.com

其中1和2做HA,3和4做httpd的lvs。虚拟IP为192.168.2.213linux学习之使用keepalived结合lvs搭建高可用负载均衡集群_第1张图片

1、使用keepalived+lvs

[root@vm1 ~]# /etc/init.d/pulse stop
lftp i:~> get pub/docs/keepalived/keepalived-1.2.12.tar.gz 
[root@vm1 ~]# yum install gcc make openssl-devel libnl-devel -y
[root@vm1 ~]# tar zxf keepalived-1.2.12.tar.gz 
[root@vm1 ~]# cd keepalived-1.2.12
[root@vm1 keepalived-1.2.12]# ./configure --prefix=/usr/local/keepalived
[root@vm1 keepalived-1.2.12]# make && make install
制作软链接,包含配置文件路径和启动脚本
[root@vm1 ~]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
[root@vm1 ~]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@vm1 ~]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[root@vm1 ~]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
修改配置文件
[root@vm1 ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
   notification_email {
     root@localhost 通知邮件地址
   }
   notification_email_from [email protected] 邮件发送者
   smtp_server 127.0.0.1 本机做为smtp服务器
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state MASTER 状态,可以是MASTER和BACKUP
    interface eth0
    virtual_router_id 94 主从相同,和其他人不同,0-255
    priority 100 主的大于从的,BACKUP设置为50
    advert_int 1
    authentication {
        auth_type PASS 验证
        auth_pass 1111 密码
    }
    virtual_ipaddress {
        192.168.2.213 虚拟ip
    }
}
virtual_server 192.168.2.213 80 {
    delay_loop 3
    lb_algo rr 算法为rr
    lb_kind DR 方式为DR
#   nat_mask 255.255.255.0
#   persistence_timeout 50
    protocol TCP
下面是两台真实服务器
    real_server 192.168.2.205 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.2.175 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

2、发送软件到另一HA结点

[root@vm1 ~]# scp -r /usr/local/keepalived/ vm2.example.com:/usr/local/
制作软链接
[root@vm2 ~]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
[root@vm2 ~]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@vm2 ~]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[root@vm2 ~]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
[root@vm2 ~]# vim /etc/keepalived/keepalived.conf 修改配置文件
   notification_email_from [email protected]
    state BACKUP
    priority 50
依次开启vm1和vm2的keepalived,可查看tail -f /var/log/messages 日志信息
[root@vm1 ~]# /etc/init.d/keepalived start
[root@vm2 ~]# /etc/init.d/keepalived start
访问192.168.2.213
[root@vm1 ~]# ip addr show 查看IP接口
[root@vm1 ~]# ipvsadm -l 查看调度列表
测试,关闭HTTP会有邮件提示,调度列表也会随之改变,主HA服务停止,BACKUP会切换到MASTER,服务恢复会再切换回去。

3、添加ftp服务

[root@vm3 ~]# yum install vsftpd -y
[root@vm3 ~]# /etc/init.d/vsftpd start
[root@vm3 ~]# chkconfig vsftpd on
[root@vm3 ~]# touch /var/ftp/3
3和4安装ftp,开启,写入不同文件
1和2配置文件添加ftp服务
[root@vm1 ~]# vim /etc/keepalived/keepalived.conf 添加
virtual_server 192.168.2.213 21 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
#   nat_mask 255.255.255.0
    persistence_timeout 50 这个打开,持续连接
    protocol TCP
    real_server 192.168.2.205 21 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.2.175 21 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
[root@vm2 ~]# /etc/init.d/keepalived stop
[root@vm1 ~]# /etc/init.d/keepalived reload
[root@vm2 ~]# /etc/init.d/keepalived start
使用其他主机lftp 192.168.2.213
[root@vm1 ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.2.213:ftp rr persistent 10
  -> vm4.example.com:ftp          Route   1      1          2         
  -> vm3.example.com:ftp          Route   1      0          1         
TCP  192.168.2.213:http rr
  -> vm4.example.com:http         Route   1      0          30        
  -> vm3.example.com:http         Route   1      0          30    
[root@vm1 ~]# ip addr show
    inet 192.168.2.213/32 scope global eth0


你可能感兴趣的:(linux,linux)