设为首页 收藏本站
查看: 1005|回复: 0

[经验分享] 2011

[复制链接]

尚未签到

发表于 2018-12-30 06:56:18 | 显示全部楼层 |阅读模式
  欢迎访问我的网站http://www.fastweb.cc
  实验环境:
负载均衡Master 192.168.10.173
负载均衡Backup 192.168.10.174
Realserver1    192.168.8.175
Realserver2    192.168.8.176
VIP:        192.168.8.177
  掩码: 255.255.252.0
  Master与Backup上安装 ipvsadm   :
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
发现202.206.0.20 这个DNS不能解析,加上另外一个202.106.46.151
ln -sv /usr/src/kernels/2.6.18-164.el5-i686/  /usr/src/linux/     
(两个文件之间加两个空格)  这里很重要,关系到后面keepalived正常启动时有几个进程
tar -zxf ipvsadm-1.24.tar.gz   
cd ipvsadm-1.24
make &&make install
  检查
/sbin/ipvsadm
lsmod |grep ip_vs
  [root@Master_174 ipvsadm-1.24]# /sbin/ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@Master_174 ipvsadm-1.24]# lsmod |grep ip_vs
ip_vs                  77441  0
  --------------------------
LVS客户端
  vi /usr/local/bin/lvs_real
  #!/bin/bash
#description : start realserver
VIP=192.168.8.177
source /etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
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 "Usage: $0 {start|stop}"
exit 1
esac
  解释:
VIP(Virtual IP):直接路由模式的VIP必须跟服务器对外提供服务的IP地址在同一个网段,并且LVS负载均衡器和其他所有提供相同功能的服务器都使用VIP。
VIP被绑定在环回接口lo:0,其广播地址是其本身,子网掩码是255.255.255.255 。这与标准的网络地址设置有很大的不同。采用这种可变长掩码方式把网段划分成只含一个主机地址的目的是避免IP地址冲突。
Echo "1" ,echo "2" 这段的作用是抑制ARP广播。如果不做ARP的抑制,将会有众多的机器 向其他宣称:“嗨 !我是奥巴马,我在这里呢!”,这样就乱套了。
  LVS客户端的验证
chmod u+x /usr/local/bin/lvs_real
启动:/usr/local/bin/lvs_real start
验证:
[root@RS_8_175 ~]# ip add
1: lo:  mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet 192.168.8.177/32 brd 192.168.8.177 scope global lo:0   注意这里
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:88:32:bb brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.175/22 brd 192.168.11.255 scope global eth0
    inet6 fe80::20c:29ff:fe88:32bb/64 scope link
       valid_lft forever preferred_lft forever
3: sit0:  mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0
  ===============================
加入keepalived  安装于Master 和Backup
  下载:wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
安装:tar -xzf keepalived-1.1.17.tar.gz  cd keepalived-1.1.17
./configure --prefix=/usr/local/keepalived &&make &&make install
  keepalived默认检查/etc/keepalived/keepalived.conf 这个配置文件
  mkdir /etc/keepalived  cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
  配置文件keepalived.conf解释
(此处为原文,未按实际修改)
  分为三部分
1.全局定义块
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
  -----
email通知:作用是,有故障,发邮件报警。可选项目,建议不用,用nagios代替。
  LVS负载均衡器标识(lvs_id)。在一个网络内,它应该是唯一的。
  2.VRRP实例定义块
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.16
        192.168.200.17
        192.168.200.18
    }
}
  ---------
同步VRRP组vrrp_sync_group :作用是确定失败切换(FailOver)包含的路由实例个数。即在有两个负载均衡器的场景,一但某个负载均衡器失效,需要自动切换到另外一个负载均衡器的实例是哪些。
  实例组group :至少包含一个VRRP实例。
  VRRP实例vrrp_instance 实例名出自实例组group所包含的那些名字。
*实例状态state: 只有MASTER和BACKUP两种状态。当MASTER所在的服务器失效时,BACKUP所在的系统会自动把它的状态由BACKUP变换成MASTER;当失效的MASTER所在的系统恢复时,BACKUP从MASTER恢复到BACKUP状态。
*通信接口interface :对外提供服务的网络接口,如eth0 ,eth1。
*lvs_sync_daemon_interafce 负载均衡器之间的监控接口中,类似于HA HeartBeat的心跳线。但它的机制优于HeartBeat,因为它没有“裂脑”这个问题,它是以优先级机制来规避这个麻烦的。在DR模式中,lvs_sync_daemon_interface与服务接口interface使用同一个网络接口。
*虚拟路由标识virtual_router_id :这个标识是一个数字,并且同一个VRRP实例使用唯一的标识。即同一个vrrp_stance、MASTER和BACKUP的virtual_router_id 是一致的,同时在整个VRRP内是唯一的。
*优先级priority :这是一个数字,数值愈大,优先级越高。在同一个vrrp_instance里,MASTER的优先级高于BACKUP。
*同步通知间隔advert_int 。MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位为秒。
*验证authentication :包含验证类型和验证密码。类型主要有PASS、AH两种,通常使用的类型为PASS,所说AH使用时有问题。验证密码为明文,同一VRRP实例MASTER与BACKUP使用相同的密码才能正常通信。
  虚拟IP地址vritual_ipaddress 可以有多个地址,每个地址占一行,不需要指定子网掩码。
  3.虚拟服务器定义块
