高可用

来源:互联网 发布:mysql 表空间 编辑:程序博客网 时间:2024/04/28 19:23
1 一个网卡 可以虚拟多个网口

2 mac地址和ip地址

修改参数目的是为了隐藏vip

影响速度的一个主要原因就是io,解决io上线,io瓶颈。
所以要对io进行分流,于是对相应进行分流,(因为一般来说请求的数据量非常少,相应的的数据量是非常)
centos 查看io占用情况 yum install -y sysstat
iostat -x 1 10
查看实时流量
/usr/iftop/sbin/iftop
LVS 组成部分:
    1     ipvs (可以修改linux内核,发布人是linux内核开发工程师)
    2    ipvsAdmin(它仅做管理)
    
    它也像nginx一样是软件的负载均衡器,但它是基于底层协议的,nginx是基于应用协议层的
    
    调度方法:
        静态调度方法:
            wrr(测试时用,不管后台服务器状态如何)
        动态调度方法:
            根据后台服务状态改变而改变
            wlc 加权 最少连接 (LVS默认调度算法)
    
    LVS 转发原理
    
    1    服务器
        前端服务器(转发服务器)directorserver
        后端服务器 realserver

    2    ip
        CIP (客户端ip地址)
        DIP (转发服务器地址)
        VIP (虚拟服务器的地址)是一个外网ip,负责接收客户端请求,
        RIP (后台服务器的地址)是内网ip
        
        这里要注意两点
            1 虚拟服务器修改目标mac地址
            2 虚拟服务器给后端服务添加一个隐藏的vip
            3 后端服务器要虚拟一个路由器,用来把vip带给客户端(路由器可以打包数据把响应时的源地址改成vip)
            
            
    操作步骤
    
    1    先给前端服务器绑定vip,模拟外网 ifconfig eth0:1 192.168.174.100/24
    2    在后端服务器上隐藏VIP(不接收,不广播),修改内核来隐藏
        先设置隐藏    echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
                    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
                    echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
                    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
        设置好隐藏后再设置 vip
        
        ifconfig lo:1 192.168.174.100 netmask 255.255.255.255 (错误的,禁止对外广播) broadcast 192.168.174.100
        (广播地址也是它自己)
    3    后端服务器添加路由(更改响应数据的数据包,响应的源ip)
        
        route -n(多了一个路由)
        
    验证:
        1  在两台realserver上执行下操作
        service httpd start
        vi /var/www/html/index.html
        <h2>realserver1111111111</h2>
        2  在前端服务器上安装,管理业务程序
            yum -y install ipvsadm
            ipvsadm是lvs里用来管理集群的
            
            添加一个集群服务
                ipvsadm -A -t 192.168.174.100:80 -s wrr
                地址要写vip地址
            添加realserver,(realserver的端口要一样)
            ipvsadm -a -t 192.168.174.100:80 -r 192.168.174.27:80 -g -w 1
            ipvsadm -a -t 192.168.174.100:80 -r 192.168.174.28:80 -g -w 1
            查看
            ipvsadm -ln
            
            ifconfig + ip + down (up)
            记得关防火墙
            
    keep-alived
        主要做高可用,但它也对lvs做健康检查,如果realserver down掉它会将它从集群中删除
        keep-alive 在开发之初就是对lvs高可用同时对它做健康检查的,但是发展到现在,keep-alive
        可以对所有服务器做高可用,但是健康检查只对lvs可用。
        
        它的实现原理就是 ip飘移
         注意它的缺点是:keep-alived默认情况下只检测它自己,其它服务器上的keep-alived服务有没有挂。
     
        yum -y install keepalived
        vi /etc/keepalived/keepalived.conf
        
        注意修改 1 keepalived.conf state MASTER# BACKUP 主 和 从
                 2 priority 80#优先级 主的优先级要高
                
        ipvsadm -ln
        
        你会发现使用keepalived 就不需要手动去绑定 vip了
        你只要把 keepalived 跑起来就可以了,因为它配置文件里已经配置了vip,
        它实际上早已经准备好lvs了
    
    chkconfig iptables off  防火墙不自动启动
    
    keepalived 对nginx的高可用 (相互接管)
        对nginx的高可用也是通过vip的飘移来完成的
        写一个脚本(判断当前服务器上nginx是否down掉,如果down掉,就杀掉keepalived进程,
        因为keepalived只检验keepalived服务本身)
        
        查看service keepalived status,状态
        
    netstat -nptl
    0 0.0.0.0:80 表示80没有绑定任何ip
    
    
    把LVS + keep-alived 修改为  nginx + keep-alived需要做以下几个方面
    1    把 用于LVS + keep-alived的keepalived.conf 里的virtual_server全部删掉
        virtual_server 192.168.174.100 80 {
            delay_loop 6
            lb_algo wlc
            lb_kind DR
            nat_mask 255.255.255.0
            persistence_timeout 50
            protocol TCP
            
            server{
            }

        }    
    2   卸载    yum remove ipvsadm
    
    3    新增一个
        vrrp_script check_nginx {
           script "/home/check_nginx.sh"
           interval 2
           weight 2
        }
        track_script {
            check_nginx
        }

    
    
        
        
    


       
0 0
原创粉丝点击