企业之keepalived

Keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。它是以VRRP协议(虚拟路由冗余协议)为基础的。
Keepalived主要有三个模块,分别是core、check和vrrp。Core模块是keepalived的核心模块,主要负责主进程的启动,维
护以及全局配置文件的加载和解析。Check模块主要负责健康检查。Vrrp模块主要用来实现VRRP协议的。

LVS集群采用三层结构,其主要组成部分为:

A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。

B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。

C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

VS/TUN技术对服务器有要求,即所有的服务器必须支持“ IP Tunneling”或者““ IP
Encapsulation”协议。目前,VS/TUN的后端服务器主要运行 Linux 操作系统。在VS/TUN
的集群系统中,负载调度器只将请求调度到不同的后端服务器,后端服务器将应答的数据直接返回给用户。这样,负载调度器就可以处理大量的请求,它甚至可以调

度百台以上的服务器(同等规模的服务器),而它不会成为系统的瓶颈。即使负载调度器只有100Mbps的全双工网卡,整个系统的最大吞吐量可超过
1Gbps。所以,VS/TUN可以极大地增加负载调度器调度的服务器数量。VS/TUN调度器可以调度上百台服务器,而它本身不会成为系统的瓶颈,可以
用来构建高性能的超级服务器。

VS/NAT
的优点是服务器可以运行任何支持TCP/IP的操作系统,它只需要一个IP地址配置在调度器上,服务器组可以用私有的IP地址。缺点是它的伸缩能力有限,
当服务器结点数目升到20时,调度器本身有可能成为系统的新瓶颈,因为在VS/NAT中请求和响应报文都需要通过负载调度器。

VS/DR方式是通过改写请求报文中的MAC地址部分来实现的。Director和RealServer必需在物理上有一个网卡通过不间断的局域网相连。 RealServer上绑定的VIP配置在各自Non-ARP的网络设备上(如lo或tunl),Director的VIP地址对外可见,而RealServer的VIP对外是不可见的。RealServer的地址即可以是内部地址,也可以是真实地址。

DR模式,VS和RS在同一网段。客户端给vip发送请求,然后vip根据请求选择合适的real server,然后vip将这个请求的地址改为real server的地址。

TUN模式,支持广域网连接,在数据传输过程也支持隧道协议。封装过大的数据。

NAT模式,VS和RS不在同一网段。

准备工作:
4台虚拟机:
server2和server3的内存1024
server7和server8的内存512

server3.example.com   172.25.85.3   1024M
server2.example.com   172.25.85.2   1024M (server2做调度)
server7.example.com   172.25.85.7   512M
server8.example.com   172.25.85.8   512M

1.在server7,server8上:
   yum install httpd -y
  /etc/init.d/httpd  start

在server7上:
   echo server7.linux.org > /var/www/html/index.html
   ip addr add 172.25.85.100/32 dev eth0

在server8上:
   echo server8.westos.org > /var/www/html/index.html
   ip addr add 172.25.85.100/32 dev eth0

在server2上:  ##server2作为调度主机
   ip addr add 172.25.85.100/24   dev eth0
   ip addr show
   ipsvadm --help
   ipvsadm -A -t 172.25.85.100:80  -s rr       ##加载 rule

##-A添加虚拟ip  -s指定调度算法 -a添加real server  -g直联DR模式  -t tcp协议

ipvsadm -a -t 172.25.85.100:80  -r 172.25.85.7:80 -g
   ipvsadm -a -t 172.25.85.100:80  -r 172.25.85.8:80 -g
   ipvsadm -l
   /etc/init.d/ipvsadm save               ##将ipvsadm信息保存在/etc/sysconfig/ipvsadm/

2.在server7上:
   yum install arptables_jf  -y

arptables -A IN -d 172.25.85.100  -j DROP

arptables -A OUT  -s  172.25.85.100  -j mangle  --mangle-ip-s 172.25.85.7
   /etc/init.d/arptables_jf save
   /etc/init.d/httpd  start

  在server8上:
   yum install arptables_jf  -y
   arptables -A IN -d 172.25.85.100 -j DROP
   arptables -A OUT  -s  172.25.85.100  -j mangle  --mangle-ip-s 172.25.85.8
   /etc/init.d/arptables_jf save
   /etc/init.d/httpd  stop

在浏览器中打开172.25.85.100