virtual_server 192.168.200.100 443 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
  real_server 192.168.201.100 443 {
        weight 1
        SSL_GET {
            url {
              path /
              digest ff20ad2481f97b1754ef3e12ecd3a9cc
            }
            url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
  virtual_server 10.10.10.2 1358 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
  sorry_server 192.168.200.200 1358
  real_server 192.168.200.2 1358 {
        weight 1
        HTTP_GET {
            url {
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url {
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url {
              path /testurl3/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
  real_server 192.168.200.3 1358 {
        weight 1
        HTTP_GET {
            url {
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334c
            }
            url {
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334c
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
  virtual_server 10.10.10.3 1358 {
    delay_loop 3
    lb_algo rr
    lb_kind NAT
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
  real_server 192.168.200.4 1358 {
        weight 1
        HTTP_GET {
            url {
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url {
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url {
              path /testurl3/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
  real_server 192.168.200.5 1358 {
        weight 1
        HTTP_GET {
            url {
              path /testurl/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url {
              path /testurl2/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            url {
              path /testurl3/test.jsp
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
  -----------
虚拟服务器virtual_server :这个IP来自于VRRP定义块的第“4”步,后面一个空格,然后加上端口号。定义一个VIP,可以实现多个TCP端口的负载均衡功能。
*delay_loop 健康检查时间间隔,单位为秒
*lb_algo 负载均衡调度算法,互联网应用常使用wlc或rr 。
*lb_kind :负载均衡转发的规则,一般包括DR NAT TUN 3种
*persistence_timeout :会话保持时间,单位为秒。这个选项对动态网站很有用处:当用户从远程用账号登录网站时,有了这个会话保持功能,就能把用户的请求转发给同一个应用服务器。
  转发协议 protocol :一般有TCP和UDP两种。
  真实服务器real_server :也即服务器池。real_server的值包括IP和端口号。
*权重 weight 权重值是一个数字,数值越大,权重越高。使用不同的权重值的目的在于为不同性能的机器分配不同的负载。
*TCP检查tcp_check
  
================
本实验中的配置:
MASTER 的keepalived.conf
  ! Configuration File for keepalived
  global_defs {
   router_id LVS_CNC_1
}
  vrrp_sync_group VGM {
    group {
        VI_CACHE
    }
}
  
vrrp_instance VI_CACHE {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.8.177
    }
}
  virtual_server 192.168.8.177 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.252.0
    persistence_timeout 20
    protocol TCP
  real_server 192.168.8.175 80 {
        weight 100
        TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
        }
}
  real_server 192.168.8.176 80 {
        weight 100
        TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
        }
}
  BACKUP 的keepalived.conf 配置
  ! Configuration File for keepalived
  global_defs {
   router_id LVS_CNC_2
}
  vrrp_sync_group VGM {
    group {
        VI_CACHE
    }
}
  
vrrp_instance VI_CACHE {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.8.177
    }
}
  virtual_server 192.168.8.177 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.252.0
    persistence_timeout 20
    protocol TCP
  real_server 192.168.8.175 80 {
        weight 100
        TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
        }
}
  real_server 192.168.8.176 80 {
        weight 100
        TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
        }
}
  
###MASTER与BACKUP配置文件的差异一共只有3处:全局定义的router_id vrrp_instance state  vrrp_instance 的优先级###
/usr/local/keepalived/sbin/keepalived -D
  启动并写入/etc/rc.local
  检查:
[root@Backup_174 keepalived-1.1.17]# /usr/local/keepalived/sbin/keepalived -D
[root@Backup_174 keepalived-1.1.17]# ps aux |grep keepalived
root      4117  0.0  0.2   4920   572 ?        Ss   10:55   0:00 /usr/local/keepalived/sbin/keepalived -D
root      4118  0.1  0.5   4988  1508 ?        S    10:55   0:00 /usr/local/keepalived/sbin/keepalived -D
root      4119  2.5  0.4   4988  1024 ?        S    10:55   0:00 /usr/local/keepalived/sbin/keepalived -D
正常启动应该有三个进程。
  检查ipvsadm能否识别机器
[root@Master_173 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.8.177:80 rr persistent 20
  -> 192.168.8.176:80             Route   100    0          0         
  -> 192.168.8.175:80             Route   100    0          0
  ------------
测试效果:
  把persistence_timeout 20 MASTER和BACKUP这行注释掉
  在8.175 8.176上安装80服务并设置不同的页面
  访问http://192.168.8.177
  在MASTER和BACKUP上执行
watch -n 0.1 ipvsadm -ln
  挺简单的东西,实践一下也得好久,不要认为“这个小实验我会”。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657367-1-1.html 上篇帖子: LVS+KeepAlived:配置高可用集群 下篇帖子: lvs+keepalived-lovecode
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表