zoukankan      html  css  js  c++  java
  • lvs

    notify_down "/sbin/ipvsadm -d -u 10.11.194.221:53 -r 10.11.194.222:53"
    notify_up "/sbin/ipvsadm -a -u 10.11.194.221:53 -r 10.11.194.222:53 -g -w 100"

     [root@localhost lvs]# ipvsadm -d -t 10.0.0.111:80 -r 10.0.0.223:80

    [root@localhost lvs]# ipvsadm -a -t 10.0.0.111:80 -r 10.0.0.223:80 -g -w 3

    http://www.sxt.cn/u/324/blog/3188

    集群脑裂split-brain 

    ac压力测试

    lvs脚本

    DRBD:可以看做是一种网络RAID(镜像RAID1),实现方式:通过网络来镜像整个设备,允许用户在远程机器上建立一个本地块设备的实时镜像,与心跳连接结合使用。DRBD负责接收数据,把数据写到本地磁盘,然后发送个另一个主机,另一个主机再将数据存到主机的磁盘中。每次只允许对一个节点进行读写访问

    LVS要达到的目标:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务集群,

    Hearbeat:提供了所有HA软件所需要的基本功能,比如:心跳检测和资源接管、检测群集中的系统服务、在群集中的节点间转移共享IP地址的所有者等等

    keepalived  配合LVS实现两个功能:1、检测各个服务节点的状态,对故障服务节点进行剔除,对恢复正常的节点重新加入集群 2、VRRP功能:就是HA cluster用功能,keepalived主机出现故障就转移到备机继续提供服务

    Keepalived双机热备实现故障时发送邮件通知

    Linux 高可用(HA)集群之Keepalived详解

    LVS+Keepalived实现负载均衡

    LVS ARP广播产生的问题和处理方式

    sysctl命令详解 

    ipvsadm命令参考

    [root@localhost ~]# sysctl -w net.ipv4.conf.eth0.arp_announce=2

    [root@localhost ~]# sysctl -w net.ipv4.conf.all.arp_announce=2

    [root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

    [root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

    echo  ""  > /var/www/html/index.html

    实测

    环境:三台centos7

    调度器10.0.0.222 (VIP:10.0.0.111 )

    两个realserver 10.0.0.223   10.0.0.224

    yum 安装httpd

    [root@localhost ~]# yum update --exclude=kernel*

    [root@localhost ~]# yum install httpd httpd-devel -y

    关闭 selinux和iptables  :/etc/selinux/conf   和iptabales -F

    [root@localhost ~]# vi /var/www/html/index.html   #输入测试内容  两台realserver分别写入 111 10.0.0.222 和 222 10.0.0.223

    [root@localhost ~]# service httpd restart          #windowsIE浏览器输入ip就能访问到index.html的内容

    虚拟机克隆两个realservers  注意克隆后网卡的mac地址变化 配置文件不变

     [root@localhost ~]# yum install ipvsadm  #注意网络和DNS配置  static需要手动设置dns

    ipaddr

    gateway

    netmask

    dns1

    [root@localhost lvs]# cat DR.sh
    #!/bin/bash

    ###调度器运行脚本
    #---------------mini-rc.lvs_dr-director------------------------
    #set ip_forward OFF for lvs-dr director (1 on, 0 off)
    #(there is no forwarding in the conventional sense for LVS-DR)
    cat /proc/sys/net/ipv4/ip_forward
    echo "0" >/proc/sys/net/ipv4/ip_forward

    #director is not gw for realservers: leave icmp redirects on
    #echo 'setting icmp redirects (1 on, 0 off) '
    #echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects
    #cat /proc/sys/net/ipv4/conf/all/send_redirects
    #echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects
    #cat /proc/sys/net/ipv4/conf/default/send_redirects
    #echo "1" >/proc/sys/net/ipv4/conf/eth0/send_redirects
    #cat /proc/sys/net/ipv4/conf/eth0/send_redirects

    #setup DIP
    ETH=eno16777736  ###网卡名称 主要为了centos7网卡名称不是eth0设计
    DIP=10.0.0.222  
    VIP=10.0.0.111
    RS1=10.0.0.223
    RS2=10.0.0.224

    iptables -F

    #service httpd start    #测试的时候要启用
    /sbin/ifconfig $ETH $DIP/8
    #add ethernet device and routing for VIP 10.0.0.111
    /sbin/ifconfig $ETH:0 $VIP broadcast $VIP netmask 255.255.255.255   #如果有keepalived就不需要这两步  keepalived设置配置文件后会自动添加
    /sbin/route add -host $VIP dev $ETH:0
    #listing ifconfig info for VIP 10.0.0.111
    /sbin/ifconfig $ETH:0

    #listing routing info for VIP 192.168.1.111
    /bin/netstat -rn

    #setup_ipvsadm_table
    #clear ipvsadm table
    /sbin/ipvsadm -C
    #installing LVS services with ipvsadm
    #add telnet to VIP with round robin scheduling
    /sbin/ipvsadm -A -t $VIP:80 -s rr

    #forward telnet to realserver using direct routing with weight 1
    /sbin/ipvsadm -a -t $VIP:80 -r $RS1:80 -g -w 1

    #forward telnet to realserver using direct routing with weight 1
    /sbin/ipvsadm -a -t $VIP:80 -r $RS2:80 -g -w 1

    #displaying ipvsadm settings
    /sbin/ipvsadm

    #not installing a default gw for LVS_TYPE vs-dr
    #---------------mini-rc.lvs_dr-director------------------------

    [root@RS1 ~]# cat rs.sh
    #!/bin/bash

    ###真实机运行脚本
    #----------mini-rc.lvs_dr-realserver------------------
    #setup IP
    ETH=eno16777736
    VIP=10.0.0.111
    RS=10.0.0.223  #不同realservers不同ip 其他脚本设置一样 就这不一样
    DF=10.0.0.1

    iptables -F
    /sbin/ifconfig $ETH $RS/8
    #installing default gw 192.168.1.1 for vs-dr
    /sbin/route add default gw $DF
    #showing routing table
    /bin/netstat -rn

    #set_realserver_ip_forwarding to OFF (1 on, 0 off).
    echo "0" >/proc/sys/net/ipv4/ip_forward


    #install_realserver_vip
    /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
    #ifconfig output
    /sbin/ifconfig lo:0
    #installing route for VIP 192.168.1.11 on device lo:0
    /sbin/route add -host $VIP dev lo:0
    #listing routing info for VIP 192.168.1.11
    /bin/netstat -rn

    #hiding interface lo:0, will not arp
    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
    cat /proc/sys/net/ipv4/conf/all/arp_ignore
    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
    cat /proc/sys/net/ipv4/conf/lo/arp_announce

    #----------mini-rc.lvs_dr-realserver------------------

     ipvsadm -L    #查看lvs运行状态

    tail -f /vat/log/messages  #日志查看启动日志     tail -f  可以实时打印新产生的日志 一有新日志就会打印

    注意点: 一定要关闭iptables  否则访问会出现无法到主机路由之类的

    [root@DR-MASTER ~]# cat /etc/keepalived/keepalived.conf 
    global_defs {
       notification_email {
         dba.gao@gmail.com    
         ixdba@163.com
       }
       notification_email_from Keepalived@localhost         #设置邮件的发送地址。
       smtp_server 192.168.200.1    #设置smtp server地址。
       smtp_connect_timeout 30      #设置连接smtp服务器超时时间。
       router_id  LVS_MASTER    #运行Keepalived服务器的一个标识。发邮件时显示在邮件标题中的信息
    }
    #vrrp实例定义部分
    vrrp_instance VI_1 {
    state MASTER  # 备机 这里改为BACKUP
        interface eth0
        virtual_router_id 51
    priority 100 # 备机 这里改为99
     advert_int 1 authentication { auth_type PASS auth_pass 1111 #设置验证与BACKUP必须使用相同的密码才能正常通信。 } virtual_ipaddress { #设设置多个虚拟IP地址,每行一个。 192.168.1.9 } } #虚拟服务器定义部分 virtual_server 192.168.1.9 80 { delay_loop 6 #设置健康检查时间,单位是秒。 lb_algo rr #设置负载调度算法,这里设置为rr,即轮询算法。 lb_kind DR #设置LVS实现负载均衡的机制,可以有NAT、TUN和DR三个模式可选。 persistence_timeout 50 protocol TCP #指定转发协议类型,有tcp和udp两种。 real_server 192.168.1.7 80 { #erver的真实IP地址和端口,ip与端口之间用空格隔开。 weight 3 TCP_CHECK { #realserve的状态检测设置部分,单位是秒 connect_timeout 10 #10秒无响应超时 nb_get_retry 3 #重试次数 delay_before_retry 3 #重试间隔 } } real_server 192.168.1.8 80 { #配置服务节点2 weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
  • 相关阅读:
    PAT 1006 Sign In and Sign Out
    PAT 1004. Counting Leaves
    JavaEE开发环境安装
    NoSql数据库探讨
    maven的配置
    VMWARE 下使用 32位 Ubuntu Linux ,不能给它分配超过3.5G 内存?
    XCODE 4.3 WITH NO GCC?
    在苹果虚拟机上跑 ROR —— Ruby on Rails On Vmware OSX 10.7.3
    推荐一首让人疯狂的好歌《Pumped Up Kicks》。好吧,顺便测下博客园可以写点无关技术的帖子吗?
    RUBY元编程学习之”编写你的第一种领域专属语言“
  • 原文地址:https://www.cnblogs.com/hanxing/p/4419903.html
Copyright © 2011-2022 走看看