Keepalived虚拟机搭建

来源:互联网 发布:盘点后的数据如何导入 编辑:程序博客网 时间:2024/05/22 06:29

软件介绍


  1. 什么是负载均衡高可用

    nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重。

    为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(High Availability)监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供负载均衡服务;当备份管理器又从主管理器收到“I am alive”这样的信息时,它就释放服务IP地址,这样的主服务器就开始再次提供负载均衡服务。

  2. 什么是keepalived

    keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。

    Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

  3. keepalived工作原理

    keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

    虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(VIP = Virtual IP Address,虚拟IP地址,该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

    keepalived主要有三个模块,分别是core、check和VRRP。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。VRRP模块是来实现VRRP协议的。

个人理解


  1. 注意

    keepalived需要一个虚拟IP(vip),这个虚拟ip是需要服务器提供商支持的,在安装前要确保服务器是支持该项服务的。

  2. 原理

    keepalived是采用vrrp协议来实现的,其实最重要的一点就是虚拟IP的应用。如何理解虚拟IP呢?下面通过举个例子来进行说明:

    我们现在有两台服务器:192.168.1.5和192.168.1.6,两台服务器部署了一样的服务对外提供服务。 
    如果主服务宕机,需要手动切换到192.168.1.6的备用服务上才能正常。这样做显然是不智能的。不符合迈动互联的智慧企业领导者的形象。

    而keepalived就是为了解决这个问题。我们现在有一个虚拟IP:192.168.1.7。keepalived会把这个IP绑定到192.168.1.5上。外网直接访问192.168.1.7即可访问到192.168.1.5。当主服务宕机时,keepalived会把这个虚拟IP绑定到备服务器192.168.1.6上。这一切都是keepalived自动完成的。其实可以这样理解,keepalived是两台服务器的代理,哪个服务gameover,就把它踢出去,让其他的继续提供相同的服务。

安装准备


  1. 安装环境

    yum -y install kernel-devel*yum -y install openssl-*yum -y install popt-develyum -y install lrzszyum -y install openssh-clientsyum -y install libnl libnl-devel popt
  2. 上传软件

    将keepalived-1.2.15.tar.gz上传到服务器/root/下。

安装步骤(主备服务器都需要执行以下步骤)


  1. 解压并进入解压目录

    cd /roottar -zxvf keepalived-1.2.15.tar.gzcd keepalived-1.2.15
  2. 执行配置命令

    安装在/usr/local./configure --prefix=/usr/local/keepalived
  3. 编译

    make
  4. 安装

    make install
  5. 拷贝执行文件

    cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
  6. 将init.d文件拷贝到etc下,加入开机启动项

    cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
  7. 将keepalived文件拷贝到etc下,加入网卡配置

    cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
  8. 创建keepalived文件夹

    mkdir -p /etc/keepalived
  9. 将keepalived配置文件拷贝到etc下

    cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
  10. 添加可执行权限

    chmod +x /etc/init.d/keepalived
  11. 加入开机启动项

    chkconfig --add keepalived   添加时必须保证/etc/init.d/keepalived存在chkconfig --list   添加完可查询系统服务是否存在
  12. 配置日志文件

    1.将keepalived日志输出到local0:    vi /etc/sysconfig/keepalived    KEEPALIVED_OPTIONS="-D -d -S 0"2.在/etc/rsyslog.conf里添加:    local0.*  /var/log/keepalived.log
  13. 启动keepalived和rsyslog日志服务

    keepalived    启动:service keepalived start    停止:service keepalived stop    重启:service keepalived restartrsyslog    service rsyslog start    service rsyslog restart
  14. 打开防火墙的通讯地址

    iptables -A INPUT -d 224.0.0.18 -j ACCEPT/etc/rc.d/init.d/iptables save

    到此,就算安装完成了,不过还需要配置一下:虚拟IP,和主备服务器。

主备服务器的配置

主服务:192.168.128.128 备服务:192.168.128.129 虚拟IP:192.168.128.130

  1. 主服务器配置

    修改主nginx下/etc/keepalived/keepalived.conf文件

    ! Configuration File for keepalived#全局配置global_defs {notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个    XXX@XXX.com}notification_email_from XXX@XXX.com  #指定发件人#smtp_server XXX.smtp.com                             #指定smtp服务器地址#smtp_connect_timeout 30                               #指定smtp连接超时时间router_id LVS_DEVEL                                    #运行keepalived机器的一个标识}vrrp_instance VI_1 {    state MASTER           #标示状态为MASTER 备份机为BACKUP    interface eth0         #设置实例绑定的网卡    virtual_router_id 51   #同一实例下virtual_router_id必须相同    priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒    authentication {       #设置认证        auth_type PASS     #主从服务器验证方式        auth_pass 8888    }    virtual_ipaddress {    #设置vip        192.168.128.130       #可以多个虚拟IP,换行即可    }}
  2. 备服务器配置

    修改备nginx下/etc/keepalived/keepalived.conf文件

    配置备nginx时需要注意:需要修改state为BACKUP , priority比MASTER低,virtual_router_id和master的值一致

    ! Configuration File for keepalived#全局配置global_defs {    notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个        XXX@XXX.com    }    notification_email_from XXX@XXX.com                 #指定发件人    #smtp_server XXX.smtp.com                               #指定smtp服务器地址    #smtp_connect_timeout 30                               #指定smtp连接超时时间    router_id LVS_DEVEL                                    #运行keepalived机器的一个标识}vrrp_instance VI_1 {    state BACKUP           #标示状态为MASTER 备份机为BACKUP    interface eth0         #设置实例绑定的网卡    virtual_router_id 51   #同一实例下virtual_router_id必须相同    priority 99            #MASTER权重要高于BACKUP 比如BACKUP为99    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒    authentication {       #设置认证        auth_type PASS     #主从服务器验证方式        auth_pass 8888 }    virtual_ipaddress {    #设置vip    192.168.128.130       #可以多个虚拟IP,换行即可}}

至此,安装完成,开始测试!

完成测试


  1. 主备服务器都启动keepalived和nginx

    service keepalived start./nginx
  2. 初始状态

    查看主服务器上的eth0状态,可以看到虚拟IP已经绑定

    /sbin/ip add show eth0

    查看备服务器上的eth0状态

    /sbin/ip add show eth0

3.主服务器宕机(通过服务器关机来模拟)192.168.128.128

>注意:主nginx恢复时一定要将nginx也启动(通常nginx启动要加在开机启动中),否则即使vip漂移到主nginx也无法访问。这时候查看备服务器192.168.128.129的eth0,如下图,就会发现虚拟ip自动切换到了备服务器,访问正常。

到此,就一切搞定啦!

原创粉丝点击