3.在server2上结合了heartbeat:
   cd /usr/share/doc/ldirectord-3.9.5
   cp ldirectord.cf  /etc/ha.d
   vim /etc/ha.d/ldirectord.cf

virtual=172.25.85.100:80
        real=172.25.85.7:80 gate
        real=172.25.85.8:80 gate
        fallback=127.0.0.1:80 gate
        service=http
        scheduler=rr
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80
        request="index.html"
#       receive="Test Page"
#       virtualhost=www.x.y.z

ipvsadm -C
   ipvsadm -l
   /etc/init.d/ldirectord start
   ipvsadm -l

scp  /etc/ha.d/ldirectord.cf [email protected]:/etc/ha.d/

ip addr del 172.25.85.100/24 dev eth0
   cd /etc/ha.d
   vim haresources

server2.example.com  IPaddr::172.25.85.100/24/eth1   httpd ldirectord

scp /etc/ha.d/haresources 172.25.85.3:/etc/ha.d/
   /etc/init.d/heartbeat stop
   ipvsadm -l

在server3上:

/etc/init.d/heartbeat start
   tail -f /var/log/messages
   ipvsadm -l

ip addr show
   出现虚拟ip172.25.85.100
 
 
 如果开启server2上的heartbeat。关闭server3上的heartbeat。虚拟ip出现在server2上。

4.在server3/2上:
    /etc/init.d/heartbeat stop
    /etc/init.d/ldirectord start
 
    server3:  
    tar  zxf  keepalived-1.2.20.tar.gz
    cd /root/keepalived-1.2.20
    yum install openssl-devel   libnl-devel net-snmp-devel   -y
    cd /root
    rpm -ivh libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm
    cd /root/keepalived-1.2.20
    ./configure --prefix=/usr/local/keepalived   ##编译成功

make
    make install

cd /usr/local/
   scp  -r  keepalived/  172.25.85.3:/usr/local
   cd /usr/local/keepalived/etc/rc.d/init.d/
   ln -s  /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
   ln -s /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/
   ln -s /usr/local/keepalived/etc/keepalived/ /etc/
   ln -s /usr/local/keepalived/sbin/keepalived /sbin/
   ln  -s /usr/local/keepalived/bin/genhash  /bin/

vim keepalived.conf

notification_email_from [email protected]
smtp_server  127.0.0.1
vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     172.25.85.100
    }
}
virtual_server 172.25.85.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
  #  persistence_timeout 50
    protocol TCP
    real_server 172.25.85.7 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
 real_server 172.25.85.8  80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

scp keepalived.conf  172.25.85.3:/etc/keepalived/
   /etc/init.d/keepalived start
   tail -f /var/log/messages

在server3上:
   ln -s  /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
   ln -s /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/
   ln -s /usr/local/keepalived/etc/keepalived/ /etc/
   ln -s /usr/local/keepalived/sbin/keepalived /sbin/
   ln  -s /usr/local/keepalived/bin/genhash  /bin/
   vim keepalived.conf

notification_email_from [email protected]
  smtp_server  127.0.0.1
vrrp_instance VI_1 {
    state BACKUP
    interface eth1
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     172.25.85.100
    }
}

/etc/init.d/keepalived start
  

检测:

打开server7和server8中的httpd:

  在浏览器中打开172.25.85.100,交替出现
server7.linux.org 和 server8.westos.org

   在server2中:ipvsadm -l

   关闭server2中的keepalived,在server3上,ipvsadm -l

4.在serve7/8上安装:
    yum install vsftpd -y
   /etc/init.d/vsftpd start
   
   server7:
   cd /var/ftp  
   touch server7  
   ip addr add 172.25.85.101/32 dev eth1
   vim /etc/sysconfig/arptables

[0:0] -A IN -d 172.25.85.100 -j DROP
[0:0] -A OUT -s 172.25.85.100 -j mangle --mangle-ip-s 172.25.85.7
[0:0] -A IN -d 172.25.85.101 -j DROP
[0:0] -A OUT -s 172.25.85.101 -j mangle --mangle-ip-s 172.25.85.7
COMMIT

/etc/init.d/arptables_jf restart

server8:
   cd /var/ftp  
   ip addr add 172.25.85.101/32 dev eth1   touch server8

vim /etc/sysconfig/arptables

