大数据-day4-高可用

1 一个网卡 可以虚拟多个网口

2 mac地址和ip地址

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

影响速度的一个主要原因就是io,解决io上线,io瓶颈。
所以要对io进行分流,于是对相应进行分流,(因为一般来说请求的数据量非常少,相应的的数据量是非常)
centos 查看io占用情况 yum install -y sysstat
iostat -x 1 10
查看实时流量
/usr/iftop/sbin/iftop

对相应进行分流,也就是说直接让service服务器访问浏览器,而不经过前端服务器(tenginx),但这么一来
就违背了tcp/ip协议(它是握手协议,由客户端发送请求,去链接服务端,成功后就开始发送数据,但这里,浏览器是
是和前端服务建立的tcp/ip链接,所以,若后端服务器直接相应到客户端,客户端是不收的)所以,如果想要浏览器接收的
话就要欺骗了,所以就要做修改后端ip,nginx是应用层,无法操作底层,而 LVS(linux虚拟服务) 是可以的

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

        虚拟服务有2个ip (VIP,DIP),虚拟服务器通过它的网络接口进行转发
        客户端请求包中含 目标ip地址和目标mac地址(也即前端服务器ip地址和mac地址),
        因为如果没有mac地址,路由器是无法广播的
        接着ipvs会修改传过来的目标mac地址,把它改成后端服务器的mac地址(根据wlc调度算法来修改找到的
        后端服务器),
        接着ipvs再把所有的后端服务器的ip都修改为vip且隐藏(不接收,也不广播)。
        下一步就是如何让后端服务给客户端发送数据
        这时需要在后端服务器上虚拟一个路由(用来设置把vip带给客户端),用来转发数据包到客户端
        
        这里要注意两点
            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 add 192.168.174.100 dev lo:1
        
        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飘移
            有两个服务器,一个master 一个backup
            它是通过 vrrp协议做的,接管非常快
            
        注意它的缺点是:keep-alived默认情况下只检测它自己,其它服务器上的keep-alived服务有没有挂。
        例如:一个安装了tomcat和keep-alive的backup服务器,如果它的keep-alived服务挂了,那么就会被接管,而如果
        tomcat挂了,它就不会被接管,这是keep-alive的一个缺点
        
        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
        }

    
    
        
        
    


       

你可能感兴趣的:(大数据-day4-高可用)