zoukankan      html  css  js  c++  java
  • centos7 安装 LVS+Keepalived+Nginx 高可用


    一共需要四台虚拟服务器,两台主备LVS,两台装nginx

    一,安装LVS + Keepalived

    1. 两台虚拟机安装ipvsadm

    yum -y install ipvsadm
    

    2.两台虚拟机安装Keepalived并配置

    2.1 Keepalived安装看下面文章
    https://www.cnblogs.com/hardy-wang/p/13827240.html
    2.2 配置 MASTER Keeplived
    打开keeplived 配置文件

    vim /etc/keepalived/keepalived.conf
    
    ! Configuration File for keepalived
    
    global_defs {
       # 路由id: 当前安装keepalived节点主机的标识符,全局唯一
       router_id LVS_DEVEL_132
    }
    
    # 计算机节点
    vrrp_instance VI_1 {
        # 表示的状态,当前的128位nginx的主机点,MASTER/BACKUP
        state MASTER
        # 当前实例绑定的网卡
        interface ens33
        # 保证主备节点一致 
        virtual_router_id 41
        # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就成为MASTER
        priority 100
        # 主备之间同步检查的时间间隔,默认1s
        advert_int 1
        # 认证密码,防止非法节点的进入
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        # 虚拟ip
        virtual_ipaddress {
            192.168.174.100
        }
    
    }
    
    #配置集群地址访问的IP+端口,端口和nginx保持一致,都是80
    virtual_server 192.168.174.100 80 {
        # 健康检查时间,单位:秒
        delay_loop 6
        # 配置负载均衡的算法,默认是轮训
        lb_algo rr
        # 设备LVS的模式 NAT|TUN|DR
        lb_kind DR
        # 设置会话持久化的事件
        persistence_timeout 5
        # 协议 -t
        protocol TCP
    
        #负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
        real_server 192.168.174.128 80 {
            # 轮询的默认权重配比设置为1
            weight 1
            # 设置健康时间
            TCP_CHECK{
                # 检查的80端口
    	    connect_port 80
    	    # 超时时间
    	    connect_timeout 2
    	    # 重试次数
    	    retry 2
    	    # 间隔时间
    	    delay_before_retry 3
            }
        }
        #负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
        real_server 192.168.174.131 80 {
            # 轮询的默认权重配比设置为1
            weight 1
            # 设置健康时间
            TCP_CHECK{
                # 检查的80端口
                connect_port 80
                # 超时时间
                connect_timeout 2
                # 重试次数
                retry 2
                # 间隔时间
                delay_before_retry 3
            }
        }
    }
    
    

    2.2 配置 BACKUP Keeplived

    ! Configuration File for keepalived
    
    global_defs {
       # 路由id: 当前安装keepalived节点主机的标识符,全局唯一
       router_id LVS_DEVEL_133
    }
    
    # 计算机节点
    vrrp_instance VI_1 {
        # 表示的状态,当前的128位nginx的主机点,MASTER/BACKUP
        state BACKUP
        # 当前实例绑定的网卡
        interface ens33
        # 保证主备节点一致
        virtual_router_id 41
        # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就成为MASTER
        priority 50
        # 主备之间同步检查的时间间隔,默认1s
        advert_int 1
        # 认证密码,防止非法节点的进入
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        # 虚拟ip
        virtual_ipaddress {
            192.168.174.100
        }
    
    }
    
    #配置集群地址访问的IP+端口,端口和nginx保持一致,都是80
    virtual_server 192.168.174.100 80 {
        # 健康检查时间,单位:秒
        delay_loop 6
        # 配置负载均衡的算法,默认是轮训
        lb_algo rr
        # 设备LVS的模式 NAT|TUN|DR
        lb_kind DR
        # 设置会话持久化的事件
        persistence_timeout 5
        # 协议 -t
        protocol TCP
    
        #负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
        real_server 192.168.174.128 80 {
            # 轮询的默认权重配比设置为1
            weight 1
            # 设置健康时间
            TCP_CHECK{
                # 检查的80端口
                connect_port 80
                # 超时时间
                connect_timeout 2
                # 重试次数
                retry 2
                # 间隔时间
                delay_before_retry 3
            }
        }
        #负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
        real_server 192.168.174.131 80 {
            # 轮询的默认权重配比设置为1
            weight 1
            # 设置健康时间
            TCP_CHECK{
                # 检查的80端口
                connect_port 80
                # 超时时间
                connect_timeout 2
                # 重试次数
                retry 2
                # 间隔时间
                delay_before_retry 3
            }
        }
    }
    

    3.启动两台lvs机器的keepalived

    ./keepalived
    或
    systemctl start keepalived.service
    

    4.查看网络

    ip addr
    

    二,安装Nginx并且配置网络lo

    1.安装nginx,下面文章

    https://www.cnblogs.com/hardy-wang/p/13819305.html

    2.为两台nginx server配置虚ip

    2.1 打开网络配置目录

    cd /etc/sysconfig/network-scripts/
    

    2.2 复制lo文件并修改

    cp ifcfg-lo ifcfg-lo:1
    

    修改ifcfg-lo:1文件

    DEVICE=lo:1
    IPADDR=192.168.174.100
    NETMASK=255.255.255.255
    NETWORK=127.0.0.0
    # If you're having problems with gated making 127.0.0.0/8 a martian,
    # you can change this to something else (255.255.255.255, for example)
    BROADCAST=127.255.255.255
    ONBOOT=yes
    NAME=loopback
    

    2.3 运行命令

    ifup lo
    或
    service network restart
    

    2.4 运行 ip addr 查看

    3.为两台机器配置arp

    ARP响应级别与通告行为 的概念
    1. arp-ignore:ARP响应级别(处理请求)
          0:只要本机配置了ip,就能响应请求
          1:请求的目标地址到达对应的网络接口,才会响应请求
    2. arp-announce:ARP通告行为(返回响应)
          0:本机上任何网络接口都向外通告,所有的网卡都能接受到通告
          1:尽可能避免本网卡与不匹配的目标进行通告
          2:只在本网卡通告
    

    3.1 打开sysctl.conf

    vim /etc/sysctl.conf
    

    3.2 配置 所有网卡 、 默认网卡 以及 虚拟网卡 的arp响应级别和通告行为,分别对应: all , default , lo :

    # configration for lvs
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.default.arp_ignore = 1
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2
    net.ipv4.conf.default.arp_announce = 2
    net.ipv4.conf.lo.arp_announce = 2
    

    3.3 刷新

    sysctl -p 
    

    3.4 增加一个网关,用于接收数据报文,当有请求到本机后,会交给lo去处理:

    route add -host 192.168.1.150 dev lo:1
    

    3.5 查看

    route -n
    

    3.6 由于上面的方式重启下网关就没了,需要添加到rc.local

    echo "route add -host 192. 168.1.150 dev lo:1" >> /etc/rc.local
    
  • 相关阅读:
    linux nfs
    gsoap
    error: ignoring return value of 编译错误处理
    SSIS可靠性和扩展性—错误输出
    SSIS中的脚本—脚本组件
    SQL点滴24—监测表的变化(转载)
    SSIS中的脚本—脚本任务
    SSIS可靠性和扩展性—简介
    SSIS中的脚本—表达式
    SSIS可靠性和扩展性—可扩展性
  • 原文地址:https://www.cnblogs.com/hardy-wang/p/13839347.html
Copyright © 2011-2022 走看看