[0:0] -A IN -d 172.25.85.100 -j DROP
[0:0] -A OUT -s 172.25.85.100 -j mangle --mangle-ip-s 172.25.85.8
[0:0] -A IN -d 172.25.85.101 -j DROP
[0:0] -A OUT -s 172.25.85.101 -j mangle --mangle-ip-s 172.25.85.8   
COMMIT

/etc/init.d/arptables_jf restart

server2:
   vim  /etc/keepalived/keepalived.conf    
##添加一个虚拟ip  172.25.85.101

再添加以下内容

vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     172.25.85.100
     172.25.85.101
    }
}
virtual_server 172.25.85.101 21 {
    delay_loop 6
    lb_algo wlc
    lb_kind DR
    persistence_timeout 60
    protocol TCP
    real_server 172.25.85.7 21 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
 real_server 172.25.85.8 21 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

/etc/init.d/keepalived restart
  scp keepalived.conf [email protected]:/etc/keepalived/

server3:
   vim  /etc/keepalived/keepalived.conf

修改优先级为50,并修改state 为BACKUP

/etc/init.d/keepalived restart

找一个不同于172.25.85.*网段的ip进行检测:
真机ip是172.25.254.85

在server3上:

fullnat模式就是完全NAT,fullnat模式需要编译内核。

server3.example.com  172.25.85.3

编译内核:
1.在server3上:
   rpm -ivh   kernel-2.6.32-220.23.1.el6.src.rpm
   cd rpmbuild/SPECS
   yum install rpm-build -y
   rpmbuild -bp  kernel.spec
   yum install gcc redhat-rpm-config patchutils xmlto asciidoc elfutils-libelf-devel zlib-devel binutils-devel newt-devel python-devel perl-ExtUtils-Embed -y
 
   rpmbuild -bp  kernel.spec
   yum install  asciidoc-8.4.5-4.1.el6.noarch.rpm

slang-devel-2.2.1-1.el6.x86_64.rpm

newt-devel-0.52.11-3.el6.x86_64.rpm  -y
   rpmbuild -bp  kernel.spec   ##时间较长

另外打开一个终端:server3:
   yum provides  */rngd  
   yum install rng-tools -y    
   rngd -r /dev/urandom     ## rpmbuild -bp  kernel.spec 立刻结束
   cd /root/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6

cd   /root/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6
   tar  Lvs-fullnat-synproxy.tar.gz
   cd   vs-fullnat-synproxy
   cp   lvs-2.6.32-220.23.1.el6.patch             ../linux-2.6.32-220.23.1.el6.x86_64/
   cd   ../linux-2.6.32-220.23.1.el6.x86_64

##目录为/root/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64
   yum  install patch -y
   patch -p1 < lvs-2.6.32-220.23.1.el6.patch       ##
   vim Makefile

EXTRAVERSION=-220.23.1.el6

  先给server3分配20G的虚拟硬盘,并进行拉伸
   make -j2
   make modules_install           
   make install
   
   重启主机。检查内核是不是最新安装的内核。   

2.在server3:
  cd  /root/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/lvs-fullnat-synproxy
  cp lvs-tools.tar.gz  /root

tar zxf  lvs-tools.tar.gz
  cd /root/tools/keepalived
  yum install openssl-devel popt-devel
  ./configure  --with-kernel-dir="/lib/modules/`uname -r`/build"   ##编译成功

make
   make install
   which keepalived    ##/usr/local/sbin/keepalived
   yum install ipvsadm -y
   ipvsadm -l
   cd /root/tools/ipvsadm
   make
   make install

时间: 2024-11-05 05:44:35

企业之keepalived的相关文章

企业实战-KeepAlived+Redis实现主从热备、秒级切换

最近公司生产环境需要做一个Redis+Keepalived的集群架构,分别用六个端口,实现多路复用,最终实现主从热备.秒级切换. 一.部署Redis集群 首先用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环 境.然后模拟成功,方可去线上生产服务器部署. redis 采用 redis-3.2.4 版本. 两台虚拟机都是 CentOS ,一台 CentOS6.5 (IP:192.168.31.245),一台 CentOS7(IP:192.168.31.210)

企业OA系统架构改造案例摘录(Raid加速技术+Docker+MariaDB+Keepalived)

某某企业OA系统架构改造   背景: 随着企业业务的不断发展,OA系统数据量不断增多,数据检索量不断增大,对后端数据库的访问压力越来越大,OA单系统架构已经无法满足当前业务量的需求,急需一套全新的架构来支撑不断增加业务数据量,同时保证系统运行不间断和高可用性,以适应当前企业发展要求. OA新系统架构实现: 新OA系统架构采用3台(一台为立旧服务器,两台(DELL R430)新采购服务器)服务器为架构模型,将WEB源程序和数据库进行分离,减少因多个应用对单一服务器的负载,提升OA系统整体性能,同时

企业中MySQL高可用集群架构三部曲之MM+keepalived

各位老铁们,老张与大家又见面了.看到各位在博客里面给我的留言和访问量的情况,我很是欣慰,也谢谢大家对我的认可.我写这些博客,就是想把自己对于MySQL数据库的一些看法和自己平时的实战经验分享出来,我们可以一起探讨,共同进步.也保证今后只要一有空就更新博文,推出更多的干货. 我的学生经常对我说:"张老师,每次我遇到报错,有时还是会百度,但是最烦的是不知道百度哪篇帖子说的是正确的".其实这些呢,都是因为自己还没有对MySQL数据库核心知识的不熟悉,和对技术掌握的不牢固.平时下得功夫还是不到

llinux企业常用服务---HA+keepalived双机热备

部署前准备: iptables和selinux没配置,关掉 挂载系统镜像作为本地yum源,修改yum文件 源码包准备keepalived-1.2.13.tar.gz 环境介绍: 2台centos6.5虚拟机,主服务器ip:192.168.100.150:从服务器ip:192.168.100.151:集群vip:192.168.100.95 1.安装keepalived(主从上都需要安装) yum -y install kernel-devel openssl-devel popt-devel i

linux企业常用服务---lvs+Keepalived高可用集群

部署前准备: iptables和selinux没配置,关掉 挂载系统镜像作为本地yum源,修改yum文件 源码包准备keepalived-1.2.13.tar.gz 环境介绍: 主服务器ip:192.168.100.157(keeplived+lvs) 从服务器ip:192.168.100.156(keeplived+lvs) 节点服务器ip:192.168.100.153-192.168.100.155(httpd) 集群vip:192.168.100.95 1.安装keepalived(在两

DNS域名服务器双master+ntp时间服务器双主+keepalived企业高可用方案 附脚本

一.环境 [[email protected] ~]# cat /etc/issue Red Hat Enterprise Linux Server release 6.6 (Santiago) Kernel \r on an \m [[email protected] ~]# uname -r 2.6.32-504.el6.x86_64 角色 master-backup backup-master client ip 192.168.42.9 192.168.42.11 192.168.42.

企业 - keepalived + lvs

                                 keepalived keepalived是什么 keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障 那么什么是高可用呢 计算机系统的可用性用平均无故障时间(MTTF)来度量,即计算机系统平均能够正常运行多长时间,才发生一次故障.系统的可用性越高,平均无故障时间越长. 负载均衡服务器的高可用性 为了屏蔽负载均衡服务器的失效,需要建立一个备份机.主服务器和备份机上 都运行H

keepalived 高可用问题及企业解决方案实战

keepalived 实现服务器级别的接管,比如nginx 宕机了 不会接管,可以写shell 脚本实现,当nginx 挂了,把keepalived 停掉while truedo if [ 'ps -ef|grep nginx|grep -v grep|wc -l' -lt 2 ]then/etc/init.d/keepalived stopfisleep 5done 原文地址:http://blog.51cto.com/skinglzw/2156507

企业集群平台架构实现与应用实战(HAproxy+keepalived篇)

一.四层和七层负载均衡的区别 所谓的四层就是ISO参考模型中的第四层.四层负载均衡也称为四层交换机,它主要是通过分析IP层及TCP/UDP层的流量实现的基于IP加端口的负载均衡.常见的基于四层的负载均衡器有LVS.F5等. 以常见的TCP应用为例,负载均衡器在接收到第一个来自客户端的SYN请求时,会通过设定的负载均衡算法选择一个最佳的后端服务器,同时将报文中目标IP地址修改为后端服务器IP,然后直接转发给该后端服务器,这样一个负载均衡请求就完成了.从这个过程来看,一个TCP连接是客户端和服务器直