• 搭建负载均衡的环境(利用虚拟机上的四台centos)


    以下转载:

    准备

    l 系统:Centos6  (三台)   

    l 负载均衡:LVS  + keepalived  

    l 服务器1:Http  

    l 服务器2:Http

    ip配置

    1、VIP(virtual ip):用来提供virtual server服务的ip地址。分别绑定在Director一个物理网卡上(对外接收请求包)和RS的回环设备上(回环设备需要绑定两个ip,一个是127.0.0.1,另一个就是vip)。

    2、DIP(director ip):与vip绑定在一个物理网卡上,用来转发请求包到RS的RIP对应的mac上,此设备可以通过arp请求获取RIP对应的mac地址。

    3、RIP(real server ip):绑定在RS上的一个物理网卡上,用来接收从Directory转发过来的请求包。

    关闭防火墙

    [root@itcast01 ~]# service iptables status

    [root@itcast01 ~]# service iptables stop

    [root@itcast01 ~]# chkconfig iptables --list

    [root@itcast01 ~]# chkconfig iptables off

    第一步:在二台真实服务器网上上添加LO:0接口,并设置虚拟IP在此接口上

    [root@itcast01 ~]# cd /etc/init.d/

    [root@itcast01 ~]#touch realserver

    [root@itcast01 ~]#vim realserver

    SNS_VIP=192.168.8.150

    . /etc/rc.d/init.d/functions

    case "$1" in

    start)

    ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

    /sbin/route add -host $SNS_VIP dev lo:0

    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

    sysctl -p >/dev/null 2>&1

    echo "RealServer Start OK"

    ;;

    stop)

    ifconfig lo:0 down

    route del $SNS_VIP >/dev/null 2>&1

    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

    echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

    echo "RealServer Stoped"

    ;;

    *)

    echo "Usage: $0 {start|stop}"

    exit 1

    esac

    exit 0

    以上参数说明

    SNS_VIP=192.168.1.98            #定义VIP变量

    . /etc/rc.d/init.d/functions #导脚本库

    case "$1" in #case语句 $1传递给该shell脚本的第一个参数

    start)

    ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP #设置Lo0 VIP  netmask  及广播

    /sbin/route add -host $SNS_VIP dev lo:0   ##route del 增加本地路由

    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

    sysctl -p >/dev/null 2>&1 # -p <file>   (default /etc/sysctl.conf) 将标准信息输入设备空文件

    echo "RealServer Start OK"

    ;;

    stop)

    ifconfig lo:0 down

    route del $SNS_VIP >/dev/null 2>&1      #route del 删除本地路由

    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

    echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

    echo "RealServer Stoped"

    ;;

    *)

    echo "Usage: $0 {start|stop}"  #$0 是脚本本身的名字

    exit 1 #表示进程正常退出

    esac #case结束

    exit 0 #表示进程非正常退出

    [root@itcast01 ~]#chmod 750 realserver     #给此脚本赋予权限

     [root@itcast01 ~]#service realserver start          #开启此脚本

    RealServer Start OK    #表示启动成功!

    [root@itcast01 ~]#ifconfig    #查看一下是否真的成功添加了lo:0接口

    第二步:开启二台真实服务器上自带的Apache公司的Http服务器

    [root@itcast01 ~]#service httpd start              #开启Http服务器

    [root@itcast01 ~]#cd /var/www/html/             #进入Http服务器默认的目录

    [root@itcast01 ~]#touch index.html               #创建Http服务器默认访问页面

    [root@itcast01 ~]#vim index.html                #编辑Http服务器默认访问页面

    I am http IP : 真实服务器自己的IP(例如:192.168.200.201)

    用浏览器访问一下:http://192.168.200.201      默认端口80

    查看结果是否是自己编辑的:   I am http IP : 真实服务器自己的IP(例如:192.168.200.201)

    二台真实服务器一样

    第三步:开始搭建负载均衡

    1:安装 ipvsadm  keepalived

    命令:yum –y install ipvsadm keepalived

    2:配置 keepalived 

    命令:vim /etc/keepalived/keepalived.conf

    global_defs {                       

    #   notification_email {             

    #       admin@toxingwang.com

    #   }

    #   notification_email_from master@toxingwang.com

    #   smtp_server smtp.exmail.qq.com

    #   smtp_connect_timeout 30

    router_id LVS_DEVEL             

    }

    vrrp_instance VI_1 {            

    state MASTER             

    interface eth0            

    virtual_router_id 51        

    priority 100                  

    advert_int 1           

    authentication {        

    auth_type PASS

    auth_pass 1111

    }

    virtual_ipaddress {         

    192.168.200.201

    }

    }

    virtual_server 192.168.200.201 80 {

    delay_loop 6           

    lb_algo wrr            

    lb_kind DR                          

    nat_mask 255.255.255.0   

    persistence_timeout 0    

    protocol TCP                          

    real_server 192.168.200.139 80 {     

    weight 3                             

    TCP_CHECK {                     

    connect_timeout 10   

    nb_get_retry 3

    delay_before_retry 3

    connect_port 80

    }

    }

    real_server 192.168.200.140 80 {

    weight 3

    TCP_CHECK {

    connect_timeout 10

    nb_get_retry 3

    delay_before_retry 3

    connect_port 80

    }

    }

    }

    以上参数说明

    global_defs {                        ##全局配置部分

    #   notification_email {             ##下面几行均为全局通知配置,可以实现出现问题后报警,但功能有限,因此注释掉,并采用Nagios监视lvs运行情况

    #       admin@toxingwang.com

    #   }

    #   notification_email_from master@toxingwang.com

    #   smtp_server smtp.exmail.qq.com

    #   smtp_connect_timeout 30

    router_id LVS_DEVEL             ##设置lvsid,在一个网络内应该是唯一的

    }

    vrrp_instance VI_1 {            ##设置vrrp组,唯一且同一LVS服务器组要相同

    state MASTER             ##备份LVS服务器设置为BACKUP

    interface eth0             # #设置对外服务的接口

    virtual_router_id 51        ##设置虚拟路由标识

    priority 100                   #设置优先级,数值越大,优先级越高,backup设置为99,这样就能实现当master宕机后自动将backup变为master,而当原master恢复正常时,则现在的master再次变为backup

    advert_int 1            ##设置同步时间间隔

    authentication {         ##设置验证类型和密码,masterbuckup一定要设置一样

    auth_type PASS

    auth_pass 1111

    }

    virtual_ipaddress {          ##设置VIP,可以多个,每个占一行

    192.168.18.60

    }

    }

    virtual_server 192.168.18.60 80 {

    delay_loop 6            ##健康检查时间间隔,单位s

    lb_algo wrr             ##负载均衡调度算法设置为加权轮叫

    lb_kind DR                              ##负载均衡转发规则

    nat_mask 255.255.255.0   ##网络掩码,DR模式要保障真实服务器和lvs在同一网段

    persistence_timeout 50    ##会话保持时间,单位s

    protocol TCP                           ##协议

    real_server 192.168.18.61 80 {      ##真实服务器配置,80表示端口

    weight 3                             ##权重

    TCP_CHECK {                       ##服务器检测方式设置 keepalived的健康检查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK

    connect_timeout 0    ##连接超时时间

    nb_get_retry 3      ##失败重试次数

    delay_before_retry 3 ##失败重试的间隔时间

    connect_port 80      ##连接的后端端口

    }

    }

    real_server 192.168.18.62 80 {

    weight 3

    TCP_CHECK {

    connect_timeout 10

    nb_get_retry 3

    delay_before_retry 3

    connect_port 80

    }

    }

    }

    启动keepalived服务

    [root@lvs1 ~]# service keepalived start

    注:由于keepalived配置文件有语法错误也能启动,因此看到启动了lvs服务,不代表配置文件没有错误,如果遇到lvs不能正常转发,及时跟踪日志进行处理。

    日志跟踪方法

    1、开两个ssh窗口连接到lvs服务器,第一个窗口运行如下命令:

    [root@lvs1 ~]# tail -f /var/log/message

    2、第二个窗口重新启动keepalived服务,同时观察窗口1中日志的变化,然后根据日志提示解决即可。

    浏览器访问虚拟IP查看结果

    二台真实服务器分别出现在页面上,表明结果是正确的

  • 相关阅读:
    2018最新php笔试题及答案(持续更新)
    快速上手模板制作
    春节期间小游戏同时在线人数最高达2800万人/小时
    公众平台新增修改文章错别字功能 每篇文章允许被修改一次仅限正文内五个字
    微信6.6.2版更新:支持两个账号一键切换
    小程序支持打开APP了 还有小程序的标题栏也可以自定义
    小程序发布重磅数据:日活跃用户数1.7亿、已上线小程序58万个,覆盖100万开发者、2300个第三方平台
    张小龙2018PRO版微信公开课演讲全文 透露2018微信全新计划
    除了跳一跳还有16款微信小游戏可以玩
    小游戏里潜藏着600亿的大市场
  • 原文地址:https://www.cnblogs.com/daiwei1981/p/5390321.html
Copyright © 2020-2023  润新知