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 } } }
  • 相关阅读:
    CDH5.13 集成Kerberos配置
    使用bash脚本删除文件最后几行
    yolov3模型微调(fine-tune)备忘
    ubuntu 18.04 rsync 命令使用 服务端配置
    python 子包调用 跨目录调用
    [转]命令行界面 (CLI)、终端 (Terminal)、Shell、TTY的联系与区别
    bash shell 判断变量是否在列表中
    TensorFlow 图像分类模型 inception_resnet_v2 模型导出、冻结与使用
    numpy 数组集合运算及下标操作
    Win10 Service'MongoDB Server' failed to start. Verify that you have sufficient privileges to start system services【简记】
  • 原文地址:https://www.cnblogs.com/hanxing/p/4419903.html
Copyright © 2011-2022 走看看