zoukankan      html  css  js  c++  java
  • lvs+keepalived+mariadb集群

    1、环境准备
    节点1:172.16.2.95
    节点2:172.16.2.160
    节点3:172.16.2.220
    LVS1:172.16.2.67
    LVS2:172.16.2.234

    2、mariadb集群的安装

    https://www.cnblogs.com/linyouyi/p/11515639.html

    3、在三台安装mariadb机器操作

    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
    ifconfig lo:0 172.16.2.253 broadcast 172.16.2.253 netmask 255.255.255.255 up
    #ifconfig lo:0 172.16.2.253 netmask 255.255.255.255 up
    route add -host 172.16.2.253 lo:0

    3.1、查看虚拟ip

    //01
    [root@hadoop01 linyouyi]# ip addr show lo
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet 172.16.2.253/32 brd 172.16.2.253 scope global lo:0
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    [root@hadoop01 linyouyi]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         172.16.2.1      0.0.0.0         UG    0      0        0 eth0
    0.0.0.0         172.16.2.1      0.0.0.0         UG    100    0        0 eth0
    169.254.169.254 172.16.2.1      255.255.255.255 UGH   100    0        0 eth0
    172.16.2.0      0.0.0.0         255.255.255.0   U     100    0        0 eth0
    172.16.2.253    0.0.0.0         255.255.255.255 UH    0      0        0 lo
    172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
    //02
    [root@hadoop02 mariadb]# ip addr show lo
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet 172.16.2.253/32 brd 172.16.2.253 scope global lo:0
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    [root@hadoop02 mariadb]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         172.16.2.1      0.0.0.0         UG    100    0        0 eth0
    169.254.169.254 172.16.2.1      255.255.255.255 UGH   100    0        0 eth0
    172.16.2.0      0.0.0.0         255.255.255.0   U     100    0        0 eth0
    172.16.2.253    0.0.0.0         255.255.255.255 UH    0      0        0 lo
    172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
    //03
    [root@hadoop03 mariadb]# ip addr show lo
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet 172.16.2.253/32 brd 172.16.2.253 scope global lo:0
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    [root@hadoop03 mariadb]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         172.16.2.1      0.0.0.0         UG    100    0        0 eth0
    169.254.169.254 172.16.2.1      255.255.255.255 UGH   100    0        0 eth0
    172.16.2.0      0.0.0.0         255.255.255.0   U     100    0        0 eth0
    172.16.2.253    0.0.0.0         255.255.255.255 UH    0      0        0 lo
    172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0

    4、LVS1安装keepalived-1.3.5和ipvsadm-1.27

    [root@LVS1 ~]# yum -y install keepalived ipvsadm
    [root@LVS1 ~]# cd /etc/keepalived
    [root@LVS1 keepalived]# cp keepalived.conf keepalived.conf.bak
    [root@LVS1 keepalived]# vim keepalived.conf
    global_defs {
        notification_email {
            admin@linyouyi.com
        }
        notification_email_from ka@localhost
        smtp_server 127.0.0.1
        smtp_connect_timeout 30
        router_id lvs1
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 50
        priority 100
        advert_int 1
        authentication {
            auth_type pass
            auth_pass forlvs
        }
        virtual_ipaddress { 
            172.16.2.253
        }
    }
    
    virtual_server 172.16.2.253 3306 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        nat_mask 255.255.255.255
        persistence_timeout 600
        protocol TCP
        real_server 172.16.2.95 3306 {
            weight 1
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 3306
            }
        }
        real_server 172.16.2.220 3306 {
            weight 1
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 3306
            }
        }
        real_server 172.16.2.160 3306 {
            weight 1
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 3306
            }
        }
    }
    
    
    [root@LVS1 keepalived]# systemctl start keepalived
    [root@LVS1 keepalived]# ipvsadm -Ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  172.16.2.253:3306 rr persistent 600
      -> 172.16.2.95:3306             Route   1      0          0         
      -> 172.16.2.160:3306            Route   1      0          0         
      -> 172.16.2.220:3306            Route   1      0          0 
    // 但是其他的机器总是访问不了vip,不知道是云主机不能用keepalived虚拟ip还是啥原因,还没找到

    4.1、测试

    [root@LVS1 keepalived]# ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether fa:16:3e:2f:b0:e0 brd ff:ff:ff:ff:ff:ff
        inet 172.16.2.67/24 brd 172.16.2.255 scope global dynamic eth0
           valid_lft 85187sec preferred_lft 85187sec
        inet 172.16.2.253/32 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::f816:3eff:fe2f:b0e0/64 scope link 
           valid_lft forever preferred_lft forever
    //把数据库220的mariadb停掉
    [root@LVS1 keepalived]# ipvsadm
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  cx--0009.novalocal:mysql rr persistent 600
      -> 172.16.2.95:mysql            Route   1      0          0         
      -> 172.16.2.160:mysql           Route   1      0          0

    5、LVS1安装keepalived-1.3.5和ipvsadm-1.27

    [root@LVS2 keepalived]# vim keepalived.conf
    global_defs {
        
        router_id lvs2
    }
    
    vrrp_instance VI_1 {
        state BACKUP
        
        priority 99
        
        }
        
    }
    //配置文件这几项改一下,其余的步骤和LVS1一样

    5.1、测试LVS高可用

    把LVS1的keepalived停掉,看VIP会不会自动移动到LVS2

    [root@LVS1 keepalived]# systemctl stop keepalived
    
    [root@LVS2 ~]# ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether fa:16:3e:a3:75:41 brd ff:ff:ff:ff:ff:ff
        inet 172.16.2.234/24 brd 172.16.2.255 scope global dynamic eth0
           valid_lft 62412sec preferred_lft 62412sec
        inet 172.16.2.253/32 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::f816:3eff:fea3:7541/64 scope link 
           valid_lft forever preferred_lft forever
    [root@LVS2 ~]# ipvsadm
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  cx--0015.novalocal:mysql rr persistent 600
      -> 172.16.2.95:mysql            Route   1      0          0         
      -> 172.16.2.160:mysql           Route   1      0          0         
      -> 172.16.2.220:mysql           Route   1      0          0 

    但是其他的机器总是访问不了vip,不知道是云主机不能用keepalived虚拟ip还是啥原因,还没找到,似乎是云服务器的vip需要申请,跟服务商申请。反正就是云服务器跟虚拟机不一样

    https://www.cnblogs.com/galengao/articles/7417520.html

    //每台主机查一下arp,发现VIP的HWaddress都是incomplete,也就是无法获取mac硬件地址,所以不知道指向那台机器,因此无法ping通,无法访问
    [root@cx--0008 ~]# arp -n
    Address                  HWtype  HWaddress           Flags Mask            Iface
    172.16.2.1               ether   fa:16:3e:3d:4d:a0   C                     eth0
    10.42.2.0                        (incomplete)                              flannel.1
    172.16.2.95              ether   fa:16:3e:dc:a1:c6   C                     eth0
    172.16.2.222                     (incomplete)                              eth0
    172.16.2.67              ether   fa:16:3e:2f:b0:e0   C                     eth0
    172.17.0.2               ether   02:42:ac:11:00:02   C                     docker0
    10.42.1.0                        (incomplete)                              flannel.1
    172.17.0.4               ether   02:42:ac:11:00:04   C                     docker0
    172.16.2.254             ether   fa:16:3e:de:bd:f9   C                     eth0
    172.16.2.234             ether   fa:16:3e:a3:75:41   C                     eth0
    172.16.2.253                     (incomplete)                              eth0
    172.17.0.3               ether   02:42:ac:11:00:03   C                     docker0
    172.16.2.17              ether   fa:16:3e:f3:5e:6f   C                     eth0
    
    //清空arp缓存依然不行
    [root@LVS1 keepalived]# arp -n|awk '/^[1-9]/{system("arp -d "$1)}'
    SIOCDARP(dontpub): Network is unreachable
    SIOCDARP(dontpub): Network is unreachable

    ipvsadm -lnc

  • 相关阅读:
    python笔记1
    git笔记
    手撸一个简陋直播系统
    spring-boot学习笔记1
    设计模式1--简单工厂模式
    网联:第一章:浏览器生成消息
    php线上预览日志--4.websocket客户端
    php线上预览日志--3.websocket服务部署
    php线上预览日志--2.谷歌插件开发
    php线上预览日志--1.概述
  • 原文地址:https://www.cnblogs.com/linyouyi/p/11515642.html
Copyright © 2011-2022 走看看