################ lvs负载均衡 ####################
实验环境:Redhat6.5
ip:172.25.8.1,hostname:server1.example.com,lvs httpd
ip:172.25.8.3,hostname:server3.example.com,httpd
ip:172.25.8.4,hostname:server4.example.coms,httpd
关闭所有主机防火墙iptables

server1安装lvs作为调度器,后面的server3和server4是realserver,提供httpd服务

实验内容:
1.在server1上安装
yum install -y httpd
/etc/init.d/httpd start

ip addr add 172.25.8.100/24 dev eth1  ##添加虚拟ip到eth1
ip addr show

yum install -y ipvsadm
ipvsadm -A -t 172.25.8.100:80 -s rr   ##添加服务,算法为轮询
ipvsadm -a -t 172.25.8.100:80 -r 172.25.8.3:80 -g  
ipvsadm -a -t 172.25.8.100:80 -r 172.25.8.4:80 -g
ipvsadm -l

2.在server3和server4上安装
yum install httpd -y
/etc/init.d/httpd  start

cd /var/www/html/
vim index.html
server3.example.com    ##在server4中写server4.example.com

ip addr add 172.25.8.100/24 dev eth1
ip addr show
    
yum install arptables_jf -y
arptables -A IN -d 172.25.8.100 -j DROP
arptables -A OUT -s 172.25.8.100 -j mangle --mangle-ip-s 172.25.8.3 ##在server4,ip是172.25.8.4
/etc/init.d/arptables_jf save    ##开启arptables_jf
arptables -nL

3.测试
浏览器访问172.25.8.100测试.server3、server4可以做到简单负载均衡效果
【当删除server1上的ip:172.25.8.100,页面则是无法访问到的】


############## lvs+keepalived负载均衡 ###############
实验环境:Redhat6.5
ip:172.25.8.1,hostname:server1.example.com,lvs+keepalived httpd
ip:172.25.8.2,hostname:server2.example.com,lvs+keepalived httpd
ip:172.25.8.3,hostname:server3.example.com,httpd
ip:172.25.8.4,hostname:server4.example.coms,httpd
关闭所有主机防火墙iptables

实验内容:
###安装配置lvs的后端            #############理解!!!!
在server3和server4上安装
yum install httpd -y
/etc/init.d/httpd  start

cd /var/www/html/
vim index.html
 server3.example.com    ##在server4中写server4.example.com

ip addr add 172.25.8.100/24 dev eth1
ip addr show
    
yum install arptables_jf -y
arptables -A IN -d 172.25.8.100 -j DROP
arptables -A OUT -s 172.25.8.100 -j mangle --mangle-ip-s 172.25.8.3 ##在server4,ip是172.25.8.4
/etc/init.d/arptables_jf save    ##开启arptables_jf
arptables -nL

###安装keepalived
在server1和server2上装
安装包:
keepalived-1.2.24.tar.gz
libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm

1.安装httpd和libnfnetlink包
yum install -y libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm
yum install -y httpd        ##安装httpd并开启
/etc/init.d/httpd start

2.安装keepalived
tar  zxf keepalived-1.2.24.tar.gz
cd keepalived-1.2.24
./configure  --prefix=/usr/local/keepalived
yum  install -y libnl-devel
./configure  --prefix=/usr/local/keepalived
make;make install

3.scp -r /usr/local/keepalived/  172.25.8.2:/usr/local/    ##发送到server2

4.设置软链接
ln -s /usr/local/keepalived/etc/keepalived/ /etc/    ##配置文件
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ ##启动脚本
chmod +x /etc/init.d/keepalived        ##执行权限
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/  ##必要文件
ln -s /usr/local/keepalived/sbin/keepalived /sbin/    ##二进制命令文件
/etc/init.d/keepalived status    ##查看状态
返回内容:keepalived is stopped

5.编辑配置文件server1
vim /etc/keepalived/keepalived.conf
文件内容:
global_defs {
   notification_email {
        root@localhost    ##修改故障报警Email,可以多个分行写,在第5行
   }
   notification_email_from    keepalived@server1.example.com    ##指定发件人地址
   smtp_server            172.25.8.1
......    ##中间内容省略    
vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 8  ##虚拟路由ID标示,为一个数字。MASTER和BACKUP配置中相同实例此数必须一致
    priority 100    ##设置优先级,MASTER优先级大于BACKUP
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.8.100/24
    }
}

virtual_server 172.25.8.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
   #persistence_timeout 50
    protocol TCP

    real_server 172.25.8.3 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }                ##注意“}”,别多别少
    real_server 172.25.8.4 80 {
    weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
  }                                                             

}
##将文件,此处以下全部删掉,否则会产生影响

6.发送keepalived.conf给server2
scp keepalived.conf  172.25.8.2:/etc/keepalived/
    
7.编辑server2的keepalived.conf
vim /etc/keepalived/keepalived.conf
文件内容:
......    ##省略
vrrp_instance VI_1 {
state BACKUP    ##修改为BACKUP
    interface eth1
    virtual_router_id 8
    priority 50  ##设置优先级,MASTER优先级大于BACKUP
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

8.测试keepalived            
/etc/init.d/keepalived  start    ##开启server1和server2中的keepalived,server1优先级高,先获得虚拟IP
ip addr show
返回内容:inet 172.25.8.100/24 scope global secondary eth1    ##自动添加了虚拟IP

ipvsadm -l    ##使用命令
返回内容:
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.8.100:http rr
  -> 172.25.8.3:http              Route   1      0          0         
  -> 172.25.8.4:http            

tail -f /var/log/messages    ##可查看日志

浏览器访问http://172.25.8.100,可以看到server3和server4中的index.html中的网页内容


【keepalivd有健康检查,当关闭server1即MASTER时,server2即BACKUP会接管MASTER的资源,保证的提供的httpd服务的连续性】